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