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
@@ -48,11 +48,21 @@ module Revox
48
48
  # @return [Symbol, Revox::Models::CampaignListResponse::Campaign::Status]
49
49
  required :status, enum: -> { Revox::Models::CampaignListResponse::Campaign::Status }
50
50
 
51
+ # @!attribute type
52
+ #
53
+ # @return [Symbol, Revox::Models::CampaignListResponse::Campaign::Type]
54
+ required :type, enum: -> { Revox::Models::CampaignListResponse::Campaign::Type }
55
+
51
56
  # @!attribute updated_at
52
57
  #
53
58
  # @return [Object]
54
59
  required :updated_at, Revox::Internal::Type::Unknown
55
60
 
61
+ # @!attribute active_takeover_call_id
62
+ #
63
+ # @return [String, nil]
64
+ optional :active_takeover_call_id, String, nil?: true
65
+
56
66
  # @!attribute assistant
57
67
  #
58
68
  # @return [Revox::Models::CampaignListResponse::Campaign::Assistant, nil]
@@ -67,16 +77,39 @@ module Revox
67
77
  -> { Revox::Models::CampaignListResponse::Campaign::CallRetryConfig },
68
78
  nil?: true
69
79
 
80
+ # @!attribute created_by
81
+ # A member of the current organization.
82
+ #
83
+ # @return [Revox::Models::CampaignListResponse::Campaign::CreatedBy, nil]
84
+ optional :created_by, -> { Revox::Models::CampaignListResponse::Campaign::CreatedBy }, nil?: true
85
+
70
86
  # @!attribute from_phone_number
71
87
  #
72
88
  # @return [String, nil]
73
89
  optional :from_phone_number, String, nil?: true
74
90
 
91
+ # @!attribute funnel_stats
92
+ #
93
+ # @return [Revox::Models::CampaignListResponse::Campaign::FunnelStats, nil]
94
+ optional :funnel_stats, -> { Revox::Models::CampaignListResponse::Campaign::FunnelStats }
95
+
75
96
  # @!attribute max_concurrent_calls
76
97
  #
77
98
  # @return [Float, nil]
78
99
  optional :max_concurrent_calls, Float, nil?: true
79
100
 
101
+ # @!attribute paused_reason
102
+ #
103
+ # @return [Symbol, Revox::Models::CampaignListResponse::Campaign::PausedReason, nil]
104
+ optional :paused_reason,
105
+ enum: -> { Revox::Models::CampaignListResponse::Campaign::PausedReason },
106
+ nil?: true
107
+
108
+ # @!attribute present_count
109
+ #
110
+ # @return [Float, nil]
111
+ optional :present_count, Float
112
+
80
113
  # @!attribute row_stats
81
114
  #
82
115
  # @return [Revox::Models::CampaignListResponse::Campaign::RowStats, nil]
@@ -87,7 +120,14 @@ module Revox
87
120
  # @return [Object, nil]
88
121
  optional :scheduled_at, Revox::Internal::Type::Unknown
89
122
 
90
- # @!method initialize(id:, assistant_id:, created_at:, is_cancelled:, name:, organization_id:, status:, updated_at:, assistant: nil, call_retry_config: nil, from_phone_number: nil, max_concurrent_calls: nil, row_stats: nil, scheduled_at: nil)
123
+ # @!attribute structured_output_extraction
124
+ # The status of the structured output extraction.
125
+ #
126
+ # @return [Symbol, Revox::Models::CampaignListResponse::Campaign::StructuredOutputExtraction, nil]
127
+ optional :structured_output_extraction,
128
+ enum: -> { Revox::Models::CampaignListResponse::Campaign::StructuredOutputExtraction }
129
+
130
+ # @!method initialize(id:, assistant_id:, created_at:, is_cancelled:, name:, organization_id:, status:, type:, updated_at:, active_takeover_call_id: nil, assistant: nil, call_retry_config: nil, created_by: nil, from_phone_number: nil, funnel_stats: nil, max_concurrent_calls: nil, paused_reason: nil, present_count: nil, row_stats: nil, scheduled_at: nil, structured_output_extraction: nil)
91
131
  # Some parameter documentations has been truncated, see
92
132
  # {Revox::Models::CampaignListResponse::Campaign} for more details.
93
133
  #
@@ -105,19 +145,33 @@ module Revox
105
145
  #
106
146
  # @param status [Symbol, Revox::Models::CampaignListResponse::Campaign::Status]
107
147
  #
148
+ # @param type [Symbol, Revox::Models::CampaignListResponse::Campaign::Type]
149
+ #
108
150
  # @param updated_at [Object]
109
151
  #
152
+ # @param active_takeover_call_id [String, nil]
153
+ #
110
154
  # @param assistant [Revox::Models::CampaignListResponse::Campaign::Assistant]
111
155
  #
112
156
  # @param call_retry_config [Revox::Models::CampaignListResponse::Campaign::CallRetryConfig, nil] Configuration for call retry behavior including time windows, delays, and max it
113
157
  #
158
+ # @param created_by [Revox::Models::CampaignListResponse::Campaign::CreatedBy, nil] A member of the current organization.
159
+ #
114
160
  # @param from_phone_number [String, nil]
115
161
  #
162
+ # @param funnel_stats [Revox::Models::CampaignListResponse::Campaign::FunnelStats]
163
+ #
116
164
  # @param max_concurrent_calls [Float, nil]
117
165
  #
166
+ # @param paused_reason [Symbol, Revox::Models::CampaignListResponse::Campaign::PausedReason, nil]
167
+ #
168
+ # @param present_count [Float]
169
+ #
118
170
  # @param row_stats [Revox::Models::CampaignListResponse::Campaign::RowStats]
119
171
  #
120
172
  # @param scheduled_at [Object]
173
+ #
174
+ # @param structured_output_extraction [Symbol, Revox::Models::CampaignListResponse::Campaign::StructuredOutputExtraction] The status of the structured output extraction.
121
175
 
122
176
  # @see Revox::Models::CampaignListResponse::Campaign#status
123
177
  module Status
@@ -132,6 +186,17 @@ module Revox
132
186
  # @return [Array<Symbol>]
133
187
  end
134
188
 
189
+ # @see Revox::Models::CampaignListResponse::Campaign#type
190
+ module Type
191
+ extend Revox::Internal::Type::Enum
192
+
193
+ REGULAR = :regular
194
+ JUMP_IN = :jump_in
195
+
196
+ # @!method self.values
197
+ # @return [Array<Symbol>]
198
+ end
199
+
135
200
  # @see Revox::Models::CampaignListResponse::Campaign#assistant
136
201
  class Assistant < Revox::Internal::Type::BaseModel
137
202
  # @!attribute id
@@ -139,15 +204,36 @@ module Revox
139
204
  # @return [String]
140
205
  required :id, String
141
206
 
207
+ # @!attribute after_call_sms_outcomes
208
+ # Which call outcomes trigger the after-call SMS. When empty or null, no
209
+ # after-call SMS is sent. Use "none" when outcome is null.
210
+ #
211
+ # @return [Array<Symbol, Revox::Models::CampaignListResponse::Campaign::Assistant::AfterCallSMSOutcome>, nil]
212
+ required :after_call_sms_outcomes,
213
+ -> { Revox::Internal::Type::ArrayOf[enum: Revox::Models::CampaignListResponse::Campaign::Assistant::AfterCallSMSOutcome] },
214
+ nil?: true
215
+
216
+ # @!attribute after_call_sms_prompt
217
+ # Prompt / instructions for the after-call SMS. Supports {{variable}}
218
+ # placeholders. When null, no after-call SMS is sent.
219
+ #
220
+ # @return [String, nil]
221
+ required :after_call_sms_prompt, String, nil?: true
222
+
142
223
  # @!attribute background_sound
143
- # The background sound to play during the call. Useful to give the impression that
144
- # your AI agent is in an office.
224
+ # Ambient background sound to play during the call. null disables it.
145
225
  #
146
226
  # @return [Symbol, Revox::Models::CampaignListResponse::Campaign::Assistant::BackgroundSound, nil]
147
227
  required :background_sound,
148
228
  enum: -> { Revox::Models::CampaignListResponse::Campaign::Assistant::BackgroundSound },
149
229
  nil?: true
150
230
 
231
+ # @!attribute background_sound_volume
232
+ # Volume of the ambient background sound (0 = silent, 1 = max).
233
+ #
234
+ # @return [Float]
235
+ required :background_sound_volume, Float
236
+
151
237
  # @!attribute calendly
152
238
  #
153
239
  # @return [Revox::Models::CampaignListResponse::Campaign::Assistant::Calendly, nil]
@@ -162,11 +248,48 @@ module Revox
162
248
  -> { Revox::Models::CampaignListResponse::Campaign::Assistant::CallRetryConfig },
163
249
  nil?: true
164
250
 
251
+ # @!attribute cartesia_dictionary_pronunciation_id
252
+ # Optional Cartesia pronunciation dictionary ID linked to this assistant.
253
+ #
254
+ # @return [String, nil]
255
+ required :cartesia_dictionary_pronunciation_id, String, nil?: true
256
+
165
257
  # @!attribute created_at
166
258
  #
167
259
  # @return [Object]
168
260
  required :created_at, Revox::Internal::Type::Unknown
169
261
 
262
+ # @!attribute custom_tools
263
+ #
264
+ # @return [Array<Revox::Models::CampaignListResponse::Campaign::Assistant::CustomTool>, nil]
265
+ required :custom_tools,
266
+ -> { Revox::Internal::Type::ArrayOf[Revox::Models::CampaignListResponse::Campaign::Assistant::CustomTool] },
267
+ nil?: true
268
+
269
+ # @!attribute email_notification_address
270
+ # Email address(es) to receive notifications when a call ends with a matching
271
+ # outcome. Accepts a single email or a comma-separated list (e.g. "alice@x.com,
272
+ # bob@y.com").
273
+ #
274
+ # @return [String, nil]
275
+ required :email_notification_address, String, nil?: true
276
+
277
+ # @!attribute email_notification_language
278
+ # The language used for the notification email content. One of "en" or "fr".
279
+ #
280
+ # @return [Symbol, Revox::Models::CampaignListResponse::Campaign::Assistant::EmailNotificationLanguage]
281
+ required :email_notification_language,
282
+ enum: -> { Revox::Models::CampaignListResponse::Campaign::Assistant::EmailNotificationLanguage }
283
+
284
+ # @!attribute email_notification_outcomes
285
+ # Which call outcomes trigger an email notification. E.g. ["interested",
286
+ # "completed", "none"]. Use "none" when outcome is null.
287
+ #
288
+ # @return [Array<Symbol, Revox::Models::CampaignListResponse::Campaign::Assistant::EmailNotificationOutcome>, nil]
289
+ required :email_notification_outcomes,
290
+ -> { Revox::Internal::Type::ArrayOf[enum: Revox::Models::CampaignListResponse::Campaign::Assistant::EmailNotificationOutcome] },
291
+ nil?: true
292
+
170
293
  # @!attribute end_of_call_sentence
