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
@@ -9,15 +9,36 @@ module Revox
9
9
  # @return [String]
10
10
  required :id, String
11
11
 
12
+ # @!attribute after_call_sms_outcomes
13
+ # Which call outcomes trigger the after-call SMS. When empty or null, no
14
+ # after-call SMS is sent. Use "none" when outcome is null.
15
+ #
16
+ # @return [Array<Symbol, Revox::Models::AssistantRetrieveResponse::AfterCallSMSOutcome>, nil]
17
+ required :after_call_sms_outcomes,
18
+ -> { Revox::Internal::Type::ArrayOf[enum: Revox::Models::AssistantRetrieveResponse::AfterCallSMSOutcome] },
19
+ nil?: true
20
+
21
+ # @!attribute after_call_sms_prompt
22
+ # Prompt / instructions for the after-call SMS. Supports {{variable}}
23
+ # placeholders. When null, no after-call SMS is sent.
24
+ #
25
+ # @return [String, nil]
26
+ required :after_call_sms_prompt, String, nil?: true
27
+
12
28
  # @!attribute background_sound
13
- # The background sound to play during the call. Useful to give the impression that
14
- # your AI agent is in an office.
29
+ # Ambient background sound to play during the call. null disables it.
15
30
  #
16
31
  # @return [Symbol, Revox::Models::AssistantRetrieveResponse::BackgroundSound, nil]
17
32
  required :background_sound,
18
33
  enum: -> { Revox::Models::AssistantRetrieveResponse::BackgroundSound },
19
34
  nil?: true
20
35
 
36
+ # @!attribute background_sound_volume
37
+ # Volume of the ambient background sound (0 = silent, 1 = max).
38
+ #
39
+ # @return [Float]
40
+ required :background_sound_volume, Float
41
+
21
42
  # @!attribute calendly
22
43
  #
23
44
  # @return [Revox::Models::AssistantRetrieveResponse::Calendly, nil]
@@ -30,11 +51,48 @@ module Revox
30
51
  # @return [Revox::Models::AssistantRetrieveResponse::CallRetryConfig, nil]
31
52
  required :call_retry_config, -> { Revox::Models::AssistantRetrieveResponse::CallRetryConfig }, nil?: true
32
53
 
54
+ # @!attribute cartesia_dictionary_pronunciation_id
55
+ # Optional Cartesia pronunciation dictionary ID linked to this assistant.
56
+ #
57
+ # @return [String, nil]
58
+ required :cartesia_dictionary_pronunciation_id, String, nil?: true
59
+
33
60
  # @!attribute created_at
34
61
  #
35
62
  # @return [Object]
36
63
  required :created_at, Revox::Internal::Type::Unknown
37
64
 
65
+ # @!attribute custom_tools
66
+ #
67
+ # @return [Array<Revox::Models::AssistantRetrieveResponse::CustomTool>, nil]
68
+ required :custom_tools,
69
+ -> { Revox::Internal::Type::ArrayOf[Revox::Models::AssistantRetrieveResponse::CustomTool] },
70
+ nil?: true
71
+
72
+ # @!attribute email_notification_address
73
+ # Email address(es) to receive notifications when a call ends with a matching
74
+ # outcome. Accepts a single email or a comma-separated list (e.g. "alice@x.com,
75
+ # bob@y.com").
76
+ #
77
+ # @return [String, nil]
78
+ required :email_notification_address, String, nil?: true
79
+
80
+ # @!attribute email_notification_language
81
+ # The language used for the notification email content. One of "en" or "fr".
82
+ #
83
+ # @return [Symbol, Revox::Models::AssistantRetrieveResponse::EmailNotificationLanguage]
84
+ required :email_notification_language,
85
+ enum: -> { Revox::Models::AssistantRetrieveResponse::EmailNotificationLanguage }
86
+
87
+ # @!attribute email_notification_outcomes
88
+ # Which call outcomes trigger an email notification. E.g. ["interested",
89
+ # "completed", "none"]. Use "none" when outcome is null.
90
+ #
91
+ # @return [Array<Symbol, Revox::Models::AssistantRetrieveResponse::EmailNotificationOutcome>, nil]
92
+ required :email_notification_outcomes,
93
+ -> { Revox::Internal::Type::ArrayOf[enum: Revox::Models::AssistantRetrieveResponse::EmailNotificationOutcome] },
94
+ nil?: true
95
+
38
96
  # @!attribute end_of_call_sentence
39
97
  #
40
98
  # @return [String, nil]
@@ -56,6 +114,22 @@ module Revox
56
114
  # @return [Symbol, Revox::Models::AssistantRetrieveResponse::FirstSentenceMode]
57
115
  required :first_sentence_mode, enum: -> { Revox::Models::AssistantRetrieveResponse::FirstSentenceMode }
58
116
 
117
+ # @!attribute from_phone_number
118
+ # Override the default outbound phone number for calls placed with this assistant.
119
+ # When null, the organization's default phone number is used.
120
+ #
121
+ # @return [String, nil]
122
+ required :from_phone_number, String, nil?: true
123
+
124
+ # @!attribute human_transfer_mode
125
+ # Warm or cold transfer when transfer_phone_number is set; null when transfer is
126
+ # not configured.
127
+ #
128
+ # @return [Symbol, Revox::Models::AssistantRetrieveResponse::HumanTransferMode, nil]
129
+ required :human_transfer_mode,
130
+ enum: -> { Revox::Models::AssistantRetrieveResponse::HumanTransferMode },
131
+ nil?: true
132
+
59
133
  # @!attribute ivr_navigation_enabled
60
134
  # Enable IVR navigation tools. When enabled, the assistant can send DTMF tones and
61
135
  # skip turns to navigate phone menus.
@@ -65,9 +139,16 @@ module Revox
65
139
 
66
140
  # @!attribute llm_model
67
141
  #
68
- # @return [Revox::Models::AssistantRetrieveResponse::LlmModel::UnionMember0, Revox::Models::AssistantRetrieveResponse::LlmModel::UnionMember1]
142
+ # @return [Revox::Models::AssistantRetrieveResponse::LlmModel::UnionMember0, Revox::Models::AssistantRetrieveResponse::LlmModel::UnionMember1, Revox::Models::AssistantRetrieveResponse::LlmModel::UnionMember2, Revox::Models::AssistantRetrieveResponse::LlmModel::UnionMember3]
69
143
  required :llm_model, union: -> { Revox::Models::AssistantRetrieveResponse::LlmModel }
70
144
 
145
+ # @!attribute logo_url
146
+ # Public URL of the brand logo shown on the assistant's demo page. Null when
147
+ # unset.
148
+ #
149
+ # @return [String, nil]
150
+ required :logo_url, String, nil?: true
151
+
71
152
  # @!attribute max_call_duration_secs
72
153
  # The maximum duration of the call in seconds. This is the maximum time the call
73
154
  # will be allowed to run.
@@ -75,6 +156,14 @@ module Revox
75
156
  # @return [Float]
76
157
  required :max_call_duration_secs, Float
77
158
 
159
+ # @!attribute max_duration_end_message
160
+ # Optional message the agent will say, without being interruptible, when the call
161
+ # reaches its max duration. Kept short so it fits inside the farewell buffer. If
162
+ # null, the call ends silently.
163
+ #
164
+ # @return [String, nil]
165
+ required :max_duration_end_message, String, nil?: true
166
+
78
167
  # @!attribute name
79
168
  #
80
169
  # @return [String]
@@ -85,11 +174,41 @@ module Revox
85
174
  # @return [String]
86
175
  required :organization_id, String
87
176
 
177
+ # @!attribute position
178
+ #
179
+ # @return [Revox::Models::AssistantRetrieveResponse::Position, nil]
180
+ required :position, -> { Revox::Models::AssistantRetrieveResponse::Position }, nil?: true
181
+
88
182
  # @!attribute prompt
89
183
  #
90
184
  # @return [String]
