revox 0.0.2 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (128) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +96 -0
  3. data/README.md +88 -22
  4. data/lib/revox/client.rb +19 -1
  5. data/lib/revox/internal/transport/base_client.rb +5 -0
  6. data/lib/revox/internal/type/base_model.rb +3 -3
  7. data/lib/revox/internal/util.rb +53 -7
  8. data/lib/revox/models/assistant_create_params.rb +1036 -11
  9. data/lib/revox/models/assistant_create_response.rb +1071 -11
  10. data/lib/revox/models/assistant_delete_params.rb +7 -1
  11. data/lib/revox/models/assistant_list_response.rb +1070 -11
  12. data/lib/revox/models/assistant_retrieve_params.rb +7 -1
  13. data/lib/revox/models/assistant_retrieve_response.rb +1066 -11
  14. data/lib/revox/models/assistant_update_params.rb +1043 -11
  15. data/lib/revox/models/assistant_update_response.rb +1097 -12
  16. data/lib/revox/models/call_create_params.rb +1063 -11
  17. data/lib/revox/models/call_create_response.rb +2507 -87
  18. data/lib/revox/models/call_retrieve_params.rb +7 -1
  19. data/lib/revox/models/call_retrieve_response.rb +2512 -87
  20. data/lib/revox/models/campaign_cancel_params.rb +20 -0
  21. data/lib/revox/models/campaign_cancel_response.rb +16 -0
  22. data/lib/revox/models/campaign_create_params.rb +239 -0
  23. data/lib/revox/models/campaign_create_response.rb +2030 -0
  24. data/lib/revox/models/campaign_delete_params.rb +20 -0
  25. data/lib/revox/models/campaign_delete_response.rb +16 -0
  26. data/lib/revox/models/campaign_export_rows_params.rb +20 -0
  27. data/lib/revox/models/campaign_export_rows_response.rb +22 -0
  28. data/lib/revox/models/campaign_get_rows_params.rb +20 -0
  29. data/lib/revox/models/campaign_get_rows_response.rb +3176 -0
  30. data/lib/revox/models/campaign_list_params.rb +14 -0
  31. data/lib/revox/models/campaign_list_response.rb +2024 -0
  32. data/lib/revox/models/campaign_retrieve_params.rb +20 -0
  33. data/lib/revox/models/campaign_retrieve_response.rb +2032 -0
  34. data/lib/revox/models/users/me_retrieve_response.rb +13 -1
  35. data/lib/revox/models/users/me_update_response.rb +13 -1
  36. data/lib/revox/models/voice_list_response.rb +55 -1
  37. data/lib/revox/models/voice_preview_params.rb +43 -3
  38. data/lib/revox/models/voice_retrieve_params.rb +7 -1
  39. data/lib/revox/models.rb +14 -2
  40. data/lib/revox/resources/assistants.rb +138 -6
  41. data/lib/revox/resources/call.rb +10 -27
  42. data/lib/revox/resources/campaigns.rb +176 -0
  43. data/lib/revox/resources/voices.rb +17 -7
  44. data/lib/revox/version.rb +1 -1
  45. data/lib/revox.rb +15 -2
  46. data/rbi/revox/client.rbi +3 -0
  47. data/rbi/revox/internal/util.rbi +28 -0
  48. data/rbi/revox/models/assistant_create_params.rbi +2135 -102
  49. data/rbi/revox/models/assistant_create_response.rbi +2454 -199
  50. data/rbi/revox/models/assistant_delete_params.rbi +11 -5
  51. data/rbi/revox/models/assistant_list_response.rbi +2448 -195
  52. data/rbi/revox/models/assistant_retrieve_params.rbi +11 -5
  53. data/rbi/revox/models/assistant_retrieve_response.rbi +2401 -210
  54. data/rbi/revox/models/assistant_update_params.rbi +2139 -100
  55. data/rbi/revox/models/assistant_update_response.rbi +2504 -198
  56. data/rbi/revox/models/call_create_params.rbi +2377 -222
  57. data/rbi/revox/models/call_create_response.rbi +5840 -594
  58. data/rbi/revox/models/call_retrieve_params.rbi +11 -5
  59. data/rbi/revox/models/call_retrieve_response.rbi +5872 -618
  60. data/rbi/revox/models/campaign_cancel_params.rbi +33 -0
  61. data/rbi/revox/models/campaign_cancel_response.rbi +23 -0
  62. data/rbi/revox/models/campaign_create_params.rbi +433 -0
  63. data/rbi/revox/models/campaign_create_response.rbi +4170 -0
  64. data/rbi/revox/models/campaign_delete_params.rbi +33 -0
  65. data/rbi/revox/models/campaign_delete_response.rbi +23 -0
  66. data/rbi/revox/models/campaign_export_rows_params.rbi +33 -0
  67. data/rbi/revox/models/campaign_export_rows_response.rbi +29 -0
  68. data/rbi/revox/models/campaign_get_rows_params.rbi +33 -0
  69. data/rbi/revox/models/campaign_get_rows_response.rbi +6706 -0
  70. data/rbi/revox/models/campaign_list_params.rbi +27 -0
  71. data/rbi/revox/models/campaign_list_response.rbi +4156 -0
  72. data/rbi/revox/models/campaign_retrieve_params.rbi +33 -0
  73. data/rbi/revox/models/campaign_retrieve_response.rbi +4175 -0
  74. data/rbi/revox/models/users/me_retrieve_response.rbi +13 -3
  75. data/rbi/revox/models/users/me_update_response.rbi +13 -3
  76. data/rbi/revox/models/voice_list_response.rbi +105 -3
  77. data/rbi/revox/models/voice_preview_params.rbi +60 -2
  78. data/rbi/revox/models/voice_retrieve_params.rbi +6 -1
  79. data/rbi/revox/models.rbi +14 -2
  80. data/rbi/revox/resources/assistants.rbi +301 -6
  81. data/rbi/revox/resources/call.rbi +10 -19
  82. data/rbi/revox/resources/campaigns.rbi +121 -0
  83. data/rbi/revox/resources/voices.rbi +15 -5
  84. data/sig/revox/client.rbs +2 -0
  85. data/sig/revox/internal/util.rbs +14 -0
  86. data/sig/revox/models/assistant_create_params.rbs +841 -4
  87. data/sig/revox/models/assistant_create_response.rbs +860 -3
  88. data/sig/revox/models/assistant_delete_params.rbs +8 -3
  89. data/sig/revox/models/assistant_list_response.rbs +860 -3
  90. data/sig/revox/models/assistant_retrieve_params.rbs +8 -3
  91. data/sig/revox/models/assistant_retrieve_response.rbs +859 -3
  92. data/sig/revox/models/assistant_update_params.rbs +846 -4
  93. data/sig/revox/models/assistant_update_response.rbs +886 -6
  94. data/sig/revox/models/call_create_params.rbs +844 -6
  95. data/sig/revox/models/call_create_response.rbs +2166 -79
  96. data/sig/revox/models/call_retrieve_params.rbs +9 -3
  97. data/sig/revox/models/call_retrieve_response.rbs +2166 -79
  98. data/sig/revox/models/campaign_cancel_params.rbs +20 -0
  99. data/sig/revox/models/campaign_cancel_response.rbs +13 -0
  100. data/sig/revox/models/campaign_create_params.rbs +203 -0
  101. data/sig/revox/models/campaign_create_response.rbs +1694 -0
  102. data/sig/revox/models/campaign_delete_params.rbs +20 -0
  103. data/sig/revox/models/campaign_delete_response.rbs +13 -0
  104. data/sig/revox/models/campaign_export_rows_params.rbs +20 -0
  105. data/sig/revox/models/campaign_export_rows_response.rbs +15 -0
  106. data/sig/revox/models/campaign_get_rows_params.rbs +20 -0
  107. data/sig/revox/models/campaign_get_rows_response.rbs +2688 -0
  108. data/sig/revox/models/campaign_list_params.rbs +14 -0
  109. data/sig/revox/models/campaign_list_response.rbs +1694 -0
  110. data/sig/revox/models/campaign_retrieve_params.rbs +20 -0
  111. data/sig/revox/models/campaign_retrieve_response.rbs +1694 -0
  112. data/sig/revox/models/users/me_retrieve_response.rbs +8 -3
  113. data/sig/revox/models/users/me_update_response.rbs +8 -3
  114. data/sig/revox/models/voice_list_response.rbs +45 -3
  115. data/sig/revox/models/voice_preview_params.rbs +35 -1
  116. data/sig/revox/models/voice_retrieve_params.rbs +5 -1
  117. data/sig/revox/models.rbs +14 -2
  118. data/sig/revox/resources/assistants.rbs +54 -0
  119. data/sig/revox/resources/call.rbs +0 -6
  120. data/sig/revox/resources/campaigns.rbs +49 -0
  121. data/sig/revox/resources/voices.rbs +3 -0
  122. metadata +47 -8
  123. data/lib/revox/models/call_list_params.rb +0 -29
  124. data/lib/revox/models/call_list_response.rb +0 -197
  125. data/rbi/revox/models/call_list_params.rbi +0 -47
  126. data/rbi/revox/models/call_list_response.rbi +0 -401
  127. data/sig/revox/models/call_list_params.rbs +0 -28
  128. data/sig/revox/models/call_list_response.rbs +0 -171