171
294
  #
172
295
  # @return [String, nil]
@@ -189,6 +312,22 @@ module Revox
189
312
  required :first_sentence_mode,
190
313
  enum: -> { Revox::Models::CampaignListResponse::Campaign::Assistant::FirstSentenceMode }
191
314
 
315
+ # @!attribute from_phone_number
316
+ # Override the default outbound phone number for calls placed with this assistant.
317
+ # When null, the organization's default phone number is used.
318
+ #
319
+ # @return [String, nil]
320
+ required :from_phone_number, String, nil?: true
321
+
322
+ # @!attribute human_transfer_mode
323
+ # Warm or cold transfer when transfer_phone_number is set; null when transfer is
324
+ # not configured.
325
+ #
326
+ # @return [Symbol, Revox::Models::CampaignListResponse::Campaign::Assistant::HumanTransferMode, nil]
327
+ required :human_transfer_mode,
328
+ enum: -> { Revox::Models::CampaignListResponse::Campaign::Assistant::HumanTransferMode },
329
+ nil?: true
330
+
192
331
  # @!attribute ivr_navigation_enabled
193
332
  # Enable IVR navigation tools. When enabled, the assistant can send DTMF tones and
194
333
  # skip turns to navigate phone menus.
@@ -198,9 +337,16 @@ module Revox
198
337
 
199
338
  # @!attribute llm_model
200
339
  #
201
- # @return [Revox::Models::CampaignListResponse::Campaign::Assistant::LlmModel::UnionMember0, Revox::Models::CampaignListResponse::Campaign::Assistant::LlmModel::UnionMember1]
340
+ # @return [Revox::Models::CampaignListResponse::Campaign::Assistant::LlmModel::UnionMember0, Revox::Models::CampaignListResponse::Campaign::Assistant::LlmModel::UnionMember1, Revox::Models::CampaignListResponse::Campaign::Assistant::LlmModel::UnionMember2, Revox::Models::CampaignListResponse::Campaign::Assistant::LlmModel::UnionMember3]
202
341
  required :llm_model, union: -> { Revox::Models::CampaignListResponse::Campaign::Assistant::LlmModel }
203
342
 
343
+ # @!attribute logo_url
344
+ # Public URL of the brand logo shown on the assistant's demo page. Null when
345
+ # unset.
346
+ #
347
+ # @return [String, nil]
348
+ required :logo_url, String, nil?: true
349
+
204
350
  # @!attribute max_call_duration_secs
205
351
  # The maximum duration of the call in seconds. This is the maximum time the call
206
352
  # will be allowed to run.
@@ -208,6 +354,14 @@ module Revox
208
354
  # @return [Float]
209
355
  required :max_call_duration_secs, Float
210
356
 
357
+ # @!attribute max_duration_end_message
358
+ # Optional message the agent will say, without being interruptible, when the call
359
+ # reaches its max duration. Kept short so it fits inside the farewell buffer. If
360
+ # null, the call ends silently.
361
+ #
362
+ # @return [String, nil]
363
+ required :max_duration_end_message, String, nil?: true
364
+
211
365
  # @!attribute name
212
366
  #
213
367
  # @return [String]
@@ -218,11 +372,43 @@ module Revox
218
372
  # @return [String]
219
373
  required :organization_id, String
220
374
 
375
+ # @!attribute position
376
+ #
377
+ # @return [Revox::Models::CampaignListResponse::Campaign::Assistant::Position, nil]
378
+ required :position, -> { Revox::Models::CampaignListResponse::Campaign::Assistant::Position }, nil?: true
379
+
221
380
  # @!attribute prompt
222
381
  #
223
382
  # @return [String]
224
383
  required :prompt, String
225
384
 
385
+ # @!attribute prompt_flow
386
+ #
387
+ # @return [Revox::Models::CampaignListResponse::Campaign::Assistant::PromptFlow, nil]
388
+ required :prompt_flow,
389
+ -> { Revox::Models::CampaignListResponse::Campaign::Assistant::PromptFlow },
390
+ nil?: true
391
+
392
+ # @!attribute slack
393
+ #
394
+ # @return [Revox::Models::CampaignListResponse::Campaign::Assistant::Slack, nil]
395
+ required :slack, -> { Revox::Models::CampaignListResponse::Campaign::Assistant::Slack }, nil?: true
396
+
397
+ # @!attribute sms_enabled
398
+ # Enable SMS tool during calls. When enabled, the agent can send SMS messages to
399
+ # the user on the call.
400
+ #
401
+ # @return [Boolean]
402
+ required :sms_enabled, Revox::Internal::Type::Boolean
403
+
404
+ # @!attribute sms_template
405
+ # Hardcoded SMS template to send during calls. When set, this exact text is sent
406
+ # instead of letting the agent generate the message. Supports {{variable}}
407
+ # placeholders.
408
+ #
409
+ # @return [String, nil]
410
+ required :sms_template, String, nil?: true
411
+
226
412
  # @!attribute structured_output_config
227
413
  # The structured output config to use for the call. This is used to extract the
228
414
  # data from the call (like email, name, company name, etc.).
@@ -232,12 +418,63 @@ module Revox
232
418
  -> { Revox::Internal::Type::ArrayOf[Revox::Models::CampaignListResponse::Campaign::Assistant::StructuredOutputConfig] },
233
419
  nil?: true
234
420
 
421
+ # @!attribute structured_output_prompt
422
+ # Custom prompt for structured data extraction. If not provided, a default prompt
423
+ # is used. Available variables: {{transcript}}, {{call_direction}},
424
+ # {{user_phone_number}}, {{agent_phone_number}}.
425
+ #
426
+ # @return [String, nil]
427
+ required :structured_output_prompt, String, nil?: true
428
+
429
+ # @!attribute stt_context
430
+ # Assistant-level speech-to-text context: structured `general` key/value pairs
431
+ # plus a list of domain `terms`. Prompt-derived context is merged in without
432
+ # replacing existing entries.
433
+ #
434
+ # @return [Revox::Models::CampaignListResponse::Campaign::Assistant::SttContext, nil]
435
+ required :stt_context,
436
+ -> { Revox::Models::CampaignListResponse::Campaign::Assistant::SttContext },
437
+ nil?: true
438
+
439
+ # @!attribute stt_model
440
+ # Transcriber (speech-to-text) model used for the assistant.
441
+ #
442
+ # @return [Symbol, Revox::Models::CampaignListResponse::Campaign::Assistant::SttModel]
443
+ required :stt_model, enum: -> { Revox::Models::CampaignListResponse::Campaign::Assistant::SttModel }
444
+
445
+ # @!attribute thinking_sound
446
+ # Audio clip to play while the agent is processing a response. One of the built-in
447
+ # LiveKit audio clips; null disables it.
448
+ #
449
+ # @return [Symbol, Revox::Models::CampaignListResponse::Campaign::Assistant::ThinkingSound, nil]
450
+ required :thinking_sound,
451
+ enum: -> { Revox::Models::CampaignListResponse::Campaign::Assistant::ThinkingSound },
452
+ nil?: true
453
+
454
+ # @!attribute thinking_sound_probability
455
+ # Probability [0..1] that the thinking sound plays on any given turn; otherwise
456
+ # the agent is silent while thinking.
457
+ #
458
+ # @return [Float]
459
+ required :thinking_sound_probability, Float
460
+
461
+ # @!attribute thinking_sound_volume
462
+ # Volume of the thinking sound (0 = silent, 1 = max).
463
+ #
464
+ # @return [Float]
465
+ required :thinking_sound_volume, Float
466
+
235
467
  # @!attribute transfer_phone_number
236
468
  # Phone number to transfer calls to when users request to speak to a human agent.
237
469
  #
238
470
  # @return [String, nil]
239
471
  required :transfer_phone_number, String, nil?: true
240
472
 
473
+ # @!attribute type
474
+ #
475
+ # @return [Symbol, Revox::Models::CampaignListResponse::Campaign::Assistant::Type]
476
+ required :type, enum: -> { Revox::Models::CampaignListResponse::Campaign::Assistant::Type }
477
+
241
478
  # @!attribute updated_at
242
479
  #
243
480
  # @return [Object]
@@ -255,37 +492,85 @@ module Revox
255
492
  # @return [String, nil]
256
493
  required :voicemail_message, String, nil?: true
257
494
 
495
+ # @!attribute voicemail_sms_prompt
496
+ # Prompt / instructions for the voicemail SMS. Supports {{variable}} placeholders.
497
+ # When null, no SMS is sent on voicemail.
498
+ #
499
+ # @return [String, nil]
500
+ required :voicemail_sms_prompt, String, nil?: true
501
+
502
+ # @!attribute warm_transfer_summary_instructions
503
+ # Warm transfer only: instructions for the supervisor handoff summary; null when
504
+ # not configured or cold transfer.
505
+ #
506
+ # @return [String, nil]
507
+ required :warm_transfer_summary_instructions, String, nil?: true
508
+
258
509
  # @!attribute webhook_url
259
510
  # The webhook URL to call when the call is completed.
260
511
  #
261
512
  # @return [String, nil]
262
513
  required :webhook_url, String, nil?: true
263
514
 
515
+ # @!attribute zoho
516
+ #
517
+ # @return [Revox::Models::CampaignListResponse::Campaign::Assistant::Zoho, nil]
518
+ required :zoho, -> { Revox::Models::CampaignListResponse::Campaign::Assistant::Zoho }, nil?: true
519
+
520
+ # @!attribute created_by
521
+ # The user who created the assistant.
522
+ #
523
+ # @return [Revox::Models::CampaignListResponse::Campaign::Assistant::CreatedBy, nil]
524
+ optional :created_by,
525
+ -> { Revox::Models::CampaignListResponse::Campaign::Assistant::CreatedBy },
526
+ nil?: true
527
+
264
528
  # @!attribute faq_items
265
529
  #
266
530
  # @return [Array<Revox::Models::CampaignListResponse::Campaign::Assistant::FaqItem>, nil]
267
531
  optional :faq_items,
268
532
  -> { Revox::Internal::Type::ArrayOf[Revox::Models::CampaignListResponse::Campaign::Assistant::FaqItem] }
269
533
 