91
185
  required :prompt, String
92
186
 
187
+ # @!attribute prompt_flow
188
+ #
189
+ # @return [Revox::Models::AssistantRetrieveResponse::PromptFlow, nil]
190
+ required :prompt_flow, -> { Revox::Models::AssistantRetrieveResponse::PromptFlow }, nil?: true
191
+
192
+ # @!attribute slack
193
+ #
194
+ # @return [Revox::Models::AssistantRetrieveResponse::Slack, nil]
195
+ required :slack, -> { Revox::Models::AssistantRetrieveResponse::Slack }, nil?: true
196
+
197
+ # @!attribute sms_enabled
198
+ # Enable SMS tool during calls. When enabled, the agent can send SMS messages to
199
+ # the user on the call.
200
+ #
201
+ # @return [Boolean]
202
+ required :sms_enabled, Revox::Internal::Type::Boolean
203
+
204
+ # @!attribute sms_template
205
+ # Hardcoded SMS template to send during calls. When set, this exact text is sent
206
+ # instead of letting the agent generate the message. Supports {{variable}}
207
+ # placeholders.
208
+ #
209
+ # @return [String, nil]
210
+ required :sms_template, String, nil?: true
211
+
93
212
  # @!attribute structured_output_config
94
213
  # The structured output config to use for the call. This is used to extract the
95
214
  # data from the call (like email, name, company name, etc.).
@@ -99,12 +218,59 @@ module Revox
99
218
  -> { Revox::Internal::Type::ArrayOf[Revox::Models::AssistantRetrieveResponse::StructuredOutputConfig] },
100
219
  nil?: true
101
220
 
221
+ # @!attribute structured_output_prompt
222
+ # Custom prompt for structured data extraction. If not provided, a default prompt
223
+ # is used. Available variables: {{transcript}}, {{call_direction}},
224
+ # {{user_phone_number}}, {{agent_phone_number}}.
225
+ #
226
+ # @return [String, nil]
227
+ required :structured_output_prompt, String, nil?: true
228
+
229
+ # @!attribute stt_context
230
+ # Assistant-level speech-to-text context: structured `general` key/value pairs
231
+ # plus a list of domain `terms`. Prompt-derived context is merged in without
232
+ # replacing existing entries.
233
+ #
234
+ # @return [Revox::Models::AssistantRetrieveResponse::SttContext, nil]
235
+ required :stt_context, -> { Revox::Models::AssistantRetrieveResponse::SttContext }, nil?: true
236
+
237
+ # @!attribute stt_model
238
+ # Transcriber (speech-to-text) model used for the assistant.
239
+ #
240
+ # @return [Symbol, Revox::Models::AssistantRetrieveResponse::SttModel]
241
+ required :stt_model, enum: -> { Revox::Models::AssistantRetrieveResponse::SttModel }
242
+
243
+ # @!attribute thinking_sound
244
+ # Audio clip to play while the agent is processing a response. One of the built-in
245
+ # LiveKit audio clips; null disables it.
246
+ #
247
+ # @return [Symbol, Revox::Models::AssistantRetrieveResponse::ThinkingSound, nil]
248
+ required :thinking_sound, enum: -> { Revox::Models::AssistantRetrieveResponse::ThinkingSound }, nil?: true
249
+
250
+ # @!attribute thinking_sound_probability
251
+ # Probability [0..1] that the thinking sound plays on any given turn; otherwise
252
+ # the agent is silent while thinking.
253
+ #
254
+ # @return [Float]
255
+ required :thinking_sound_probability, Float
256
+
257
+ # @!attribute thinking_sound_volume
258
+ # Volume of the thinking sound (0 = silent, 1 = max).
259
+ #
260
+ # @return [Float]
261
+ required :thinking_sound_volume, Float
262
+
102
263
  # @!attribute transfer_phone_number
103
264
  # Phone number to transfer calls to when users request to speak to a human agent.
104
265
  #
105
266
  # @return [String, nil]
106
267
  required :transfer_phone_number, String, nil?: true
107
268
 
269
+ # @!attribute type
270
+ #
271
+ # @return [Symbol, Revox::Models::AssistantRetrieveResponse::Type]
272
+ required :type, enum: -> { Revox::Models::AssistantRetrieveResponse::Type }
273
+
108
274
  # @!attribute updated_at
109
275
  #
110
276
  # @return [Object]
@@ -122,37 +288,83 @@ module Revox
122
288
  # @return [String, nil]
123
289
  required :voicemail_message, String, nil?: true
124
290
 
291
+ # @!attribute voicemail_sms_prompt
292
+ # Prompt / instructions for the voicemail SMS. Supports {{variable}} placeholders.
293
+ # When null, no SMS is sent on voicemail.
294
+ #
295
+ # @return [String, nil]
296
+ required :voicemail_sms_prompt, String, nil?: true
297
+
298
+ # @!attribute warm_transfer_summary_instructions
299
+ # Warm transfer only: instructions for the supervisor handoff summary; null when
300
+ # not configured or cold transfer.
301
+ #
302
+ # @return [String, nil]
303
+ required :warm_transfer_summary_instructions, String, nil?: true
304
+
125
305
  # @!attribute webhook_url
126
306
  # The webhook URL to call when the call is completed.
127
307
  #
128
308
  # @return [String, nil]
129
309
  required :webhook_url, String, nil?: true
130
310
 
311
+ # @!attribute zoho
312
+ #
313
+ # @return [Revox::Models::AssistantRetrieveResponse::Zoho, nil]
314
+ required :zoho, -> { Revox::Models::AssistantRetrieveResponse::Zoho }, nil?: true
315
+
316
+ # @!attribute created_by
317
+ # The user who created the assistant.
318
+ #
319
+ # @return [Revox::Models::AssistantRetrieveResponse::CreatedBy, nil]
320
+ optional :created_by, -> { Revox::Models::AssistantRetrieveResponse::CreatedBy }, nil?: true
321
+
131
322
  # @!attribute faq_items
132
323
  #
133
324
  # @return [Array<Revox::Models::AssistantRetrieveResponse::FaqItem>, nil]
134
325
  optional :faq_items,
135
326
  -> { Revox::Internal::Type::ArrayOf[Revox::Models::AssistantRetrieveResponse::FaqItem] }
136
327
 
328
+ # @!attribute is_realestate_assistant
329
+ #
330
+ # @return [Boolean, nil]
331
+ optional :is_realestate_assistant, Revox::Internal::Type::Boolean
332
+
137
333
  # @!attribute pending_faq_count
138
334
  #
139
335
  # @return [Float, nil]
140
336
  optional :pending_faq_count, Float
141
337
 
142
- # @!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)
338
+ # @!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)
143
339
  # Some parameter documentations has been truncated, see
144
340
  # {Revox::Models::AssistantRetrieveResponse} for more details.
145
341
  #
146
342
  # @param id [String]
147
343
  #
148
- # @param background_sound [Symbol, Revox::Models::AssistantRetrieveResponse::BackgroundSound, nil] The background sound to play during the call. Useful to give the impression that
344
+ # @param after_call_sms_outcomes [Array<Symbol, Revox::Models::AssistantRetrieveResponse::AfterCallSMSOutcome>, nil] Which call outcomes trigger the after-call SMS. When empty or null, no after-cal
345
+ #
346
+ # @param after_call_sms_prompt [String, nil] Prompt / instructions for the after-call SMS. Supports {{variable}} placeholders
347
+ #
348
+ # @param background_sound [Symbol, Revox::Models::AssistantRetrieveResponse::BackgroundSound, nil] Ambient background sound to play during the call. null disables it.
349
+ #
350
+ # @param background_sound_volume [Float] Volume of the ambient background sound (0 = silent, 1 = max).
149
351
  #
150
352
  # @param calendly [Revox::Models::AssistantRetrieveResponse::Calendly, nil]
151
353
  #
