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