534
+ # @!attribute is_realestate_assistant
535
+ #
536
+ # @return [Boolean, nil]
537
+ optional :is_realestate_assistant, Revox::Internal::Type::Boolean
538
+
270
539
  # @!attribute pending_faq_count
271
540
  #
272
541
  # @return [Float, nil]
273
542
  optional :pending_faq_count, Float
274
543
 
275
- # @!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)
544
+ # @!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)
276
545
  # Some parameter documentations has been truncated, see
277
546
  # {Revox::Models::CampaignListResponse::Campaign::Assistant} for more details.
278
547
  #
279
548
  # @param id [String]
280
549
  #
281
- # @param background_sound [Symbol, Revox::Models::CampaignListResponse::Campaign::Assistant::BackgroundSound, nil] The background sound to play during the call. Useful to give the impression that
550
+ # @param after_call_sms_outcomes [Array<Symbol, Revox::Models::CampaignListResponse::Campaign::Assistant::AfterCallSMSOutcome>, nil] Which call outcomes trigger the after-call SMS. When empty or null, no after-cal
551
+ #
552
+ # @param after_call_sms_prompt [String, nil] Prompt / instructions for the after-call SMS. Supports {{variable}} placeholders
553
+ #
554
+ # @param background_sound [Symbol, Revox::Models::CampaignListResponse::Campaign::Assistant::BackgroundSound, nil] Ambient background sound to play during the call. null disables it.
555
+ #
556
+ # @param background_sound_volume [Float] Volume of the ambient background sound (0 = silent, 1 = max).
282
557
  #
283
558
  # @param calendly [Revox::Models::CampaignListResponse::Campaign::Assistant::Calendly, nil]
284
559
  #
285
560
  # @param call_retry_config [Revox::Models::CampaignListResponse::Campaign::Assistant::CallRetryConfig, nil] Configuration for call retry behavior including time windows, delays, and max it
286
561
  #
562
+ # @param cartesia_dictionary_pronunciation_id [String, nil] Optional Cartesia pronunciation dictionary ID linked to this assistant.
563
+ #
287
564
  # @param created_at [Object]
288
565
  #
566
+ # @param custom_tools [Array<Revox::Models::CampaignListResponse::Campaign::Assistant::CustomTool>, nil]
567
+ #
568
+ # @param email_notification_address [String, nil] Email address(es) to receive notifications when a call ends with a matching outc
569
+ #
570
+ # @param email_notification_language [Symbol, Revox::Models::CampaignListResponse::Campaign::Assistant::EmailNotificationLanguage] The language used for the notification email content. One of "en" or "fr".
571
+ #
572
+ # @param email_notification_outcomes [Array<Symbol, Revox::Models::CampaignListResponse::Campaign::Assistant::EmailNotificationOutcome>, nil] Which call outcomes trigger an email notification. E.g. ["interested", "complete
573
+ #
289
574
  # @param end_of_call_sentence [String, nil]
290
575
  #
291
576
  # @param first_sentence [String, nil]
@@ -294,36 +579,93 @@ module Revox
294
579
  #
295
580
  # @param first_sentence_mode [Symbol, Revox::Models::CampaignListResponse::Campaign::Assistant::FirstSentenceMode]
296
581
  #
582
+ # @param from_phone_number [String, nil] Override the default outbound phone number for calls placed with this assistant.
583
+ #
584
+ # @param human_transfer_mode [Symbol, Revox::Models::CampaignListResponse::Campaign::Assistant::HumanTransferMode, nil] Warm or cold transfer when transfer_phone_number is set; null when transfer is n
585
+ #
297
586
  # @param ivr_navigation_enabled [Boolean] Enable IVR navigation tools. When enabled, the assistant can send DTMF tones and
298
587
  #
299
- # @param llm_model [Revox::Models::CampaignListResponse::Campaign::Assistant::LlmModel::UnionMember0, Revox::Models::CampaignListResponse::Campaign::Assistant::LlmModel::UnionMember1]
588
+ # @param llm_model [Revox::Models::CampaignListResponse::Campaign::Assistant::LlmModel::UnionMember0, Revox::Models::CampaignListResponse::Campaign::Assistant::LlmModel::UnionMember1, Revox::Models::CampaignListResponse::Campaign::Assistant::LlmModel::UnionMember2, Revox::Models::CampaignListResponse::Campaign::Assistant::LlmModel::UnionMember3]
589
+ #
590
+ # @param logo_url [String, nil] Public URL of the brand logo shown on the assistant's demo page. Null when unset
300
591
  #
301
592
  # @param max_call_duration_secs [Float] The maximum duration of the call in seconds. This is the maximum time the call w
302
593
  #
594
+ # @param max_duration_end_message [String, nil] Optional message the agent will say, without being interruptible, when the call
595
+ #
303
596
  # @param name [String]
304
597
  #
305
598
  # @param organization_id [String]
306
599
  #
600
+ # @param position [Revox::Models::CampaignListResponse::Campaign::Assistant::Position, nil]
601
+ #
307
602
  # @param prompt [String]
308
603
  #
604
+ # @param prompt_flow [Revox::Models::CampaignListResponse::Campaign::Assistant::PromptFlow, nil]
605
+ #
606
+ # @param slack [Revox::Models::CampaignListResponse::Campaign::Assistant::Slack, nil]
607
+ #
608
+ # @param sms_enabled [Boolean] Enable SMS tool during calls. When enabled, the agent can send SMS messages to t
609
+ #
610
+ # @param sms_template [String, nil] Hardcoded SMS template to send during calls. When set, this exact text is sent i
611
+ #
309
612
  # @param structured_output_config [Array<Revox::Models::CampaignListResponse::Campaign::Assistant::StructuredOutputConfig>, nil] The structured output config to use for the call. This is used to extract the da
310
613
  #
614
+ # @param structured_output_prompt [String, nil] Custom prompt for structured data extraction. If not provided, a default prompt
615
+ #
616
+ # @param stt_context [Revox::Models::CampaignListResponse::Campaign::Assistant::SttContext, nil] Assistant-level speech-to-text context: structured `general` key/value pairs plu
617
+ #
618
+ # @param stt_model [Symbol, Revox::Models::CampaignListResponse::Campaign::Assistant::SttModel] Transcriber (speech-to-text) model used for the assistant.
619
+ #
620
+ # @param thinking_sound [Symbol, Revox::Models::CampaignListResponse::Campaign::Assistant::ThinkingSound, nil] Audio clip to play while the agent is processing a response. One of the built-in
621
+ #
622
+ # @param thinking_sound_probability [Float] Probability [0..1] that the thinking sound plays on any given turn; otherwise th
623
+ #
624
+ # @param thinking_sound_volume [Float] Volume of the thinking sound (0 = silent, 1 = max).
625
+ #
311
626
  # @param transfer_phone_number [String, nil] Phone number to transfer calls to when users request to speak to a human agent.
312
627
  #
628
+ # @param type [Symbol, Revox::Models::CampaignListResponse::Campaign::Assistant::Type]
629
+ #
313
630
  # @param updated_at [Object]
314
631
  #
315
632
  # @param voice [Revox::Models::CampaignListResponse::Campaign::Assistant::Voice, nil]
316
633
  #
317
634
  # @param voicemail_message [String, nil] If set, when voicemail is detected the agent will speak this message then hang u
318
635
  #
636
+ # @param voicemail_sms_prompt [String, nil] Prompt / instructions for the voicemail SMS. Supports {{variable}} placeholders.
637
+ #
638
+ # @param warm_transfer_summary_instructions [String, nil] Warm transfer only: instructions for the supervisor handoff summary; null when n
639
+ #
319
640
  # @param webhook_url [String, nil] The webhook URL to call when the call is completed.
320
641
  #
642
+ # @param zoho [Revox::Models::CampaignListResponse::Campaign::Assistant::Zoho, nil]
643
+ #
644
+ # @param created_by [Revox::Models::CampaignListResponse::Campaign::Assistant::CreatedBy, nil] The user who created the assistant.
645
+ #
321
646
  # @param faq_items [Array<Revox::Models::CampaignListResponse::Campaign::Assistant::FaqItem>]
322
647
  #
648
+ # @param is_realestate_assistant [Boolean]
649
+ #
323
650
  # @param pending_faq_count [Float]
324
651
 
325
- # The background sound to play during the call. Useful to give the impression that
326
- # your AI agent is in an office.
652
+ module AfterCallSMSOutcome
653
+ extend Revox::Internal::Type::Enum
654
+
655
+ NOT_INTERESTED = :not_interested
656
+ INTERESTED = :interested
657
+ COMPLETED = :completed
658
+ REQUESTED_CALLBACK_LATER = :requested_callback_later
659
+ REQUESTED_CALLBACK_NEW_NUMBER = :requested_callback_new_number
660
+ DO_NOT_CONTACT = :do_not_contact
661
+ AI_AVERSE = :ai_averse
662
+ NONE = :none
663
+
664
+ # @!method self.values
665
+ # @return [Array<Symbol>]
666
+ end
667
+
668
+ # Ambient background sound to play during the call. null disables it.
327
669
  #
328
670
  # @see Revox::Models::CampaignListResponse::Campaign::Assistant#background_sound
329
671
  module BackgroundSound
@@ -362,6 +704,23 @@ module Revox
362
704
 
363
705
  # @see Revox::Models::CampaignListResponse::Campaign::Assistant#call_retry_config
364
706
  class CallRetryConfig < Revox::Internal::Type::BaseModel
707
+ # @!attribute allowed_days
708
+ # Days of the week when calls are allowed, in the recipient's timezone. Default:
709
+ # Monday through Friday.
710
+ #
711
+ # @return [Array<Symbol, Revox::Models::CampaignListResponse::Campaign::Assistant::CallRetryConfig::AllowedDay>]
712
+ required :allowed_days,
713
+ -> { Revox::Internal::Type::ArrayOf[enum: Revox::Models::CampaignListResponse::Campaign::Assistant::CallRetryConfig::AllowedDay] }
714
+
715
+ # @!attribute call_twice_in_a_row
716
+ # If true and max_retry_attempts >= 2, attempt #2 fires immediately (skipping
717
+ # retry_delay_seconds) when attempt #1 didn't reach a human.
718
+ # Calling-window/allowed-days checks still apply. Only affects the 1→2 transition.
719
+ # Default: false.
720
+ #
721
+ # @return [Boolean]
722
+ required :call_twice_in_a_row, Revox::Internal::Type::Boolean
723
+
365
724
  # @!attribute calling_windows
366
725
  #
367
726
  # @return [Array<Revox::Models::CampaignListResponse::Campaign::Assistant::CallRetryConfig::CallingWindow>]