152
354
  # @param call_retry_config [Revox::Models::AssistantRetrieveResponse::CallRetryConfig, nil] Configuration for call retry behavior including time windows, delays, and max it
153
355
  #
356
+ # @param cartesia_dictionary_pronunciation_id [String, nil] Optional Cartesia pronunciation dictionary ID linked to this assistant.
357
+ #
154
358
  # @param created_at [Object]
155
359
  #
360
+ # @param custom_tools [Array<Revox::Models::AssistantRetrieveResponse::CustomTool>, nil]
361
+ #
362
+ # @param email_notification_address [String, nil] Email address(es) to receive notifications when a call ends with a matching outc
363
+ #
364
+ # @param email_notification_language [Symbol, Revox::Models::AssistantRetrieveResponse::EmailNotificationLanguage] The language used for the notification email content. One of "en" or "fr".
365
+ #
366
+ # @param email_notification_outcomes [Array<Symbol, Revox::Models::AssistantRetrieveResponse::EmailNotificationOutcome>, nil] Which call outcomes trigger an email notification. E.g. ["interested", "complete
367
+ #
156
368
  # @param end_of_call_sentence [String, nil]
157
369
  #
158
370
  # @param first_sentence [String, nil]
@@ -161,36 +373,93 @@ module Revox
161
373
  #
162
374
  # @param first_sentence_mode [Symbol, Revox::Models::AssistantRetrieveResponse::FirstSentenceMode]
163
375
  #
376
+ # @param from_phone_number [String, nil] Override the default outbound phone number for calls placed with this assistant.
377
+ #
378
+ # @param human_transfer_mode [Symbol, Revox::Models::AssistantRetrieveResponse::HumanTransferMode, nil] Warm or cold transfer when transfer_phone_number is set; null when transfer is n
379
+ #
164
380
  # @param ivr_navigation_enabled [Boolean] Enable IVR navigation tools. When enabled, the assistant can send DTMF tones and
165
381
  #
166
- # @param llm_model [Revox::Models::AssistantRetrieveResponse::LlmModel::UnionMember0, Revox::Models::AssistantRetrieveResponse::LlmModel::UnionMember1]
382
+ # @param llm_model [Revox::Models::AssistantRetrieveResponse::LlmModel::UnionMember0, Revox::Models::AssistantRetrieveResponse::LlmModel::UnionMember1, Revox::Models::AssistantRetrieveResponse::LlmModel::UnionMember2, Revox::Models::AssistantRetrieveResponse::LlmModel::UnionMember3]
383
+ #
384
+ # @param logo_url [String, nil] Public URL of the brand logo shown on the assistant's demo page. Null when unset
167
385
  #
168
386
  # @param max_call_duration_secs [Float] The maximum duration of the call in seconds. This is the maximum time the call w
169
387
  #
388
+ # @param max_duration_end_message [String, nil] Optional message the agent will say, without being interruptible, when the call
389
+ #
170
390
  # @param name [String]
171
391
  #
172
392
  # @param organization_id [String]
173
393
  #
394
+ # @param position [Revox::Models::AssistantRetrieveResponse::Position, nil]
395
+ #
174
396
  # @param prompt [String]
175
397
  #
398
+ # @param prompt_flow [Revox::Models::AssistantRetrieveResponse::PromptFlow, nil]
399
+ #
400
+ # @param slack [Revox::Models::AssistantRetrieveResponse::Slack, nil]
401
+ #
402
+ # @param sms_enabled [Boolean] Enable SMS tool during calls. When enabled, the agent can send SMS messages to t
403
+ #
404
+ # @param sms_template [String, nil] Hardcoded SMS template to send during calls. When set, this exact text is sent i
405
+ #
176
406
  # @param structured_output_config [Array<Revox::Models::AssistantRetrieveResponse::StructuredOutputConfig>, nil] The structured output config to use for the call. This is used to extract the da
177
407
  #
408
+ # @param structured_output_prompt [String, nil] Custom prompt for structured data extraction. If not provided, a default prompt
409
+ #
410
+ # @param stt_context [Revox::Models::AssistantRetrieveResponse::SttContext, nil] Assistant-level speech-to-text context: structured `general` key/value pairs plu
411
+ #
412
+ # @param stt_model [Symbol, Revox::Models::AssistantRetrieveResponse::SttModel] Transcriber (speech-to-text) model used for the assistant.
413
+ #
414
+ # @param thinking_sound [Symbol, Revox::Models::AssistantRetrieveResponse::ThinkingSound, nil] Audio clip to play while the agent is processing a response. One of the built-in
415
+ #
416
+ # @param thinking_sound_probability [Float] Probability [0..1] that the thinking sound plays on any given turn; otherwise th
417
+ #
418
+ # @param thinking_sound_volume [Float] Volume of the thinking sound (0 = silent, 1 = max).
419
+ #
178
420
  # @param transfer_phone_number [String, nil] Phone number to transfer calls to when users request to speak to a human agent.
179
421
  #
422
+ # @param type [Symbol, Revox::Models::AssistantRetrieveResponse::Type]
423
+ #
180
424
  # @param updated_at [Object]
181
425
  #
182
426
  # @param voice [Revox::Models::AssistantRetrieveResponse::Voice, nil]
183
427
  #
184
428
  # @param voicemail_message [String, nil] If set, when voicemail is detected the agent will speak this message then hang u
185
429
  #
430
+ # @param voicemail_sms_prompt [String, nil] Prompt / instructions for the voicemail SMS. Supports {{variable}} placeholders.
431
+ #
432
+ # @param warm_transfer_summary_instructions [String, nil] Warm transfer only: instructions for the supervisor handoff summary; null when n
433
+ #
186
434
  # @param webhook_url [String, nil] The webhook URL to call when the call is completed.
187
435
  #
436
+ # @param zoho [Revox::Models::AssistantRetrieveResponse::Zoho, nil]
437
+ #
438
+ # @param created_by [Revox::Models::AssistantRetrieveResponse::CreatedBy, nil] The user who created the assistant.
439
+ #
188
440
  # @param faq_items [Array<Revox::Models::AssistantRetrieveResponse::FaqItem>]
189
441
  #
442
+ # @param is_realestate_assistant [Boolean]
443
+ #
190
444
  # @param pending_faq_count [Float]
191
445
 
192
- # The background sound to play during the call. Useful to give the impression that
193
- # your AI agent is in an office.
446
+ module AfterCallSMSOutcome
447
+ extend Revox::Internal::Type::Enum
448
+
449
+ NOT_INTERESTED = :not_interested
450
+ INTERESTED = :interested
451
+ COMPLETED = :completed
452
+ REQUESTED_CALLBACK_LATER = :requested_callback_later
453
+ REQUESTED_CALLBACK_NEW_NUMBER = :requested_callback_new_number
454
+ DO_NOT_CONTACT = :do_not_contact
455
+ AI_AVERSE = :ai_averse
456
+ NONE = :none
457
+
458
+ # @!method self.values
459
+ # @return [Array<Symbol>]
460
+ end
461
+
462
+ # Ambient background sound to play during the call. null disables it.
194
463
  #
195
464
  # @see Revox::Models::AssistantRetrieveResponse#background_sound
196
465
  module BackgroundSound
@@ -228,6 +497,23 @@ module Revox
228
497
 
229
498
  # @see Revox::Models::AssistantRetrieveResponse#call_retry_config
230
499
  class CallRetryConfig < Revox::Internal::Type::BaseModel
