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