@@ -382,7 +741,7 @@ module Revox
382
741
  # @return [String, nil]
383
742
  optional :timezone, String, nil?: true
384
743
 
385
- # @!method initialize(calling_windows:, max_retry_attempts:, timezone: nil)
744
+ # @!method initialize(allowed_days:, call_twice_in_a_row:, calling_windows:, max_retry_attempts:, timezone: nil)
386
745
  # Some parameter documentations has been truncated, see
387
746
  # {Revox::Models::CampaignListResponse::Campaign::Assistant::CallRetryConfig} for
388
747
  # more details.
@@ -390,12 +749,31 @@ module Revox
390
749
  # Configuration for call retry behavior including time windows, delays, and max
391
750
  # iterations. If not provided, defaults will be used.
392
751
  #
752
+ # @param allowed_days [Array<Symbol, Revox::Models::CampaignListResponse::Campaign::Assistant::CallRetryConfig::AllowedDay>] Days of the week when calls are allowed, in the recipient's timezone. Default: M
753
+ #
754
+ # @param call_twice_in_a_row [Boolean] If true and max_retry_attempts >= 2, attempt #2 fires immediately (skipping retr
755
+ #
393
756
  # @param calling_windows [Array<Revox::Models::CampaignListResponse::Campaign::Assistant::CallRetryConfig::CallingWindow>]
394
757
  #
395
758
  # @param max_retry_attempts [Integer] Maximum number of call retry attempts. Default: 3.
396
759
  #
397
760
  # @param timezone [String, nil] Optional IANA timezone identifier to override the automatic timezone detection f
398
761
 
762
+ module AllowedDay
763
+ extend Revox::Internal::Type::Enum
764
+
765
+ MONDAY = :monday
766
+ TUESDAY = :tuesday
767
+ WEDNESDAY = :wednesday
768
+ THURSDAY = :thursday
769
+ FRIDAY = :friday
770
+ SATURDAY = :saturday
771
+ SUNDAY = :sunday
772
+
773
+ # @!method self.values
774
+ # @return [Array<Symbol>]
775
+ end
776
+
399
777
  class CallingWindow < Revox::Internal::Type::BaseModel
400
778
  # @!attribute calling_window_end_time
401
779
  # End time for the calling window in the recipient's timezone (or
@@ -432,83 +810,585 @@ module Revox
432
810
  end
433
811
  end
434
812
 
435
- # @see Revox::Models::CampaignListResponse::Campaign::Assistant#first_sentence_mode
436
- module FirstSentenceMode
437
- extend Revox::Internal::Type::Enum
813
+ class CustomTool < Revox::Internal::Type::BaseModel
814
+ # @!attribute body_template
815
+ # JSON body template for the request. Use quoted {{variable}} placeholders (e.g.
816
+ # "{{name}}") for dynamic values
817
+ #
818
+ # @return [String, nil]
819
+ required :body_template, String, nil?: true
438
820
 
439
- GENERATED = :generated
440
- STATIC = :static
441
- NONE = :none
821
+ # @!attribute description
822
+ # Human-readable description of what the tool does, used by the LLM to decide when
823
+ # to call it
824
+ #
825
+ # @return [String]
826
+ required :description, String
442
827
 
443
- # @!method self.values
444
- # @return [Array<Symbol>]
445
- end
828
+ # @!attribute headers
829
+ # HTTP headers to include in the request. Values support {{variable}} placeholders
830
+ #
831
+ # @return [Array<Revox::Models::CampaignListResponse::Campaign::Assistant::CustomTool::Header>]
832
+ required :headers,
833
+ -> { Revox::Internal::Type::ArrayOf[Revox::Models::CampaignListResponse::Campaign::Assistant::CustomTool::Header] }
446
834
 
447
- # @see Revox::Models::CampaignListResponse::Campaign::Assistant#llm_model
448
- module LlmModel
449
- extend Revox::Internal::Type::Union
835
+ # @!attribute input_schema
836
+ # Schema defining the parameters the LLM should extract from the conversation to
837
+ # pass to this tool
838
+ #
839
+ # @return [Array<Revox::Models::CampaignListResponse::Campaign::Assistant::CustomTool::InputSchema>]
840
+ required :input_schema,
841
+ -> { Revox::Internal::Type::ArrayOf[Revox::Models::CampaignListResponse::Campaign::Assistant::CustomTool::InputSchema] }
450
842
 
451
- variant -> { Revox::Models::CampaignListResponse::Campaign::Assistant::LlmModel::UnionMember0 }
843
+ # @!attribute method_
844
+ # HTTP method to use when calling the API endpoint
845
+ #
846
+ # @return [Symbol, Revox::Models::CampaignListResponse::Campaign::Assistant::CustomTool::Method]
847
+ required :method_,
848
+ enum: -> { Revox::Models::CampaignListResponse::Campaign::Assistant::CustomTool::Method },
849
+ api_name: :method
452
850
 
453
- variant -> { Revox::Models::CampaignListResponse::Campaign::Assistant::LlmModel::UnionMember1 }
851
+ # @!attribute name
852
+ # Unique tool name in lowercase_snake_case (e.g. check_inventory)
853
+ #
854
+ # @return [String]
855
+ required :name, String
454
856
 
455
- class UnionMember0 < Revox::Internal::Type::BaseModel
857
+ # @!attribute query_params
858
+ # Query string parameters appended to the URL. Values support {{variable}}
859
+ # placeholders
860
+ #
861
+ # @return [Array<Revox::Models::CampaignListResponse::Campaign::Assistant::CustomTool::QueryParam>]
862
+ required :query_params,
863
+ -> { Revox::Internal::Type::ArrayOf[Revox::Models::CampaignListResponse::Campaign::Assistant::CustomTool::QueryParam] }
864
+
865
+ # @!attribute url
866
+ # Full URL of the API endpoint. Supports {{variable}} placeholders for dynamic
867
+ # values
868
+ #
869
+ # @return [String]
870
+ required :url, String
871
+
872
+ # @!method initialize(body_template:, description:, headers:, input_schema:, method_:, name:, query_params:, url:)
873
+ # Some parameter documentations has been truncated, see
874
+ # {Revox::Models::CampaignListResponse::Campaign::Assistant::CustomTool} for more
875
+ # details.
876
+ #
877
+ # @param body_template [String, nil] JSON body template for the request. Use quoted {{variable}} placeholders (e.g. "
878
+ #
879
+ # @param description [String] Human-readable description of what the tool does, used by the LLM to decide when
880
+ #
881
+ # @param headers [Array<Revox::Models::CampaignListResponse::Campaign::Assistant::CustomTool::Header>] HTTP headers to include in the request. Values support {{variable}} placeholders
882
+ #
883
+ # @param input_schema [Array<Revox::Models::CampaignListResponse::Campaign::Assistant::CustomTool::InputSchema>] Schema defining the parameters the LLM should extract from the conversation to p
884
+ #
885
+ # @param method_ [Symbol, Revox::Models::CampaignListResponse::Campaign::Assistant::CustomTool::Method] HTTP method to use when calling the API endpoint
886
+ #
887
+ # @param name [String] Unique tool name in lowercase_snake_case (e.g. check_inventory)
888
+ #
889
+ # @param query_params [Array<Revox::Models::CampaignListResponse::Campaign::Assistant::CustomTool::QueryParam>] Query string parameters appended to the URL. Values support {{variable}} placeho
890
+ #
891
+ # @param url [String] Full URL of the API endpoint. Supports {{variable}} placeholders for dynamic val
892
+
893
+ class Header < Revox::Internal::Type::BaseModel
894
+ # @!attribute key
895
+ #
896
+ # @return [String]
897
+ required :key, String
898
+
899
+ # @!attribute value
900
+ #
901
+ # @return [String]
902
+ required :value, String
903
+
904
+ # @!method initialize(key:, value:)
905
+ # @param key [String]
906
+ # @param value [String]
907
+ end
908
+
909
+ class InputSchema < Revox::Internal::Type::BaseModel
456
910
  # @!attribute name
457
911
  #
458
- # @return [Symbol, Revox::Models::CampaignListResponse::Campaign::Assistant::LlmModel::UnionMember0::Name]
459
- required :name,
460
- enum: -> { Revox::Models::CampaignListResponse::Campaign::Assistant::LlmModel::UnionMember0::Name }
912
+ # @return [String]
913
+ required :name, String
914
+
915
+ # @!attribute required
916
+ #
917
+ # @return [Boolean]
918
+ required :required, Revox::Internal::Type::Boolean
461
919
 
462
920
  # @!attribute type
463
921
  #
464
- # @return [Symbol, :"dedicated-instance"]
465
- required :type, const: :"dedicated-instance"
922
+ # @return [Symbol, Revox::Models::CampaignListResponse::Campaign::Assistant::CustomTool::InputSchema::Type]
923
+ required :type,
924
+ enum: -> { Revox::Models::CampaignListResponse::Campaign::Assistant::CustomTool::InputSchema::Type }
466
925
 
467
- # @!method initialize(name:, type: :"dedicated-instance")
468
- # @param name [Symbol, Revox::Models::CampaignListResponse::Campaign::Assistant::LlmModel::UnionMember0::Name]
469
- # @param type [Symbol, :"dedicated-instance"]
926
+ # @!attribute description
927
+ #
928
+ # @return [String, nil]
929
+ optional :description, String
470
930
 
471
- # @see Revox::Models::CampaignListResponse::Campaign::Assistant::LlmModel::UnionMember0#name
472
- module Name
931
+ # @!attribute enum_options
932
+ #
933
+ # @return [Array<String>, nil]
934
+ optional :enum_options, Revox::Internal::Type::ArrayOf[String]
935
+
936
+ # @!method initialize(name:, required:, type:, description: nil, enum_options: nil)
937
+ # @param name [String]
938
+ # @param required [Boolean]
939
+ # @param type [Symbol, Revox::Models::CampaignListResponse::Campaign::Assistant::CustomTool::InputSchema::Type]
940
+ # @param description [String]
941
+ # @param enum_options [Array<String>]
942
+
943
+ # @see Revox::Models::CampaignListResponse::Campaign::Assistant::CustomTool::InputSchema#type
944
+ module Type
473
945
  extend Revox::Internal::Type::Enum
474
946
 
475
- GPT_4_1 = :"gpt-4.1"
476
- MINISTRAL_3_8B_INSTRUCT = :"ministral-3-8b-instruct"
947
+ STRING = :string
948
+ NUMBER = :number
949
+ BOOLEAN = :boolean
950
+ ENUM = :enum
951
+ DATE = :date
952
+ DATETIME = :datetime
477
953
 