@@ -0,0 +1,3176 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Revox
4
+ module Models
5
+ # @see Revox::Resources::Campaigns#get_rows
6
+ class CampaignGetRowsResponse < Revox::Internal::Type::BaseModel
7
+ # @!attribute rows
8
+ #
9
+ # @return [Array<Revox::Models::CampaignGetRowsResponse::Row>]
10
+ required :rows, -> { Revox::Internal::Type::ArrayOf[Revox::Models::CampaignGetRowsResponse::Row] }
11
+
12
+ # @!method initialize(rows:)
13
+ # @param rows [Array<Revox::Models::CampaignGetRowsResponse::Row>]
14
+
15
+ class Row < Revox::Internal::Type::BaseModel
16
+ # @!attribute id
17
+ #
18
+ # @return [String]
19
+ required :id, String
20
+
21
+ # @!attribute input_data
22
+ #
23
+ # @return [Hash{Symbol=>String}]
24
+ required :input_data, Revox::Internal::Type::HashOf[String]
25
+
26
+ # @!attribute phone_number
27
+ #
28
+ # @return [String]
29
+ required :phone_number, String
30
+
31
+ # @!attribute row_index
32
+ #
33
+ # @return [Float]
34
+ required :row_index, Float
35
+
36
+ # @!attribute call
37
+ # This represent a call "order" that was requested by the user. A call order can
38
+ # be resolved over multiple call attempts spanning up to a few days.
39
+ #
40
+ # @return [Revox::Models::CampaignGetRowsResponse::Row::Call, nil]
41
+ optional :call, -> { Revox::Models::CampaignGetRowsResponse::Row::Call }
42
+
43
+ # @!method initialize(id:, input_data:, phone_number:, row_index:, call: nil)
44
+ # Some parameter documentations has been truncated, see
45
+ # {Revox::Models::CampaignGetRowsResponse::Row} for more details.
46
+ #
47
+ # @param id [String]
48
+ #
49
+ # @param input_data [Hash{Symbol=>String}]
50
+ #
51
+ # @param phone_number [String]
52
+ #
53
+ # @param row_index [Float]
54
+ #
55
+ # @param call [Revox::Models::CampaignGetRowsResponse::Row::Call] This represent a call "order" that was requested by the user. A call order can b
56
+
57
+ # @see Revox::Models::CampaignGetRowsResponse::Row#call
58
+ class Call < Revox::Internal::Type::BaseModel
59
+ # @!attribute id
60
+ # The ID of the call.
61
+ #
62
+ # @return [String]
63
+ required :id, String
64
+
65
+ # @!attribute assignee
66
+ # The team member responsible for following up on this call.
67
+ #
68
+ # @return [Revox::Models::CampaignGetRowsResponse::Row::Call::Assignee, nil]
69
+ required :assignee, -> { Revox::Models::CampaignGetRowsResponse::Row::Call::Assignee }, nil?: true
70
+
71
+ # @!attribute assistant
72
+ #
73
+ # @return [Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant, nil]
74
+ required :assistant, -> { Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant }, nil?: true
75
+
76
+ # @!attribute call_attempts
77
+ # All call attempts for this call order, ordered by most recent first.
78
+ #
79
+ # @return [Array<Revox::Models::CampaignGetRowsResponse::Row::Call::CallAttempt>]
80
+ required :call_attempts,
81
+ -> { Revox::Internal::Type::ArrayOf[Revox::Models::CampaignGetRowsResponse::Row::Call::CallAttempt] }
82
+
83
+ # @!attribute call_retry_config
84
+ # Configuration for call retry behavior including time windows, delays, and max
85
+ # iterations. If not provided, defaults will be used.
86
+ #
87
+ # @return [Revox::Models::CampaignGetRowsResponse::Row::Call::CallRetryConfig, nil]
88
+ required :call_retry_config,
89
+ -> { Revox::Models::CampaignGetRowsResponse::Row::Call::CallRetryConfig },
90
+ nil?: true
91
+
92
+ # @!attribute calls_count
93
+ # The number of call attempts made.
94
+ #
95
+ # @return [Float]
96
+ required :calls_count, Float
97
+
98
+ # @!attribute campaign
99
+ #
100
+ # @return [Revox::Models::CampaignGetRowsResponse::Row::Call::Campaign, nil]
101
+ required :campaign, -> { Revox::Models::CampaignGetRowsResponse::Row::Call::Campaign }, nil?: true
102
+
103
+ # @!attribute contact
104
+ # Magic contact variables (prospect identity) extracted from the call's input data
105
+ # and transcript.
106
+ #
107
+ # @return [Revox::Models::CampaignGetRowsResponse::Row::Call::Contact]
108
+ required :contact, -> { Revox::Models::CampaignGetRowsResponse::Row::Call::Contact }
109
+
110
+ # @!attribute created_at
111
+ # The time the call order was created.
112
+ #
113
+ # @return [Object]
114
+ required :created_at, Revox::Internal::Type::Unknown
115
+
116
+ # @!attribute direction
117
+ # Whether the call is inbound or outbound.
118
+ #
119
+ # @return [Symbol, Revox::Models::CampaignGetRowsResponse::Row::Call::Direction]
120
+ required :direction, enum: -> { Revox::Models::CampaignGetRowsResponse::Row::Call::Direction }
121
+
122
+ # @!attribute first_sentence_delay_ms
123
+ # Delay in milliseconds before speaking the first sentence. Default: 400.
124
+ #
125
+ # @return [Integer]
126
+ required :first_sentence_delay_ms, Integer
127
+
128
+ # @!attribute from_phone_number
129
+ # The phone number that made the call. Formatted in E.164 format. Example:
130
+ # +1234567890
131
+ #
132
+ # @return [String]
133
+ required :from_phone_number, String
134
+
135
+ # @!attribute is_cancelled
136
+ # DEPRECATED: Whether the call has been cancelled. This is derived from `status`.
137
+ # Use `status` instead.
138
+ #
139
+ # @return [Boolean]
140
+ required :is_cancelled, Revox::Internal::Type::Boolean
141
+
142
+ # @!attribute is_completed
143
+ # DEPRECATED: Whether the call has completed. This is derived from `status`. Use
144
+ # `status` instead.
145
+ #
146
+ # @return [Boolean]
147
+ required :is_completed, Revox::Internal::Type::Boolean
148
+
149
+ # @!attribute last_call_attempt
150
+ # This represent a single call attempt. A call attempt is a single call made to
151
+ # the phone number.
152
+ #
153
+ # @return [Revox::Models::CampaignGetRowsResponse::Row::Call::LastCallAttempt, nil]
154
+ required :last_call_attempt,
155
+ -> { Revox::Models::CampaignGetRowsResponse::Row::Call::LastCallAttempt },
156
+ nil?: true
157
+
158
+ # @!attribute llm_model
159
+ #
160
+ # @return [Revox::Models::CampaignGetRowsResponse::Row::Call::LlmModel::UnionMember0, Revox::Models::CampaignGetRowsResponse::Row::Call::LlmModel::UnionMember1, Revox::Models::CampaignGetRowsResponse::Row::Call::LlmModel::UnionMember2, Revox::Models::CampaignGetRowsResponse::Row::Call::LlmModel::UnionMember3]
161
+ required :llm_model, union: -> { Revox::Models::CampaignGetRowsResponse::Row::Call::LlmModel }
162
+
163
+ # @!attribute metadata
164
+ # Metadata stored with the call.
165
+ #
166
+ # @return [Hash{Symbol=>String}, nil]
167
+ required :metadata, Revox::Internal::Type::HashOf[String], nil?: true
168
+
169
+ # @!attribute organization_id
170
+ # The ID of the organization that owns the call.
171
+ #
172
+ # @return [String]
173
+ required :organization_id, String
174
+
175
+ # @!attribute prompt_variables
176
+ # Variables used to interpolate the prompt.
177
+ #
178
+ # @return [Hash{Symbol=>String}, nil]
179
+ required :prompt_variables, Revox::Internal::Type::HashOf[String], nil?: true
180
+
181
+ # @!attribute scheduled_at
182
+ # The time the call order is scheduled to start.
183
+ #
184
+ # @return [Object]
185
+ required :scheduled_at, Revox::Internal::Type::Unknown
186
+
187
+ # @!attribute status
188
+ # The status of the call.
189
+ #
190
+ # @return [Symbol, Revox::Models::CampaignGetRowsResponse::Row::Call::Status]
191
+ required :status, enum: -> { Revox::Models::CampaignGetRowsResponse::Row::Call::Status }
192
+
193
+ # @!attribute to_phone_number
194
+ # The phone number that received the call. Formatted in E.164 format. Example:
195
+ # +1234567890
196
+ #
197
+ # @return [String]
198
+ required :to_phone_number, String
199
+
200
+ # @!attribute updated_at
201
+ # The time the call order was last updated (any state change, retry, or analysis
202
+ # result).
203
+ #
204
+ # @return [Object]
205
+ required :updated_at, Revox::Internal::Type::Unknown
206
+
207
+ # @!attribute outcome
208
+ # Business outcome of the call. Null if not computed or no transcript.
209
+ #
210
+ # @return [Symbol, Revox::Models::CampaignGetRowsResponse::Row::Call::Outcome, nil]
211
+ optional :outcome, enum: -> { Revox::Models::CampaignGetRowsResponse::Row::Call::Outcome }, nil?: true
212
+
213
+ # @!attribute outcome_summary
214
+ # LLM explanation for the outcome, when outcome was computed from the transcript.
215
+ #
216
+ # @return [String, nil]
217
+ optional :outcome_summary, String, nil?: true
218
+
219
+ # @!method initialize(id:, assignee:, assistant:, call_attempts:, call_retry_config:, calls_count:, campaign:, contact:, created_at:, direction:, first_sentence_delay_ms:, from_phone_number:, is_cancelled:, is_completed:, last_call_attempt:, llm_model:, metadata:, organization_id:, prompt_variables:, scheduled_at:, status:, to_phone_number:, updated_at:, outcome: nil, outcome_summary: nil)
220
+ # Some parameter documentations has been truncated, see
221
+ # {Revox::Models::CampaignGetRowsResponse::Row::Call} for more details.
222
+ #
223
+ # This represent a call "order" that was requested by the user. A call order can
224
+ # be resolved over multiple call attempts spanning up to a few days.
225
+ #
226
+ # @param id [String] The ID of the call.
227
+ #
228
+ # @param assignee [Revox::Models::CampaignGetRowsResponse::Row::Call::Assignee, nil] The team member responsible for following up on this call.
229
+ #
230
+ # @param assistant [Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant, nil]
231
+ #
232
+ # @param call_attempts [Array<Revox::Models::CampaignGetRowsResponse::Row::Call::CallAttempt>] All call attempts for this call order, ordered by most recent first.
233
+ #
234
+ # @param call_retry_config [Revox::Models::CampaignGetRowsResponse::Row::Call::CallRetryConfig, nil] Configuration for call retry behavior including time windows, delays, and max it
235
+ #
236
+ # @param calls_count [Float] The number of call attempts made.
237
+ #
238
+ # @param campaign [Revox::Models::CampaignGetRowsResponse::Row::Call::Campaign, nil]
239
+ #
240
+ # @param contact [Revox::Models::CampaignGetRowsResponse::Row::Call::Contact] Magic contact variables (prospect identity) extracted from the call's input data
241
+ #
242
+ # @param created_at [Object] The time the call order was created.
243
+ #
244
+ # @param direction [Symbol, Revox::Models::CampaignGetRowsResponse::Row::Call::Direction] Whether the call is inbound or outbound.
245
+ #
246
+ # @param first_sentence_delay_ms [Integer] Delay in milliseconds before speaking the first sentence. Default: 400.
247
+ #
248
+ # @param from_phone_number [String] The phone number that made the call. Formatted in E.164 format. Example: +123456
249
+ #
250
+ # @param is_cancelled [Boolean] DEPRECATED: Whether the call has been cancelled. This is derived from `status`.
251
+ #
252
+ # @param is_completed [Boolean] DEPRECATED: Whether the call has completed. This is derived from `status`. Use `
253
+ #
254
+ # @param last_call_attempt [Revox::Models::CampaignGetRowsResponse::Row::Call::LastCallAttempt, nil] This represent a single call attempt. A call attempt is a single call made to th
255
+ #
256
+ # @param llm_model [Revox::Models::CampaignGetRowsResponse::Row::Call::LlmModel::UnionMember0, Revox::Models::CampaignGetRowsResponse::Row::Call::LlmModel::UnionMember1, Revox::Models::CampaignGetRowsResponse::Row::Call::LlmModel::UnionMember2, Revox::Models::CampaignGetRowsResponse::Row::Call::LlmModel::UnionMember3]
257
+ #
258
+ # @param metadata [Hash{Symbol=>String}, nil] Metadata stored with the call.
259
+ #
260
+ # @param organization_id [String] The ID of the organization that owns the call.
261
+ #
262
+ # @param prompt_variables [Hash{Symbol=>String}, nil] Variables used to interpolate the prompt.
263
+ #
264
+ # @param scheduled_at [Object] The time the call order is scheduled to start.
265
+ #
266
+ # @param status [Symbol, Revox::Models::CampaignGetRowsResponse::Row::Call::Status] The status of the call.
267
+ #
268
+ # @param to_phone_number [String] The phone number that received the call. Formatted in E.164 format. Example: +12
269
+ #
270
+ # @param updated_at [Object] The time the call order was last updated (any state change, retry, or analysis r
271
+ #
272
+ # @param outcome [Symbol, Revox::Models::CampaignGetRowsResponse::Row::Call::Outcome, nil] Business outcome of the call. Null if not computed or no transcript.
273
+ #
274
+ # @param outcome_summary [String, nil] LLM explanation for the outcome, when outcome was computed from the transcript.
275
+
276
+ # @see Revox::Models::CampaignGetRowsResponse::Row::Call#assignee
277
+ class Assignee < Revox::Internal::Type::BaseModel
278
+ # @!attribute id
279
+ # The database user id of the assignee.
280
+ #
281
+ # @return [String]
282
+ required :id, String
283
+
284
+ # @!attribute email
285
+ #
286
+ # @return [String]
287
+ required :email, String
288
+
289
+ # @!attribute first_name
290
+ #
291
+ # @return [String, nil]
292
+ required :first_name, String, nil?: true
293
+
294
+ # @!attribute last_name
295
+ #
296
+ # @return [String, nil]
297
+ required :last_name, String, nil?: true
298
+
299
+ # @!method initialize(id:, email:, first_name:, last_name:)
300
+ # The team member responsible for following up on this call.
301
+ #
302
+ # @param id [String] The database user id of the assignee.
303
+ #
304
+ # @param email [String]
305
+ #
306
+ # @param first_name [String, nil]
307
+ #
308
+ # @param last_name [String, nil]
309
+ end
310
+
311
+ # @see Revox::Models::CampaignGetRowsResponse::Row::Call#assistant
312
+ class Assistant < Revox::Internal::Type::BaseModel
313
+ # @!attribute id
314
+ #
315
+ # @return [String]
316
+ required :id, String
317
+
318
+ # @!attribute after_call_sms_outcomes
319
+ # Which call outcomes trigger the after-call SMS. When empty or null, no
320
+ # after-call SMS is sent. Use "none" when outcome is null.
321
+ #
322
+ # @return [Array<Symbol, Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::AfterCallSMSOutcome>, nil]
323
+ required :after_call_sms_outcomes,
324
+ -> { Revox::Internal::Type::ArrayOf[enum: Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::AfterCallSMSOutcome] },
325
+ nil?: true
326
+
327
+ # @!attribute after_call_sms_prompt
328
+ # Prompt / instructions for the after-call SMS. Supports {{variable}}
329
+ # placeholders. When null, no after-call SMS is sent.
330
+ #
331
+ # @return [String, nil]
332
+ required :after_call_sms_prompt, String, nil?: true
333
+
334
+ # @!attribute background_sound
335
+ # Ambient background sound to play during the call. null disables it.
336
+ #
337
+ # @return [Symbol, Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::BackgroundSound, nil]
338
+ required :background_sound,
339
+ enum: -> { Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::BackgroundSound },
340
+ nil?: true
341
+
342
+ # @!attribute background_sound_volume
343
+ # Volume of the ambient background sound (0 = silent, 1 = max).
344
+ #
345
+ # @return [Float]
346
+ required :background_sound_volume, Float
347
+
348
+ # @!attribute calendly
349
+ #
350
+ # @return [Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::Calendly, nil]
351
+ required :calendly,
352
+ -> { Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::Calendly },
353
+ nil?: true
354
+
355
+ # @!attribute call_retry_config
356
+ # Configuration for call retry behavior including time windows, delays, and max
357
+ # iterations. If not provided, defaults will be used.
358
+ #
359
+ # @return [Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::CallRetryConfig, nil]
360
+ required :call_retry_config,
361
+ -> { Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::CallRetryConfig },
362
+ nil?: true
363
+
364
+ # @!attribute cartesia_dictionary_pronunciation_id
365
+ # Optional Cartesia pronunciation dictionary ID linked to this assistant.
366
+ #
367
+ # @return [String, nil]
368
+ required :cartesia_dictionary_pronunciation_id, String, nil?: true
369
+
370
+ # @!attribute created_at
371
+ #
372
+ # @return [Object]
373
+ required :created_at, Revox::Internal::Type::Unknown
374
+
375
+ # @!attribute custom_tools
376
+ #
377
+ # @return [Array<Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::CustomTool>, nil]
378
+ required :custom_tools,
379
+ -> { Revox::Internal::Type::ArrayOf[Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::CustomTool] },
380
+ nil?: true
381
+
382
+ # @!attribute email_notification_address
383
+ # Email address(es) to receive notifications when a call ends with a matching
384
+ # outcome. Accepts a single email or a comma-separated list (e.g. "alice@x.com,
385
+ # bob@y.com").
386
+ #
387
+ # @return [String, nil]
388
+ required :email_notification_address, String, nil?: true
389
+
390
+ # @!attribute email_notification_language
391
+ # The language used for the notification email content. One of "en" or "fr".
392
+ #
393
+ # @return [Symbol, Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::EmailNotificationLanguage]
394
+ required :email_notification_language,
395
+ enum: -> { Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::EmailNotificationLanguage }
396
+
397
+ # @!attribute email_notification_outcomes
398
+ # Which call outcomes trigger an email notification. E.g. ["interested",
399
+ # "completed", "none"]. Use "none" when outcome is null.
400
+ #
401
+ # @return [Array<Symbol, Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::EmailNotificationOutcome>, nil]
402
+ required :email_notification_outcomes,
403
+ -> { Revox::Internal::Type::ArrayOf[enum: Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::EmailNotificationOutcome] },
404
+ nil?: true
405
+
406
+ # @!attribute end_of_call_sentence
407
+ #
408
+ # @return [String, nil]
409
+ required :end_of_call_sentence, String, nil?: true
410
+
411
+ # @!attribute first_sentence
412
+ #
413
+ # @return [String, nil]
414
+ required :first_sentence, String, nil?: true
415
+
416
+ # @!attribute first_sentence_delay_ms
417
+ # Delay in milliseconds before speaking the first sentence. Default: 400.
418
+ #
419
+ # @return [Integer]
420
+ required :first_sentence_delay_ms, Integer
421
+
422
+ # @!attribute first_sentence_mode
423
+ #
424
+ # @return [Symbol, Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::FirstSentenceMode]
425
+ required :first_sentence_mode,
426
+ enum: -> { Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::FirstSentenceMode }
427
+
428
+ # @!attribute from_phone_number
429
+ # Override the default outbound phone number for calls placed with this assistant.
430
+ # When null, the organization's default phone number is used.
431
+ #
432
+ # @return [String, nil]
433
+ required :from_phone_number, String, nil?: true
434
+
435
+ # @!attribute human_transfer_mode
436
+ # Warm or cold transfer when transfer_phone_number is set; null when transfer is
437
+ # not configured.
438
+ #
439
+ # @return [Symbol, Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::HumanTransferMode, nil]
440
+ required :human_transfer_mode,
441
+ enum: -> { Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::HumanTransferMode },
442
+ nil?: true
443
+
444
+ # @!attribute ivr_navigation_enabled
445
+ # Enable IVR navigation tools. When enabled, the assistant can send DTMF tones and
446
+ # skip turns to navigate phone menus.
447
+ #
448
+ # @return [Boolean]
449
+ required :ivr_navigation_enabled, Revox::Internal::Type::Boolean
450
+
451
+ # @!attribute llm_model
452
+ #
453
+ # @return [Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::LlmModel::UnionMember0, Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::LlmModel::UnionMember1, Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::LlmModel::UnionMember2, Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::LlmModel::UnionMember3]
454
+ required :llm_model, union: -> { Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::LlmModel }
455
+
456
+ # @!attribute logo_url
457
+ # Public URL of the brand logo shown on the assistant's demo page. Null when
458
+ # unset.
459
+ #
460
+ # @return [String, nil]
461
+ required :logo_url, String, nil?: true
462
+
463
+ # @!attribute max_call_duration_secs
464
+ # The maximum duration of the call in seconds. This is the maximum time the call
465
+ # will be allowed to run.
466
+ #
467
+ # @return [Float]
468
+ required :max_call_duration_secs, Float
469
+
470
+ # @!attribute max_duration_end_message
471
+ # Optional message the agent will say, without being interruptible, when the call
472
+ # reaches its max duration. Kept short so it fits inside the farewell buffer. If
473
+ # null, the call ends silently.
474
+ #
475
+ # @return [String, nil]
476
+ required :max_duration_end_message, String, nil?: true
477
+
478
+ # @!attribute name
479
+ #
480
+ # @return [String]
481
+ required :name, String
482
+
483
+ # @!attribute organization_id
484
+ #
485
+ # @return [String]
486
+ required :organization_id, String
487
+
488
+ # @!attribute position
489
+ #
490
+ # @return [Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::Position, nil]
491
+ required :position,
492
+ -> { Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::Position },
493
+ nil?: true
494
+
495
+ # @!attribute prompt
496
+ #
497
+ # @return [String]
498
+ required :prompt, String
499
+
500
+ # @!attribute prompt_flow
501
+ #
502
+ # @return [Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::PromptFlow, nil]
503
+ required :prompt_flow,
504
+ -> { Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::PromptFlow },
505
+ nil?: true
506
+
507
+ # @!attribute slack
508
+ #
509
+ # @return [Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::Slack, nil]
510
+ required :slack, -> { Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::Slack }, nil?: true
511
+
512
+ # @!attribute sms_enabled
513
+ # Enable SMS tool during calls. When enabled, the agent can send SMS messages to
514
+ # the user on the call.
515
+ #
516
+ # @return [Boolean]
517
+ required :sms_enabled, Revox::Internal::Type::Boolean
518
+
519
+ # @!attribute sms_template
520
+ # Hardcoded SMS template to send during calls. When set, this exact text is sent
521
+ # instead of letting the agent generate the message. Supports {{variable}}
522
+ # placeholders.
523
+ #
524
+ # @return [String, nil]
525
+ required :sms_template, String, nil?: true
526
+
527
+ # @!attribute structured_output_config
528
+ # The structured output config to use for the call. This is used to extract the
529
+ # data from the call (like email, name, company name, etc.).
530
+ #
531
+ # @return [Array<Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::StructuredOutputConfig>, nil]
532
+ required :structured_output_config,
533
+ -> { Revox::Internal::Type::ArrayOf[Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::StructuredOutputConfig] },
534
+ nil?: true
535
+
536
+ # @!attribute structured_output_prompt
537
+ # Custom prompt for structured data extraction. If not provided, a default prompt
538
+ # is used. Available variables: {{transcript}}, {{call_direction}},
539
+ # {{user_phone_number}}, {{agent_phone_number}}.
540
+ #
541
+ # @return [String, nil]
542
+ required :structured_output_prompt, String, nil?: true
543
+
544
+ # @!attribute stt_context
545
+ # Assistant-level speech-to-text context: structured `general` key/value pairs
546
+ # plus a list of domain `terms`. Prompt-derived context is merged in without
547
+ # replacing existing entries.
548
+ #
549
+ # @return [Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::SttContext, nil]
550
+ required :stt_context,
551
+ -> { Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::SttContext },
552
+ nil?: true
553
+
554
+ # @!attribute stt_model
555
+ # Transcriber (speech-to-text) model used for the assistant.
556
+ #
557
+ # @return [Symbol, Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::SttModel]
558
+ required :stt_model, enum: -> { Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::SttModel }
559
+
560
+ # @!attribute thinking_sound
561
+ # Audio clip to play while the agent is processing a response. One of the built-in
562
+ # LiveKit audio clips; null disables it.
563
+ #
564
+ # @return [Symbol, Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::ThinkingSound, nil]
565
+ required :thinking_sound,
566
+ enum: -> { Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::ThinkingSound },
567
+ nil?: true
568
+
569
+ # @!attribute thinking_sound_probability
570
+ # Probability [0..1] that the thinking sound plays on any given turn; otherwise
571
+ # the agent is silent while thinking.
572
+ #
573
+ # @return [Float]
574
+ required :thinking_sound_probability, Float
575
+
576
+ # @!attribute thinking_sound_volume
577
+ # Volume of the thinking sound (0 = silent, 1 = max).
578
+ #
579
+ # @return [Float]
580
+ required :thinking_sound_volume, Float
581
+
582
+ # @!attribute transfer_phone_number
583
+ # Phone number to transfer calls to when users request to speak to a human agent.
584
+ #
585
+ # @return [String, nil]
586
+ required :transfer_phone_number, String, nil?: true
587
+
588
+ # @!attribute type
589
+ #
590
+ # @return [Symbol, Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::Type]
591
+ required :type, enum: -> { Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::Type }
592
+
593
+ # @!attribute updated_at
594
+ #
595
+ # @return [Object]
596
+ required :updated_at, Revox::Internal::Type::Unknown
597
+
598
+ # @!attribute voice
599
+ #
600
+ # @return [Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::Voice, nil]
601
+ required :voice, -> { Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::Voice }, nil?: true
602
+
603
+ # @!attribute voicemail_message
604
+ # If set, when voicemail is detected the agent will speak this message then hang
605
+ # up; if null, hang up immediately.
606
+ #
607
+ # @return [String, nil]
608
+ required :voicemail_message, String, nil?: true
609
+
610
+ # @!attribute voicemail_sms_prompt
611
+ # Prompt / instructions for the voicemail SMS. Supports {{variable}} placeholders.
612
+ # When null, no SMS is sent on voicemail.
613
+ #
614
+ # @return [String, nil]
615
+ required :voicemail_sms_prompt, String, nil?: true
616
+
617
+ # @!attribute warm_transfer_summary_instructions
618
+ # Warm transfer only: instructions for the supervisor handoff summary; null when
619
+ # not configured or cold transfer.
620
+ #
621
+ # @return [String, nil]
622
+ required :warm_transfer_summary_instructions, String, nil?: true
623
+
624
+ # @!attribute webhook_url
625
+ # The webhook URL to call when the call is completed.
626
+ #
627
+ # @return [String, nil]
628
+ required :webhook_url, String, nil?: true
629
+
630
+ # @!attribute zoho
631
+ #
632
+ # @return [Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::Zoho, nil]
633
+ required :zoho, -> { Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::Zoho }, nil?: true
634
+
635
+ # @!attribute created_by
636
+ # The user who created the assistant.
637
+ #
638
+ # @return [Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::CreatedBy, nil]
639
+ optional :created_by,
640
+ -> { Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::CreatedBy },
641
+ nil?: true
642
+
643
+ # @!attribute faq_items
644
+ #
645
+ # @return [Array<Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::FaqItem>, nil]
646
+ optional :faq_items,
647
+ -> { Revox::Internal::Type::ArrayOf[Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::FaqItem] }
648
+
649
+ # @!attribute is_realestate_assistant
650
+ #
651
+ # @return [Boolean, nil]
652
+ optional :is_realestate_assistant, Revox::Internal::Type::Boolean
653
+
654
+ # @!attribute pending_faq_count
655
+ #
656
+ # @return [Float, nil]
657
+ optional :pending_faq_count, Float
658
+
659
+ # @!method initialize(id:, after_call_sms_outcomes:, after_call_sms_prompt:, background_sound:, background_sound_volume:, calendly:, call_retry_config:, cartesia_dictionary_pronunciation_id:, created_at:, custom_tools:, email_notification_address:, email_notification_language:, email_notification_outcomes:, end_of_call_sentence:, first_sentence:, first_sentence_delay_ms:, first_sentence_mode:, from_phone_number:, human_transfer_mode:, ivr_navigation_enabled:, llm_model:, logo_url:, max_call_duration_secs:, max_duration_end_message:, name:, organization_id:, position:, prompt:, prompt_flow:, slack:, sms_enabled:, sms_template:, structured_output_config:, structured_output_prompt:, stt_context:, stt_model:, thinking_sound:, thinking_sound_probability:, thinking_sound_volume:, transfer_phone_number:, type:, updated_at:, voice:, voicemail_message:, voicemail_sms_prompt:, warm_transfer_summary_instructions:, webhook_url:, zoho:, created_by: nil, faq_items: nil, is_realestate_assistant: nil, pending_faq_count: nil)
660
+ # Some parameter documentations has been truncated, see
661
+ # {Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant} for more details.
662
+ #
663
+ # @param id [String]
664
+ #
665
+ # @param after_call_sms_outcomes [Array<Symbol, Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::AfterCallSMSOutcome>, nil] Which call outcomes trigger the after-call SMS. When empty or null, no after-cal
666
+ #
667
+ # @param after_call_sms_prompt [String, nil] Prompt / instructions for the after-call SMS. Supports {{variable}} placeholders
668
+ #
669
+ # @param background_sound [Symbol, Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::BackgroundSound, nil] Ambient background sound to play during the call. null disables it.
670
+ #
671
+ # @param background_sound_volume [Float] Volume of the ambient background sound (0 = silent, 1 = max).
672
+ #
673
+ # @param calendly [Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::Calendly, nil]
674
+ #
675
+ # @param call_retry_config [Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::CallRetryConfig, nil] Configuration for call retry behavior including time windows, delays, and max it
676
+ #
677
+ # @param cartesia_dictionary_pronunciation_id [String, nil] Optional Cartesia pronunciation dictionary ID linked to this assistant.
678
+ #
679
+ # @param created_at [Object]
680
+ #
681
+ # @param custom_tools [Array<Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::CustomTool>, nil]
682
+ #
683
+ # @param email_notification_address [String, nil] Email address(es) to receive notifications when a call ends with a matching outc
684
+ #
685
+ # @param email_notification_language [Symbol, Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::EmailNotificationLanguage] The language used for the notification email content. One of "en" or "fr".
686
+ #
687
+ # @param email_notification_outcomes [Array<Symbol, Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::EmailNotificationOutcome>, nil] Which call outcomes trigger an email notification. E.g. ["interested", "complete
688
+ #
689
+ # @param end_of_call_sentence [String, nil]
690
+ #
691
+ # @param first_sentence [String, nil]
692
+ #
693
+ # @param first_sentence_delay_ms [Integer] Delay in milliseconds before speaking the first sentence. Default: 400.
694
+ #
695
+ # @param first_sentence_mode [Symbol, Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::FirstSentenceMode]
696
+ #
697
+ # @param from_phone_number [String, nil] Override the default outbound phone number for calls placed with this assistant.
698
+ #
699
+ # @param human_transfer_mode [Symbol, Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::HumanTransferMode, nil] Warm or cold transfer when transfer_phone_number is set; null when transfer is n
700
+ #
701
+ # @param ivr_navigation_enabled [Boolean] Enable IVR navigation tools. When enabled, the assistant can send DTMF tones and
702
+ #
703
+ # @param llm_model [Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::LlmModel::UnionMember0, Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::LlmModel::UnionMember1, Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::LlmModel::UnionMember2, Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::LlmModel::UnionMember3]
704
+ #
705
+ # @param logo_url [String, nil] Public URL of the brand logo shown on the assistant's demo page. Null when unset
706
+ #
707
+ # @param max_call_duration_secs [Float] The maximum duration of the call in seconds. This is the maximum time the call w
708
+ #
709
+ # @param max_duration_end_message [String, nil] Optional message the agent will say, without being interruptible, when the call
710
+ #
711
+ # @param name [String]
712
+ #
713
+ # @param organization_id [String]
714
+ #
715
+ # @param position [Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::Position, nil]
716
+ #
717
+ # @param prompt [String]
718
+ #
719
+ # @param prompt_flow [Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::PromptFlow, nil]
720
+ #
721
+ # @param slack [Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::Slack, nil]
722
+ #
723
+ # @param sms_enabled [Boolean] Enable SMS tool during calls. When enabled, the agent can send SMS messages to t
724
+ #
725
+ # @param sms_template [String, nil] Hardcoded SMS template to send during calls. When set, this exact text is sent i
726
+ #
727
+ # @param structured_output_config [Array<Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::StructuredOutputConfig>, nil] The structured output config to use for the call. This is used to extract the da
728
+ #
729
+ # @param structured_output_prompt [String, nil] Custom prompt for structured data extraction. If not provided, a default prompt
730
+ #
731
+ # @param stt_context [Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::SttContext, nil] Assistant-level speech-to-text context: structured `general` key/value pairs plu
732
+ #
733
+ # @param stt_model [Symbol, Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::SttModel] Transcriber (speech-to-text) model used for the assistant.
734
+ #
735
+ # @param thinking_sound [Symbol, Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::ThinkingSound, nil] Audio clip to play while the agent is processing a response. One of the built-in
736
+ #
737
+ # @param thinking_sound_probability [Float] Probability [0..1] that the thinking sound plays on any given turn; otherwise th
738
+ #
739
+ # @param thinking_sound_volume [Float] Volume of the thinking sound (0 = silent, 1 = max).
740
+ #
741
+ # @param transfer_phone_number [String, nil] Phone number to transfer calls to when users request to speak to a human agent.
742
+ #
743
+ # @param type [Symbol, Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::Type]
744
+ #
745
+ # @param updated_at [Object]
746
+ #
747
+ # @param voice [Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::Voice, nil]
748
+ #
749
+ # @param voicemail_message [String, nil] If set, when voicemail is detected the agent will speak this message then hang u
750
+ #
751
+ # @param voicemail_sms_prompt [String, nil] Prompt / instructions for the voicemail SMS. Supports {{variable}} placeholders.
752
+ #
753
+ # @param warm_transfer_summary_instructions [String, nil] Warm transfer only: instructions for the supervisor handoff summary; null when n
754
+ #
755
+ # @param webhook_url [String, nil] The webhook URL to call when the call is completed.
756
+ #
757
+ # @param zoho [Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::Zoho, nil]
758
+ #
759
+ # @param created_by [Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::CreatedBy, nil] The user who created the assistant.
760
+ #
761
+ # @param faq_items [Array<Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::FaqItem>]
762
+ #
763
+ # @param is_realestate_assistant [Boolean]
764
+ #
765
+ # @param pending_faq_count [Float]
766
+
767
+ module AfterCallSMSOutcome
768
+ extend Revox::Internal::Type::Enum
769
+
770
+ NOT_INTERESTED = :not_interested
771
+ INTERESTED = :interested
772
+ COMPLETED = :completed
773
+ REQUESTED_CALLBACK_LATER = :requested_callback_later
774
+ REQUESTED_CALLBACK_NEW_NUMBER = :requested_callback_new_number
775
+ DO_NOT_CONTACT = :do_not_contact
776
+ AI_AVERSE = :ai_averse
777
+ NONE = :none
778
+
779
+ # @!method self.values
780
+ # @return [Array<Symbol>]
781
+ end
782
+
783
+ # Ambient background sound to play during the call. null disables it.
784
+ #
785
+ # @see Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant#background_sound
786
+ module BackgroundSound
787
+ extend Revox::Internal::Type::Enum
788
+
789
+ AUDIO_OFFICE_OGG = :"audio/office.ogg"
790
+
791
+ # @!method self.values
792
+ # @return [Array<Symbol>]
793
+ end
794
+
795
+ # @see Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant#calendly
796
+ class Calendly < Revox::Internal::Type::BaseModel
797
+ # @!attribute connection_id
798
+ # The connection ID representing the link between your Calendly account and Revox.
799
+ #
800
+ # @return [String]
801
+ required :connection_id, String
802
+
803
+ # @!attribute event_type_id
804
+ # The event type ID representing the event type to schedule. (eg:
805
+ # https://api.calendly.com/event_types/b2330295-2a91-4a1d-bb73-99e7707663d5)
806
+ #
807
+ # @return [String]
808
+ required :event_type_id, String
809
+
810
+ # @!method initialize(connection_id:, event_type_id:)
811
+ # Some parameter documentations has been truncated, see
812
+ # {Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::Calendly} for
813
+ # more details.
814
+ #
815
+ # @param connection_id [String] The connection ID representing the link between your Calendly account and Revox.
816
+ #
817
+ # @param event_type_id [String] The event type ID representing the event type to schedule. (eg: https://api.cale
818
+ end
819
+
820
+ # @see Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant#call_retry_config
821
+ class CallRetryConfig < Revox::Internal::Type::BaseModel
822
+ # @!attribute allowed_days
823
+ # Days of the week when calls are allowed, in the recipient's timezone. Default:
824
+ # Monday through Friday.
825
+ #
826
+ # @return [Array<Symbol, Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::CallRetryConfig::AllowedDay>]
827
+ required :allowed_days,
828
+ -> { Revox::Internal::Type::ArrayOf[enum: Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::CallRetryConfig::AllowedDay] }
829
+
830
+ # @!attribute call_twice_in_a_row
831
+ # If true and max_retry_attempts >= 2, attempt #2 fires immediately (skipping
832
+ # retry_delay_seconds) when attempt #1 didn't reach a human.
833
+ # Calling-window/allowed-days checks still apply. Only affects the 1→2 transition.
834
+ # Default: false.
835
+ #
836
+ # @return [Boolean]
837
+ required :call_twice_in_a_row, Revox::Internal::Type::Boolean
838
+
839
+ # @!attribute calling_windows
840
+ #
841
+ # @return [Array<Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::CallRetryConfig::CallingWindow>]
842
+ required :calling_windows,
843
+ -> { Revox::Internal::Type::ArrayOf[Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::CallRetryConfig::CallingWindow] }
844
+
845
+ # @!attribute max_retry_attempts
846
+ # Maximum number of call retry attempts. Default: 3.
847
+ #
848
+ # @return [Integer]
849
+ required :max_retry_attempts, Integer
850
+
851
+ # @!attribute timezone
852
+ # Optional IANA timezone identifier to override the automatic timezone detection
853
+ # from phone number. If not provided, timezone is determined from the recipient's
854
+ # phone number country code. Examples: 'America/New_York', 'Europe/Paris'.
855
+ #
856
+ # @return [String, nil]
857
+ optional :timezone, String, nil?: true
858
+
859
+ # @!method initialize(allowed_days:, call_twice_in_a_row:, calling_windows:, max_retry_attempts:, timezone: nil)
860
+ # Some parameter documentations has been truncated, see
861
+ # {Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::CallRetryConfig}
862
+ # for more details.
863
+ #
864
+ # Configuration for call retry behavior including time windows, delays, and max
865
+ # iterations. If not provided, defaults will be used.
866
+ #
867
+ # @param allowed_days [Array<Symbol, Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::CallRetryConfig::AllowedDay>] Days of the week when calls are allowed, in the recipient's timezone. Default: M
868
+ #
869
+ # @param call_twice_in_a_row [Boolean] If true and max_retry_attempts >= 2, attempt #2 fires immediately (skipping retr
870
+ #
871
+ # @param calling_windows [Array<Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::CallRetryConfig::CallingWindow>]
872
+ #
873
+ # @param max_retry_attempts [Integer] Maximum number of call retry attempts. Default: 3.
874
+ #
875
+ # @param timezone [String, nil] Optional IANA timezone identifier to override the automatic timezone detection f
876
+
877
+ module AllowedDay
878
+ extend Revox::Internal::Type::Enum
879
+
880
+ MONDAY = :monday
881
+ TUESDAY = :tuesday
882
+ WEDNESDAY = :wednesday
883
+ THURSDAY = :thursday
884
+ FRIDAY = :friday
885
+ SATURDAY = :saturday
886
+ SUNDAY = :sunday
887
+
888
+ # @!method self.values
889
+ # @return [Array<Symbol>]
890
+ end
891
+
892
+ class CallingWindow < Revox::Internal::Type::BaseModel
893
+ # @!attribute calling_window_end_time
894
+ # End time for the calling window in the recipient's timezone (or
895
+ # timezone_override if provided). Format: 'HH:mm' (24-hour) or 'H:mma' (12-hour).
896
+ # Examples: '17:00', '6pm'. Default: '18:00'.
897
+ #
898
+ # @return [String]
899
+ required :calling_window_end_time, String
900
+
901
+ # @!attribute calling_window_start_time
902
+ # Start time for the calling window in the recipient's timezone (or
903
+ # timezone_override if provided). Format: 'HH:mm' (24-hour) or 'H:mma' (12-hour).
904
+ # Examples: '09:00', '10am'. Default: '10:00'.
905
+ #
906
+ # @return [String]
907
+ required :calling_window_start_time, String
908
+
909
+ # @!attribute retry_delay_seconds
910
+ # Delay between retry attempts in seconds. Default: 7200 (2 hours).
911
+ #
912
+ # @return [Integer]
913
+ required :retry_delay_seconds, Integer
914
+
915
+ # @!method initialize(calling_window_end_time:, calling_window_start_time:, retry_delay_seconds:)
916
+ # Some parameter documentations has been truncated, see
917
+ # {Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::CallRetryConfig::CallingWindow}
918
+ # for more details.
919
+ #
920
+ # @param calling_window_end_time [String] End time for the calling window in the recipient's timezone (or timezone_overrid
921
+ #
922
+ # @param calling_window_start_time [String] Start time for the calling window in the recipient's timezone (or timezone_overr
923
+ #
924
+ # @param retry_delay_seconds [Integer] Delay between retry attempts in seconds. Default: 7200 (2 hours).
925
+ end
926
+ end
927
+
928
+ class CustomTool < Revox::Internal::Type::BaseModel
929
+ # @!attribute body_template
930
+ # JSON body template for the request. Use quoted {{variable}} placeholders (e.g.
931
+ # "{{name}}") for dynamic values
932
+ #
933
+ # @return [String, nil]
934
+ required :body_template, String, nil?: true
935
+
936
+ # @!attribute description
937
+ # Human-readable description of what the tool does, used by the LLM to decide when
938
+ # to call it
939
+ #
940
+ # @return [String]
941
+ required :description, String
942
+
943
+ # @!attribute headers
944
+ # HTTP headers to include in the request. Values support {{variable}} placeholders
945
+ #
946
+ # @return [Array<Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::CustomTool::Header>]
947
+ required :headers,
948
+ -> { Revox::Internal::Type::ArrayOf[Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::CustomTool::Header] }
949
+
950
+ # @!attribute input_schema
951
+ # Schema defining the parameters the LLM should extract from the conversation to
952
+ # pass to this tool
953
+ #
954
+ # @return [Array<Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::CustomTool::InputSchema>]
955
+ required :input_schema,
956
+ -> { Revox::Internal::Type::ArrayOf[Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::CustomTool::InputSchema] }
957
+
958
+ # @!attribute method_
959
+ # HTTP method to use when calling the API endpoint
960
+ #
961
+ # @return [Symbol, Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::CustomTool::Method]
962
+ required :method_,
963
+ enum: -> { Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::CustomTool::Method },
964
+ api_name: :method
965
+
966
+ # @!attribute name
967
+ # Unique tool name in lowercase_snake_case (e.g. check_inventory)
968
+ #
969
+ # @return [String]
970
+ required :name, String
971
+
972
+ # @!attribute query_params
973
+ # Query string parameters appended to the URL. Values support {{variable}}
974
+ # placeholders
975
+ #
976
+ # @return [Array<Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::CustomTool::QueryParam>]
977
+ required :query_params,
978
+ -> { Revox::Internal::Type::ArrayOf[Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::CustomTool::QueryParam] }
979
+
980
+ # @!attribute url
981
+ # Full URL of the API endpoint. Supports {{variable}} placeholders for dynamic
982
+ # values
983
+ #
984
+ # @return [String]
985
+ required :url, String
986
+
987
+ # @!method initialize(body_template:, description:, headers:, input_schema:, method_:, name:, query_params:, url:)
988
+ # Some parameter documentations has been truncated, see
989
+ # {Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::CustomTool} for
990
+ # more details.
991
+ #
992
+ # @param body_template [String, nil] JSON body template for the request. Use quoted {{variable}} placeholders (e.g. "
993
+ #
994
+ # @param description [String] Human-readable description of what the tool does, used by the LLM to decide when
995
+ #
996
+ # @param headers [Array<Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::CustomTool::Header>] HTTP headers to include in the request. Values support {{variable}} placeholders
997
+ #
998
+ # @param input_schema [Array<Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::CustomTool::InputSchema>] Schema defining the parameters the LLM should extract from the conversation to p
999
+ #
1000
+ # @param method_ [Symbol, Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::CustomTool::Method] HTTP method to use when calling the API endpoint
1001
+ #
1002
+ # @param name [String] Unique tool name in lowercase_snake_case (e.g. check_inventory)
1003
+ #
1004
+ # @param query_params [Array<Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::CustomTool::QueryParam>] Query string parameters appended to the URL. Values support {{variable}} placeho
1005
+ #
1006
+ # @param url [String] Full URL of the API endpoint. Supports {{variable}} placeholders for dynamic val
1007
+
1008
+ class Header < Revox::Internal::Type::BaseModel
1009
+ # @!attribute key
1010
+ #
1011
+ # @return [String]
1012
+ required :key, String
1013
+
1014
+ # @!attribute value
1015
+ #
1016
+ # @return [String]
1017
+ required :value, String
1018
+
1019
+ # @!method initialize(key:, value:)
1020
+ # @param key [String]
1021
+ # @param value [String]
1022
+ end
1023
+
1024
+ class InputSchema < Revox::Internal::Type::BaseModel
1025
+ # @!attribute name
1026
+ #
1027
+ # @return [String]
1028
+ required :name, String
1029
+
1030
+ # @!attribute required
1031
+ #
1032
+ # @return [Boolean]
1033
+ required :required, Revox::Internal::Type::Boolean
1034
+
1035
+ # @!attribute type
1036
+ #
1037
+ # @return [Symbol, Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::CustomTool::InputSchema::Type]
1038
+ required :type,
1039
+ enum: -> { Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::CustomTool::InputSchema::Type }
1040
+
1041
+ # @!attribute description
1042
+ #
1043
+ # @return [String, nil]
1044
+ optional :description, String
1045
+
1046
+ # @!attribute enum_options
1047
+ #
1048
+ # @return [Array<String>, nil]
1049
+ optional :enum_options, Revox::Internal::Type::ArrayOf[String]
1050
+
1051
+ # @!method initialize(name:, required:, type:, description: nil, enum_options: nil)
1052
+ # @param name [String]
1053
+ # @param required [Boolean]
1054
+ # @param type [Symbol, Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::CustomTool::InputSchema::Type]
1055
+ # @param description [String]
1056
+ # @param enum_options [Array<String>]
1057
+
1058
+ # @see Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::CustomTool::InputSchema#type
1059
+ module Type
1060
+ extend Revox::Internal::Type::Enum
1061
+
1062
+ STRING = :string
1063
+ NUMBER = :number
1064
+ BOOLEAN = :boolean
1065
+ ENUM = :enum
1066
+ DATE = :date
1067
+ DATETIME = :datetime
1068
+
1069
+ # @!method self.values
1070
+ # @return [Array<Symbol>]
1071
+ end
1072
+ end
1073
+
1074
+ # HTTP method to use when calling the API endpoint
1075
+ #
1076
+ # @see Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::CustomTool#method_
1077
+ module Method
1078
+ extend Revox::Internal::Type::Enum
1079
+
1080
+ GET = :GET
1081
+ POST = :POST
1082
+ PUT = :PUT
1083
+ PATCH = :PATCH
1084
+ DELETE = :DELETE
1085
+
1086
+ # @!method self.values
1087
+ # @return [Array<Symbol>]
1088
+ end
1089
+
1090
+ class QueryParam < Revox::Internal::Type::BaseModel
1091
+ # @!attribute key
1092
+ #
1093
+ # @return [String]
1094
+ required :key, String
1095
+
1096
+ # @!attribute value
1097
+ #
1098
+ # @return [String]
1099
+ required :value, String
1100
+
1101
+ # @!method initialize(key:, value:)
1102
+ # @param key [String]
1103
+ # @param value [String]
1104
+ end
1105
+ end
1106
+
1107
+ # The language used for the notification email content. One of "en" or "fr".
1108
+ #
1109
+ # @see Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant#email_notification_language
1110
+ module EmailNotificationLanguage
1111
+ extend Revox::Internal::Type::Enum
1112
+
1113
+ EN = :en
1114
+ FR = :fr
1115
+
1116
+ # @!method self.values
1117
+ # @return [Array<Symbol>]
1118
+ end
1119
+
1120
+ module EmailNotificationOutcome
1121
+ extend Revox::Internal::Type::Enum
1122
+
1123
+ NOT_INTERESTED = :not_interested
1124
+ INTERESTED = :interested
1125
+ COMPLETED = :completed
1126
+ REQUESTED_CALLBACK_LATER = :requested_callback_later
1127
+ REQUESTED_CALLBACK_NEW_NUMBER = :requested_callback_new_number
1128
+ DO_NOT_CONTACT = :do_not_contact
1129
+ AI_AVERSE = :ai_averse
1130
+ NONE = :none
1131
+
1132
+ # @!method self.values
1133
+ # @return [Array<Symbol>]
1134
+ end
1135
+
1136
+ # @see Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant#first_sentence_mode
1137
+ module FirstSentenceMode
1138
+ extend Revox::Internal::Type::Enum
1139
+
1140
+ GENERATED = :generated
1141
+ STATIC = :static
1142
+ NONE = :none
1143
+
1144
+ # @!method self.values
1145
+ # @return [Array<Symbol>]
1146
+ end
1147
+
1148
+ # Warm or cold transfer when transfer_phone_number is set; null when transfer is
1149
+ # not configured.
1150
+ #
1151
+ # @see Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant#human_transfer_mode
1152
+ module HumanTransferMode
1153
+ extend Revox::Internal::Type::Enum
1154
+
1155
+ WARM = :warm
1156
+ COLD = :cold
1157
+
1158
+ # @!method self.values
1159
+ # @return [Array<Symbol>]
1160
+ end
1161
+
1162
+ # @see Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant#llm_model
1163
+ module LlmModel
1164
+ extend Revox::Internal::Type::Union
1165
+
1166
+ variant -> { Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::LlmModel::UnionMember0 }
1167
+
1168
+ variant -> { Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::LlmModel::UnionMember1 }
1169
+
1170
+ variant -> { Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::LlmModel::UnionMember2 }
1171
+
1172
+ variant -> { Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::LlmModel::UnionMember3 }
1173
+
1174
+ class UnionMember0 < Revox::Internal::Type::BaseModel
1175
+ # @!attribute name
1176
+ #
1177
+ # @return [Symbol, Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::LlmModel::UnionMember0::Name]
1178
+ required :name,
1179
+ enum: -> { Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::LlmModel::UnionMember0::Name }
1180
+
1181
+ # @!attribute type
1182
+ #
1183
+ # @return [Symbol, :"dedicated-instance"]
1184
+ required :type, const: :"dedicated-instance"
1185
+
1186
+ # @!method initialize(name:, type: :"dedicated-instance")
1187
+ # @param name [Symbol, Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::LlmModel::UnionMember0::Name]
1188
+ # @param type [Symbol, :"dedicated-instance"]
1189
+
1190
+ # @see Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::LlmModel::UnionMember0#name
1191
+ module Name
1192
+ extend Revox::Internal::Type::Enum
1193
+
1194
+ GPT_4_1 = :"gpt-4.1"
1195
+ MINISTRAL_3_8B_INSTRUCT = :"ministral-3-8b-instruct"
1196
+
1197
+ # @!method self.values
1198
+ # @return [Array<Symbol>]
1199
+ end
1200
+ end
1201
+
1202
+ class UnionMember1 < Revox::Internal::Type::BaseModel
1203
+ # @!attribute openrouter_model_id
1204
+ # The model ID to use from OpenRouter. eg: openai/gpt-4.1
1205
+ #
1206
+ # @return [String]
1207
+ required :openrouter_model_id, String
1208
+
1209
+ # @!attribute openrouter_provider
1210
+ # The provider to use from OpenRouter. eg: nebius, openai, azure, etc.
1211
+ #
1212
+ # @return [String]
1213
+ required :openrouter_provider, String
1214
+
1215
+ # @!attribute type
1216
+ # Use a model from OpenRouter.
1217
+ #
1218
+ # @return [Symbol, :openrouter]
1219
+ required :type, const: :openrouter
1220
+
1221
+ # @!method initialize(openrouter_model_id:, openrouter_provider:, type: :openrouter)
1222
+ # @param openrouter_model_id [String] The model ID to use from OpenRouter. eg: openai/gpt-4.1
1223
+ #
1224
+ # @param openrouter_provider [String] The provider to use from OpenRouter. eg: nebius, openai, azure, etc.
1225
+ #
1226
+ # @param type [Symbol, :openrouter] Use a model from OpenRouter.
1227
+ end
1228
+
1229
+ class UnionMember2 < Revox::Internal::Type::BaseModel
1230
+ # @!attribute api_key
1231
+ # API key sent as Bearer token to the custom endpoint.
1232
+ #
1233
+ # @return [String]
1234
+ required :api_key, String
1235
+
1236
+ # @!attribute api_url
1237
+ # Base URL for the OpenAI-compatible API, e.g. https://api.together.xyz/v1
1238
+ #
1239
+ # @return [String]
1240
+ required :api_url, String
1241
+
1242
+ # @!attribute model_name
1243
+ # Model name as expected by the provider, e.g. meta-llama/llama-3-70b
1244
+ #
1245
+ # @return [String]
1246
+ required :model_name, String
1247
+
1248
+ # @!attribute type
1249
+ # OpenAI-compatible chat completions API (bring your own endpoint and key).
1250
+ #
1251
+ # @return [Symbol, :custom]
1252
+ required :type, const: :custom
1253
+
1254
+ # @!method initialize(api_key:, api_url:, model_name:, type: :custom)
1255
+ # @param api_key [String] API key sent as Bearer token to the custom endpoint.
1256
+ #
1257
+ # @param api_url [String] Base URL for the OpenAI-compatible API, e.g. https://api.together.xyz/v1
1258
+ #
1259
+ # @param model_name [String] Model name as expected by the provider, e.g. meta-llama/llama-3-70b
1260
+ #
1261
+ # @param type [Symbol, :custom] OpenAI-compatible chat completions API (bring your own endpoint and key).
1262
+ end
1263
+
1264
+ class UnionMember3 < Revox::Internal::Type::BaseModel
1265
+ # @!attribute provider
1266
+ # The provider to use from Realtime. eg: openai, google.
1267
+ #
1268
+ # @return [Symbol, Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::LlmModel::UnionMember3::Provider]
1269
+ required :provider,
1270
+ enum: -> { Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::LlmModel::UnionMember3::Provider }
1271
+
1272
+ # @!attribute realtime_model_id
1273
+ # The model ID to use from Realtime. eg: gpt-4.1
1274
+ #
1275
+ # @return [String]
1276
+ required :realtime_model_id, String
1277
+
1278
+ # @!attribute type
1279
+ # Use a model from Realtime.
1280
+ #
1281
+ # @return [Symbol, :realtime]
1282
+ required :type, const: :realtime
1283
+
1284
+ # @!attribute realtime_voice_id
1285
+ # Output voice for the realtime provider (e.g. OpenAI: marin; Gemini: Puck).
1286
+ #
1287
+ # @return [String, nil]
1288
+ optional :realtime_voice_id, String
1289
+
1290
+ # @!method initialize(provider:, realtime_model_id:, realtime_voice_id: nil, type: :realtime)
1291
+ # @param provider [Symbol, Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::LlmModel::UnionMember3::Provider] The provider to use from Realtime. eg: openai, google.
1292
+ #
1293
+ # @param realtime_model_id [String] The model ID to use from Realtime. eg: gpt-4.1
1294
+ #
1295
+ # @param realtime_voice_id [String] Output voice for the realtime provider (e.g. OpenAI: marin; Gemini: Puck).
1296
+ #
1297
+ # @param type [Symbol, :realtime] Use a model from Realtime.
1298
+
1299
+ # The provider to use from Realtime. eg: openai, google.
1300
+ #
1301
+ # @see Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::LlmModel::UnionMember3#provider
1302
+ module Provider
1303
+ extend Revox::Internal::Type::Enum
1304
+
1305
+ OPENAI = :openai
1306
+ GOOGLE = :google
1307
+
1308
+ # @!method self.values
1309
+ # @return [Array<Symbol>]
1310
+ end
1311
+ end
1312
+
1313
+ # @!method self.variants
1314
+ # @return [Array(Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::LlmModel::UnionMember0, Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::LlmModel::UnionMember1, Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::LlmModel::UnionMember2, Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::LlmModel::UnionMember3)]
1315
+ end
1316
+
1317
+ # @see Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant#position
1318
+ class Position < Revox::Internal::Type::BaseModel
1319
+ # @!attribute x
1320
+ #
1321
+ # @return [Float]
1322
+ required :x, Float
1323
+
1324
+ # @!attribute y_
1325
+ #
1326
+ # @return [Float]
1327
+ required :y_, Float, api_name: :y
1328
+
1329
+ # @!method initialize(x:, y_:)
1330
+ # @param x [Float]
1331
+ # @param y_ [Float]
1332
+ end
1333
+
1334
+ # @see Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant#prompt_flow
1335
+ class PromptFlow < Revox::Internal::Type::BaseModel
1336
+ # @!attribute edges
1337
+ #
1338
+ # @return [Array<Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::PromptFlow::Edge>]
1339
+ required :edges,
1340
+ -> { Revox::Internal::Type::ArrayOf[Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::PromptFlow::Edge] }
1341
+
1342
+ # @!attribute nodes
1343
+ #
1344
+ # @return [Array<Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::PromptFlow::Node>]
1345
+ required :nodes,
1346
+ -> { Revox::Internal::Type::ArrayOf[Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::PromptFlow::Node] }
1347
+
1348
+ # @!method initialize(edges:, nodes:)
1349
+ # @param edges [Array<Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::PromptFlow::Edge>]
1350
+ # @param nodes [Array<Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::PromptFlow::Node>]
1351
+
1352
+ class Edge < Revox::Internal::Type::BaseModel
1353
+ # @!attribute id
1354
+ #
1355
+ # @return [String]
1356
+ required :id, String
1357
+
1358
+ # @!attribute source
1359
+ #
1360
+ # @return [String]
1361
+ required :source, String
1362
+
1363
+ # @!attribute target
1364
+ #
1365
+ # @return [String]
1366
+ required :target, String
1367
+
1368
+ # @!method initialize(id:, source:, target:)
1369
+ # @param id [String]
1370
+ # @param source [String]
1371
+ # @param target [String]
1372
+ end
1373
+
1374
+ class Node < Revox::Internal::Type::BaseModel
1375
+ # @!attribute id
1376
+ #
1377
+ # @return [String]
1378
+ required :id, String
1379
+
1380
+ # @!attribute data
1381
+ #
1382
+ # @return [Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::PromptFlow::Node::Data]
1383
+ required :data,
1384
+ -> { Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::PromptFlow::Node::Data }
1385
+
1386
+ # @!attribute position
1387
+ #
1388
+ # @return [Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::PromptFlow::Node::Position]
1389
+ required :position,
1390
+ -> { Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::PromptFlow::Node::Position }
1391
+
1392
+ # @!attribute type
1393
+ #
1394
+ # @return [Symbol, :promptBlock]
1395
+ required :type, const: :promptBlock
1396
+
1397
+ # @!method initialize(id:, data:, position:, type: :promptBlock)
1398
+ # @param id [String]
1399
+ # @param data [Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::PromptFlow::Node::Data]
1400
+ # @param position [Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::PromptFlow::Node::Position]
1401
+ # @param type [Symbol, :promptBlock]
1402
+
1403
+ # @see Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::PromptFlow::Node#data
1404
+ class Data < Revox::Internal::Type::BaseModel
1405
+ # @!attribute body
1406
+ #
1407
+ # @return [String]
1408
+ required :body, String
1409
+
1410
+ # @!attribute title
1411
+ #
1412
+ # @return [String]
1413
+ required :title, String
1414
+
1415
+ # @!method initialize(body:, title:)
1416
+ # @param body [String]
1417
+ # @param title [String]
1418
+ end
1419
+
1420
+ # @see Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::PromptFlow::Node#position
1421
+ class Position < Revox::Internal::Type::BaseModel
1422
+ # @!attribute x
1423
+ #
1424
+ # @return [Float]
1425
+ required :x, Float
1426
+
1427
+ # @!attribute y_
1428
+ #
1429
+ # @return [Float]
1430
+ required :y_, Float, api_name: :y
1431
+
1432
+ # @!method initialize(x:, y_:)
1433
+ # @param x [Float]
1434
+ # @param y_ [Float]
1435
+ end
1436
+ end
1437
+ end
1438
+
1439
+ # @see Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant#slack
1440
+ class Slack < Revox::Internal::Type::BaseModel
1441
+ # @!attribute channel_id
1442
+ # The Slack channel ID where the notification will be posted.
1443
+ #
1444
+ # @return [String]
1445
+ required :channel_id, String
1446
+
1447
+ # @!attribute connection_id
1448
+ # The Nango connection ID linking the org's Slack workspace to Revox.
1449
+ #
1450
+ # @return [String]
1451
+ required :connection_id, String
1452
+
1453
+ # @!attribute outcomes
1454
+ # Which call outcomes trigger a Slack notification (e.g. ['interested', 'none']).
1455
+ # Use 'none' to notify when outcome is null.
1456
+ #
1457
+ # @return [Array<Symbol, Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::Slack::Outcome>]
1458
+ required :outcomes,
1459
+ -> { Revox::Internal::Type::ArrayOf[enum: Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::Slack::Outcome] }
1460
+
1461
+ # @!attribute channel_name
1462
+ # Human-readable Slack channel name, cached for display in the UI.
1463
+ #
1464
+ # @return [String, nil]
1465
+ optional :channel_name, String, nil?: true
1466
+
1467
+ # @!attribute template
1468
+ # Optional message template. Supports {{summary}}, {{outcome}}, {{phone}},
1469
+ # {{call_url}}, {{assistant_name}}, {{campaign_name}}, {{first_name}},
1470
+ # {{last_name}}, {{email}}, {{company}}, {{contact_name}}, {{contact_line}}, plus
1471
+ # prompt_variables and structured_output keys. When null/empty a default template
1472
+ # is used.
1473
+ #
1474
+ # @return [String, nil]
1475
+ optional :template, String, nil?: true
1476
+
1477
+ # @!method initialize(channel_id:, connection_id:, outcomes:, channel_name: nil, template: nil)
1478
+ # Some parameter documentations has been truncated, see
1479
+ # {Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::Slack} for more
1480
+ # details.
1481
+ #
1482
+ # @param channel_id [String] The Slack channel ID where the notification will be posted.
1483
+ #
1484
+ # @param connection_id [String] The Nango connection ID linking the org's Slack workspace to Revox.
1485
+ #
1486
+ # @param outcomes [Array<Symbol, Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::Slack::Outcome>] Which call outcomes trigger a Slack notification (e.g. ['interested', 'none']).
1487
+ #
1488
+ # @param channel_name [String, nil] Human-readable Slack channel name, cached for display in the UI.
1489
+ #
1490
+ # @param template [String, nil] Optional message template. Supports {{summary}}, {{outcome}}, {{phone}},
1491
+ # {{call\_
1492
+
1493
+ module Outcome
1494
+ extend Revox::Internal::Type::Enum
1495
+
1496
+ NOT_INTERESTED = :not_interested
1497
+ INTERESTED = :interested
1498
+ COMPLETED = :completed
1499
+ REQUESTED_CALLBACK_LATER = :requested_callback_later
1500
+ REQUESTED_CALLBACK_NEW_NUMBER = :requested_callback_new_number
1501
+ DO_NOT_CONTACT = :do_not_contact
1502
+ AI_AVERSE = :ai_averse
1503
+ NONE = :none
1504
+
1505
+ # @!method self.values
1506
+ # @return [Array<Symbol>]
1507
+ end
1508
+ end
1509
+
1510
+ class StructuredOutputConfig < Revox::Internal::Type::BaseModel
1511
+ # @!attribute name
1512
+ #
1513
+ # @return [String]
1514
+ required :name, String
1515
+
1516
+ # @!attribute required
1517
+ #
1518
+ # @return [Boolean]
1519
+ required :required, Revox::Internal::Type::Boolean
1520
+
1521
+ # @!attribute type
1522
+ #
1523
+ # @return [Symbol, Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::StructuredOutputConfig::Type]
1524
+ required :type,
1525
+ enum: -> { Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::StructuredOutputConfig::Type }
1526
+
1527
+ # @!attribute description
1528
+ #
1529
+ # @return [String, nil]
1530
+ optional :description, String
1531
+
1532
+ # @!attribute enum_options
1533
+ #
1534
+ # @return [Array<String>, nil]
1535
+ optional :enum_options, Revox::Internal::Type::ArrayOf[String]
1536
+
1537
+ # @!method initialize(name:, required:, type:, description: nil, enum_options: nil)
1538
+ # @param name [String]
1539
+ # @param required [Boolean]
1540
+ # @param type [Symbol, Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::StructuredOutputConfig::Type]
1541
+ # @param description [String]
1542
+ # @param enum_options [Array<String>]
1543
+
1544
+ # @see Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::StructuredOutputConfig#type
1545
+ module Type
1546
+ extend Revox::Internal::Type::Enum
1547
+
1548
+ STRING = :string
1549
+ NUMBER = :number
1550
+ BOOLEAN = :boolean
1551
+ ENUM = :enum
1552
+ DATE = :date
1553
+ DATETIME = :datetime
1554
+
1555
+ # @!method self.values
1556
+ # @return [Array<Symbol>]
1557
+ end
1558
+ end
1559
+
1560
+ # @see Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant#stt_context
1561
+ class SttContext < Revox::Internal::Type::BaseModel
1562
+ # @!attribute general
1563
+ #
1564
+ # @return [Array<Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::SttContext::General>]
1565
+ required :general,
1566
+ -> { Revox::Internal::Type::ArrayOf[Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::SttContext::General] }
1567
+
1568
+ # @!attribute terms
1569
+ #
1570
+ # @return [Array<String>]
1571
+ required :terms, Revox::Internal::Type::ArrayOf[String]
1572
+
1573
+ # @!method initialize(general:, terms:)
1574
+ # Assistant-level speech-to-text context: structured `general` key/value pairs
1575
+ # plus a list of domain `terms`. Prompt-derived context is merged in without
1576
+ # replacing existing entries.
1577
+ #
1578
+ # @param general [Array<Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::SttContext::General>]
1579
+ # @param terms [Array<String>]
1580
+
1581
+ class General < Revox::Internal::Type::BaseModel
1582
+ # @!attribute key
1583
+ #
1584
+ # @return [String]
1585
+ required :key, String
1586
+
1587
+ # @!attribute value
1588
+ #
1589
+ # @return [String]
1590
+ required :value, String
1591
+
1592
+ # @!method initialize(key:, value:)
1593
+ # @param key [String]
1594
+ # @param value [String]
1595
+ end
1596
+ end
1597
+
1598
+ # Transcriber (speech-to-text) model used for the assistant.
1599
+ #
1600
+ # @see Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant#stt_model
1601
+ module SttModel
1602
+ extend Revox::Internal::Type::Enum
1603
+
1604
+ STT_RT_V4 = :"stt-rt-v4"
1605
+ STT_RT_V5 = :"stt-rt-v5"
1606
+
1607
+ # @!method self.values
1608
+ # @return [Array<Symbol>]
1609
+ end
1610
+
1611
+ # Audio clip to play while the agent is processing a response. One of the built-in
1612
+ # LiveKit audio clips; null disables it.
1613
+ #
1614
+ # @see Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant#thinking_sound
1615
+ module ThinkingSound
1616
+ extend Revox::Internal::Type::Enum
1617
+
1618
+ CITY_AMBIENCE_OGG = :"city-ambience.ogg"
1619
+ FOREST_AMBIENCE_OGG = :"forest-ambience.ogg"
1620
+ OFFICE_AMBIENCE_OGG = :"office-ambience.ogg"
1621
+ CROWDED_ROOM_OGG = :"crowded-room.ogg"
1622
+ KEYBOARD_TYPING_OGG = :"keyboard-typing.ogg"
1623
+ KEYBOARD_TYPING2_OGG = :"keyboard-typing2.ogg"
1624
+ HOLD_MUSIC_OGG = :"hold_music.ogg"
1625
+
1626
+ # @!method self.values
1627
+ # @return [Array<Symbol>]
1628
+ end
1629
+
1630
+ # @see Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant#type
1631
+ module Type
1632
+ extend Revox::Internal::Type::Enum
1633
+
1634
+ STANDALONE = :standalone
1635
+ MULTI_STEP = :"multi-step"
1636
+ SUB_ASSISTANT = :"sub-assistant"
1637
+
1638
+ # @!method self.values
1639
+ # @return [Array<Symbol>]
1640
+ end
1641
+
1642
+ # @see Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant#voice
1643
+ class Voice < Revox::Internal::Type::BaseModel
1644
+ # @!attribute id
1645
+ # The ID of the voice.
1646
+ #
1647
+ # @return [String]
1648
+ required :id, String
1649
+
1650
+ # @!attribute provider
1651
+ # The provider of the voice.
1652
+ #
1653
+ # @return [Symbol, Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::Voice::Provider]
1654
+ required :provider,
1655
+ enum: -> { Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::Voice::Provider }
1656
+
1657
+ # @!attribute model
1658
+ # Cartesia TTS model (Cartesia only). Defaults to sonic-3 when omitted. Ignored
1659
+ # for other providers.
1660
+ #
1661
+ # @return [Symbol, Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::Voice::Model, nil]
1662
+ optional :model, enum: -> { Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::Voice::Model }
1663
+
1664
+ # @!attribute speed
1665
+ # The speed of the voice. Range depends on provider: Cartesia 0.6–1.5, ElevenLabs
1666
+ # 0.7–1.2. Default is 1.0.
1667
+ #
1668
+ # @return [Float, nil]
1669
+ optional :speed, Float
1670
+
1671
+ # @!attribute volume
1672
+ # Volume of the voice (Cartesia only). 0.5–2.0, default 1.0. Ignored for other
1673
+ # providers.
1674
+ #
1675
+ # @return [Float, nil]
1676
+ optional :volume, Float
1677
+
1678
+ # @!method initialize(id:, provider:, model: nil, speed: nil, volume: nil)
1679
+ # Some parameter documentations has been truncated, see
1680
+ # {Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::Voice} for more
1681
+ # details.
1682
+ #
1683
+ # @param id [String] The ID of the voice.
1684
+ #
1685
+ # @param provider [Symbol, Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::Voice::Provider] The provider of the voice.
1686
+ #
1687
+ # @param model [Symbol, Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::Voice::Model] Cartesia TTS model (Cartesia only). Defaults to sonic-3 when omitted. Ignored fo
1688
+ #
1689
+ # @param speed [Float] The speed of the voice. Range depends on provider: Cartesia 0.6–1.5, ElevenLabs
1690
+ #
1691
+ # @param volume [Float] Volume of the voice (Cartesia only). 0.5–2.0, default 1.0. Ignored for other pro
1692
+
1693
+ # The provider of the voice.
1694
+ #
1695
+ # @see Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::Voice#provider
1696
+ module Provider
1697
+ extend Revox::Internal::Type::Enum
1698
+
1699
+ CARTESIA = :cartesia
1700
+ ELEVENLABS = :elevenlabs
1701
+
1702
+ # @!method self.values
1703
+ # @return [Array<Symbol>]
1704
+ end
1705
+
1706
+ # Cartesia TTS model (Cartesia only). Defaults to sonic-3 when omitted. Ignored
1707
+ # for other providers.
1708
+ #
1709
+ # @see Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::Voice#model
1710
+ module Model
1711
+ extend Revox::Internal::Type::Enum
1712
+
1713
+ SONIC_3 = :"sonic-3"
1714
+ SONIC_3_5 = :"sonic-3.5"
1715
+
1716
+ # @!method self.values
1717
+ # @return [Array<Symbol>]
1718
+ end
1719
+ end
1720
+
1721
+ # @see Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant#zoho
1722
+ class Zoho < Revox::Internal::Type::BaseModel
1723
+ # @!attribute connection_id
1724
+ # The Nango connection ID linking the org's Zoho CRM account to Revox.
1725
+ #
1726
+ # @return [String]
1727
+ required :connection_id, String
1728
+
1729
+ # @!attribute field_mapping
1730
+ # Maps extracted call fields (structured_output / prompt variables) onto Zoho
1731
+ # field API names on the upserted record.
1732
+ #
1733
+ # @return [Array<Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::Zoho::FieldMapping>]
1734
+ required :field_mapping,
1735
+ -> { Revox::Internal::Type::ArrayOf[Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::Zoho::FieldMapping] }
1736
+
1737
+ # @!attribute log_call_activity
1738
+ # When true, also log the call as a record in Zoho's Calls module (related to the
1739
+ # upserted prospect via Who_Id).
1740
+ #
1741
+ # @return [Boolean]
1742
+ required :log_call_activity, Revox::Internal::Type::Boolean
1743
+
1744
+ # @!attribute module_
1745
+ # Zoho module the prospect record is upserted into (e.g. 'Leads' or 'Contacts').
1746
+ #
1747
+ # @return [String]
1748
+ required :module_, String, api_name: :module
1749
+
1750
+ # @!attribute outcomes
1751
+ # Which call outcomes trigger the Zoho push (e.g. ['interested', 'none']). Use
1752
+ # 'none' to push when outcome is null.
1753
+ #
1754
+ # @return [Array<Symbol, Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::Zoho::Outcome>]
1755
+ required :outcomes,
1756
+ -> { Revox::Internal::Type::ArrayOf[enum: Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::Zoho::Outcome] }
1757
+
1758
+ # @!attribute template
1759
+ # Optional Note body template. Supports {{summary}}, {{outcome}}, {{phone}},
1760
+ # {{call_url}}, {{assistant_name}}, {{campaign_name}}, {{transcript}}, plus
1761
+ # prompt_variables and structured_output keys. When null/empty a default note
1762
+ # (outcome + summary + auto-listed extracted fields) is used.
1763
+ #
1764
+ # @return [String, nil]
1765
+ optional :template, String, nil?: true
1766
+
1767
+ # @!method initialize(connection_id:, field_mapping:, log_call_activity:, module_:, outcomes:, template: nil)
1768
+ # Some parameter documentations has been truncated, see
1769
+ # {Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::Zoho} for more
1770
+ # details.
1771
+ #
1772
+ # @param connection_id [String] The Nango connection ID linking the org's Zoho CRM account to Revox.
1773
+ #
1774
+ # @param field_mapping [Array<Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::Zoho::FieldMapping>] Maps extracted call fields (structured_output / prompt variables) onto Zoho fiel
1775
+ #
1776
+ # @param log_call_activity [Boolean] When true, also log the call as a record in Zoho's Calls module (related to the
1777
+ #
1778
+ # @param module_ [String] Zoho module the prospect record is upserted into (e.g. 'Leads' or 'Contacts').
1779
+ #
1780
+ # @param outcomes [Array<Symbol, Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::Zoho::Outcome>] Which call outcomes trigger the Zoho push (e.g. ['interested', 'none']). Use 'no
1781
+ #
1782
+ # @param template [String, nil] Optional Note body template. Supports {{summary}}, {{outcome}}, {{phone}}, {{cal
1783
+
1784
+ class FieldMapping < Revox::Internal::Type::BaseModel
1785
+ # @!attribute source
1786
+ # Source key to read from the call: a structured_output field name, falling back
1787
+ # to a prompt variable of the same name.
1788
+ #
1789
+ # @return [String]
1790
+ required :source, String
1791
+
1792
+ # @!attribute zoho_field
1793
+ # Destination Zoho field API name on the upserted record (e.g. 'Email', 'Company',
1794
+ # or a custom 'Budget\_\_c').
1795
+ #
1796
+ # @return [String]
1797
+ required :zoho_field, String
1798
+
1799
+ # @!method initialize(source:, zoho_field:)
1800
+ # Some parameter documentations has been truncated, see
1801
+ # {Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::Zoho::FieldMapping}
1802
+ # for more details.
1803
+ #
1804
+ # @param source [String] Source key to read from the call: a structured_output field name, falling back t
1805
+ #
1806
+ # @param zoho_field [String] Destination Zoho field API name on the upserted record (e.g. 'Email', 'Company',
1807
+ end
1808
+
1809
+ module Outcome
1810
+ extend Revox::Internal::Type::Enum
1811
+
1812
+ NOT_INTERESTED = :not_interested
1813
+ INTERESTED = :interested
1814
+ COMPLETED = :completed
1815
+ REQUESTED_CALLBACK_LATER = :requested_callback_later
1816
+ REQUESTED_CALLBACK_NEW_NUMBER = :requested_callback_new_number
1817
+ DO_NOT_CONTACT = :do_not_contact
1818
+ AI_AVERSE = :ai_averse
1819
+ NONE = :none
1820
+
1821
+ # @!method self.values
1822
+ # @return [Array<Symbol>]
1823
+ end
1824
+ end
1825
+
1826
+ # @see Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant#created_by
1827
+ class CreatedBy < Revox::Internal::Type::BaseModel
1828
+ # @!attribute id
1829
+ # The database user id of the creator.
1830
+ #
1831
+ # @return [String]
1832
+ required :id, String
1833
+
1834
+ # @!attribute email
1835
+ #
1836
+ # @return [String]
1837
+ required :email, String
1838
+
1839
+ # @!attribute first_name
1840
+ #
1841
+ # @return [String, nil]
1842
+ required :first_name, String, nil?: true
1843
+
1844
+ # @!attribute last_name
1845
+ #
1846
+ # @return [String, nil]
1847
+ required :last_name, String, nil?: true
1848
+
1849
+ # @!method initialize(id:, email:, first_name:, last_name:)
1850
+ # The user who created the assistant.
1851
+ #
1852
+ # @param id [String] The database user id of the creator.
1853
+ #
1854
+ # @param email [String]
1855
+ #
1856
+ # @param first_name [String, nil]
1857
+ #
1858
+ # @param last_name [String, nil]
1859
+ end
1860
+
1861
+ class FaqItem < Revox::Internal::Type::BaseModel
1862
+ # @!attribute answer
1863
+ #
1864
+ # @return [String]
1865
+ required :answer, String
1866
+
1867
+ # @!attribute question
1868
+ #
1869
+ # @return [String]
1870
+ required :question, String
1871
+
1872
+ # @!attribute id
1873
+ #
1874
+ # @return [String, nil]
1875
+ optional :id, String
1876
+
1877
+ # @!attribute needs_human_answer
1878
+ #
1879
+ # @return [Boolean, nil]
1880
+ optional :needs_human_answer, Revox::Internal::Type::Boolean
1881
+
1882
+ # @!attribute source
1883
+ #
1884
+ # @return [Symbol, Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::FaqItem::Source, nil]
1885
+ optional :source,
1886
+ enum: -> { Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::FaqItem::Source }
1887
+
1888
+ # @!method initialize(answer:, question:, id: nil, needs_human_answer: nil, source: nil)
1889
+ # @param answer [String]
1890
+ # @param question [String]
1891
+ # @param id [String]
1892
+ # @param needs_human_answer [Boolean]
1893
+ # @param source [Symbol, Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::FaqItem::Source]
1894
+
1895
+ # @see Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::FaqItem#source
1896
+ module Source
1897
+ extend Revox::Internal::Type::Enum
1898
+
1899
+ HUMAN = :human
1900
+ AI = :ai
1901
+
1902
+ # @!method self.values
1903
+ # @return [Array<Symbol>]
1904
+ end
1905
+ end
1906
+ end
1907
+
1908
+ class CallAttempt < Revox::Internal::Type::BaseModel
1909
+ # @!attribute id
1910
+ # The ID of the call attempt.
1911
+ #
1912
+ # @return [String]
1913
+ required :id, String
1914
+
1915
+ # @!attribute answered_at
1916
+ # The time the call was answered.
1917
+ #
1918
+ # @return [Object]
1919
+ required :answered_at, Revox::Internal::Type::Unknown
1920
+
1921
+ # @!attribute dial_error
1922
+ # The SIP error that occurred.
1923
+ #
1924
+ # @return [Symbol, Revox::Models::CampaignGetRowsResponse::Row::Call::CallAttempt::DialError, nil]
1925
+ required :dial_error,
1926
+ enum: -> { Revox::Models::CampaignGetRowsResponse::Row::Call::CallAttempt::DialError },
1927
+ nil?: true
1928
+
1929
+ # @!attribute ended_at
1930
+ # The time the call ended.
1931
+ #
1932
+ # @return [Object]
1933
+ required :ended_at, Revox::Internal::Type::Unknown
1934
+
1935
+ # @!attribute phone_number
1936
+ # The phone number that was called. Formatted in E.164 format. Example:
1937
+ # +1234567890
1938
+ #
1939
+ # @return [String]
1940
+ required :phone_number, String
1941
+
1942
+ # @!attribute recording_url
1943
+ # The URL of the audio recording of the call.
1944
+ #
1945
+ # @return [String, nil]
1946
+ required :recording_url, String, nil?: true
1947
+
1948
+ # @!attribute result
1949
+ #
1950
+ # @return [Symbol, Revox::Models::CampaignGetRowsResponse::Row::Call::CallAttempt::Result, nil]
1951
+ required :result,
1952
+ enum: -> { Revox::Models::CampaignGetRowsResponse::Row::Call::CallAttempt::Result },
1953
+ nil?: true
1954
+
1955
+ # @!attribute started_at
1956
+ # The time the call started.
1957
+ #
1958
+ # @return [Object]
1959
+ required :started_at, Revox::Internal::Type::Unknown
1960
+
1961
+ # @!attribute status
1962
+ # The status of the call attempt.
1963
+ #
1964
+ # @return [Symbol, Revox::Models::CampaignGetRowsResponse::Row::Call::CallAttempt::Status]
1965
+ required :status, enum: -> { Revox::Models::CampaignGetRowsResponse::Row::Call::CallAttempt::Status }
1966
+
1967
+ # @!attribute assistants_used
1968
+ # Assistant node ids entered during this attempt, in traversal order.
1969
+ #
1970
+ # @return [Array<String>, nil]
1971
+ optional :assistants_used, Revox::Internal::Type::ArrayOf[String], nil?: true
1972
+
1973
+ # @!attribute end_reason
1974
+ # Reason for ending the call when ended_by is 'agent'. E.g. 'tool_end_call',
1975
+ # 'voicemail', 'transfer', 'ivr_no_navigate'.
1976
+ #
1977
+ # @return [Symbol, Revox::Models::CampaignGetRowsResponse::Row::Call::CallAttempt::EndReason, nil]
1978
+ optional :end_reason,
1979
+ enum: -> { Revox::Models::CampaignGetRowsResponse::Row::Call::CallAttempt::EndReason },
1980
+ nil?: true
1981
+
1982
+ # @!attribute ended_by
1983
+ # Who ended the call: 'agent' (AI agent), 'user' (caller/callee hung up), or
1984
+ # 'system' (e.g. max duration limit).
1985
+ #
1986
+ # @return [Symbol, Revox::Models::CampaignGetRowsResponse::Row::Call::CallAttempt::EndedBy, nil]
1987
+ optional :ended_by,
1988
+ enum: -> { Revox::Models::CampaignGetRowsResponse::Row::Call::CallAttempt::EndedBy },
1989
+ nil?: true
1990
+
1991
+ # @!attribute post_call_transcript
1992
+ # Higher-quality transcript generated after the call via Soniox async STT. Null
1993
+ # until generated or when no recording is available.
1994
+ #
1995
+ # @return [Array<Revox::Models::CampaignGetRowsResponse::Row::Call::CallAttempt::PostCallTranscript>, nil]
1996
+ optional :post_call_transcript,
1997
+ -> { Revox::Internal::Type::ArrayOf[Revox::Models::CampaignGetRowsResponse::Row::Call::CallAttempt::PostCallTranscript] },
1998
+ nil?: true
1999
+
2000
+ # @!attribute sms_log
2001
+ # Automatic SMS sent after the call (voicemail and after-call), ordered oldest
2002
+ # first. The in-call `send_sms` is excluded — it already appears in the transcript
2003
+ # as a tool call.
2004
+ #
2005
+ # @return [Array<Revox::Models::CampaignGetRowsResponse::Row::Call::CallAttempt::SMSLog>, nil]
2006
+ optional :sms_log,
2007
+ -> { Revox::Internal::Type::ArrayOf[Revox::Models::CampaignGetRowsResponse::Row::Call::CallAttempt::SMSLog] },
2008
+ nil?: true
2009
+
2010
+ # @!attribute structured_output
2011
+ # The data extracted from the call, using the structured output config from the
2012
+ # parent call object.
2013
+ #
2014
+ # @return [Hash{Symbol=>Object}, nil]
2015
+ optional :structured_output,
2016
+ Revox::Internal::Type::HashOf[Revox::Internal::Type::Unknown],
2017
+ nil?: true
2018
+
2019
+ # @!attribute transcript
2020
+ # The live transcript of the call, built in real time.
2021
+ #
2022
+ # @return [Array<Revox::Models::CampaignGetRowsResponse::Row::Call::CallAttempt::Transcript>, nil]
2023
+ optional :transcript,
2024
+ -> { Revox::Internal::Type::ArrayOf[Revox::Models::CampaignGetRowsResponse::Row::Call::CallAttempt::Transcript] },
2025
+ nil?: true
2026
+
2027
+ # @!method initialize(id:, answered_at:, dial_error:, ended_at:, phone_number:, recording_url:, result:, started_at:, status:, assistants_used: nil, end_reason: nil, ended_by: nil, post_call_transcript: nil, sms_log: nil, structured_output: nil, transcript: nil)
2028
+ # Some parameter documentations has been truncated, see
2029
+ # {Revox::Models::CampaignGetRowsResponse::Row::Call::CallAttempt} for more
2030
+ # details.
2031
+ #
2032
+ # This represent a single call attempt. A call attempt is a single call made to
2033
+ # the phone number.
2034
+ #
2035
+ # @param id [String] The ID of the call attempt.
2036
+ #
2037
+ # @param answered_at [Object] The time the call was answered.
2038
+ #
2039
+ # @param dial_error [Symbol, Revox::Models::CampaignGetRowsResponse::Row::Call::CallAttempt::DialError, nil] The SIP error that occurred.
2040
+ #
2041
+ # @param ended_at [Object] The time the call ended.
2042
+ #
2043
+ # @param phone_number [String] The phone number that was called. Formatted in E.164 format. Example: +123456789
2044
+ #
2045
+ # @param recording_url [String, nil] The URL of the audio recording of the call.
2046
+ #
2047
+ # @param result [Symbol, Revox::Models::CampaignGetRowsResponse::Row::Call::CallAttempt::Result, nil]
2048
+ #
2049
+ # @param started_at [Object] The time the call started.
2050
+ #
2051
+ # @param status [Symbol, Revox::Models::CampaignGetRowsResponse::Row::Call::CallAttempt::Status] The status of the call attempt.
2052
+ #
2053
+ # @param assistants_used [Array<String>, nil] Assistant node ids entered during this attempt, in traversal order.
2054
+ #
2055
+ # @param end_reason [Symbol, Revox::Models::CampaignGetRowsResponse::Row::Call::CallAttempt::EndReason, nil] Reason for ending the call when ended_by is 'agent'. E.g. 'tool_end_call', 'voic
2056
+ #
2057
+ # @param ended_by [Symbol, Revox::Models::CampaignGetRowsResponse::Row::Call::CallAttempt::EndedBy, nil] Who ended the call: 'agent' (AI agent), 'user' (caller/callee hung up), or 'syst
2058
+ #
2059
+ # @param post_call_transcript [Array<Revox::Models::CampaignGetRowsResponse::Row::Call::CallAttempt::PostCallTranscript>, nil] Higher-quality transcript generated after the call via Soniox async STT. Null un
2060
+ #
2061
+ # @param sms_log [Array<Revox::Models::CampaignGetRowsResponse::Row::Call::CallAttempt::SMSLog>, nil] Automatic SMS sent after the call (voicemail and after-call), ordered oldest fir
2062
+ #
2063
+ # @param structured_output [Hash{Symbol=>Object}, nil] The data extracted from the call, using the structured output config from the pa
2064
+ #
2065
+ # @param transcript [Array<Revox::Models::CampaignGetRowsResponse::Row::Call::CallAttempt::Transcript>, nil] The live transcript of the call, built in real time.
2066
+
2067
+ # The SIP error that occurred.
2068
+ #
2069
+ # @see Revox::Models::CampaignGetRowsResponse::Row::Call::CallAttempt#dial_error
2070
+ module DialError
2071
+ extend Revox::Internal::Type::Enum
2072
+
2073
+ NUMBER_NON_ATTRIBUTED = :number_non_attributed
2074
+ TOO_MANY_CALLS = :too_many_calls
2075
+ BUSY = :busy
2076
+ TEMPORARILY_UNAVAILABLE = :temporarily_unavailable
2077
+ NO_ANSWER = :no_answer
2078
+ NO_INTERNATIONAL_PERMISSION = :no_international_permission
2079
+ PRECONDITION_FAILED = :precondition_failed
2080
+ NON_CLASSIFIED_ERROR = :non_classified_error
2081
+
2082
+ # @!method self.values
2083
+ # @return [Array<Symbol>]
2084
+ end
2085
+
2086
+ # @see Revox::Models::CampaignGetRowsResponse::Row::Call::CallAttempt#result
2087
+ module Result
2088
+ extend Revox::Internal::Type::Enum
2089
+
2090
+ IVR = :IVR
2091
+ VOICEMAIL = :voicemail
2092
+ HUMAN = :human
2093
+ UNKNOWN = :unknown
2094
+ IOS_SCREENING_FILTER = :"ios-screening-filter"
2095
+
2096
+ # @!method self.values
2097
+ # @return [Array<Symbol>]
2098
+ end
2099
+
2100
+ # The status of the call attempt.
2101
+ #
2102
+ # @see Revox::Models::CampaignGetRowsResponse::Row::Call::CallAttempt#status
2103
+ module Status
2104
+ extend Revox::Internal::Type::Enum
2105
+
2106
+ QUEUED = :queued
2107
+ RINGING = :ringing
2108
+ ONGOING = :ongoing
2109
+ COMPLETED = :completed
2110
+ ERROR = :error
2111
+
2112
+ # @!method self.values
2113
+ # @return [Array<Symbol>]
2114
+ end
2115
+
2116
+ # Reason for ending the call when ended_by is 'agent'. E.g. 'tool_end_call',
2117
+ # 'voicemail', 'transfer', 'ivr_no_navigate'.
2118
+ #
2119
+ # @see Revox::Models::CampaignGetRowsResponse::Row::Call::CallAttempt#end_reason
2120
+ module EndReason
2121
+ extend Revox::Internal::Type::Enum
2122
+
2123
+ CLIENT_INITIATED = :client_initiated
2124
+ CONNECTION_TIMEOUT = :connection_timeout
2125
+ HUMAN_TAKEOVER = :human_takeover
2126
+ IVR_NO_NAVIGATE = :ivr_no_navigate
2127
+ MAX_DURATION = :max_duration
2128
+ PARTICIPANT_REMOVED = :participant_removed
2129
+ TOOL_END_CALL = :tool_end_call
2130
+ TRANSFER = :transfer
2131
+ USER_INACTIVE = :user_inactive
2132
+ USER_REJECTED = :user_rejected
2133
+ USER_UNAVAILABLE = :user_unavailable
2134
+ VOICEMAIL = :voicemail
2135
+ SPEED_DIAL_ABANDONED = :speed_dial_abandoned
2136
+ SPEED_DIAL_OPERATOR_MISSED = :speed_dial_operator_missed
2137
+ SPEED_DIAL_TIMEOUT = :speed_dial_timeout
2138
+ SPEED_DIAL_HANGUP = :speed_dial_hangup
2139
+
2140
+ # @!method self.values
2141
+ # @return [Array<Symbol>]
2142
+ end
2143
+
2144
+ # Who ended the call: 'agent' (AI agent), 'user' (caller/callee hung up), or
2145
+ # 'system' (e.g. max duration limit).
2146
+ #
2147
+ # @see Revox::Models::CampaignGetRowsResponse::Row::Call::CallAttempt#ended_by
2148
+ module EndedBy
2149
+ extend Revox::Internal::Type::Enum
2150
+
2151
+ AGENT = :agent
2152
+ USER = :user
2153
+ SYSTEM = :system
2154
+
2155
+ # @!method self.values
2156
+ # @return [Array<Symbol>]
2157
+ end
2158
+
2159
+ class PostCallTranscript < Revox::Internal::Type::BaseModel
2160
+ # @!attribute content
2161
+ #
2162
+ # @return [String]
2163
+ required :content, String
2164
+
2165
+ # @!attribute role
2166
+ #
2167
+ # @return [Symbol, Revox::Models::CampaignGetRowsResponse::Row::Call::CallAttempt::PostCallTranscript::Role]
2168
+ required :role,
2169
+ enum: -> { Revox::Models::CampaignGetRowsResponse::Row::Call::CallAttempt::PostCallTranscript::Role }
2170
+
2171
+ # @!attribute tool_arguments
2172
+ #
2173
+ # @return [Hash{Symbol=>Object}, String, nil]
2174
+ optional :tool_arguments,
2175
+ union: -> { Revox::Models::CampaignGetRowsResponse::Row::Call::CallAttempt::PostCallTranscript::ToolArguments }
2176
+
2177
+ # @!attribute tool_is_error
2178
+ #
2179
+ # @return [Boolean, nil]
2180
+ optional :tool_is_error, Revox::Internal::Type::Boolean
2181
+
2182
+ # @!attribute tool_name
2183
+ #
2184
+ # @return [String, nil]
2185
+ optional :tool_name, String
2186
+
2187
+ # @!attribute tool_output
2188
+ #
2189
+ # @return [String, nil]
2190
+ optional :tool_output, String
2191
+
2192
+ # @!method initialize(content:, role:, tool_arguments: nil, tool_is_error: nil, tool_name: nil, tool_output: nil)
2193
+ # @param content [String]
2194
+ # @param role [Symbol, Revox::Models::CampaignGetRowsResponse::Row::Call::CallAttempt::PostCallTranscript::Role]
2195
+ # @param tool_arguments [Hash{Symbol=>Object}, String]
2196
+ # @param tool_is_error [Boolean]
2197
+ # @param tool_name [String]
2198
+ # @param tool_output [String]
2199
+
2200
+ # @see Revox::Models::CampaignGetRowsResponse::Row::Call::CallAttempt::PostCallTranscript#role
2201
+ module Role
2202
+ extend Revox::Internal::Type::Enum
2203
+
2204
+ USER = :user
2205
+ ASSISTANT = :assistant
2206
+ HUMAN_AGENT = :human_agent
2207
+ TOOL = :tool
2208
+
2209
+ # @!method self.values
2210
+ # @return [Array<Symbol>]
2211
+ end
2212
+
2213
+ # @see Revox::Models::CampaignGetRowsResponse::Row::Call::CallAttempt::PostCallTranscript#tool_arguments
2214
+ module ToolArguments
2215
+ extend Revox::Internal::Type::Union
2216
+
2217
+ variant -> { Revox::Models::CampaignGetRowsResponse::Row::Call::CallAttempt::PostCallTranscript::ToolArguments::UnionMember0Map }
2218
+
2219
+ variant String
2220
+
2221
+ # @!method self.variants
2222
+ # @return [Array(Hash{Symbol=>Object}, String)]
2223
+
2224
+ # @type [Revox::Internal::Type::Converter]
2225
+ UnionMember0Map = Revox::Internal::Type::HashOf[Revox::Internal::Type::Unknown]
2226
+ end
2227
+ end
2228
+
2229
+ class SMSLog < Revox::Internal::Type::BaseModel
2230
+ # @!attribute id
2231
+ #
2232
+ # @return [String]
2233
+ required :id, String
2234
+
2235
+ # @!attribute created_at
2236
+ # When the SMS was sent.
2237
+ #
2238
+ # @return [Object]
2239
+ required :created_at, Revox::Internal::Type::Unknown
2240
+
2241
+ # @!attribute message_body
2242
+ #
2243
+ # @return [String]
2244
+ required :message_body, String
2245
+
2246
+ # @!attribute to_phone_number
2247
+ #
2248
+ # @return [String]
2249
+ required :to_phone_number, String
2250
+
2251
+ # @!attribute twilio_message_sid
2252
+ #
2253
+ # @return [String, nil]
2254
+ required :twilio_message_sid, String, nil?: true
2255
+
2256
+ # @!attribute type
2257
+ #
2258
+ # @return [Symbol, Revox::Models::CampaignGetRowsResponse::Row::Call::CallAttempt::SMSLog::Type]
2259
+ required :type, enum: -> { Revox::Models::CampaignGetRowsResponse::Row::Call::CallAttempt::SMSLog::Type }
2260
+
2261
+ # @!method initialize(id:, created_at:, message_body:, to_phone_number:, twilio_message_sid:, type:)
2262
+ # @param id [String]
2263
+ #
2264
+ # @param created_at [Object] When the SMS was sent.
2265
+ #
2266
+ # @param message_body [String]
2267
+ #
2268
+ # @param to_phone_number [String]
2269
+ #
2270
+ # @param twilio_message_sid [String, nil]
2271
+ #
2272
+ # @param type [Symbol, Revox::Models::CampaignGetRowsResponse::Row::Call::CallAttempt::SMSLog::Type]
2273
+
2274
+ # @see Revox::Models::CampaignGetRowsResponse::Row::Call::CallAttempt::SMSLog#type
2275
+ module Type
2276
+ extend Revox::Internal::Type::Enum
2277
+
2278
+ IN_CALL = :in_call
2279
+ VOICEMAIL = :voicemail
2280
+ AFTER_CALL = :after_call
2281
+
2282
+ # @!method self.values
2283
+ # @return [Array<Symbol>]
2284
+ end
2285
+ end
2286
+
2287
+ class Transcript < Revox::Internal::Type::BaseModel
2288
+ # @!attribute content
2289
+ #
2290
+ # @return [String]
2291
+ required :content, String
2292
+
2293
+ # @!attribute role
2294
+ #
2295
+ # @return [Symbol, Revox::Models::CampaignGetRowsResponse::Row::Call::CallAttempt::Transcript::Role]
2296
+ required :role,
2297
+ enum: -> { Revox::Models::CampaignGetRowsResponse::Row::Call::CallAttempt::Transcript::Role }
2298
+
2299
+ # @!attribute tool_arguments
2300
+ #
2301
+ # @return [Hash{Symbol=>Object}, String, nil]
2302
+ optional :tool_arguments,
2303
+ union: -> { Revox::Models::CampaignGetRowsResponse::Row::Call::CallAttempt::Transcript::ToolArguments }
2304
+
2305
+ # @!attribute tool_is_error
2306
+ #
2307
+ # @return [Boolean, nil]
2308
+ optional :tool_is_error, Revox::Internal::Type::Boolean
2309
+
2310
+ # @!attribute tool_name
2311
+ #
2312
+ # @return [String, nil]
2313
+ optional :tool_name, String
2314
+
2315
+ # @!attribute tool_output
2316
+ #
2317
+ # @return [String, nil]
2318
+ optional :tool_output, String
2319
+
2320
+ # @!method initialize(content:, role:, tool_arguments: nil, tool_is_error: nil, tool_name: nil, tool_output: nil)
2321
+ # @param content [String]
2322
+ # @param role [Symbol, Revox::Models::CampaignGetRowsResponse::Row::Call::CallAttempt::Transcript::Role]
2323
+ # @param tool_arguments [Hash{Symbol=>Object}, String]
2324
+ # @param tool_is_error [Boolean]
2325
+ # @param tool_name [String]
2326
+ # @param tool_output [String]
2327
+
2328
+ # @see Revox::Models::CampaignGetRowsResponse::Row::Call::CallAttempt::Transcript#role
2329
+ module Role
2330
+ extend Revox::Internal::Type::Enum
2331
+
2332
+ USER = :user
2333
+ ASSISTANT = :assistant
2334
+ HUMAN_AGENT = :human_agent
2335
+ TOOL = :tool
2336
+
2337
+ # @!method self.values
2338
+ # @return [Array<Symbol>]
2339
+ end
2340
+
2341
+ # @see Revox::Models::CampaignGetRowsResponse::Row::Call::CallAttempt::Transcript#tool_arguments
2342
+ module ToolArguments
2343
+ extend Revox::Internal::Type::Union
2344
+
2345
+ variant -> { Revox::Models::CampaignGetRowsResponse::Row::Call::CallAttempt::Transcript::ToolArguments::UnionMember0Map }
2346
+
2347
+ variant String
2348
+
2349
+ # @!method self.variants
2350
+ # @return [Array(Hash{Symbol=>Object}, String)]
2351
+
2352
+ # @type [Revox::Internal::Type::Converter]
2353
+ UnionMember0Map = Revox::Internal::Type::HashOf[Revox::Internal::Type::Unknown]
2354
+ end
2355
+ end
2356
+ end
2357
+
2358
+ # @see Revox::Models::CampaignGetRowsResponse::Row::Call#call_retry_config
2359
+ class CallRetryConfig < Revox::Internal::Type::BaseModel
2360
+ # @!attribute allowed_days
2361
+ # Days of the week when calls are allowed, in the recipient's timezone. Default:
2362
+ # Monday through Friday.
2363
+ #
2364
+ # @return [Array<Symbol, Revox::Models::CampaignGetRowsResponse::Row::Call::CallRetryConfig::AllowedDay>]
2365
+ required :allowed_days,
2366
+ -> { Revox::Internal::Type::ArrayOf[enum: Revox::Models::CampaignGetRowsResponse::Row::Call::CallRetryConfig::AllowedDay] }
2367
+
2368
+ # @!attribute call_twice_in_a_row
2369
+ # If true and max_retry_attempts >= 2, attempt #2 fires immediately (skipping
2370
+ # retry_delay_seconds) when attempt #1 didn't reach a human.
2371
+ # Calling-window/allowed-days checks still apply. Only affects the 1→2 transition.
2372
+ # Default: false.
2373
+ #
2374
+ # @return [Boolean]
2375
+ required :call_twice_in_a_row, Revox::Internal::Type::Boolean
2376
+
2377
+ # @!attribute calling_windows
2378
+ #
2379
+ # @return [Array<Revox::Models::CampaignGetRowsResponse::Row::Call::CallRetryConfig::CallingWindow>]
2380
+ required :calling_windows,
2381
+ -> { Revox::Internal::Type::ArrayOf[Revox::Models::CampaignGetRowsResponse::Row::Call::CallRetryConfig::CallingWindow] }
2382
+
2383
+ # @!attribute max_retry_attempts
2384
+ # Maximum number of call retry attempts. Default: 3.
2385
+ #
2386
+ # @return [Integer]
2387
+ required :max_retry_attempts, Integer
2388
+
2389
+ # @!attribute timezone
2390
+ # Optional IANA timezone identifier to override the automatic timezone detection
2391
+ # from phone number. If not provided, timezone is determined from the recipient's
2392
+ # phone number country code. Examples: 'America/New_York', 'Europe/Paris'.
2393
+ #
2394
+ # @return [String, nil]
2395
+ optional :timezone, String, nil?: true
2396
+
2397
+ # @!method initialize(allowed_days:, call_twice_in_a_row:, calling_windows:, max_retry_attempts:, timezone: nil)
2398
+ # Some parameter documentations has been truncated, see
2399
+ # {Revox::Models::CampaignGetRowsResponse::Row::Call::CallRetryConfig} for more
2400
+ # details.
2401
+ #
2402
+ # Configuration for call retry behavior including time windows, delays, and max
2403
+ # iterations. If not provided, defaults will be used.
2404
+ #
2405
+ # @param allowed_days [Array<Symbol, Revox::Models::CampaignGetRowsResponse::Row::Call::CallRetryConfig::AllowedDay>] Days of the week when calls are allowed, in the recipient's timezone. Default: M
2406
+ #
2407
+ # @param call_twice_in_a_row [Boolean] If true and max_retry_attempts >= 2, attempt #2 fires immediately (skipping retr
2408
+ #
2409
+ # @param calling_windows [Array<Revox::Models::CampaignGetRowsResponse::Row::Call::CallRetryConfig::CallingWindow>]
2410
+ #
2411
+ # @param max_retry_attempts [Integer] Maximum number of call retry attempts. Default: 3.
2412
+ #
2413
+ # @param timezone [String, nil] Optional IANA timezone identifier to override the automatic timezone detection f
2414
+
2415
+ module AllowedDay
2416
+ extend Revox::Internal::Type::Enum
2417
+
2418
+ MONDAY = :monday
2419
+ TUESDAY = :tuesday
2420
+ WEDNESDAY = :wednesday
2421
+ THURSDAY = :thursday
2422
+ FRIDAY = :friday
2423
+ SATURDAY = :saturday
2424
+ SUNDAY = :sunday
2425
+
2426
+ # @!method self.values
2427
+ # @return [Array<Symbol>]
2428
+ end
2429
+
2430
+ class CallingWindow < Revox::Internal::Type::BaseModel
2431
+ # @!attribute calling_window_end_time
2432
+ # End time for the calling window in the recipient's timezone (or
2433
+ # timezone_override if provided). Format: 'HH:mm' (24-hour) or 'H:mma' (12-hour).
2434
+ # Examples: '17:00', '6pm'. Default: '18:00'.
2435
+ #
2436
+ # @return [String]
2437
+ required :calling_window_end_time, String
2438
+
2439
+ # @!attribute calling_window_start_time
2440
+ # Start time for the calling window in the recipient's timezone (or
2441
+ # timezone_override if provided). Format: 'HH:mm' (24-hour) or 'H:mma' (12-hour).
2442
+ # Examples: '09:00', '10am'. Default: '10:00'.
2443
+ #
2444
+ # @return [String]
2445
+ required :calling_window_start_time, String
2446
+
2447
+ # @!attribute retry_delay_seconds
2448
+ # Delay between retry attempts in seconds. Default: 7200 (2 hours).
2449
+ #
2450
+ # @return [Integer]
2451
+ required :retry_delay_seconds, Integer
2452
+
2453
+ # @!method initialize(calling_window_end_time:, calling_window_start_time:, retry_delay_seconds:)
2454
+ # Some parameter documentations has been truncated, see
2455
+ # {Revox::Models::CampaignGetRowsResponse::Row::Call::CallRetryConfig::CallingWindow}
2456
+ # for more details.
2457
+ #
2458
+ # @param calling_window_end_time [String] End time for the calling window in the recipient's timezone (or timezone_overrid
2459
+ #
2460
+ # @param calling_window_start_time [String] Start time for the calling window in the recipient's timezone (or timezone_overr
2461
+ #
2462
+ # @param retry_delay_seconds [Integer] Delay between retry attempts in seconds. Default: 7200 (2 hours).
2463
+ end
2464
+ end
2465
+
2466
+ # @see Revox::Models::CampaignGetRowsResponse::Row::Call#campaign
2467
+ class Campaign < Revox::Internal::Type::BaseModel
2468
+ # @!attribute id
2469
+ #
2470
+ # @return [String]
2471
+ required :id, String
2472
+
2473
+ # @!attribute name
2474
+ #
2475
+ # @return [String]
2476
+ required :name, String
2477
+
2478
+ # @!method initialize(id:, name:)
2479
+ # @param id [String]
2480
+ # @param name [String]
2481
+ end
2482
+
2483
+ # @see Revox::Models::CampaignGetRowsResponse::Row::Call#contact
2484
+ class Contact < Revox::Internal::Type::BaseModel
2485
+ # @!attribute company
2486
+ #
2487
+ # @return [String, nil]
2488
+ required :company, String, nil?: true
2489
+
2490
+ # @!attribute email
2491
+ #
2492
+ # @return [String, nil]
2493
+ required :email, String, nil?: true
2494
+
2495
+ # @!attribute first_name
2496
+ #
2497
+ # @return [String, nil]
2498
+ required :first_name, String, nil?: true
2499
+
2500
+ # @!attribute last_name
2501
+ #
2502
+ # @return [String, nil]
2503
+ required :last_name, String, nil?: true
2504
+
2505
+ # @!method initialize(company:, email:, first_name:, last_name:)
2506
+ # Magic contact variables (prospect identity) extracted from the call's input data
2507
+ # and transcript.
2508
+ #
2509
+ # @param company [String, nil]
2510
+ # @param email [String, nil]
2511
+ # @param first_name [String, nil]
2512
+ # @param last_name [String, nil]
2513
+ end
2514
+
2515
+ # Whether the call is inbound or outbound.
2516
+ #
2517
+ # @see Revox::Models::CampaignGetRowsResponse::Row::Call#direction
2518
+ module Direction
2519
+ extend Revox::Internal::Type::Enum
2520
+
2521
+ INBOUND = :inbound
2522
+ OUTBOUND = :outbound
2523
+
2524
+ # @!method self.values
2525
+ # @return [Array<Symbol>]
2526
+ end
2527
+
2528
+ # @see Revox::Models::CampaignGetRowsResponse::Row::Call#last_call_attempt
2529
+ class LastCallAttempt < Revox::Internal::Type::BaseModel
2530
+ # @!attribute id
2531
+ # The ID of the call attempt.
2532
+ #
2533
+ # @return [String]
2534
+ required :id, String
2535
+
2536
+ # @!attribute answered_at
2537
+ # The time the call was answered.
2538
+ #
2539
+ # @return [Object]
2540
+ required :answered_at, Revox::Internal::Type::Unknown
2541
+
2542
+ # @!attribute dial_error
2543
+ # The SIP error that occurred.
2544
+ #
2545
+ # @return [Symbol, Revox::Models::CampaignGetRowsResponse::Row::Call::LastCallAttempt::DialError, nil]
2546
+ required :dial_error,
2547
+ enum: -> { Revox::Models::CampaignGetRowsResponse::Row::Call::LastCallAttempt::DialError },
2548
+ nil?: true
2549
+
2550
+ # @!attribute ended_at
2551
+ # The time the call ended.
2552
+ #
2553
+ # @return [Object]
2554
+ required :ended_at, Revox::Internal::Type::Unknown
2555
+
2556
+ # @!attribute phone_number
2557
+ # The phone number that was called. Formatted in E.164 format. Example:
2558
+ # +1234567890
2559
+ #
2560
+ # @return [String]
2561
+ required :phone_number, String
2562
+
2563
+ # @!attribute recording_url
2564
+ # The URL of the audio recording of the call.
2565
+ #
2566
+ # @return [String, nil]
2567
+ required :recording_url, String, nil?: true
2568
+
2569
+ # @!attribute result
2570
+ #
2571
+ # @return [Symbol, Revox::Models::CampaignGetRowsResponse::Row::Call::LastCallAttempt::Result, nil]
2572
+ required :result,
2573
+ enum: -> { Revox::Models::CampaignGetRowsResponse::Row::Call::LastCallAttempt::Result },
2574
+ nil?: true
2575
+
2576
+ # @!attribute started_at
2577
+ # The time the call started.
2578
+ #
2579
+ # @return [Object]
2580
+ required :started_at, Revox::Internal::Type::Unknown
2581
+
2582
+ # @!attribute status
2583
+ # The status of the call attempt.
2584
+ #
2585
+ # @return [Symbol, Revox::Models::CampaignGetRowsResponse::Row::Call::LastCallAttempt::Status]
2586
+ required :status, enum: -> { Revox::Models::CampaignGetRowsResponse::Row::Call::LastCallAttempt::Status }
2587
+
2588
+ # @!attribute assistants_used
2589
+ # Assistant node ids entered during this attempt, in traversal order.
2590
+ #
2591
+ # @return [Array<String>, nil]
2592
+ optional :assistants_used, Revox::Internal::Type::ArrayOf[String], nil?: true
2593
+
2594
+ # @!attribute end_reason
2595
+ # Reason for ending the call when ended_by is 'agent'. E.g. 'tool_end_call',
2596
+ # 'voicemail', 'transfer', 'ivr_no_navigate'.
2597
+ #
2598
+ # @return [Symbol, Revox::Models::CampaignGetRowsResponse::Row::Call::LastCallAttempt::EndReason, nil]
2599
+ optional :end_reason,
2600
+ enum: -> { Revox::Models::CampaignGetRowsResponse::Row::Call::LastCallAttempt::EndReason },
2601
+ nil?: true
2602
+
2603
+ # @!attribute ended_by
2604
+ # Who ended the call: 'agent' (AI agent), 'user' (caller/callee hung up), or
2605
+ # 'system' (e.g. max duration limit).
2606
+ #
2607
+ # @return [Symbol, Revox::Models::CampaignGetRowsResponse::Row::Call::LastCallAttempt::EndedBy, nil]
2608
+ optional :ended_by,
2609
+ enum: -> { Revox::Models::CampaignGetRowsResponse::Row::Call::LastCallAttempt::EndedBy },
2610
+ nil?: true
2611
+
2612
+ # @!attribute post_call_transcript
2613
+ # Higher-quality transcript generated after the call via Soniox async STT. Null
2614
+ # until generated or when no recording is available.
2615
+ #
2616
+ # @return [Array<Revox::Models::CampaignGetRowsResponse::Row::Call::LastCallAttempt::PostCallTranscript>, nil]
2617
+ optional :post_call_transcript,
2618
+ -> { Revox::Internal::Type::ArrayOf[Revox::Models::CampaignGetRowsResponse::Row::Call::LastCallAttempt::PostCallTranscript] },
2619
+ nil?: true
2620
+
2621
+ # @!attribute sms_log
2622
+ # Automatic SMS sent after the call (voicemail and after-call), ordered oldest
2623
+ # first. The in-call `send_sms` is excluded — it already appears in the transcript
2624
+ # as a tool call.
2625
+ #
2626
+ # @return [Array<Revox::Models::CampaignGetRowsResponse::Row::Call::LastCallAttempt::SMSLog>, nil]
2627
+ optional :sms_log,
2628
+ -> { Revox::Internal::Type::ArrayOf[Revox::Models::CampaignGetRowsResponse::Row::Call::LastCallAttempt::SMSLog] },
2629
+ nil?: true
2630
+
2631
+ # @!attribute structured_output
2632
+ # The data extracted from the call, using the structured output config from the
2633
+ # parent call object.
2634
+ #
2635
+ # @return [Hash{Symbol=>Object}, nil]
2636
+ optional :structured_output,
2637
+ Revox::Internal::Type::HashOf[Revox::Internal::Type::Unknown],
2638
+ nil?: true
2639
+
2640
+ # @!attribute transcript
2641
+ # The live transcript of the call, built in real time.
2642
+ #
2643
+ # @return [Array<Revox::Models::CampaignGetRowsResponse::Row::Call::LastCallAttempt::Transcript>, nil]
2644
+ optional :transcript,
2645
+ -> { Revox::Internal::Type::ArrayOf[Revox::Models::CampaignGetRowsResponse::Row::Call::LastCallAttempt::Transcript] },
2646
+ nil?: true
2647
+
2648
+ # @!method initialize(id:, answered_at:, dial_error:, ended_at:, phone_number:, recording_url:, result:, started_at:, status:, assistants_used: nil, end_reason: nil, ended_by: nil, post_call_transcript: nil, sms_log: nil, structured_output: nil, transcript: nil)
2649
+ # Some parameter documentations has been truncated, see
2650
+ # {Revox::Models::CampaignGetRowsResponse::Row::Call::LastCallAttempt} for more
2651
+ # details.
2652
+ #
2653
+ # This represent a single call attempt. A call attempt is a single call made to
2654
+ # the phone number.
2655
+ #
2656
+ # @param id [String] The ID of the call attempt.
2657
+ #
2658
+ # @param answered_at [Object] The time the call was answered.
2659
+ #
2660
+ # @param dial_error [Symbol, Revox::Models::CampaignGetRowsResponse::Row::Call::LastCallAttempt::DialError, nil] The SIP error that occurred.
2661
+ #
2662
+ # @param ended_at [Object] The time the call ended.
2663
+ #
2664
+ # @param phone_number [String] The phone number that was called. Formatted in E.164 format. Example: +123456789
2665
+ #
2666
+ # @param recording_url [String, nil] The URL of the audio recording of the call.
2667
+ #
2668
+ # @param result [Symbol, Revox::Models::CampaignGetRowsResponse::Row::Call::LastCallAttempt::Result, nil]
2669
+ #
2670
+ # @param started_at [Object] The time the call started.
2671
+ #
2672
+ # @param status [Symbol, Revox::Models::CampaignGetRowsResponse::Row::Call::LastCallAttempt::Status] The status of the call attempt.
2673
+ #
2674
+ # @param assistants_used [Array<String>, nil] Assistant node ids entered during this attempt, in traversal order.
2675
+ #
2676
+ # @param end_reason [Symbol, Revox::Models::CampaignGetRowsResponse::Row::Call::LastCallAttempt::EndReason, nil] Reason for ending the call when ended_by is 'agent'. E.g. 'tool_end_call', 'voic
2677
+ #
2678
+ # @param ended_by [Symbol, Revox::Models::CampaignGetRowsResponse::Row::Call::LastCallAttempt::EndedBy, nil] Who ended the call: 'agent' (AI agent), 'user' (caller/callee hung up), or 'syst
2679
+ #
2680
+ # @param post_call_transcript [Array<Revox::Models::CampaignGetRowsResponse::Row::Call::LastCallAttempt::PostCallTranscript>, nil] Higher-quality transcript generated after the call via Soniox async STT. Null un
2681
+ #
2682
+ # @param sms_log [Array<Revox::Models::CampaignGetRowsResponse::Row::Call::LastCallAttempt::SMSLog>, nil] Automatic SMS sent after the call (voicemail and after-call), ordered oldest fir
2683
+ #
2684
+ # @param structured_output [Hash{Symbol=>Object}, nil] The data extracted from the call, using the structured output config from the pa
2685
+ #
2686
+ # @param transcript [Array<Revox::Models::CampaignGetRowsResponse::Row::Call::LastCallAttempt::Transcript>, nil] The live transcript of the call, built in real time.
2687
+
2688
+ # The SIP error that occurred.
2689
+ #
2690
+ # @see Revox::Models::CampaignGetRowsResponse::Row::Call::LastCallAttempt#dial_error
2691
+ module DialError
2692
+ extend Revox::Internal::Type::Enum
2693
+
2694
+ NUMBER_NON_ATTRIBUTED = :number_non_attributed
2695
+ TOO_MANY_CALLS = :too_many_calls
2696
+ BUSY = :busy
2697
+ TEMPORARILY_UNAVAILABLE = :temporarily_unavailable
2698
+ NO_ANSWER = :no_answer
2699
+ NO_INTERNATIONAL_PERMISSION = :no_international_permission
2700
+ PRECONDITION_FAILED = :precondition_failed
2701
+ NON_CLASSIFIED_ERROR = :non_classified_error
2702
+
2703
+ # @!method self.values
2704
+ # @return [Array<Symbol>]
2705
+ end
2706
+
2707
+ # @see Revox::Models::CampaignGetRowsResponse::Row::Call::LastCallAttempt#result
2708
+ module Result
2709
+ extend Revox::Internal::Type::Enum
2710
+
2711
+ IVR = :IVR
2712
+ VOICEMAIL = :voicemail
2713
+ HUMAN = :human
2714
+ UNKNOWN = :unknown
2715
+ IOS_SCREENING_FILTER = :"ios-screening-filter"
2716
+
2717
+ # @!method self.values
2718
+ # @return [Array<Symbol>]
2719
+ end
2720
+
2721
+ # The status of the call attempt.
2722
+ #
2723
+ # @see Revox::Models::CampaignGetRowsResponse::Row::Call::LastCallAttempt#status
2724
+ module Status
2725
+ extend Revox::Internal::Type::Enum
2726
+
2727
+ QUEUED = :queued
2728
+ RINGING = :ringing
2729
+ ONGOING = :ongoing
2730
+ COMPLETED = :completed
2731
+ ERROR = :error
2732
+
2733
+ # @!method self.values
2734
+ # @return [Array<Symbol>]
2735
+ end
2736
+
2737
+ # Reason for ending the call when ended_by is 'agent'. E.g. 'tool_end_call',
2738
+ # 'voicemail', 'transfer', 'ivr_no_navigate'.
2739
+ #
2740
+ # @see Revox::Models::CampaignGetRowsResponse::Row::Call::LastCallAttempt#end_reason
2741
+ module EndReason
2742
+ extend Revox::Internal::Type::Enum
2743
+
2744
+ CLIENT_INITIATED = :client_initiated
2745
+ CONNECTION_TIMEOUT = :connection_timeout
2746
+ HUMAN_TAKEOVER = :human_takeover
2747
+ IVR_NO_NAVIGATE = :ivr_no_navigate
2748
+ MAX_DURATION = :max_duration
2749
+ PARTICIPANT_REMOVED = :participant_removed
2750
+ TOOL_END_CALL = :tool_end_call
2751
+ TRANSFER = :transfer
2752
+ USER_INACTIVE = :user_inactive
2753
+ USER_REJECTED = :user_rejected
2754
+ USER_UNAVAILABLE = :user_unavailable
2755
+ VOICEMAIL = :voicemail
2756
+ SPEED_DIAL_ABANDONED = :speed_dial_abandoned
2757
+ SPEED_DIAL_OPERATOR_MISSED = :speed_dial_operator_missed
2758
+ SPEED_DIAL_TIMEOUT = :speed_dial_timeout
2759
+ SPEED_DIAL_HANGUP = :speed_dial_hangup
2760
+
2761
+ # @!method self.values
2762
+ # @return [Array<Symbol>]
2763
+ end
2764
+
2765
+ # Who ended the call: 'agent' (AI agent), 'user' (caller/callee hung up), or
2766
+ # 'system' (e.g. max duration limit).
2767
+ #
2768
+ # @see Revox::Models::CampaignGetRowsResponse::Row::Call::LastCallAttempt#ended_by
2769
+ module EndedBy
2770
+ extend Revox::Internal::Type::Enum
2771
+
2772
+ AGENT = :agent
2773
+ USER = :user
2774
+ SYSTEM = :system
2775
+
2776
+ # @!method self.values
2777
+ # @return [Array<Symbol>]
2778
+ end
2779
+
2780
+ class PostCallTranscript < Revox::Internal::Type::BaseModel
2781
+ # @!attribute content
2782
+ #
2783
+ # @return [String]
2784
+ required :content, String
2785
+
2786
+ # @!attribute role
2787
+ #
2788
+ # @return [Symbol, Revox::Models::CampaignGetRowsResponse::Row::Call::LastCallAttempt::PostCallTranscript::Role]
2789
+ required :role,
2790
+ enum: -> { Revox::Models::CampaignGetRowsResponse::Row::Call::LastCallAttempt::PostCallTranscript::Role }
2791
+
2792
+ # @!attribute tool_arguments
2793
+ #
2794
+ # @return [Hash{Symbol=>Object}, String, nil]
2795
+ optional :tool_arguments,
2796
+ union: -> { Revox::Models::CampaignGetRowsResponse::Row::Call::LastCallAttempt::PostCallTranscript::ToolArguments }
2797
+
2798
+ # @!attribute tool_is_error
2799
+ #
2800
+ # @return [Boolean, nil]
2801
+ optional :tool_is_error, Revox::Internal::Type::Boolean
2802
+
2803
+ # @!attribute tool_name
2804
+ #
2805
+ # @return [String, nil]
2806
+ optional :tool_name, String
2807
+
2808
+ # @!attribute tool_output
2809
+ #
2810
+ # @return [String, nil]
2811
+ optional :tool_output, String
2812
+
2813
+ # @!method initialize(content:, role:, tool_arguments: nil, tool_is_error: nil, tool_name: nil, tool_output: nil)
2814
+ # @param content [String]
2815
+ # @param role [Symbol, Revox::Models::CampaignGetRowsResponse::Row::Call::LastCallAttempt::PostCallTranscript::Role]
2816
+ # @param tool_arguments [Hash{Symbol=>Object}, String]
2817
+ # @param tool_is_error [Boolean]
2818
+ # @param tool_name [String]
2819
+ # @param tool_output [String]
2820
+
2821
+ # @see Revox::Models::CampaignGetRowsResponse::Row::Call::LastCallAttempt::PostCallTranscript#role
2822
+ module Role
2823
+ extend Revox::Internal::Type::Enum
2824
+
2825
+ USER = :user
2826
+ ASSISTANT = :assistant
2827
+ HUMAN_AGENT = :human_agent
2828
+ TOOL = :tool
2829
+
2830
+ # @!method self.values
2831
+ # @return [Array<Symbol>]
2832
+ end
2833
+
2834
+ # @see Revox::Models::CampaignGetRowsResponse::Row::Call::LastCallAttempt::PostCallTranscript#tool_arguments
2835
+ module ToolArguments
2836
+ extend Revox::Internal::Type::Union
2837
+
2838
+ variant -> { Revox::Models::CampaignGetRowsResponse::Row::Call::LastCallAttempt::PostCallTranscript::ToolArguments::UnionMember0Map }
2839
+
2840
+ variant String
2841
+
2842
+ # @!method self.variants
2843
+ # @return [Array(Hash{Symbol=>Object}, String)]
2844
+
2845
+ # @type [Revox::Internal::Type::Converter]
2846
+ UnionMember0Map = Revox::Internal::Type::HashOf[Revox::Internal::Type::Unknown]
2847
+ end
2848
+ end
2849
+
2850
+ class SMSLog < Revox::Internal::Type::BaseModel
2851
+ # @!attribute id
2852
+ #
2853
+ # @return [String]
2854
+ required :id, String
2855
+
2856
+ # @!attribute created_at
2857
+ # When the SMS was sent.
2858
+ #
2859
+ # @return [Object]
2860
+ required :created_at, Revox::Internal::Type::Unknown
2861
+
2862
+ # @!attribute message_body
2863
+ #
2864
+ # @return [String]
2865
+ required :message_body, String
2866
+
2867
+ # @!attribute to_phone_number
2868
+ #
2869
+ # @return [String]
2870
+ required :to_phone_number, String
2871
+
2872
+ # @!attribute twilio_message_sid
2873
+ #
2874
+ # @return [String, nil]
2875
+ required :twilio_message_sid, String, nil?: true
2876
+
2877
+ # @!attribute type
2878
+ #
2879
+ # @return [Symbol, Revox::Models::CampaignGetRowsResponse::Row::Call::LastCallAttempt::SMSLog::Type]
2880
+ required :type,
2881
+ enum: -> { Revox::Models::CampaignGetRowsResponse::Row::Call::LastCallAttempt::SMSLog::Type }
2882
+
2883
+ # @!method initialize(id:, created_at:, message_body:, to_phone_number:, twilio_message_sid:, type:)
2884
+ # @param id [String]
2885
+ #
2886
+ # @param created_at [Object] When the SMS was sent.
2887
+ #
2888
+ # @param message_body [String]
2889
+ #
2890
+ # @param to_phone_number [String]
2891
+ #
2892
+ # @param twilio_message_sid [String, nil]
2893
+ #
2894
+ # @param type [Symbol, Revox::Models::CampaignGetRowsResponse::Row::Call::LastCallAttempt::SMSLog::Type]
2895
+
2896
+ # @see Revox::Models::CampaignGetRowsResponse::Row::Call::LastCallAttempt::SMSLog#type
2897
+ module Type
2898
+ extend Revox::Internal::Type::Enum
2899
+
2900
+ IN_CALL = :in_call
2901
+ VOICEMAIL = :voicemail
2902
+ AFTER_CALL = :after_call
2903
+
2904
+ # @!method self.values
2905
+ # @return [Array<Symbol>]
2906
+ end
2907
+ end
2908
+
2909
+ class Transcript < Revox::Internal::Type::BaseModel
2910
+ # @!attribute content
2911
+ #
2912
+ # @return [String]
2913
+ required :content, String
2914
+
2915
+ # @!attribute role
2916
+ #
2917
+ # @return [Symbol, Revox::Models::CampaignGetRowsResponse::Row::Call::LastCallAttempt::Transcript::Role]
2918
+ required :role,
2919
+ enum: -> { Revox::Models::CampaignGetRowsResponse::Row::Call::LastCallAttempt::Transcript::Role }
2920
+
2921
+ # @!attribute tool_arguments
2922
+ #
2923
+ # @return [Hash{Symbol=>Object}, String, nil]
2924
+ optional :tool_arguments,
2925
+ union: -> { Revox::Models::CampaignGetRowsResponse::Row::Call::LastCallAttempt::Transcript::ToolArguments }
2926
+
2927
+ # @!attribute tool_is_error
2928
+ #
2929
+ # @return [Boolean, nil]
2930
+ optional :tool_is_error, Revox::Internal::Type::Boolean
2931
+
2932
+ # @!attribute tool_name
2933
+ #
2934
+ # @return [String, nil]
2935
+ optional :tool_name, String
2936
+
2937
+ # @!attribute tool_output
2938
+ #
2939
+ # @return [String, nil]
2940
+ optional :tool_output, String
2941
+
2942
+ # @!method initialize(content:, role:, tool_arguments: nil, tool_is_error: nil, tool_name: nil, tool_output: nil)
2943
+ # @param content [String]
2944
+ # @param role [Symbol, Revox::Models::CampaignGetRowsResponse::Row::Call::LastCallAttempt::Transcript::Role]
2945
+ # @param tool_arguments [Hash{Symbol=>Object}, String]
2946
+ # @param tool_is_error [Boolean]
2947
+ # @param tool_name [String]
2948
+ # @param tool_output [String]
2949
+
2950
+ # @see Revox::Models::CampaignGetRowsResponse::Row::Call::LastCallAttempt::Transcript#role
2951
+ module Role
2952
+ extend Revox::Internal::Type::Enum
2953
+
2954
+ USER = :user
2955
+ ASSISTANT = :assistant
2956
+ HUMAN_AGENT = :human_agent
2957
+ TOOL = :tool
2958
+
2959
+ # @!method self.values
2960
+ # @return [Array<Symbol>]
2961
+ end
2962
+
2963
+ # @see Revox::Models::CampaignGetRowsResponse::Row::Call::LastCallAttempt::Transcript#tool_arguments
2964
+ module ToolArguments
2965
+ extend Revox::Internal::Type::Union
2966
+
2967
+ variant -> { Revox::Models::CampaignGetRowsResponse::Row::Call::LastCallAttempt::Transcript::ToolArguments::UnionMember0Map }
2968
+
2969
+ variant String
2970
+
2971
+ # @!method self.variants
2972
+ # @return [Array(Hash{Symbol=>Object}, String)]
2973
+
2974
+ # @type [Revox::Internal::Type::Converter]
2975
+ UnionMember0Map = Revox::Internal::Type::HashOf[Revox::Internal::Type::Unknown]
2976
+ end
2977
+ end
2978
+ end
2979
+
2980
+ # @see Revox::Models::CampaignGetRowsResponse::Row::Call#llm_model
2981
+ module LlmModel
2982
+ extend Revox::Internal::Type::Union
2983
+
2984
+ variant -> { Revox::Models::CampaignGetRowsResponse::Row::Call::LlmModel::UnionMember0 }
2985
+
2986
+ variant -> { Revox::Models::CampaignGetRowsResponse::Row::Call::LlmModel::UnionMember1 }
2987
+
2988
+ variant -> { Revox::Models::CampaignGetRowsResponse::Row::Call::LlmModel::UnionMember2 }
2989
+
2990
+ variant -> { Revox::Models::CampaignGetRowsResponse::Row::Call::LlmModel::UnionMember3 }
2991
+
2992
+ class UnionMember0 < Revox::Internal::Type::BaseModel
2993
+ # @!attribute name
2994
+ #
2995
+ # @return [Symbol, Revox::Models::CampaignGetRowsResponse::Row::Call::LlmModel::UnionMember0::Name]
2996
+ required :name,
2997
+ enum: -> { Revox::Models::CampaignGetRowsResponse::Row::Call::LlmModel::UnionMember0::Name }
2998
+
2999
+ # @!attribute type
3000
+ #
3001
+ # @return [Symbol, :"dedicated-instance"]
3002
+ required :type, const: :"dedicated-instance"
3003
+
3004
+ # @!method initialize(name:, type: :"dedicated-instance")
3005
+ # @param name [Symbol, Revox::Models::CampaignGetRowsResponse::Row::Call::LlmModel::UnionMember0::Name]
3006
+ # @param type [Symbol, :"dedicated-instance"]
3007
+
3008
+ # @see Revox::Models::CampaignGetRowsResponse::Row::Call::LlmModel::UnionMember0#name
3009
+ module Name
3010
+ extend Revox::Internal::Type::Enum
3011
+
3012
+ GPT_4_1 = :"gpt-4.1"
3013
+ MINISTRAL_3_8B_INSTRUCT = :"ministral-3-8b-instruct"
3014
+
3015
+ # @!method self.values
3016
+ # @return [Array<Symbol>]
3017
+ end
3018
+ end
3019
+
3020
+ class UnionMember1 < Revox::Internal::Type::BaseModel
3021
+ # @!attribute openrouter_model_id
3022
+ # The model ID to use from OpenRouter. eg: openai/gpt-4.1
3023
+ #
3024
+ # @return [String]
3025
+ required :openrouter_model_id, String
3026
+
3027
+ # @!attribute openrouter_provider
3028
+ # The provider to use from OpenRouter. eg: nebius, openai, azure, etc.
3029
+ #
3030
+ # @return [String]
3031
+ required :openrouter_provider, String
3032
+
3033
+ # @!attribute type
3034
+ # Use a model from OpenRouter.
3035
+ #
3036
+ # @return [Symbol, :openrouter]
3037
+ required :type, const: :openrouter
3038
+
3039
+ # @!method initialize(openrouter_model_id:, openrouter_provider:, type: :openrouter)
3040
+ # @param openrouter_model_id [String] The model ID to use from OpenRouter. eg: openai/gpt-4.1
3041
+ #
3042
+ # @param openrouter_provider [String] The provider to use from OpenRouter. eg: nebius, openai, azure, etc.
3043
+ #
3044
+ # @param type [Symbol, :openrouter] Use a model from OpenRouter.
3045
+ end
3046
+
3047
+ class UnionMember2 < Revox::Internal::Type::BaseModel
3048
+ # @!attribute api_key
3049
+ # API key sent as Bearer token to the custom endpoint.
3050
+ #
3051
+ # @return [String]
3052
+ required :api_key, String
3053
+
3054
+ # @!attribute api_url
3055
+ # Base URL for the OpenAI-compatible API, e.g. https://api.together.xyz/v1
3056
+ #
3057
+ # @return [String]
3058
+ required :api_url, String
3059
+
3060
+ # @!attribute model_name
3061
+ # Model name as expected by the provider, e.g. meta-llama/llama-3-70b
3062
+ #
3063
+ # @return [String]
3064
+ required :model_name, String
3065
+
3066
+ # @!attribute type
3067
+ # OpenAI-compatible chat completions API (bring your own endpoint and key).
3068
+ #
3069
+ # @return [Symbol, :custom]
3070
+ required :type, const: :custom
3071
+
3072
+ # @!method initialize(api_key:, api_url:, model_name:, type: :custom)
3073
+ # @param api_key [String] API key sent as Bearer token to the custom endpoint.
3074
+ #
3075
+ # @param api_url [String] Base URL for the OpenAI-compatible API, e.g. https://api.together.xyz/v1
3076
+ #
3077
+ # @param model_name [String] Model name as expected by the provider, e.g. meta-llama/llama-3-70b
3078
+ #
3079
+ # @param type [Symbol, :custom] OpenAI-compatible chat completions API (bring your own endpoint and key).
3080
+ end
3081
+
3082
+ class UnionMember3 < Revox::Internal::Type::BaseModel
3083
+ # @!attribute provider
3084
+ # The provider to use from Realtime. eg: openai, google.
3085
+ #
3086
+ # @return [Symbol, Revox::Models::CampaignGetRowsResponse::Row::Call::LlmModel::UnionMember3::Provider]
3087
+ required :provider,
3088
+ enum: -> { Revox::Models::CampaignGetRowsResponse::Row::Call::LlmModel::UnionMember3::Provider }
3089
+
3090
+ # @!attribute realtime_model_id
3091
+ # The model ID to use from Realtime. eg: gpt-4.1
3092
+ #
3093
+ # @return [String]
3094
+ required :realtime_model_id, String
3095
+
3096
+ # @!attribute type
3097
+ # Use a model from Realtime.
3098
+ #
3099
+ # @return [Symbol, :realtime]
3100
+ required :type, const: :realtime
3101
+
3102
+ # @!attribute realtime_voice_id
3103
+ # Output voice for the realtime provider (e.g. OpenAI: marin; Gemini: Puck).
3104
+ #
3105
+ # @return [String, nil]
3106
+ optional :realtime_voice_id, String
3107
+
3108
+ # @!method initialize(provider:, realtime_model_id:, realtime_voice_id: nil, type: :realtime)
3109
+ # @param provider [Symbol, Revox::Models::CampaignGetRowsResponse::Row::Call::LlmModel::UnionMember3::Provider] The provider to use from Realtime. eg: openai, google.
3110
+ #
3111
+ # @param realtime_model_id [String] The model ID to use from Realtime. eg: gpt-4.1
3112
+ #
3113
+ # @param realtime_voice_id [String] Output voice for the realtime provider (e.g. OpenAI: marin; Gemini: Puck).
3114
+ #
3115
+ # @param type [Symbol, :realtime] Use a model from Realtime.
3116
+
3117
+ # The provider to use from Realtime. eg: openai, google.
3118
+ #
3119
+ # @see Revox::Models::CampaignGetRowsResponse::Row::Call::LlmModel::UnionMember3#provider
3120
+ module Provider
3121
+ extend Revox::Internal::Type::Enum
3122
+
3123
+ OPENAI = :openai
3124
+ GOOGLE = :google
3125
+
3126
+ # @!method self.values
3127
+ # @return [Array<Symbol>]
3128
+ end
3129
+ end
3130
+
3131
+ # @!method self.variants
3132
+ # @return [Array(Revox::Models::CampaignGetRowsResponse::Row::Call::LlmModel::UnionMember0, Revox::Models::CampaignGetRowsResponse::Row::Call::LlmModel::UnionMember1, Revox::Models::CampaignGetRowsResponse::Row::Call::LlmModel::UnionMember2, Revox::Models::CampaignGetRowsResponse::Row::Call::LlmModel::UnionMember3)]
3133
+ end
3134
+
3135
+ # The status of the call.
3136
+ #
3137
+ # @see Revox::Models::CampaignGetRowsResponse::Row::Call#status
3138
+ module Status
3139
+ extend Revox::Internal::Type::Enum
3140
+
3141
+ INITIALIZING = :initializing
3142
+ QUEUED_FOR_CALLING = :queued_for_calling
3143
+ CALLING = :calling
3144
+ POST_PROCESSING = :post_processing
3145
+ SCHEDULED = :scheduled
3146
+ PAUSED = :paused
3147
+ COMPLETED = :completed
3148
+ CANCELLED = :cancelled
3149
+ ERRORED = :errored
3150
+
3151
+ # @!method self.values
3152
+ # @return [Array<Symbol>]
3153
+ end
3154
+
3155
+ # Business outcome of the call. Null if not computed or no transcript.
3156
+ #
3157
+ # @see Revox::Models::CampaignGetRowsResponse::Row::Call#outcome
3158
+ module Outcome
3159
+ extend Revox::Internal::Type::Enum
3160
+
3161
+ NOT_INTERESTED = :not_interested
3162
+ INTERESTED = :interested
3163
+ COMPLETED = :completed
3164
+ REQUESTED_CALLBACK_LATER = :requested_callback_later
3165
+ REQUESTED_CALLBACK_NEW_NUMBER = :requested_callback_new_number
3166
+ DO_NOT_CONTACT = :do_not_contact
3167
+ AI_AVERSE = :ai_averse
3168
+
3169
+ # @!method self.values
3170
+ # @return [Array<Symbol>]
3171
+ end
3172
+ end
3173
+ end
3174
+ end
3175
+ end
3176
+ end