500
+ # @!attribute allowed_days
501
+ # Days of the week when calls are allowed, in the recipient's timezone. Default:
502
+ # Monday through Friday.
503
+ #
504
+ # @return [Array<Symbol, Revox::Models::AssistantRetrieveResponse::CallRetryConfig::AllowedDay>]
505
+ required :allowed_days,
506
+ -> { Revox::Internal::Type::ArrayOf[enum: Revox::Models::AssistantRetrieveResponse::CallRetryConfig::AllowedDay] }
507
+
508
+ # @!attribute call_twice_in_a_row
509
+ # If true and max_retry_attempts >= 2, attempt #2 fires immediately (skipping
510
+ # retry_delay_seconds) when attempt #1 didn't reach a human.
511
+ # Calling-window/allowed-days checks still apply. Only affects the 1→2 transition.
512
+ # Default: false.
513
+ #
514
+ # @return [Boolean]
515
+ required :call_twice_in_a_row, Revox::Internal::Type::Boolean
516
+
231
517
  # @!attribute calling_windows
232
518
  #
233
519
  # @return [Array<Revox::Models::AssistantRetrieveResponse::CallRetryConfig::CallingWindow>]
@@ -248,19 +534,38 @@ module Revox
248
534
  # @return [String, nil]
249
535
  optional :timezone, String, nil?: true
250
536
 
251
- # @!method initialize(calling_windows:, max_retry_attempts:, timezone: nil)
537
+ # @!method initialize(allowed_days:, call_twice_in_a_row:, calling_windows:, max_retry_attempts:, timezone: nil)
252
538
  # Some parameter documentations has been truncated, see
253
539
  # {Revox::Models::AssistantRetrieveResponse::CallRetryConfig} for more details.
254
540
  #
255
541
  # Configuration for call retry behavior including time windows, delays, and max
256
542
  # iterations. If not provided, defaults will be used.
257
543
  #
544
+ # @param allowed_days [Array<Symbol, Revox::Models::AssistantRetrieveResponse::CallRetryConfig::AllowedDay>] Days of the week when calls are allowed, in the recipient's timezone. Default: M
545
+ #
546
+ # @param call_twice_in_a_row [Boolean] If true and max_retry_attempts >= 2, attempt #2 fires immediately (skipping retr
547
+ #
258
548
  # @param calling_windows [Array<Revox::Models::AssistantRetrieveResponse::CallRetryConfig::CallingWindow>]
259
549
  #
260
550
  # @param max_retry_attempts [Integer] Maximum number of call retry attempts. Default: 3.
261
551
  #
262
552
  # @param timezone [String, nil] Optional IANA timezone identifier to override the automatic timezone detection f
263
553
 
554
+ module AllowedDay
555
+ extend Revox::Internal::Type::Enum
556
+
557
+ MONDAY = :monday
558
+ TUESDAY = :tuesday
559
+ WEDNESDAY = :wednesday
560
+ THURSDAY = :thursday
561
+ FRIDAY = :friday
562
+ SATURDAY = :saturday
563
+ SUNDAY = :sunday
564
+
565
+ # @!method self.values
566
+ # @return [Array<Symbol>]
567
+ end
568
+
264
569
  class CallingWindow < Revox::Internal::Type::BaseModel
265
570
  # @!attribute calling_window_end_time
266
571
  # End time for the calling window in the recipient's timezone (or
@@ -297,6 +602,212 @@ module Revox
297
602
  end
298
603
  end
299
604
 
605
+ class CustomTool < Revox::Internal::Type::BaseModel
606
+ # @!attribute body_template
607
+ # JSON body template for the request. Use quoted {{variable}} placeholders (e.g.
608
+ # "{{name}}") for dynamic values
609
+ #
610
+ # @return [String, nil]
611
+ required :body_template, String, nil?: true
612
+
613
+ # @!attribute description
614
+ # Human-readable description of what the tool does, used by the LLM to decide when
615
+ # to call it
616
+ #
617
+ # @return [String]
618
+ required :description, String
619
+
620
+ # @!attribute headers
621
+ # HTTP headers to include in the request. Values support {{variable}} placeholders
622
+ #
623
+ # @return [Array<Revox::Models::AssistantRetrieveResponse::CustomTool::Header>]
624
+ required :headers,
625
+ -> { Revox::Internal::Type::ArrayOf[Revox::Models::AssistantRetrieveResponse::CustomTool::Header] }
626
+
627
+ # @!attribute input_schema
628
+ # Schema defining the parameters the LLM should extract from the conversation to
629
+ # pass to this tool
630
+ #
631
+ # @return [Array<Revox::Models::AssistantRetrieveResponse::CustomTool::InputSchema>]
632
+ required :input_schema,
633
+ -> { Revox::Internal::Type::ArrayOf[Revox::Models::AssistantRetrieveResponse::CustomTool::InputSchema] }
634
+
635
+ # @!attribute method_
636
+ # HTTP method to use when calling the API endpoint
637
+ #
638
+ # @return [Symbol, Revox::Models::AssistantRetrieveResponse::CustomTool::Method]
639
+ required :method_,
640
+ enum: -> { Revox::Models::AssistantRetrieveResponse::CustomTool::Method },
641
+ api_name: :method
642
+
643
+ # @!attribute name
644
+ # Unique tool name in lowercase_snake_case (e.g. check_inventory)
645
+ #
646
+ # @return [String]
647
+ required :name, String
648
+
649
+ # @!attribute query_params
650
+ # Query string parameters appended to the URL. Values support {{variable}}
651
+ # placeholders
652
+ #
653
+ # @return [Array<Revox::Models::AssistantRetrieveResponse::CustomTool::QueryParam>]
654
+ required :query_params,
655
+ -> { Revox::Internal::Type::ArrayOf[Revox::Models::AssistantRetrieveResponse::CustomTool::QueryParam] }
656
+
657
+ # @!attribute url
658
+ # Full URL of the API endpoint. Supports {{variable}} placeholders for dynamic
659
+ # values
660
+ #
661
+ # @return [String]
662
+ required :url, String
663
+
664
+ # @!method initialize(body_template:, description:, headers:, input_schema:, method_:, name:, query_params:, url:)
665
+ # Some parameter documentations has been truncated, see
666
+ # {Revox::Models::AssistantRetrieveResponse::CustomTool} for more details.
667
+ #
668
+ # @param body_template [String, nil] JSON body template for the request. Use quoted {{variable}} placeholders (e.g. "
669
+ #
670
+ # @param description [String] Human-readable description of what the tool does, used by the LLM to decide when
671
+ #
672
+ # @param headers [Array<Revox::Models::AssistantRetrieveResponse::CustomTool::Header>] HTTP headers to include in the request. Values support {{variable}} placeholders
673
+ #
674
+ # @param input_schema [Array<Revox::Models::AssistantRetrieveResponse::CustomTool::InputSchema>] Schema defining the parameters the LLM should extract from the conversation to p
675
+ #
676
+ # @param method_ [Symbol, Revox::Models::AssistantRetrieveResponse::CustomTool::Method] HTTP method to use when calling the API endpoint
677
+ #
678
+ # @param name [String] Unique tool name in lowercase_snake_case (e.g. check_inventory)
679
+ #
680
+ # @param query_params [Array<Revox::Models::AssistantRetrieveResponse::CustomTool::QueryParam>] Query string parameters appended to the URL. Values support {{variable}} placeho
681
+ #
682
+ # @param url [String] Full URL of the API endpoint. Supports {{variable}} placeholders for dynamic val
683
+
684
+ class Header < Revox::Internal::Type::BaseModel
685
+ # @!attribute key
686
+ #
687
+ # @return [String]
688
+ required :key, String
689
+
690
+ # @!attribute value
691
+ #
692
+ # @return [String]
693
+ required :value, String
694
+
695
+ # @!method initialize(key:, value:)
696
+ # @param key [String]
697
+ # @param value [String]
698
+ end
699
+
700
+ class InputSchema < Revox::Internal::Type::BaseModel
701
+ # @!attribute name
702
+ #
703
+ # @return [String]
704
+ required :name, String
705
+
706
+ # @!attribute required
707
+ #
708
+ # @return [Boolean]
709
+ required :required, Revox::Internal::Type::Boolean
710
+
711
+ # @!attribute type
712
+ #
713
+ # @return [Symbol, Revox::Models::AssistantRetrieveResponse::CustomTool::InputSchema::Type]
714
+ required :type, enum: -> { Revox::Models::AssistantRetrieveResponse::CustomTool::InputSchema::Type }
715
+
716
+ # @!attribute description
717
+ #
718
+ # @return [String, nil]
719
+ optional :description, String
720
+
721
+ # @!attribute enum_options
722
+ #
723
+ # @return [Array<String>, nil]
724
+ optional :enum_options, Revox::Internal::Type::ArrayOf[String]
725
+
726
+ # @!method initialize(name:, required:, type:, description: nil, enum_options: nil)
727
+ # @param name [String]
728
+ # @param required [Boolean]
729
+ # @param type [Symbol, Revox::Models::AssistantRetrieveResponse::CustomTool::InputSchema::Type]
730
+ # @param description [String]
731
+ # @param enum_options [Array<String>]
732
+
733
+ # @see Revox::Models::AssistantRetrieveResponse::CustomTool::InputSchema#type
734
+ module Type
735
+ extend Revox::Internal::Type::Enum
736
+
737
+ STRING = :string
738
+ NUMBER = :number
739
+ BOOLEAN = :boolean
740
+ ENUM = :enum
741
+ DATE = :date
742
+ DATETIME = :datetime
743
+
744
+ # @!method self.values
745
+ # @return [Array<Symbol>]
746
+ end
747
+ end
748
+
749
+ # HTTP method to use when calling the API endpoint
750
+ #
751
+ # @see Revox::Models::AssistantRetrieveResponse::CustomTool#method_
752
+ module Method
753
+ extend Revox::Internal::Type::Enum
754
+
755
+ GET = :GET
756
+ POST = :POST
757
+ PUT = :PUT
758
+ PATCH = :PATCH
759
+ DELETE = :DELETE
760
+
761
+ # @!method self.values
762
+ # @return [Array<Symbol>]
763
+ end
764
+
765
+ class QueryParam < Revox::Internal::Type::BaseModel
766
+ # @!attribute key
767
+ #
768
+ # @return [String]
769
+ required :key, String
770
+
771
+ # @!attribute value
772
+ #
773
+ # @return [String]
774
+ required :value, String
775
+
776
+ # @!method initialize(key:, value:)
777
+ # @param key [String]
778
+ # @param value [String]
779
+ end
780
+ end
781
+
782
+ # The language used for the notification email content. One of "en" or "fr".
783
+ #
784
+ # @see Revox::Models::AssistantRetrieveResponse#email_notification_language
785
+ module EmailNotificationLanguage
786
+ extend Revox::Internal::Type::Enum
787
+
788
+ EN = :en
789
+ FR = :fr
790
+
791
+ # @!method self.values
792
+ # @return [Array<Symbol>]
793
+ end
794
+
795
+ module EmailNotificationOutcome
796
+ extend Revox::Internal::Type::Enum
797
+
798
+ NOT_INTERESTED = :not_interested
799
+ INTERESTED = :interested
800
+ COMPLETED = :completed
801
+ REQUESTED_CALLBACK_LATER = :requested_callback_later
802
+ REQUESTED_CALLBACK_NEW_NUMBER = :requested_callback_new_number
803
+ DO_NOT_CONTACT = :do_not_contact
804
+ AI_AVERSE = :ai_averse
805
+ NONE = :none
806
+
807
+ # @!method self.values
808
+ # @return [Array<Symbol>]
809
+ end
810
+
300
811
  # @see Revox::Models::AssistantRetrieveResponse#first_sentence_mode