478
954
  # @!method self.values
479
955
  # @return [Array<Symbol>]
480
956
  end
481
957
  end
482
958
 
483
- class UnionMember1 < Revox::Internal::Type::BaseModel
484
- # @!attribute openrouter_model_id
485
- # The model ID to use from OpenRouter. eg: openai/gpt-4.1
486
- #
487
- # @return [String]
488
- required :openrouter_model_id, String
959
+ # HTTP method to use when calling the API endpoint
960
+ #
961
+ # @see Revox::Models::CampaignListResponse::Campaign::Assistant::CustomTool#method_
962
+ module Method
963
+ extend Revox::Internal::Type::Enum
489
964
 
490
- # @!attribute openrouter_provider
491
- # The provider to use from OpenRouter. eg: nebius, openai, azure, etc.
965
+ GET = :GET
966
+ POST = :POST
967
+ PUT = :PUT
968
+ PATCH = :PATCH
969
+ DELETE = :DELETE
970
+
971
+ # @!method self.values
972
+ # @return [Array<Symbol>]
973
+ end
974
+
975
+ class QueryParam < Revox::Internal::Type::BaseModel
976
+ # @!attribute key
492
977
  #
493
978
  # @return [String]
494
- required :openrouter_provider, String
979
+ required :key, String
495
980
 
496
- # @!attribute type
497
- # Use a model from OpenRouter.
981
+ # @!attribute value
498
982
  #
499
- # @return [Symbol, :openrouter]
500
- required :type, const: :openrouter
983
+ # @return [String]
984
+ required :value, String
501
985
 
502
- # @!method initialize(openrouter_model_id:, openrouter_provider:, type: :openrouter)
503
- # @param openrouter_model_id [String] The model ID to use from OpenRouter. eg: openai/gpt-4.1
504
- #
505
- # @param openrouter_provider [String] The provider to use from OpenRouter. eg: nebius, openai, azure, etc.
506
- #
507
- # @param type [Symbol, :openrouter] Use a model from OpenRouter.
986
+ # @!method initialize(key:, value:)
987
+ # @param key [String]
988
+ # @param value [String]
989
+ end
990
+ end
991
+
992
+ # The language used for the notification email content. One of "en" or "fr".
993
+ #
994
+ # @see Revox::Models::CampaignListResponse::Campaign::Assistant#email_notification_language
995
+ module EmailNotificationLanguage
996
+ extend Revox::Internal::Type::Enum
997
+
998
+ EN = :en
999
+ FR = :fr
1000
+
1001
+ # @!method self.values
1002
+ # @return [Array<Symbol>]
1003
+ end
1004
+
1005
+ module EmailNotificationOutcome
1006
+ extend Revox::Internal::Type::Enum
1007
+
1008
+ NOT_INTERESTED = :not_interested
1009
+ INTERESTED = :interested
1010
+ COMPLETED = :completed
1011
+ REQUESTED_CALLBACK_LATER = :requested_callback_later
1012
+ REQUESTED_CALLBACK_NEW_NUMBER = :requested_callback_new_number
1013
+ DO_NOT_CONTACT = :do_not_contact
1014
+ AI_AVERSE = :ai_averse
1015
+ NONE = :none
1016
+
1017
+ # @!method self.values
1018
+ # @return [Array<Symbol>]
1019
+ end
1020
+
1021
+ # @see Revox::Models::CampaignListResponse::Campaign::Assistant#first_sentence_mode
1022
+ module FirstSentenceMode
1023
+ extend Revox::Internal::Type::Enum
1024
+
1025
+ GENERATED = :generated
1026
+ STATIC = :static
1027
+ NONE = :none
1028
+
1029
+ # @!method self.values
1030
+ # @return [Array<Symbol>]
1031
+ end
1032
+
1033
+ # Warm or cold transfer when transfer_phone_number is set; null when transfer is
1034
+ # not configured.
1035
+ #
1036
+ # @see Revox::Models::CampaignListResponse::Campaign::Assistant#human_transfer_mode
1037
+ module HumanTransferMode
1038
+ extend Revox::Internal::Type::Enum
1039
+
1040
+ WARM = :warm
1041
+ COLD = :cold
1042
+
1043
+ # @!method self.values
1044
+ # @return [Array<Symbol>]
1045
+ end
1046
+
1047
+ # @see Revox::Models::CampaignListResponse::Campaign::Assistant#llm_model
1048
+ module LlmModel
1049
+ extend Revox::Internal::Type::Union
1050
+
1051
+ variant -> { Revox::Models::CampaignListResponse::Campaign::Assistant::LlmModel::UnionMember0 }
1052
+
1053
+ variant -> { Revox::Models::CampaignListResponse::Campaign::Assistant::LlmModel::UnionMember1 }
1054
+
1055
+ variant -> { Revox::Models::CampaignListResponse::Campaign::Assistant::LlmModel::UnionMember2 }
1056
+
1057
+ variant -> { Revox::Models::CampaignListResponse::Campaign::Assistant::LlmModel::UnionMember3 }
1058
+
1059
+ class UnionMember0 < Revox::Internal::Type::BaseModel
1060
+ # @!attribute name
1061
+ #
1062
+ # @return [Symbol, Revox::Models::CampaignListResponse::Campaign::Assistant::LlmModel::UnionMember0::Name]
1063
+ required :name,
1064
+ enum: -> { Revox::Models::CampaignListResponse::Campaign::Assistant::LlmModel::UnionMember0::Name }
1065
+
1066
+ # @!attribute type
1067
+ #
1068
+ # @return [Symbol, :"dedicated-instance"]
1069
+ required :type, const: :"dedicated-instance"
1070
+
1071
+ # @!method initialize(name:, type: :"dedicated-instance")
1072
+ # @param name [Symbol, Revox::Models::CampaignListResponse::Campaign::Assistant::LlmModel::UnionMember0::Name]
1073
+ # @param type [Symbol, :"dedicated-instance"]
1074
+
1075
+ # @see Revox::Models::CampaignListResponse::Campaign::Assistant::LlmModel::UnionMember0#name
1076
+ module Name
1077
+ extend Revox::Internal::Type::Enum
1078
+
1079
+ GPT_4_1 = :"gpt-4.1"
1080
+ MINISTRAL_3_8B_INSTRUCT = :"ministral-3-8b-instruct"
1081
+
1082
+ # @!method self.values
1083
+ # @return [Array<Symbol>]
1084
+ end
1085
+ end
1086
+
1087
+ class UnionMember1 < Revox::Internal::Type::BaseModel
1088
+ # @!attribute openrouter_model_id
1089
+ # The model ID to use from OpenRouter. eg: openai/gpt-4.1
1090
+ #
1091
+ # @return [String]
1092
+ required :openrouter_model_id, String
1093
+
1094
+ # @!attribute openrouter_provider
1095
+ # The provider to use from OpenRouter. eg: nebius, openai, azure, etc.
1096
+ #
1097
+ # @return [String]
1098
+ required :openrouter_provider, String
1099
+
1100
+ # @!attribute type
1101
+ # Use a model from OpenRouter.
1102
+ #
1103
+ # @return [Symbol, :openrouter]
1104
+ required :type, const: :openrouter
1105
+
1106
+ # @!method initialize(openrouter_model_id:, openrouter_provider:, type: :openrouter)
1107
+ # @param openrouter_model_id [String] The model ID to use from OpenRouter. eg: openai/gpt-4.1
1108
+ #
1109
+ # @param openrouter_provider [String] The provider to use from OpenRouter. eg: nebius, openai, azure, etc.
1110
+ #
1111
+ # @param type [Symbol, :openrouter] Use a model from OpenRouter.
1112
+ end
1113
+
1114
+ class UnionMember2 < Revox::Internal::Type::BaseModel
1115
+ # @!attribute api_key
1116
+ # API key sent as Bearer token to the custom endpoint.
1117
+ #
1118
+ # @return [String]
1119
+ required :api_key, String
1120
+
1121
+ # @!attribute api_url
1122
+ # Base URL for the OpenAI-compatible API, e.g. https://api.together.xyz/v1
1123
+ #
1124
+ # @return [String]
1125
+ required :api_url, String
1126
+
1127
+ # @!attribute model_name
1128
+ # Model name as expected by the provider, e.g. meta-llama/llama-3-70b
1129
+ #
1130
+ # @return [String]
1131
+ required :model_name, String
1132
+
1133
+ # @!attribute type
1134
+ # OpenAI-compatible chat completions API (bring your own endpoint and key).
1135
+ #
1136
+ # @return [Symbol, :custom]
1137
+ required :type, const: :custom
1138
+
1139
+ # @!method initialize(api_key:, api_url:, model_name:, type: :custom)
1140
+ # @param api_key [String] API key sent as Bearer token to the custom endpoint.
1141
+ #
1142
+ # @param api_url [String] Base URL for the OpenAI-compatible API, e.g. https://api.together.xyz/v1
1143
+ #
1144
+ # @param model_name [String] Model name as expected by the provider, e.g. meta-llama/llama-3-70b
1145
+ #
1146
+ # @param type [Symbol, :custom] OpenAI-compatible chat completions API (bring your own endpoint and key).
1147
+ end
1148
+
1149
+ class UnionMember3 < Revox::Internal::Type::BaseModel
1150
+ # @!attribute provider
1151
+ # The provider to use from Realtime. eg: openai, google.
1152
+ #
1153
+ # @return [Symbol, Revox::Models::CampaignListResponse::Campaign::Assistant::LlmModel::UnionMember3::Provider]
1154
+ required :provider,
1155
+ enum: -> { Revox::Models::CampaignListResponse::Campaign::Assistant::LlmModel::UnionMember3::Provider }
1156
+
1157
+ # @!attribute realtime_model_id
1158
+ # The model ID to use from Realtime. eg: gpt-4.1
1159
+ #
1160
+ # @return [String]
1161
+ required :realtime_model_id, String
1162
+
1163
+ # @!attribute type
1164
+ # Use a model from Realtime.
1165
+ #
1166
+ # @return [Symbol, :realtime]
1167
+ required :type, const: :realtime
1168
+
1169
+ # @!attribute realtime_voice_id
1170
+ # Output voice for the realtime provider (e.g. OpenAI: marin; Gemini: Puck).
1171
+ #
1172
+ # @return [String, nil]
1173
+ optional :realtime_voice_id, String
1174
+
1175
+ # @!method initialize(provider:, realtime_model_id:, realtime_voice_id: nil, type: :realtime)
1176
+ # @param provider [Symbol, Revox::Models::CampaignListResponse::Campaign::Assistant::LlmModel::UnionMember3::Provider] The provider to use from Realtime. eg: openai, google.
1177
+ #
1178
+ # @param realtime_model_id [String] The model ID to use from Realtime. eg: gpt-4.1
1179
+ #
1180
+ # @param realtime_voice_id [String] Output voice for the realtime provider (e.g. OpenAI: marin; Gemini: Puck).
1181
+ #
1182
+ # @param type [Symbol, :realtime] Use a model from Realtime.
1183
+
1184
+ # The provider to use from Realtime. eg: openai, google.
1185
+ #
1186
+ # @see Revox::Models::CampaignListResponse::Campaign::Assistant::LlmModel::UnionMember3#provider
1187
+ module Provider
1188
+ extend Revox::Internal::Type::Enum
1189
+
1190
+ OPENAI = :openai
1191
+ GOOGLE = :google
1192
+
1193
+ # @!method self.values
1194
+ # @return [Array<Symbol>]
1195
+ end
508
1196
  end
