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