301
812
  module FirstSentenceMode
302
813
  extend Revox::Internal::Type::Enum
@@ -309,6 +820,20 @@ module Revox
309
820
  # @return [Array<Symbol>]
310
821
  end
311
822
 
823
+ # Warm or cold transfer when transfer_phone_number is set; null when transfer is
824
+ # not configured.
825
+ #
826
+ # @see Revox::Models::AssistantRetrieveResponse#human_transfer_mode
827
+ module HumanTransferMode
828
+ extend Revox::Internal::Type::Enum
829
+
830
+ WARM = :warm
831
+ COLD = :cold
832
+
833
+ # @!method self.values
834
+ # @return [Array<Symbol>]
835
+ end
836
+
312
837
  # @see Revox::Models::AssistantRetrieveResponse#llm_model
313
838
  module LlmModel
314
839
  extend Revox::Internal::Type::Union
@@ -317,6 +842,10 @@ module Revox
317
842
 
318
843
  variant -> { Revox::Models::AssistantRetrieveResponse::LlmModel::UnionMember1 }
319
844
 
845
+ variant -> { Revox::Models::AssistantRetrieveResponse::LlmModel::UnionMember2 }
846
+
847
+ variant -> { Revox::Models::AssistantRetrieveResponse::LlmModel::UnionMember3 }
848
+
320
849
  class UnionMember0 < Revox::Internal::Type::BaseModel
321
850
  # @!attribute name
322
851
  #
@@ -371,8 +900,282 @@ module Revox
371
900
  # @param type [Symbol, :openrouter] Use a model from OpenRouter.
372
901
  end
373
902
 
903
+ class UnionMember2 < Revox::Internal::Type::BaseModel
904
+ # @!attribute api_key
905
+ # API key sent as Bearer token to the custom endpoint.
906
+ #
907
+ # @return [String]
908
+ required :api_key, String
909
+
910
+ # @!attribute api_url
911
+ # Base URL for the OpenAI-compatible API, e.g. https://api.together.xyz/v1
912
+ #
913
+ # @return [String]
914
+ required :api_url, String
915
+
916
+ # @!attribute model_name
917
+ # Model name as expected by the provider, e.g. meta-llama/llama-3-70b
918
+ #
919
+ # @return [String]
920
+ required :model_name, String
921
+
922
+ # @!attribute type
923
+ # OpenAI-compatible chat completions API (bring your own endpoint and key).
924
+ #
925
+ # @return [Symbol, :custom]
926
+ required :type, const: :custom
927
+
928
+ # @!method initialize(api_key:, api_url:, model_name:, type: :custom)
929
+ # @param api_key [String] API key sent as Bearer token to the custom endpoint.
930
+ #
931
+ # @param api_url [String] Base URL for the OpenAI-compatible API, e.g. https://api.together.xyz/v1
932
+ #
933
+ # @param model_name [String] Model name as expected by the provider, e.g. meta-llama/llama-3-70b
934
+ #
935
+ # @param type [Symbol, :custom] OpenAI-compatible chat completions API (bring your own endpoint and key).
936
+ end
937
+
938
+ class UnionMember3 < Revox::Internal::Type::BaseModel
939
+ # @!attribute provider
940
+ # The provider to use from Realtime. eg: openai, google.
941
+ #
942
+ # @return [Symbol, Revox::Models::AssistantRetrieveResponse::LlmModel::UnionMember3::Provider]
943
+ required :provider,
944
+ enum: -> { Revox::Models::AssistantRetrieveResponse::LlmModel::UnionMember3::Provider }
945
+
946
+ # @!attribute realtime_model_id
947
+ # The model ID to use from Realtime. eg: gpt-4.1
948
+ #
949
+ # @return [String]
950
+ required :realtime_model_id, String
951
+
952
+ # @!attribute type
953
+ # Use a model from Realtime.
954
+ #
955
+ # @return [Symbol, :realtime]
956
+ required :type, const: :realtime
957
+
958
+ # @!attribute realtime_voice_id
959
+ # Output voice for the realtime provider (e.g. OpenAI: marin; Gemini: Puck).
960
+ #
961
+ # @return [String, nil]
962
+ optional :realtime_voice_id, String
963
+
964
+ # @!method initialize(provider:, realtime_model_id:, realtime_voice_id: nil, type: :realtime)
965
+ # @param provider [Symbol, Revox::Models::AssistantRetrieveResponse::LlmModel::UnionMember3::Provider] The provider to use from Realtime. eg: openai, google.
966
+ #
967
+ # @param realtime_model_id [String] The model ID to use from Realtime. eg: gpt-4.1
968
+ #
969
+ # @param realtime_voice_id [String] Output voice for the realtime provider (e.g. OpenAI: marin; Gemini: Puck).
970
+ #
971
+ # @param type [Symbol, :realtime] Use a model from Realtime.
972
+
973
+ # The provider to use from Realtime. eg: openai, google.
974
+ #
975
+ # @see Revox::Models::AssistantRetrieveResponse::LlmModel::UnionMember3#provider
976
+ module Provider
977
+ extend Revox::Internal::Type::Enum
978
+
979
+ OPENAI = :openai
980
+ GOOGLE = :google
981
+
982
+ # @!method self.values
983
+ # @return [Array<Symbol>]
984
+ end
985
+ end
986
+
374
987
  # @!method self.variants