509
1197
 
510
1198
  # @!method self.variants
511
- # @return [Array(Revox::Models::CampaignListResponse::Campaign::Assistant::LlmModel::UnionMember0, Revox::Models::CampaignListResponse::Campaign::Assistant::LlmModel::UnionMember1)]
1199
+ # @return [Array(Revox::Models::CampaignListResponse::Campaign::Assistant::LlmModel::UnionMember0, Revox::Models::CampaignListResponse::Campaign::Assistant::LlmModel::UnionMember1, Revox::Models::CampaignListResponse::Campaign::Assistant::LlmModel::UnionMember2, Revox::Models::CampaignListResponse::Campaign::Assistant::LlmModel::UnionMember3)]
1200
+ end
1201
+
1202
+ # @see Revox::Models::CampaignListResponse::Campaign::Assistant#position
1203
+ class Position < Revox::Internal::Type::BaseModel
1204
+ # @!attribute x
1205
+ #
1206
+ # @return [Float]
1207
+ required :x, Float
1208
+
1209
+ # @!attribute y_
1210
+ #
1211
+ # @return [Float]
1212
+ required :y_, Float, api_name: :y
1213
+
1214
+ # @!method initialize(x:, y_:)
1215
+ # @param x [Float]
1216
+ # @param y_ [Float]
1217
+ end
1218
+
1219
+ # @see Revox::Models::CampaignListResponse::Campaign::Assistant#prompt_flow
1220
+ class PromptFlow < Revox::Internal::Type::BaseModel
1221
+ # @!attribute edges
1222
+ #
1223
+ # @return [Array<Revox::Models::CampaignListResponse::Campaign::Assistant::PromptFlow::Edge>]
1224
+ required :edges,
1225
+ -> { Revox::Internal::Type::ArrayOf[Revox::Models::CampaignListResponse::Campaign::Assistant::PromptFlow::Edge] }
1226
+
1227
+ # @!attribute nodes
1228
+ #
1229
+ # @return [Array<Revox::Models::CampaignListResponse::Campaign::Assistant::PromptFlow::Node>]
1230
+ required :nodes,
1231
+ -> { Revox::Internal::Type::ArrayOf[Revox::Models::CampaignListResponse::Campaign::Assistant::PromptFlow::Node] }
1232
+
1233
+ # @!method initialize(edges:, nodes:)
1234
+ # @param edges [Array<Revox::Models::CampaignListResponse::Campaign::Assistant::PromptFlow::Edge>]
1235
+ # @param nodes [Array<Revox::Models::CampaignListResponse::Campaign::Assistant::PromptFlow::Node>]
1236
+
1237
+ class Edge < Revox::Internal::Type::BaseModel
1238
+ # @!attribute id
1239
+ #
1240
+ # @return [String]
1241
+ required :id, String
1242
+
1243
+ # @!attribute source
1244
+ #
1245
+ # @return [String]
1246
+ required :source, String
1247
+
1248
+ # @!attribute target
1249
+ #
1250
+ # @return [String]
1251
+ required :target, String
1252
+
1253
+ # @!method initialize(id:, source:, target:)
1254
+ # @param id [String]
1255
+ # @param source [String]
1256
+ # @param target [String]
1257
+ end
1258
+
1259
+ class Node < Revox::Internal::Type::BaseModel
1260
+ # @!attribute id
1261
+ #
1262
+ # @return [String]
1263
+ required :id, String
1264
+
1265
+ # @!attribute data
1266
+ #
1267
+ # @return [Revox::Models::CampaignListResponse::Campaign::Assistant::PromptFlow::Node::Data]
1268
+ required :data, -> { Revox::Models::CampaignListResponse::Campaign::Assistant::PromptFlow::Node::Data }
1269
+
1270
+ # @!attribute position
1271
+ #
1272
+ # @return [Revox::Models::CampaignListResponse::Campaign::Assistant::PromptFlow::Node::Position]
1273
+ required :position,
1274
+ -> { Revox::Models::CampaignListResponse::Campaign::Assistant::PromptFlow::Node::Position }
1275
+
1276
+ # @!attribute type
1277
+ #
1278
+ # @return [Symbol, :promptBlock]
1279
+ required :type, const: :promptBlock
1280
+
1281
+ # @!method initialize(id:, data:, position:, type: :promptBlock)
1282
+ # @param id [String]
1283
+ # @param data [Revox::Models::CampaignListResponse::Campaign::Assistant::PromptFlow::Node::Data]
1284
+ # @param position [Revox::Models::CampaignListResponse::Campaign::Assistant::PromptFlow::Node::Position]
1285
+ # @param type [Symbol, :promptBlock]
1286
+
1287
+ # @see Revox::Models::CampaignListResponse::Campaign::Assistant::PromptFlow::Node#data
1288
+ class Data < Revox::Internal::Type::BaseModel
1289
+ # @!attribute body
1290
+ #
1291
+ # @return [String]
1292
+ required :body, String
1293
+
1294
+ # @!attribute title
1295
+ #
1296
+ # @return [String]
1297
+ required :title, String
1298
+
1299
+ # @!method initialize(body:, title:)
1300
+ # @param body [String]
1301
+ # @param title [String]
1302
+ end
1303
+
1304
+ # @see Revox::Models::CampaignListResponse::Campaign::Assistant::PromptFlow::Node#position
1305
+ class Position < Revox::Internal::Type::BaseModel
1306
+ # @!attribute x
1307
+ #
1308
+ # @return [Float]
1309
+ required :x, Float
1310
+
1311
+ # @!attribute y_
1312
+ #
1313
+ # @return [Float]
1314
+ required :y_, Float, api_name: :y
1315
+
1316
+ # @!method initialize(x:, y_:)
1317
+ # @param x [Float]
1318
+ # @param y_ [Float]
1319
+ end
1320
+ end
1321
+ end
1322
+
1323
+ # @see Revox::Models::CampaignListResponse::Campaign::Assistant#slack
1324
+ class Slack < Revox::Internal::Type::BaseModel
1325
+ # @!attribute channel_id
1326
+ # The Slack channel ID where the notification will be posted.
1327
+ #
1328
+ # @return [String]
1329
+ required :channel_id, String
1330
+
1331
+ # @!attribute connection_id
1332
+ # The Nango connection ID linking the org's Slack workspace to Revox.
1333
+ #
1334
+ # @return [String]
1335
+ required :connection_id, String
1336
+
1337
+ # @!attribute outcomes
1338
+ # Which call outcomes trigger a Slack notification (e.g. ['interested', 'none']).
1339
+ # Use 'none' to notify when outcome is null.
1340
+ #
1341
+ # @return [Array<Symbol, Revox::Models::CampaignListResponse::Campaign::Assistant::Slack::Outcome>]
1342
+ required :outcomes,
1343
+ -> { Revox::Internal::Type::ArrayOf[enum: Revox::Models::CampaignListResponse::Campaign::Assistant::Slack::Outcome] }
1344
+
1345
+ # @!attribute channel_name
1346
+ # Human-readable Slack channel name, cached for display in the UI.
1347
+ #
1348
+ # @return [String, nil]
1349
+ optional :channel_name, String, nil?: true
1350
+
1351
+ # @!attribute template
1352
+ # Optional message template. Supports {{summary}}, {{outcome}}, {{phone}},
1353
+ # {{call_url}}, {{assistant_name}}, {{campaign_name}}, {{first_name}},
1354
+ # {{last_name}}, {{email}}, {{company}}, {{contact_name}}, {{contact_line}}, plus
1355
+ # prompt_variables and structured_output keys. When null/empty a default template
1356
+ # is used.
1357
+ #
1358
+ # @return [String, nil]
1359
+ optional :template, String, nil?: true
1360
+
1361
+ # @!method initialize(channel_id:, connection_id:, outcomes:, channel_name: nil, template: nil)
1362
+ # Some parameter documentations has been truncated, see
1363
+ # {Revox::Models::CampaignListResponse::Campaign::Assistant::Slack} for more
1364
+ # details.
1365
+ #
1366
+ # @param channel_id [String] The Slack channel ID where the notification will be posted.
1367
+ #
1368
+ # @param connection_id [String] The Nango connection ID linking the org's Slack workspace to Revox.
1369
+ #
1370
+ # @param outcomes [Array<Symbol, Revox::Models::CampaignListResponse::Campaign::Assistant::Slack::Outcome>] Which call outcomes trigger a Slack notification (e.g. ['interested', 'none']).
1371
+ #
1372
+ # @param channel_name [String, nil] Human-readable Slack channel name, cached for display in the UI.
1373
+ #
1374
+ # @param template [String, nil] Optional message template. Supports {{summary}}, {{outcome}}, {{phone}},
1375
+ # {{call\_
1376
+
1377
+ module Outcome
1378
+ extend Revox::Internal::Type::Enum
1379
+
1380
+ NOT_INTERESTED = :not_interested
1381
+ INTERESTED = :interested
1382
+ COMPLETED = :completed
1383
+ REQUESTED_CALLBACK_LATER = :requested_callback_later
1384
+ REQUESTED_CALLBACK_NEW_NUMBER = :requested_callback_new_number
1385
+ DO_NOT_CONTACT = :do_not_contact
1386
+ AI_AVERSE = :ai_averse
1387
+ NONE = :none
1388
+
1389
+ # @!method self.values
1390
+ # @return [Array<Symbol>]
1391
+ end
512
1392
  end
513
1393
 
514
1394
  class StructuredOutputConfig < Revox::Internal::Type::BaseModel
@@ -561,6 +1441,88 @@ module Revox
561
1441
  end
562
1442
  end
563
1443
 
