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