375
- # @return [Array(Revox::Models::AssistantRetrieveResponse::LlmModel::UnionMember0, Revox::Models::AssistantRetrieveResponse::LlmModel::UnionMember1)]
988
+ # @return [Array(Revox::Models::AssistantRetrieveResponse::LlmModel::UnionMember0, Revox::Models::AssistantRetrieveResponse::LlmModel::UnionMember1, Revox::Models::AssistantRetrieveResponse::LlmModel::UnionMember2, Revox::Models::AssistantRetrieveResponse::LlmModel::UnionMember3)]
989
+ end
990
+
991
+ # @see Revox::Models::AssistantRetrieveResponse#position
992
+ class Position < Revox::Internal::Type::BaseModel
993
+ # @!attribute x
994
+ #
995
+ # @return [Float]
996
+ required :x, Float
997
+
998
+ # @!attribute y_
999
+ #
1000
+ # @return [Float]
1001
+ required :y_, Float, api_name: :y
1002
+
1003
+ # @!method initialize(x:, y_:)
1004
+ # @param x [Float]
1005
+ # @param y_ [Float]
1006
+ end
1007
+
1008
+ # @see Revox::Models::AssistantRetrieveResponse#prompt_flow
1009
+ class PromptFlow < Revox::Internal::Type::BaseModel
1010
+ # @!attribute edges
1011
+ #
1012
+ # @return [Array<Revox::Models::AssistantRetrieveResponse::PromptFlow::Edge>]
1013
+ required :edges,
1014
+ -> { Revox::Internal::Type::ArrayOf[Revox::Models::AssistantRetrieveResponse::PromptFlow::Edge] }
1015
+
1016
+ # @!attribute nodes
1017
+ #
1018
+ # @return [Array<Revox::Models::AssistantRetrieveResponse::PromptFlow::Node>]
1019
+ required :nodes,
1020
+ -> { Revox::Internal::Type::ArrayOf[Revox::Models::AssistantRetrieveResponse::PromptFlow::Node] }
1021
+
1022
+ # @!method initialize(edges:, nodes:)
1023
+ # @param edges [Array<Revox::Models::AssistantRetrieveResponse::PromptFlow::Edge>]
1024
+ # @param nodes [Array<Revox::Models::AssistantRetrieveResponse::PromptFlow::Node>]
1025
+
1026
+ class Edge < Revox::Internal::Type::BaseModel
1027
+ # @!attribute id
1028
+ #
1029
+ # @return [String]
1030
+ required :id, String
1031
+
1032
+ # @!attribute source
1033
+ #
1034
+ # @return [String]
1035
+ required :source, String
1036
+
1037
+ # @!attribute target
1038
+ #
1039
+ # @return [String]
1040
+ required :target, String
1041
+
1042
+ # @!method initialize(id:, source:, target:)
1043
+ # @param id [String]
1044
+ # @param source [String]
1045
+ # @param target [String]
1046
+ end
1047
+
1048
+ class Node < Revox::Internal::Type::BaseModel
1049
+ # @!attribute id
1050
+ #
1051
+ # @return [String]
1052
+ required :id, String
1053
+
1054
+ # @!attribute data
1055
+ #
1056
+ # @return [Revox::Models::AssistantRetrieveResponse::PromptFlow::Node::Data]
1057
+ required :data, -> { Revox::Models::AssistantRetrieveResponse::PromptFlow::Node::Data }
1058
+
1059
+ # @!attribute position
1060
+ #
1061
+ # @return [Revox::Models::AssistantRetrieveResponse::PromptFlow::Node::Position]
1062
+ required :position, -> { Revox::Models::AssistantRetrieveResponse::PromptFlow::Node::Position }
1063
+
1064
+ # @!attribute type
1065
+ #
1066
+ # @return [Symbol, :promptBlock]
1067
+ required :type, const: :promptBlock
1068
+
1069
+ # @!method initialize(id:, data:, position:, type: :promptBlock)
1070
+ # @param id [String]
1071
+ # @param data [Revox::Models::AssistantRetrieveResponse::PromptFlow::Node::Data]
1072
+ # @param position [Revox::Models::AssistantRetrieveResponse::PromptFlow::Node::Position]
1073
+ # @param type [Symbol, :promptBlock]
1074
+
1075
+ # @see Revox::Models::AssistantRetrieveResponse::PromptFlow::Node#data
1076
+ class Data < Revox::Internal::Type::BaseModel
1077
+ # @!attribute body
1078
+ #
1079
+ # @return [String]
1080
+ required :body, String
1081
+
1082
+ # @!attribute title
1083
+ #
1084
+ # @return [String]
1085
+ required :title, String
1086
+
1087
+ # @!method initialize(body:, title:)
1088
+ # @param body [String]
1089
+ # @param title [String]
1090
+ end
1091
+
1092
+ # @see Revox::Models::AssistantRetrieveResponse::PromptFlow::Node#position
1093
+ class Position < Revox::Internal::Type::BaseModel
1094
+ # @!attribute x
1095
+ #
1096
+ # @return [Float]
1097
+ required :x, Float
1098
+
1099
+ # @!attribute y_
1100
+ #
1101
+ # @return [Float]
1102
+ required :y_, Float, api_name: :y
1103
+
1104
+ # @!method initialize(x:, y_:)
1105
+ # @param x [Float]
1106
+ # @param y_ [Float]
1107
+ end
1108
+ end
1109
+ end
1110
+
1111
+ # @see Revox::Models::AssistantRetrieveResponse#slack
1112
+ class Slack < Revox::Internal::Type::BaseModel
1113
+ # @!attribute channel_id
1114
+ # The Slack channel ID where the notification will be posted.
1115
+ #
1116
+ # @return [String]
1117
+ required :channel_id, String
1118
+
1119
+ # @!attribute connection_id
1120
+ # The Nango connection ID linking the org's Slack workspace to Revox.
1121
+ #
1122
+ # @return [String]
1123
+ required :connection_id, String
1124
+
1125
+ # @!attribute outcomes
1126
+ # Which call outcomes trigger a Slack notification (e.g. ['interested', 'none']).
1127
+ # Use 'none' to notify when outcome is null.
1128
+ #
1129
+ # @return [Array<Symbol, Revox::Models::AssistantRetrieveResponse::Slack::Outcome>]
1130
+ required :outcomes,
1131
+ -> { Revox::Internal::Type::ArrayOf[enum: Revox::Models::AssistantRetrieveResponse::Slack::Outcome] }
1132
+
1133
+ # @!attribute channel_name
1134
+ # Human-readable Slack channel name, cached for display in the UI.
1135
+ #
1136
+ # @return [String, nil]
1137
+ optional :channel_name, String, nil?: true
1138
+
1139
+ # @!attribute template
1140
+ # Optional message template. Supports {{summary}}, {{outcome}}, {{phone}},
1141
+ # {{call_url}}, {{assistant_name}}, {{campaign_name}}, {{first_name}},
1142
+ # {{last_name}}, {{email}}, {{company}}, {{contact_name}}, {{contact_line}}, plus
1143
+ # prompt_variables and structured_output keys. When null/empty a default template
1144
+ # is used.
1145
+ #
1146
+ # @return [String, nil]
1147
+ optional :template, String, nil?: true
1148
+
1149
+ # @!method initialize(channel_id:, connection_id:, outcomes:, channel_name: nil, template: nil)
1150
+ # Some parameter documentations has been truncated, see
1151
+ # {Revox::Models::AssistantRetrieveResponse::Slack} for more details.
1152
+ #
1153
+ # @param channel_id [String] The Slack channel ID where the notification will be posted.
1154
+ #
1155
+ # @param connection_id [String] The Nango connection ID linking the org's Slack workspace to Revox.
1156
+ #
1157
+ # @param outcomes [Array<Symbol, Revox::Models::AssistantRetrieveResponse::Slack::Outcome>] Which call outcomes trigger a Slack notification (e.g. ['interested', 'none']).
1158
+ #
1159
+ # @param channel_name [String, nil] Human-readable Slack channel name, cached for display in the UI.
1160
+ #
1161
+ # @param template [String, nil] Optional message template. Supports {{summary}}, {{outcome}}, {{phone}},
1162
+ # {{call\_
1163
+
1164
+ module Outcome
1165
+ extend Revox::Internal::Type::Enum
1166
+
1167
+ NOT_INTERESTED = :not_interested
1168
+ INTERESTED = :interested
1169
+ COMPLETED = :completed
1170
+ REQUESTED_CALLBACK_LATER = :requested_callback_later
1171
+ REQUESTED_CALLBACK_NEW_NUMBER = :requested_callback_new_number
1172
+ DO_NOT_CONTACT = :do_not_contact
1173
+ AI_AVERSE = :ai_averse
1174
+ NONE = :none
1175
+
1176
+ # @!method self.values
1177
+ # @return [Array<Symbol>]
1178
+ end
376
1179
  end