1444
+ # @see Revox::Models::CampaignListResponse::Campaign::Assistant#stt_context
1445
+ class SttContext < Revox::Internal::Type::BaseModel
1446
+ # @!attribute general
1447
+ #
1448
+ # @return [Array<Revox::Models::CampaignListResponse::Campaign::Assistant::SttContext::General>]
1449
+ required :general,
1450
+ -> { Revox::Internal::Type::ArrayOf[Revox::Models::CampaignListResponse::Campaign::Assistant::SttContext::General] }
1451
+
1452
+ # @!attribute terms
1453
+ #
1454
+ # @return [Array<String>]
1455
+ required :terms, Revox::Internal::Type::ArrayOf[String]
1456
+
1457
+ # @!method initialize(general:, terms:)
1458
+ # Assistant-level speech-to-text context: structured `general` key/value pairs
1459
+ # plus a list of domain `terms`. Prompt-derived context is merged in without
1460
+ # replacing existing entries.
1461
+ #
1462
+ # @param general [Array<Revox::Models::CampaignListResponse::Campaign::Assistant::SttContext::General>]
1463
+ # @param terms [Array<String>]
1464
+
1465
+ class General < Revox::Internal::Type::BaseModel
1466
+ # @!attribute key
1467
+ #
1468
+ # @return [String]
1469
+ required :key, String
1470
+
1471
+ # @!attribute value
1472
+ #
1473
+ # @return [String]
1474
+ required :value, String
1475
+
1476
+ # @!method initialize(key:, value:)
1477
+ # @param key [String]
1478
+ # @param value [String]
1479
+ end
1480
+ end
1481
+
1482
+ # Transcriber (speech-to-text) model used for the assistant.
1483
+ #
1484
+ # @see Revox::Models::CampaignListResponse::Campaign::Assistant#stt_model
1485
+ module SttModel
1486
+ extend Revox::Internal::Type::Enum
1487
+
1488
+ STT_RT_V4 = :"stt-rt-v4"
1489
+ STT_RT_V5 = :"stt-rt-v5"
1490
+
1491
+ # @!method self.values
1492
+ # @return [Array<Symbol>]
1493
+ end
1494
+
1495
+ # Audio clip to play while the agent is processing a response. One of the built-in
1496
+ # LiveKit audio clips; null disables it.
1497
+ #
1498
+ # @see Revox::Models::CampaignListResponse::Campaign::Assistant#thinking_sound
1499
+ module ThinkingSound
1500
+ extend Revox::Internal::Type::Enum
1501
+
1502
+ CITY_AMBIENCE_OGG = :"city-ambience.ogg"
1503
+ FOREST_AMBIENCE_OGG = :"forest-ambience.ogg"
1504
+ OFFICE_AMBIENCE_OGG = :"office-ambience.ogg"
1505
+ CROWDED_ROOM_OGG = :"crowded-room.ogg"
1506
+ KEYBOARD_TYPING_OGG = :"keyboard-typing.ogg"
1507
+ KEYBOARD_TYPING2_OGG = :"keyboard-typing2.ogg"
1508
+ HOLD_MUSIC_OGG = :"hold_music.ogg"
1509
+
1510
+ # @!method self.values
1511
+ # @return [Array<Symbol>]
1512
+ end
1513
+
1514
+ # @see Revox::Models::CampaignListResponse::Campaign::Assistant#type
1515
+ module Type
1516
+ extend Revox::Internal::Type::Enum
1517
+
1518
+ STANDALONE = :standalone
1519
+ MULTI_STEP = :"multi-step"
1520
+ SUB_ASSISTANT = :"sub-assistant"
1521
+
1522
+ # @!method self.values
1523
+ # @return [Array<Symbol>]
1524
+ end
1525
+
564
1526
  # @see Revox::Models::CampaignListResponse::Campaign::Assistant#voice
565
1527
  class Voice < Revox::Internal::Type::BaseModel
566
1528
  # @!attribute id
@@ -575,6 +1537,13 @@ module Revox
575
1537
  # @return [Symbol, Revox::Models::CampaignListResponse::Campaign::Assistant::Voice::Provider]
576
1538
  required :provider, enum: -> { Revox::Models::CampaignListResponse::Campaign::Assistant::Voice::Provider }
577
1539
 
1540
+ # @!attribute model
1541
+ # Cartesia TTS model (Cartesia only). Defaults to sonic-3 when omitted. Ignored
1542
+ # for other providers.
1543
+ #
1544
+ # @return [Symbol, Revox::Models::CampaignListResponse::Campaign::Assistant::Voice::Model, nil]
1545
+ optional :model, enum: -> { Revox::Models::CampaignListResponse::Campaign::Assistant::Voice::Model }
1546
+
578
1547
  # @!attribute speed
579
1548
  # The speed of the voice. Range depends on provider: Cartesia 0.6–1.5, ElevenLabs
580
1549
  # 0.7–1.2. Default is 1.0.
@@ -582,7 +1551,14 @@ module Revox
582
1551
  # @return [Float, nil]
583
1552
  optional :speed, Float
584
1553
 
585
- # @!method initialize(id:, provider:, speed: nil)
1554
+ # @!attribute volume
1555
+ # Volume of the voice (Cartesia only). 0.5–2.0, default 1.0. Ignored for other
1556
+ # providers.
1557
+ #
1558
+ # @return [Float, nil]
1559
+ optional :volume, Float
1560
+
1561
+ # @!method initialize(id:, provider:, model: nil, speed: nil, volume: nil)
586
1562
  # Some parameter documentations has been truncated, see
587
1563
  # {Revox::Models::CampaignListResponse::Campaign::Assistant::Voice} for more
588
1564
  # details.
@@ -591,7 +1567,11 @@ module Revox
591
1567
  #
592
1568
  # @param provider [Symbol, Revox::Models::CampaignListResponse::Campaign::Assistant::Voice::Provider] The provider of the voice.
593
1569
  #
1570
+ # @param model [Symbol, Revox::Models::CampaignListResponse::Campaign::Assistant::Voice::Model] Cartesia TTS model (Cartesia only). Defaults to sonic-3 when omitted. Ignored fo
1571
+ #
594
1572
  # @param speed [Float] The speed of the voice. Range depends on provider: Cartesia 0.6–1.5, ElevenLabs
1573
+ #
1574
+ # @param volume [Float] Volume of the voice (Cartesia only). 0.5–2.0, default 1.0. Ignored for other pro
595
1575
 
596
1576
  # The provider of the voice.
597
1577
  #
@@ -605,6 +1585,160 @@ module Revox
605
1585
  # @!method self.values
606
1586
  # @return [Array<Symbol>]
607
1587
  end
1588
+
1589
+ # Cartesia TTS model (Cartesia only). Defaults to sonic-3 when omitted. Ignored
1590
+ # for other providers.
1591
+ #
1592
+ # @see Revox::Models::CampaignListResponse::Campaign::Assistant::Voice#model
1593
+ module Model
1594
+ extend Revox::Internal::Type::Enum
1595
+
1596
+ SONIC_3 = :"sonic-3"
1597
+ SONIC_3_5 = :"sonic-3.5"
1598
+
1599
+ # @!method self.values
1600
+ # @return [Array<Symbol>]
1601
+ end
1602
+ end
1603
+
1604
+ # @see Revox::Models::CampaignListResponse::Campaign::Assistant#zoho
1605
+ class Zoho < Revox::Internal::Type::BaseModel
1606
+ # @!attribute connection_id
1607
+ # The Nango connection ID linking the org's Zoho CRM account to Revox.
1608
+ #
1609
+ # @return [String]
1610
+ required :connection_id, String
1611
+
1612
+ # @!attribute field_mapping
1613
+ # Maps extracted call fields (structured_output / prompt variables) onto Zoho
1614
+ # field API names on the upserted record.
1615
+ #
1616
+ # @return [Array<Revox::Models::CampaignListResponse::Campaign::Assistant::Zoho::FieldMapping>]
1617
+ required :field_mapping,
1618
+ -> { Revox::Internal::Type::ArrayOf[Revox::Models::CampaignListResponse::Campaign::Assistant::Zoho::FieldMapping] }
1619
+
1620
+ # @!attribute log_call_activity
1621
+ # When true, also log the call as a record in Zoho's Calls module (related to the
1622
+ # upserted prospect via Who_Id).
1623
+ #
1624
+ # @return [Boolean]
1625
+ required :log_call_activity, Revox::Internal::Type::Boolean
1626
+
1627
+ # @!attribute module_
1628
+ # Zoho module the prospect record is upserted into (e.g. 'Leads' or 'Contacts').
1629
+ #
1630
+ # @return [String]
1631
+ required :module_, String, api_name: :module
1632
+
1633
+ # @!attribute outcomes
1634
+ # Which call outcomes trigger the Zoho push (e.g. ['interested', 'none']). Use
1635
+ # 'none' to push when outcome is null.
1636
+ #
1637
+ # @return [Array<Symbol, Revox::Models::CampaignListResponse::Campaign::Assistant::Zoho::Outcome>]
1638
+ required :outcomes,
1639
+ -> { Revox::Internal::Type::ArrayOf[enum: Revox::Models::CampaignListResponse::Campaign::Assistant::Zoho::Outcome] }
1640
+
1641
+ # @!attribute template
1642
+ # Optional Note body template. Supports {{summary}}, {{outcome}}, {{phone}},
1643
+ # {{call_url}}, {{assistant_name}}, {{campaign_name}}, {{transcript}}, plus
1644
+ # prompt_variables and structured_output keys. When null/empty a default note
1645
+ # (outcome + summary + auto-listed extracted fields) is used.
1646
+ #
1647
+ # @return [String, nil]
1648
+ optional :template, String, nil?: true
1649
+
1650
+ # @!method initialize(connection_id:, field_mapping:, log_call_activity:, module_:, outcomes:, template: nil)
1651
+ # Some parameter documentations has been truncated, see
1652
+ # {Revox::Models::CampaignListResponse::Campaign::Assistant::Zoho} for more
1653
+ # details.
1654
+ #
1655
+ # @param connection_id [String] The Nango connection ID linking the org's Zoho CRM account to Revox.
1656
+ #
1657
+ # @param field_mapping [Array<Revox::Models::CampaignListResponse::Campaign::Assistant::Zoho::FieldMapping>] Maps extracted call fields (structured_output / prompt variables) onto Zoho fiel
1658
+ #
1659
+ # @param log_call_activity [Boolean] When true, also log the call as a record in Zoho's Calls module (related to the
1660
+ #
1661
+ # @param module_ [String] Zoho module the prospect record is upserted into (e.g. 'Leads' or 'Contacts').
1662
+ #
1663
+ # @param outcomes [Array<Symbol, Revox::Models::CampaignListResponse::Campaign::Assistant::Zoho::Outcome>] Which call outcomes trigger the Zoho push (e.g. ['interested', 'none']). Use 'no
1664
+ #
1665
+ # @param template [String, nil] Optional Note body template. Supports {{summary}}, {{outcome}}, {{phone}}, {{cal
1666
+
1667
+ class FieldMapping < Revox::Internal::Type::BaseModel
1668
+ # @!attribute source
1669
+ # Source key to read from the call: a structured_output field name, falling back
1670
+ # to a prompt variable of the same name.
1671
+ #
1672
+ # @return [String]
1673
+ required :source, String
1674
+
1675
+ # @!attribute zoho_field
1676
+ # Destination Zoho field API name on the upserted record (e.g. 'Email', 'Company',
1677
+ # or a custom 'Budget\_\_c').
1678
+ #
1679
+ # @return [String]
1680
+ required :zoho_field, String
1681
+
1682
+ # @!method initialize(source:, zoho_field:)
1683
+ # Some parameter documentations has been truncated, see
1684
+ # {Revox::Models::CampaignListResponse::Campaign::Assistant::Zoho::FieldMapping}
1685
+ # for more details.
1686
+ #
1687
+ # @param source [String] Source key to read from the call: a structured_output field name, falling back t
1688
+ #
1689
+ # @param zoho_field [String] Destination Zoho field API name on the upserted record (e.g. 'Email', 'Company',
1690
+ end
1691
+
1692
+ module Outcome
1693
+ extend Revox::Internal::Type::Enum
1694
+
1695
+ NOT_INTERESTED = :not_interested
1696
+ INTERESTED = :interested
1697
+ COMPLETED = :completed
1698
+ REQUESTED_CALLBACK_LATER = :requested_callback_later
1699
+ REQUESTED_CALLBACK_NEW_NUMBER = :requested_callback_new_number
1700
+ DO_NOT_CONTACT = :do_not_contact
1701
+ AI_AVERSE = :ai_averse
1702
+ NONE = :none
1703
+
1704
+ # @!method self.values
1705
+ # @return [Array<Symbol>]
1706
+ end
1707
+ end
1708
+
1709
+ # @see Revox::Models::CampaignListResponse::Campaign::Assistant#created_by
1710
+ class CreatedBy < Revox::Internal::Type::BaseModel
1711
+ # @!attribute id
1712
+ # The database user id of the creator.
1713
+ #
1714
+ # @return [String]
1715
+ required :id, String
1716
+
1717
+ # @!attribute email
1718
+ #
1719
+ # @return [String]
1720
+ required :email, String
1721
+
1722
+ # @!attribute first_name
1723
+ #
1724
+ # @return [String, nil]
1725
+ required :first_name, String, nil?: true
1726
+
1727
+ # @!attribute last_name
1728
+ #
1729
+ # @return [String, nil]
1730
+ required :last_name, String, nil?: true
1731
+
1732
+ # @!method initialize(id:, email:, first_name:, last_name:)
1733
+ # The user who created the assistant.
1734
+ #
1735
+ # @param id [String] The database user id of the creator.
1736
+ #
1737
+ # @param email [String]
1738
+ #
1739
+ # @param first_name [String, nil]
1740
+ #
1741
+ # @param last_name [String, nil]
608
1742
  end
