revox 0.1.0 → 0.3.0

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