377
1180
 
378
1181
  class StructuredOutputConfig < Revox::Internal::Type::BaseModel
@@ -424,6 +1227,88 @@ module Revox
424
1227
  end
425
1228
  end
426
1229
 
1230
+ # @see Revox::Models::AssistantRetrieveResponse#stt_context
1231
+ class SttContext < Revox::Internal::Type::BaseModel
1232
+ # @!attribute general
1233
+ #
1234
+ # @return [Array<Revox::Models::AssistantRetrieveResponse::SttContext::General>]
1235
+ required :general,
1236
+ -> { Revox::Internal::Type::ArrayOf[Revox::Models::AssistantRetrieveResponse::SttContext::General] }
1237
+
1238
+ # @!attribute terms
1239
+ #
1240
+ # @return [Array<String>]
1241
+ required :terms, Revox::Internal::Type::ArrayOf[String]
1242
+
1243
+ # @!method initialize(general:, terms:)
1244
+ # Assistant-level speech-to-text context: structured `general` key/value pairs
1245
+ # plus a list of domain `terms`. Prompt-derived context is merged in without
1246
+ # replacing existing entries.
1247
+ #
1248
+ # @param general [Array<Revox::Models::AssistantRetrieveResponse::SttContext::General>]
1249
+ # @param terms [Array<String>]
1250
+
1251
+ class General < Revox::Internal::Type::BaseModel
1252
+ # @!attribute key
1253
+ #
1254
+ # @return [String]
1255
+ required :key, String
1256
+
1257
+ # @!attribute value
1258
+ #
1259
+ # @return [String]
1260
+ required :value, String
1261
+
1262
+ # @!method initialize(key:, value:)
1263
+ # @param key [String]
1264
+ # @param value [String]
1265
+ end
1266
+ end
1267
+
1268
+ # Transcriber (speech-to-text) model used for the assistant.
1269
+ #
1270
+ # @see Revox::Models::AssistantRetrieveResponse#stt_model
1271
+ module SttModel
1272
+ extend Revox::Internal::Type::Enum
1273
+
1274
+ STT_RT_V4 = :"stt-rt-v4"
1275
+ STT_RT_V5 = :"stt-rt-v5"
1276
+
1277
+ # @!method self.values
1278
+ # @return [Array<Symbol>]
1279
+ end
1280
+
1281
+ # Audio clip to play while the agent is processing a response. One of the built-in
1282
+ # LiveKit audio clips; null disables it.
1283
+ #
1284
+ # @see Revox::Models::AssistantRetrieveResponse#thinking_sound
1285
+ module ThinkingSound
1286
+ extend Revox::Internal::Type::Enum
1287
+
1288
+ CITY_AMBIENCE_OGG = :"city-ambience.ogg"
1289
+ FOREST_AMBIENCE_OGG = :"forest-ambience.ogg"
1290
+ OFFICE_AMBIENCE_OGG = :"office-ambience.ogg"
1291
+ CROWDED_ROOM_OGG = :"crowded-room.ogg"
1292
+ KEYBOARD_TYPING_OGG = :"keyboard-typing.ogg"
1293
+ KEYBOARD_TYPING2_OGG = :"keyboard-typing2.ogg"
1294
+ HOLD_MUSIC_OGG = :"hold_music.ogg"
1295
+
1296
+ # @!method self.values
1297
+ # @return [Array<Symbol>]
1298
+ end
1299
+
1300
+ # @see Revox::Models::AssistantRetrieveResponse#type
1301
+ module Type
1302
+ extend Revox::Internal::Type::Enum
1303
+
1304
+ STANDALONE = :standalone
1305
+ MULTI_STEP = :"multi-step"
1306
+ SUB_ASSISTANT = :"sub-assistant"
1307
+
1308
+ # @!method self.values
1309
+ # @return [Array<Symbol>]
1310
+ end
1311
+
427
1312
  # @see Revox::Models::AssistantRetrieveResponse#voice
428
1313
  class Voice < Revox::Internal::Type::BaseModel
429
1314
  # @!attribute id
@@ -438,6 +1323,13 @@ module Revox
438
1323
  # @return [Symbol, Revox::Models::AssistantRetrieveResponse::Voice::Provider]
439
1324
  required :provider, enum: -> { Revox::Models::AssistantRetrieveResponse::Voice::Provider }
440
1325
 
1326
+ # @!attribute model
1327
+ # Cartesia TTS model (Cartesia only). Defaults to sonic-3 when omitted. Ignored
1328
+ # for other providers.
1329
+ #
1330
+ # @return [Symbol, Revox::Models::AssistantRetrieveResponse::Voice::Model, nil]
1331
+ optional :model, enum: -> { Revox::Models::AssistantRetrieveResponse::Voice::Model }
1332
+
441
1333
  # @!attribute speed
442
1334
  # The speed of the voice. Range depends on provider: Cartesia 0.6–1.5, ElevenLabs
443
1335
  # 0.7–1.2. Default is 1.0.
@@ -445,7 +1337,14 @@ module Revox
445
1337
  # @return [Float, nil]
446
1338
  optional :speed, Float
447
1339
 
448
- # @!method initialize(id:, provider:, speed: nil)
1340
+ # @!attribute volume
1341
+ # Volume of the voice (Cartesia only). 0.5–2.0, default 1.0. Ignored for other
1342
+ # providers.
1343
+ #
1344
+ # @return [Float, nil]
1345
+ optional :volume, Float
1346
+
1347
+ # @!method initialize(id:, provider:, model: nil, speed: nil, volume: nil)
449
1348
  # Some parameter documentations has been truncated, see
450
1349
  # {Revox::Models::AssistantRetrieveResponse::Voice} for more details.
451
1350
  #
@@ -453,7 +1352,11 @@ module Revox
453
1352
  #
454
1353
  # @param provider [Symbol, Revox::Models::AssistantRetrieveResponse::Voice::Provider] The provider of the voice.
455
1354
  #