609
1743
 
610
1744
  class FaqItem < Revox::Internal::Type::BaseModel
@@ -655,6 +1789,23 @@ module Revox
655
1789
 
656
1790
  # @see Revox::Models::CampaignListResponse::Campaign#call_retry_config
657
1791
  class CallRetryConfig < Revox::Internal::Type::BaseModel
1792
+ # @!attribute allowed_days
1793
+ # Days of the week when calls are allowed, in the recipient's timezone. Default:
1794
+ # Monday through Friday.
1795
+ #
1796
+ # @return [Array<Symbol, Revox::Models::CampaignListResponse::Campaign::CallRetryConfig::AllowedDay>]
1797
+ required :allowed_days,
1798
+ -> { Revox::Internal::Type::ArrayOf[enum: Revox::Models::CampaignListResponse::Campaign::CallRetryConfig::AllowedDay] }
1799
+
1800
+ # @!attribute call_twice_in_a_row
1801
+ # If true and max_retry_attempts >= 2, attempt #2 fires immediately (skipping
1802
+ # retry_delay_seconds) when attempt #1 didn't reach a human.
1803
+ # Calling-window/allowed-days checks still apply. Only affects the 1→2 transition.
1804
+ # Default: false.
1805
+ #
1806
+ # @return [Boolean]
1807
+ required :call_twice_in_a_row, Revox::Internal::Type::Boolean
1808
+
658
1809
  # @!attribute calling_windows
659
1810
  #
660
1811
  # @return [Array<Revox::Models::CampaignListResponse::Campaign::CallRetryConfig::CallingWindow>]
@@ -675,7 +1826,7 @@ module Revox
675
1826
  # @return [String, nil]
676
1827
  optional :timezone, String, nil?: true
677
1828
 
678
- # @!method initialize(calling_windows:, max_retry_attempts:, timezone: nil)
1829
+ # @!method initialize(allowed_days:, call_twice_in_a_row:, calling_windows:, max_retry_attempts:, timezone: nil)
679
1830
  # Some parameter documentations has been truncated, see
680
1831
  # {Revox::Models::CampaignListResponse::Campaign::CallRetryConfig} for more
681
1832
  # details.
@@ -683,12 +1834,31 @@ module Revox
683
1834
  # Configuration for call retry behavior including time windows, delays, and max
684
1835
  # iterations. If not provided, defaults will be used.
685
1836
  #
1837
+ # @param allowed_days [Array<Symbol, Revox::Models::CampaignListResponse::Campaign::CallRetryConfig::AllowedDay>] Days of the week when calls are allowed, in the recipient's timezone. Default: M
1838
+ #
1839
+ # @param call_twice_in_a_row [Boolean] If true and max_retry_attempts >= 2, attempt #2 fires immediately (skipping retr
1840
+ #
686
1841
  # @param calling_windows [Array<Revox::Models::CampaignListResponse::Campaign::CallRetryConfig::CallingWindow>]
687
1842
  #
688
1843
  # @param max_retry_attempts [Integer] Maximum number of call retry attempts. Default: 3.
689
1844
  #
690
1845
  # @param timezone [String, nil] Optional IANA timezone identifier to override the automatic timezone detection f
691
1846
 
1847
+ module AllowedDay
1848
+ extend Revox::Internal::Type::Enum
1849
+
1850
+ MONDAY = :monday
1851
+ TUESDAY = :tuesday
1852
+ WEDNESDAY = :wednesday
1853
+ THURSDAY = :thursday
1854
+ FRIDAY = :friday
1855
+ SATURDAY = :saturday
1856
+ SUNDAY = :sunday
1857
+
1858
+ # @!method self.values
1859
+ # @return [Array<Symbol>]
1860
+ end
1861
+
692
1862
  class CallingWindow < Revox::Internal::Type::BaseModel
693
1863
  # @!attribute calling_window_end_time
694
1864
  # End time for the calling window in the recipient's timezone (or
@@ -725,6 +1895,75 @@ module Revox
725
1895
  end
726
1896
  end
727
1897
 
1898
+ # @see Revox::Models::CampaignListResponse::Campaign#created_by
1899
+ class CreatedBy < Revox::Internal::Type::BaseModel
1900
+ # @!attribute id
1901
+ # The database user id (foreign key target on calls.assignee_id).
1902
+ #
1903
+ # @return [String]
1904
+ required :id, String
1905
+
1906
+ # @!attribute email
1907
+ #
1908
+ # @return [String]
1909
+ required :email, String
1910
+
1911
+ # @!attribute first_name
1912
+ #
1913
+ # @return [String, nil]
1914
+ required :first_name, String, nil?: true
1915
+
1916
+ # @!attribute last_name
1917
+ #
1918
+ # @return [String, nil]
1919
+ required :last_name, String, nil?: true
1920
+
1921
+ # @!method initialize(id:, email:, first_name:, last_name:)
1922
+ # A member of the current organization.
1923
+ #
1924
+ # @param id [String] The database user id (foreign key target on calls.assignee_id).
1925
+ #
1926
+ # @param email [String]
1927
+ #
1928
+ # @param first_name [String, nil]
1929
+ #
1930
+ # @param last_name [String, nil]
1931
+ end
1932
+
1933
+ # @see Revox::Models::CampaignListResponse::Campaign#funnel_stats
1934
+ class FunnelStats < Revox::Internal::Type::BaseModel
1935
+ # @!attribute hot
1936
+ #
1937
+ # @return [Float]
1938
+ required :hot, Float
1939
+
1940
+ # @!attribute talked_to_human
1941
+ #
1942
+ # @return [Float]
1943
+ required :talked_to_human, Float
1944
+
1945
+ # @!attribute total_leads
1946
+ #
1947
+ # @return [Float]
1948
+ required :total_leads, Float
1949
+
1950
+ # @!method initialize(hot:, talked_to_human:, total_leads:)
1951
+ # @param hot [Float]
1952
+ # @param talked_to_human [Float]
1953
+ # @param total_leads [Float]
1954
+ end
1955
+
1956
+ # @see Revox::Models::CampaignListResponse::Campaign#paused_reason
1957
+ module PausedReason
1958
+ extend Revox::Internal::Type::Enum
1959
+
1960
+ MANUAL = :manual
1961
+ NO_PRESENCE = :no_presence
1962
+
1963
+ # @!method self.values
1964
+ # @return [Array<Symbol>]
1965
+ end
1966
+
728
1967
  # @see Revox::Models::CampaignListResponse::Campaign#row_stats
729
1968
  class RowStats < Revox::Internal::Type::BaseModel
730
1969
  # @!attribute calling
@@ -765,6 +2004,20 @@ module Revox
765
2004
  # @param retry_ [Float]
766
2005
  # @param total [Float]
767
2006
  end
2007
+
2008
+ # The status of the structured output extraction.
2009
+ #
2010
+ # @see Revox::Models::CampaignListResponse::Campaign#structured_output_extraction
2011
+ module StructuredOutputExtraction
2012
+ extend Revox::Internal::Type::Enum
2013
+
2014
+ NONE = :none
2015
+ RUNNING = :running
2016
+ COMPLETED = :completed
2017
+
2018
+ # @!method self.values
2019
+ # @return [Array<Symbol>]
2020
+ end
768
2021
  end
769
2022
  end
770
2023
  end