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