1355
+ # @param model [Symbol, Revox::Models::AssistantRetrieveResponse::Voice::Model] Cartesia TTS model (Cartesia only). Defaults to sonic-3 when omitted. Ignored fo
1356
+ #
456
1357
  # @param speed [Float] The speed of the voice. Range depends on provider: Cartesia 0.6–1.5, ElevenLabs
1358
+ #
1359
+ # @param volume [Float] Volume of the voice (Cartesia only). 0.5–2.0, default 1.0. Ignored for other pro
457
1360
 
458
1361
  # The provider of the voice.
459
1362
  #
@@ -467,6 +1370,158 @@ module Revox
467
1370
  # @!method self.values
468
1371
  # @return [Array<Symbol>]
469
1372
  end
1373
+
1374
+ # Cartesia TTS model (Cartesia only). Defaults to sonic-3 when omitted. Ignored
1375
+ # for other providers.
1376
+ #
1377
+ # @see Revox::Models::AssistantRetrieveResponse::Voice#model
1378
+ module Model
1379
+ extend Revox::Internal::Type::Enum
1380
+
1381
+ SONIC_3 = :"sonic-3"
1382
+ SONIC_3_5 = :"sonic-3.5"
1383
+
1384
+ # @!method self.values
1385
+ # @return [Array<Symbol>]
1386
+ end
1387
+ end
1388
+
1389
+ # @see Revox::Models::AssistantRetrieveResponse#zoho
1390
+ class Zoho < Revox::Internal::Type::BaseModel
1391
+ # @!attribute connection_id
1392
+ # The Nango connection ID linking the org's Zoho CRM account to Revox.
1393
+ #
1394
+ # @return [String]
1395
+ required :connection_id, String
1396
+
1397
+ # @!attribute field_mapping
1398
+ # Maps extracted call fields (structured_output / prompt variables) onto Zoho
1399
+ # field API names on the upserted record.
1400
+ #
1401
+ # @return [Array<Revox::Models::AssistantRetrieveResponse::Zoho::FieldMapping>]
1402
+ required :field_mapping,
1403
+ -> { Revox::Internal::Type::ArrayOf[Revox::Models::AssistantRetrieveResponse::Zoho::FieldMapping] }
1404
+
1405
+ # @!attribute log_call_activity
1406
+ # When true, also log the call as a record in Zoho's Calls module (related to the
1407
+ # upserted prospect via Who_Id).
1408
+ #
1409
+ # @return [Boolean]
1410
+ required :log_call_activity, Revox::Internal::Type::Boolean
1411
+
1412
+ # @!attribute module_
1413
+ # Zoho module the prospect record is upserted into (e.g. 'Leads' or 'Contacts').
1414
+ #
1415
+ # @return [String]
1416
+ required :module_, String, api_name: :module
1417
+
1418
+ # @!attribute outcomes
1419
+ # Which call outcomes trigger the Zoho push (e.g. ['interested', 'none']). Use
1420
+ # 'none' to push when outcome is null.
1421
+ #
1422
+ # @return [Array<Symbol, Revox::Models::AssistantRetrieveResponse::Zoho::Outcome>]
1423
+ required :outcomes,
1424
+ -> { Revox::Internal::Type::ArrayOf[enum: Revox::Models::AssistantRetrieveResponse::Zoho::Outcome] }
1425
+
1426
+ # @!attribute template
1427
+ # Optional Note body template. Supports {{summary}}, {{outcome}}, {{phone}},
1428
+ # {{call_url}}, {{assistant_name}}, {{campaign_name}}, {{transcript}}, plus
1429
+ # prompt_variables and structured_output keys. When null/empty a default note
1430
+ # (outcome + summary + auto-listed extracted fields) is used.
1431
+ #
1432
+ # @return [String, nil]
1433
+ optional :template, String, nil?: true
1434
+
1435
+ # @!method initialize(connection_id:, field_mapping:, log_call_activity:, module_:, outcomes:, template: nil)
1436
+ # Some parameter documentations has been truncated, see
1437
+ # {Revox::Models::AssistantRetrieveResponse::Zoho} for more details.
1438
+ #
1439
+ # @param connection_id [String] The Nango connection ID linking the org's Zoho CRM account to Revox.
1440
+ #
1441
+ # @param field_mapping [Array<Revox::Models::AssistantRetrieveResponse::Zoho::FieldMapping>] Maps extracted call fields (structured_output / prompt variables) onto Zoho fiel
1442
+ #
1443
+ # @param log_call_activity [Boolean] When true, also log the call as a record in Zoho's Calls module (related to the
1444
+ #
1445
+ # @param module_ [String] Zoho module the prospect record is upserted into (e.g. 'Leads' or 'Contacts').
1446
+ #
1447
+ # @param outcomes [Array<Symbol, Revox::Models::AssistantRetrieveResponse::Zoho::Outcome>] Which call outcomes trigger the Zoho push (e.g. ['interested', 'none']). Use 'no
1448
+ #
1449
+ # @param template [String, nil] Optional Note body template. Supports {{summary}}, {{outcome}}, {{phone}}, {{cal
1450
+
1451
+ class FieldMapping < Revox::Internal::Type::BaseModel
1452
+ # @!attribute source
1453
+ # Source key to read from the call: a structured_output field name, falling back
1454
+ # to a prompt variable of the same name.
1455
+ #
1456
+ # @return [String]
1457
+ required :source, String
1458
+
1459
+ # @!attribute zoho_field
1460
+ # Destination Zoho field API name on the upserted record (e.g. 'Email', 'Company',
1461
+ # or a custom 'Budget\_\_c').
1462
+ #
1463
+ # @return [String]
1464
+ required :zoho_field, String
1465
+
1466
+ # @!method initialize(source:, zoho_field:)
1467
+ # Some parameter documentations has been truncated, see
1468
+ # {Revox::Models::AssistantRetrieveResponse::Zoho::FieldMapping} for more details.
1469
+ #
1470
+ # @param source [String] Source key to read from the call: a structured_output field name, falling back t
1471
+ #
1472
+ # @param zoho_field [String] Destination Zoho field API name on the upserted record (e.g. 'Email', 'Company',
1473
+ end
1474
+
1475
+ module Outcome
1476
+ extend Revox::Internal::Type::Enum
1477
+
1478
+ NOT_INTERESTED = :not_interested
1479
+ INTERESTED = :interested
1480
+ COMPLETED = :completed
1481
+ REQUESTED_CALLBACK_LATER = :requested_callback_later
1482
+ REQUESTED_CALLBACK_NEW_NUMBER = :requested_callback_new_number
1483
+ DO_NOT_CONTACT = :do_not_contact
1484
+ AI_AVERSE = :ai_averse
1485
+ NONE = :none
1486
+
1487
+ # @!method self.values
1488
+ # @return [Array<Symbol>]
1489
+ end
1490
+ end
1491
+
1492
+ # @see Revox::Models::AssistantRetrieveResponse#created_by
1493
+ class CreatedBy < Revox::Internal::Type::BaseModel
1494
+ # @!attribute id
1495
+ # The database user id of the creator.
1496
+ #
1497
+ # @return [String]
1498
+ required :id, String
1499
+
1500
+ # @!attribute email
1501
+ #
1502
+ # @return [String]
1503
+ required :email, String
1504
+
1505
+ # @!attribute first_name
1506
+ #
1507
+ # @return [String, nil]
1508
+ required :first_name, String, nil?: true
1509
+
1510
+ # @!attribute last_name
1511
+ #
1512
+ # @return [String, nil]
1513
+ required :last_name, String, nil?: true
1514
+
1515
+ # @!method initialize(id:, email:, first_name:, last_name:)
1516
+ # The user who created the assistant.
1517
+ #
1518
+ # @param id [String] The database user id of the creator.
1519
+ #
1520
+ # @param email [String]
1521
+ #
1522
+ # @param first_name [String, nil]
1523
+ #
1524
+ # @param last_name [String, nil]
470
1525
  end
471
1526
 
472
1527
  class FaqItem < Revox::Internal::Type::BaseModel