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::CallCreateResponse::Call::Assignee, nil]
32
+ required :assignee, -> { Revox::Models::CallCreateResponse::Call::Assignee }, nil?: true
33
+
28
34
  # @!attribute assistant
29
35
  #
30
36
  # @return [Revox::Models::CallCreateResponse::Call::Assistant, nil]
@@ -55,6 +61,13 @@ module Revox
55
61
  # @return [Revox::Models::CallCreateResponse::Call::Campaign, nil]
56
62
  required :campaign, -> { Revox::Models::CallCreateResponse::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::CallCreateResponse::Call::Contact]
69
+ required :contact, -> { Revox::Models::CallCreateResponse::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::CallCreateResponse::Call::LlmModel::UnionMember0, Revox::Models::CallCreateResponse::Call::LlmModel::UnionMember1]
119
+ # @return [Revox::Models::CallCreateResponse::Call::LlmModel::UnionMember0, Revox::Models::CallCreateResponse::Call::LlmModel::UnionMember1, Revox::Models::CallCreateResponse::Call::LlmModel::UnionMember2, Revox::Models::CallCreateResponse::Call::LlmModel::UnionMember3]
107
120
  required :llm_model, union: -> { Revox::Models::CallCreateResponse::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::CallCreateResponse::Call::Outcome, nil]
178
+ optional :outcome, enum: -> { Revox::Models::CallCreateResponse::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::CallCreateResponse::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::CallCreateResponse::Call::Assignee, nil] The team member responsible for following up on this call.
196
+ #
149
197
  # @param assistant [Revox::Models::CallCreateResponse::Call::Assistant, nil]
150
198
  #
151
199
  # @param call_attempts [Array<Revox::Models::CallCreateResponse::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::CallCreateResponse::Call::Campaign, nil]
158
206
  #
207
+ # @param contact [Revox::Models::CallCreateResponse::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::CallCreateResponse::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::CallCreateResponse::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::CallCreateResponse::Call::LlmModel::UnionMember0, Revox::Models::CallCreateResponse::Call::LlmModel::UnionMember1]
223
+ # @param llm_model [Revox::Models::CallCreateResponse::Call::LlmModel::UnionMember0, Revox::Models::CallCreateResponse::Call::LlmModel::UnionMember1, Revox::Models::CallCreateResponse::Call::LlmModel::UnionMember2, Revox::Models::CallCreateResponse::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::CallCreateResponse::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::CallCreateResponse::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::CallCreateResponse::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::CallCreateResponse::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::CallCreateResponse::Call::Assistant::AfterCallSMSOutcome>, nil]
292
+ required :after_call_sms_outcomes,
293
+ -> { Revox::Internal::Type::ArrayOf[enum: Revox::Models::CallCreateResponse::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::CallCreateResponse::Call::Assistant::BackgroundSound, nil]
197
307
  required :background_sound,
198
308
  enum: -> { Revox::Models::CallCreateResponse::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::CallCreateResponse::Call::Assistant::Calendly, nil]
@@ -212,11 +328,48 @@ module Revox
212
328
  -> { Revox::Models::CallCreateResponse::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::CallCreateResponse::Call::Assistant::CustomTool>, nil]
345
+ required :custom_tools,
346
+ -> { Revox::Internal::Type::ArrayOf[Revox::Models::CallCreateResponse::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::CallCreateResponse::Call::Assistant::EmailNotificationLanguage]
361
+ required :email_notification_language,
362
+ enum: -> { Revox::Models::CallCreateResponse::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::CallCreateResponse::Call::Assistant::EmailNotificationOutcome>, nil]
369
+ required :email_notification_outcomes,
370
+ -> { Revox::Internal::Type::ArrayOf[enum: Revox::Models::CallCreateResponse::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::CallCreateResponse::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::CallCreateResponse::Call::Assistant::HumanTransferMode, nil]
407
+ required :human_transfer_mode,
408
+ enum: -> { Revox::Models::CallCreateResponse::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::CallCreateResponse::Call::Assistant::LlmModel::UnionMember0, Revox::Models::CallCreateResponse::Call::Assistant::LlmModel::UnionMember1]
420
+ # @return [Revox::Models::CallCreateResponse::Call::Assistant::LlmModel::UnionMember0, Revox::Models::CallCreateResponse::Call::Assistant::LlmModel::UnionMember1, Revox::Models::CallCreateResponse::Call::Assistant::LlmModel::UnionMember2, Revox::Models::CallCreateResponse::Call::Assistant::LlmModel::UnionMember3]
252
421
  required :llm_model, union: -> { Revox::Models::CallCreateResponse::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::CallCreateResponse::Call::Assistant::Position, nil]
458
+ required :position, -> { Revox::Models::CallCreateResponse::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::CallCreateResponse::Call::Assistant::PromptFlow, nil]
468
+ required :prompt_flow, -> { Revox::Models::CallCreateResponse::Call::Assistant::PromptFlow }, nil?: true
469
+
470
+ # @!attribute slack
471
+ #
472
+ # @return [Revox::Models::CallCreateResponse::Call::Assistant::Slack, nil]
473
+ required :slack, -> { Revox::Models::CallCreateResponse::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::CallCreateResponse::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::CallCreateResponse::Call::Assistant::SttContext, nil]
513
+ required :stt_context, -> { Revox::Models::CallCreateResponse::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::CallCreateResponse::Call::Assistant::SttModel]
519
+ required :stt_model, enum: -> { Revox::Models::CallCreateResponse::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::CallCreateResponse::Call::Assistant::ThinkingSound, nil]
526
+ required :thinking_sound,
527
+ enum: -> { Revox::Models::CallCreateResponse::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::CallCreateResponse::Call::Assistant::Type]
552
+ required :type, enum: -> { Revox::Models::CallCreateResponse::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::CallCreateResponse::Call::Assistant::Zoho, nil]
594
+ required :zoho, -> { Revox::Models::CallCreateResponse::Call::Assistant::Zoho }, nil?: true
595
+
596
+ # @!attribute created_by
597
+ # The user who created the assistant.
598
+ #
599
+ # @return [Revox::Models::CallCreateResponse::Call::Assistant::CreatedBy, nil]
600
+ optional :created_by, -> { Revox::Models::CallCreateResponse::Call::Assistant::CreatedBy }, nil?: true
601
+
314
602
  # @!attribute faq_items
315
603
  #
316
604
  # @return [Array<Revox::Models::CallCreateResponse::Call::Assistant::FaqItem>, nil]
317
605
  optional :faq_items,
318
606
  -> { Revox::Internal::Type::ArrayOf[Revox::Models::CallCreateResponse::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::CallCreateResponse::Call::Assistant} for more details.
328
621
  #
329
622
  # @param id [String]
330
623
  #
331
- # @param background_sound [Symbol, Revox::Models::CallCreateResponse::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::CallCreateResponse::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::CallCreateResponse::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::CallCreateResponse::Call::Assistant::Calendly, nil]
334
633
  #
335
634
  # @param call_retry_config [Revox::Models::CallCreateResponse::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::CallCreateResponse::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::CallCreateResponse::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::CallCreateResponse::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::CallCreateResponse::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::CallCreateResponse::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::CallCreateResponse::Call::Assistant::LlmModel::UnionMember0, Revox::Models::CallCreateResponse::Call::Assistant::LlmModel::UnionMember1]
662
+ # @param llm_model [Revox::Models::CallCreateResponse::Call::Assistant::LlmModel::UnionMember0, Revox::Models::CallCreateResponse::Call::Assistant::LlmModel::UnionMember1, Revox::Models::CallCreateResponse::Call::Assistant::LlmModel::UnionMember2, Revox::Models::CallCreateResponse::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::CallCreateResponse::Call::Assistant::Position, nil]
675
+ #
357
676
  # @param prompt [String]
358
677
  #
678
+ # @param prompt_flow [Revox::Models::CallCreateResponse::Call::Assistant::PromptFlow, nil]
679
+ #
680
+ # @param slack [Revox::Models::CallCreateResponse::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::CallCreateResponse::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::CallCreateResponse::Call::Assistant::SttContext, nil] Assistant-level speech-to-text context: structured `general` key/value pairs plu
691
+ #
692
+ # @param stt_model [Symbol, Revox::Models::CallCreateResponse::Call::Assistant::SttModel] Transcriber (speech-to-text) model used for the assistant.
693
+ #
694
+ # @param thinking_sound [Symbol, Revox::Models::CallCreateResponse::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::CallCreateResponse::Call::Assistant::Type]
703
+ #
363
704
  # @param updated_at [Object]
364
705
  #
365
706
  # @param voice [Revox::Models::CallCreateResponse::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::CallCreateResponse::Call::Assistant::Zoho, nil]
717
+ #
718
+ # @param created_by [Revox::Models::CallCreateResponse::Call::Assistant::CreatedBy, nil] The user who created the assistant.
719
+ #
371
720
  # @param faq_items [Array<Revox::Models::CallCreateResponse::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::CallCreateResponse::Call::Assistant#background_sound
379
745
  module BackgroundSound
@@ -411,6 +777,23 @@ module Revox
411
777
 
412
778
  # @see Revox::Models::CallCreateResponse::Call::Assistant#call_retry_config
413
779
  class CallRetryConfig < Revox::Internal::Type::BaseModel
780
+ # @!attribute allowed_days
781
+ # Days of the week when calls are allowed, in the recipient's timezone. Default:
782
+ # Monday through Friday.
783
+ #
784
+ # @return [Array<Symbol, Revox::Models::CallCreateResponse::Call::Assistant::CallRetryConfig::AllowedDay>]
785
+ required :allowed_days,
786
+ -> { Revox::Internal::Type::ArrayOf[enum: Revox::Models::CallCreateResponse::Call::Assistant::CallRetryConfig::AllowedDay] }
787
+
788
+ # @!attribute call_twice_in_a_row
789
+ # If true and max_retry_attempts >= 2, attempt #2 fires immediately (skipping
790
+ # retry_delay_seconds) when attempt #1 didn't reach a human.
791
+ # Calling-window/allowed-days checks still apply. Only affects the 1→2 transition.
792
+ # Default: false.
793
+ #
794
+ # @return [Boolean]
795
+ required :call_twice_in_a_row, Revox::Internal::Type::Boolean
796
+
414
797
  # @!attribute calling_windows
415
798
  #
416
799
  # @return [Array<Revox::Models::CallCreateResponse::Call::Assistant::CallRetryConfig::CallingWindow>]
@@ -431,7 +814,7 @@ module Revox
431
814
  # @return [String, nil]
432
815
  optional :timezone, String, nil?: true
433
816
 
434
- # @!method initialize(calling_windows:, max_retry_attempts:, timezone: nil)
817
+ # @!method initialize(allowed_days:, call_twice_in_a_row:, calling_windows:, max_retry_attempts:, timezone: nil)
435
818
  # Some parameter documentations has been truncated, see
436
819
  # {Revox::Models::CallCreateResponse::Call::Assistant::CallRetryConfig} for more
437
820
  # details.
@@ -439,12 +822,31 @@ module Revox
439
822
  # Configuration for call retry behavior including time windows, delays, and max
440
823
  # iterations. If not provided, defaults will be used.
441
824
  #
825
+ # @param allowed_days [Array<Symbol, Revox::Models::CallCreateResponse::Call::Assistant::CallRetryConfig::AllowedDay>] Days of the week when calls are allowed, in the recipient's timezone. Default: M
826
+ #
827
+ # @param call_twice_in_a_row [Boolean] If true and max_retry_attempts >= 2, attempt #2 fires immediately (skipping retr
828
+ #
442
829
  # @param calling_windows [Array<Revox::Models::CallCreateResponse::Call::Assistant::CallRetryConfig::CallingWindow>]
443
830
  #
444
831
  # @param max_retry_attempts [Integer] Maximum number of call retry attempts. Default: 3.
445
832
  #
446
833
  # @param timezone [String, nil] Optional IANA timezone identifier to override the automatic timezone detection f
447
834
 
835
+ module AllowedDay
836
+ extend Revox::Internal::Type::Enum
837
+
838
+ MONDAY = :monday
839
+ TUESDAY = :tuesday
840
+ WEDNESDAY = :wednesday
841
+ THURSDAY = :thursday
842
+ FRIDAY = :friday
843
+ SATURDAY = :saturday
844
+ SUNDAY = :sunday
845
+
846
+ # @!method self.values
847
+ # @return [Array<Symbol>]
848
+ end
849
+
448
850
  class CallingWindow < Revox::Internal::Type::BaseModel
449
851
  # @!attribute calling_window_end_time
450
852
  # End time for the calling window in the recipient's timezone (or
@@ -481,69 +883,295 @@ module Revox
481
883
  end
482
884
  end
483
885
 
484
- # @see Revox::Models::CallCreateResponse::Call::Assistant#first_sentence_mode
485
- module FirstSentenceMode
486
- extend Revox::Internal::Type::Enum
886
+ class CustomTool < Revox::Internal::Type::BaseModel
887
+ # @!attribute body_template
888
+ # JSON body template for the request. Use quoted {{variable}} placeholders (e.g.
889
+ # "{{name}}") for dynamic values
890
+ #
891
+ # @return [String, nil]
892
+ required :body_template, String, nil?: true
487
893
 
488
- GENERATED = :generated
489
- STATIC = :static
490
- NONE = :none
894
+ # @!attribute description
895
+ # Human-readable description of what the tool does, used by the LLM to decide when
896
+ # to call it
897
+ #
898
+ # @return [String]
899
+ required :description, String
491
900
 
492
- # @!method self.values
493
- # @return [Array<Symbol>]
494
- end
901
+ # @!attribute headers
902
+ # HTTP headers to include in the request. Values support {{variable}} placeholders
903
+ #
904
+ # @return [Array<Revox::Models::CallCreateResponse::Call::Assistant::CustomTool::Header>]
905
+ required :headers,
906
+ -> { Revox::Internal::Type::ArrayOf[Revox::Models::CallCreateResponse::Call::Assistant::CustomTool::Header] }
495
907
 
496
- # @see Revox::Models::CallCreateResponse::Call::Assistant#llm_model
497
- module LlmModel
498
- extend Revox::Internal::Type::Union
908
+ # @!attribute input_schema
909
+ # Schema defining the parameters the LLM should extract from the conversation to
910
+ # pass to this tool
911
+ #
912
+ # @return [Array<Revox::Models::CallCreateResponse::Call::Assistant::CustomTool::InputSchema>]
913
+ required :input_schema,
914
+ -> { Revox::Internal::Type::ArrayOf[Revox::Models::CallCreateResponse::Call::Assistant::CustomTool::InputSchema] }
499
915
 
500
- variant -> { Revox::Models::CallCreateResponse::Call::Assistant::LlmModel::UnionMember0 }
916
+ # @!attribute method_
917
+ # HTTP method to use when calling the API endpoint
918
+ #
919
+ # @return [Symbol, Revox::Models::CallCreateResponse::Call::Assistant::CustomTool::Method]
920
+ required :method_,
921
+ enum: -> { Revox::Models::CallCreateResponse::Call::Assistant::CustomTool::Method },
922
+ api_name: :method
501
923
 
502
- variant -> { Revox::Models::CallCreateResponse::Call::Assistant::LlmModel::UnionMember1 }
924
+ # @!attribute name
925
+ # Unique tool name in lowercase_snake_case (e.g. check_inventory)
926
+ #
927
+ # @return [String]
928
+ required :name, String
503
929
 
504
- class UnionMember0 < Revox::Internal::Type::BaseModel
930
+ # @!attribute query_params
931
+ # Query string parameters appended to the URL. Values support {{variable}}
932
+ # placeholders
933
+ #
934
+ # @return [Array<Revox::Models::CallCreateResponse::Call::Assistant::CustomTool::QueryParam>]
935
+ required :query_params,
936
+ -> { Revox::Internal::Type::ArrayOf[Revox::Models::CallCreateResponse::Call::Assistant::CustomTool::QueryParam] }
937
+
938
+ # @!attribute url
939
+ # Full URL of the API endpoint. Supports {{variable}} placeholders for dynamic
940
+ # values
941
+ #
942
+ # @return [String]
943
+ required :url, String
944
+
945
+ # @!method initialize(body_template:, description:, headers:, input_schema:, method_:, name:, query_params:, url:)
946
+ # Some parameter documentations has been truncated, see
947
+ # {Revox::Models::CallCreateResponse::Call::Assistant::CustomTool} for more
948
+ # details.
949
+ #
950
+ # @param body_template [String, nil] JSON body template for the request. Use quoted {{variable}} placeholders (e.g. "
951
+ #
952
+ # @param description [String] Human-readable description of what the tool does, used by the LLM to decide when
953
+ #
954
+ # @param headers [Array<Revox::Models::CallCreateResponse::Call::Assistant::CustomTool::Header>] HTTP headers to include in the request. Values support {{variable}} placeholders
955
+ #
956
+ # @param input_schema [Array<Revox::Models::CallCreateResponse::Call::Assistant::CustomTool::InputSchema>] Schema defining the parameters the LLM should extract from the conversation to p
957
+ #
958
+ # @param method_ [Symbol, Revox::Models::CallCreateResponse::Call::Assistant::CustomTool::Method] HTTP method to use when calling the API endpoint
959
+ #
960
+ # @param name [String] Unique tool name in lowercase_snake_case (e.g. check_inventory)
961
+ #
962
+ # @param query_params [Array<Revox::Models::CallCreateResponse::Call::Assistant::CustomTool::QueryParam>] Query string parameters appended to the URL. Values support {{variable}} placeho
963
+ #
964
+ # @param url [String] Full URL of the API endpoint. Supports {{variable}} placeholders for dynamic val
965
+
966
+ class Header < Revox::Internal::Type::BaseModel
967
+ # @!attribute key
968
+ #
969
+ # @return [String]
970
+ required :key, String
971
+
972
+ # @!attribute value
973
+ #
974
+ # @return [String]
975
+ required :value, String
976
+
977
+ # @!method initialize(key:, value:)
978
+ # @param key [String]
979
+ # @param value [String]
980
+ end
981
+
982
+ class InputSchema < Revox::Internal::Type::BaseModel
505
983
  # @!attribute name
506
984
  #
507
- # @return [Symbol, Revox::Models::CallCreateResponse::Call::Assistant::LlmModel::UnionMember0::Name]
508
- required :name,
509
- enum: -> { Revox::Models::CallCreateResponse::Call::Assistant::LlmModel::UnionMember0::Name }
985
+ # @return [String]
986
+ required :name, String
987
+
988
+ # @!attribute required
989
+ #
990
+ # @return [Boolean]
991
+ required :required, Revox::Internal::Type::Boolean
510
992
 
511
993
  # @!attribute type
512
994
  #
513
- # @return [Symbol, :"dedicated-instance"]
514
- required :type, const: :"dedicated-instance"
995
+ # @return [Symbol, Revox::Models::CallCreateResponse::Call::Assistant::CustomTool::InputSchema::Type]
996
+ required :type,
997
+ enum: -> { Revox::Models::CallCreateResponse::Call::Assistant::CustomTool::InputSchema::Type }
515
998
 
516
- # @!method initialize(name:, type: :"dedicated-instance")
517
- # @param name [Symbol, Revox::Models::CallCreateResponse::Call::Assistant::LlmModel::UnionMember0::Name]
518
- # @param type [Symbol, :"dedicated-instance"]
999
+ # @!attribute description
1000
+ #
1001
+ # @return [String, nil]
1002
+ optional :description, String
519
1003
 
520
- # @see Revox::Models::CallCreateResponse::Call::Assistant::LlmModel::UnionMember0#name
521
- module Name
1004
+ # @!attribute enum_options
1005
+ #
1006
+ # @return [Array<String>, nil]
1007
+ optional :enum_options, Revox::Internal::Type::ArrayOf[String]
1008
+
1009
+ # @!method initialize(name:, required:, type:, description: nil, enum_options: nil)
1010
+ # @param name [String]
1011
+ # @param required [Boolean]
1012
+ # @param type [Symbol, Revox::Models::CallCreateResponse::Call::Assistant::CustomTool::InputSchema::Type]
1013
+ # @param description [String]
1014
+ # @param enum_options [Array<String>]
1015
+
1016
+ # @see Revox::Models::CallCreateResponse::Call::Assistant::CustomTool::InputSchema#type
1017
+ module Type
522
1018
  extend Revox::Internal::Type::Enum
523
1019
 
524
- GPT_4_1 = :"gpt-4.1"
525
- MINISTRAL_3_8B_INSTRUCT = :"ministral-3-8b-instruct"
1020
+ STRING = :string
1021
+ NUMBER = :number
1022
+ BOOLEAN = :boolean
1023
+ ENUM = :enum
1024
+ DATE = :date
1025
+ DATETIME = :datetime
526
1026
 
527
1027
  # @!method self.values
528
1028
  # @return [Array<Symbol>]
529
1029
  end
530
1030
  end
531
1031
 
532
- class UnionMember1 < Revox::Internal::Type::BaseModel
533
- # @!attribute openrouter_model_id
534
- # The model ID to use from OpenRouter. eg: openai/gpt-4.1
1032
+ # HTTP method to use when calling the API endpoint
1033
+ #
1034
+ # @see Revox::Models::CallCreateResponse::Call::Assistant::CustomTool#method_
1035
+ module Method
1036
+ extend Revox::Internal::Type::Enum
1037
+
1038
+ GET = :GET
1039
+ POST = :POST
1040
+ PUT = :PUT
1041
+ PATCH = :PATCH
1042
+ DELETE = :DELETE
1043
+
1044
+ # @!method self.values
1045
+ # @return [Array<Symbol>]
1046
+ end
1047
+
1048
+ class QueryParam < Revox::Internal::Type::BaseModel
1049
+ # @!attribute key
535
1050
  #
536
1051
  # @return [String]
537
- required :openrouter_model_id, String
1052
+ required :key, String
538
1053
 
539
- # @!attribute openrouter_provider
540
- # The provider to use from OpenRouter. eg: nebius, openai, azure, etc.
1054
+ # @!attribute value
541
1055
  #
542
1056
  # @return [String]
543
- required :openrouter_provider, String
1057
+ required :value, String
544
1058
 
545
- # @!attribute type
546
- # Use a model from OpenRouter.
1059
+ # @!method initialize(key:, value:)
1060
+ # @param key [String]
1061
+ # @param value [String]
1062
+ end
1063
+ end
1064
+
1065
+ # The language used for the notification email content. One of "en" or "fr".
1066
+ #
1067
+ # @see Revox::Models::CallCreateResponse::Call::Assistant#email_notification_language
1068
+ module EmailNotificationLanguage
1069
+ extend Revox::Internal::Type::Enum
1070
+
1071
+ EN = :en
1072
+ FR = :fr
1073
+
1074
+ # @!method self.values
1075
+ # @return [Array<Symbol>]
1076
+ end
1077
+
1078
+ module EmailNotificationOutcome
1079
+ extend Revox::Internal::Type::Enum
1080
+
1081
+ NOT_INTERESTED = :not_interested
1082
+ INTERESTED = :interested
1083
+ COMPLETED = :completed
1084
+ REQUESTED_CALLBACK_LATER = :requested_callback_later
1085
+ REQUESTED_CALLBACK_NEW_NUMBER = :requested_callback_new_number
1086
+ DO_NOT_CONTACT = :do_not_contact
1087
+ AI_AVERSE = :ai_averse
1088
+ NONE = :none
1089
+
1090
+ # @!method self.values
1091
+ # @return [Array<Symbol>]
1092
+ end
1093
+
1094
+ # @see Revox::Models::CallCreateResponse::Call::Assistant#first_sentence_mode
1095
+ module FirstSentenceMode
1096
+ extend Revox::Internal::Type::Enum
1097
+
1098
+ GENERATED = :generated
1099
+ STATIC = :static
1100
+ NONE = :none
1101
+
1102
+ # @!method self.values
1103
+ # @return [Array<Symbol>]
1104
+ end
1105
+
1106
+ # Warm or cold transfer when transfer_phone_number is set; null when transfer is
1107
+ # not configured.
1108
+ #
1109
+ # @see Revox::Models::CallCreateResponse::Call::Assistant#human_transfer_mode
1110
+ module HumanTransferMode
1111
+ extend Revox::Internal::Type::Enum
1112
+
1113
+ WARM = :warm
1114
+ COLD = :cold
1115
+
1116
+ # @!method self.values
1117
+ # @return [Array<Symbol>]
1118
+ end
1119
+
1120
+ # @see Revox::Models::CallCreateResponse::Call::Assistant#llm_model
1121
+ module LlmModel
1122
+ extend Revox::Internal::Type::Union
1123
+
1124
+ variant -> { Revox::Models::CallCreateResponse::Call::Assistant::LlmModel::UnionMember0 }
1125
+
1126
+ variant -> { Revox::Models::CallCreateResponse::Call::Assistant::LlmModel::UnionMember1 }
1127
+
1128
+ variant -> { Revox::Models::CallCreateResponse::Call::Assistant::LlmModel::UnionMember2 }
1129
+
1130
+ variant -> { Revox::Models::CallCreateResponse::Call::Assistant::LlmModel::UnionMember3 }
1131
+
1132
+ class UnionMember0 < Revox::Internal::Type::BaseModel
1133
+ # @!attribute name
1134
+ #
1135
+ # @return [Symbol, Revox::Models::CallCreateResponse::Call::Assistant::LlmModel::UnionMember0::Name]
1136
+ required :name,
1137
+ enum: -> { Revox::Models::CallCreateResponse::Call::Assistant::LlmModel::UnionMember0::Name }
1138
+
1139
+ # @!attribute type
1140
+ #
1141
+ # @return [Symbol, :"dedicated-instance"]
1142
+ required :type, const: :"dedicated-instance"
1143
+
1144
+ # @!method initialize(name:, type: :"dedicated-instance")
1145
+ # @param name [Symbol, Revox::Models::CallCreateResponse::Call::Assistant::LlmModel::UnionMember0::Name]
1146
+ # @param type [Symbol, :"dedicated-instance"]
1147
+
1148
+ # @see Revox::Models::CallCreateResponse::Call::Assistant::LlmModel::UnionMember0#name
1149
+ module Name
1150
+ extend Revox::Internal::Type::Enum
1151
+
1152
+ GPT_4_1 = :"gpt-4.1"
1153
+ MINISTRAL_3_8B_INSTRUCT = :"ministral-3-8b-instruct"
1154
+
1155
+ # @!method self.values
1156
+ # @return [Array<Symbol>]
1157
+ end
1158
+ end
1159
+
1160
+ class UnionMember1 < Revox::Internal::Type::BaseModel
1161
+ # @!attribute openrouter_model_id
1162
+ # The model ID to use from OpenRouter. eg: openai/gpt-4.1
1163
+ #
1164
+ # @return [String]
1165
+ required :openrouter_model_id, String
1166
+
1167
+ # @!attribute openrouter_provider
1168
+ # The provider to use from OpenRouter. eg: nebius, openai, azure, etc.
1169
+ #
1170
+ # @return [String]
1171
+ required :openrouter_provider, String
1172
+
1173
+ # @!attribute type
1174
+ # Use a model from OpenRouter.
547
1175
  #
548
1176
  # @return [Symbol, :openrouter]
549
1177
  required :type, const: :openrouter
@@ -556,8 +1184,282 @@ module Revox
556
1184
  # @param type [Symbol, :openrouter] Use a model from OpenRouter.
557
1185
  end
558
1186
 
1187
+ class UnionMember2 < Revox::Internal::Type::BaseModel
1188
+ # @!attribute api_key
1189
+ # API key sent as Bearer token to the custom endpoint.
1190
+ #
1191
+ # @return [String]
1192
+ required :api_key, String
1193
+
1194
+ # @!attribute api_url
1195
+ # Base URL for the OpenAI-compatible API, e.g. https://api.together.xyz/v1
1196
+ #
1197
+ # @return [String]
1198
+ required :api_url, String
1199
+
1200
+ # @!attribute model_name
1201
+ # Model name as expected by the provider, e.g. meta-llama/llama-3-70b
1202
+ #
1203
+ # @return [String]
1204
+ required :model_name, String
1205
+
1206
+ # @!attribute type
1207
+ # OpenAI-compatible chat completions API (bring your own endpoint and key).
1208
+ #
1209
+ # @return [Symbol, :custom]
1210
+ required :type, const: :custom
1211
+
1212
+ # @!method initialize(api_key:, api_url:, model_name:, type: :custom)
1213
+ # @param api_key [String] API key sent as Bearer token to the custom endpoint.
1214
+ #
1215
+ # @param api_url [String] Base URL for the OpenAI-compatible API, e.g. https://api.together.xyz/v1
1216
+ #
1217
+ # @param model_name [String] Model name as expected by the provider, e.g. meta-llama/llama-3-70b
1218
+ #
1219
+ # @param type [Symbol, :custom] OpenAI-compatible chat completions API (bring your own endpoint and key).
1220
+ end
1221
+
1222
+ class UnionMember3 < Revox::Internal::Type::BaseModel
1223
+ # @!attribute provider
1224
+ # The provider to use from Realtime. eg: openai, google.
1225
+ #
1226
+ # @return [Symbol, Revox::Models::CallCreateResponse::Call::Assistant::LlmModel::UnionMember3::Provider]
1227
+ required :provider,
1228
+ enum: -> { Revox::Models::CallCreateResponse::Call::Assistant::LlmModel::UnionMember3::Provider }
1229
+
1230
+ # @!attribute realtime_model_id
1231
+ # The model ID to use from Realtime. eg: gpt-4.1
1232
+ #
1233
+ # @return [String]
1234
+ required :realtime_model_id, String
1235
+
1236
+ # @!attribute type
1237
+ # Use a model from Realtime.
1238
+ #
1239
+ # @return [Symbol, :realtime]
1240
+ required :type, const: :realtime
1241
+
1242
+ # @!attribute realtime_voice_id
1243
+ # Output voice for the realtime provider (e.g. OpenAI: marin; Gemini: Puck).
1244
+ #
1245
+ # @return [String, nil]
1246
+ optional :realtime_voice_id, String
1247
+
1248
+ # @!method initialize(provider:, realtime_model_id:, realtime_voice_id: nil, type: :realtime)
1249
+ # @param provider [Symbol, Revox::Models::CallCreateResponse::Call::Assistant::LlmModel::UnionMember3::Provider] The provider to use from Realtime. eg: openai, google.
1250
+ #
1251
+ # @param realtime_model_id [String] The model ID to use from Realtime. eg: gpt-4.1
1252
+ #
1253
+ # @param realtime_voice_id [String] Output voice for the realtime provider (e.g. OpenAI: marin; Gemini: Puck).
1254
+ #
1255
+ # @param type [Symbol, :realtime] Use a model from Realtime.
1256
+
1257
+ # The provider to use from Realtime. eg: openai, google.
1258
+ #
1259
+ # @see Revox::Models::CallCreateResponse::Call::Assistant::LlmModel::UnionMember3#provider
1260
+ module Provider
1261
+ extend Revox::Internal::Type::Enum
1262
+
1263
+ OPENAI = :openai
1264
+ GOOGLE = :google
1265
+
1266
+ # @!method self.values
1267
+ # @return [Array<Symbol>]
1268
+ end
1269
+ end
1270
+
559
1271
  # @!method self.variants
560
- # @return [Array(Revox::Models::CallCreateResponse::Call::Assistant::LlmModel::UnionMember0, Revox::Models::CallCreateResponse::Call::Assistant::LlmModel::UnionMember1)]
1272
+ # @return [Array(Revox::Models::CallCreateResponse::Call::Assistant::LlmModel::UnionMember0, Revox::Models::CallCreateResponse::Call::Assistant::LlmModel::UnionMember1, Revox::Models::CallCreateResponse::Call::Assistant::LlmModel::UnionMember2, Revox::Models::CallCreateResponse::Call::Assistant::LlmModel::UnionMember3)]
1273
+ end
1274
+
1275
+ # @see Revox::Models::CallCreateResponse::Call::Assistant#position
1276
+ class Position < Revox::Internal::Type::BaseModel
1277
+ # @!attribute x
1278
+ #
1279
+ # @return [Float]
1280
+ required :x, Float
1281
+
1282
+ # @!attribute y_
1283
+ #
1284
+ # @return [Float]
1285
+ required :y_, Float, api_name: :y
1286
+
1287
+ # @!method initialize(x:, y_:)
1288
+ # @param x [Float]
1289
+ # @param y_ [Float]
1290
+ end
1291
+
1292
+ # @see Revox::Models::CallCreateResponse::Call::Assistant#prompt_flow
1293
+ class PromptFlow < Revox::Internal::Type::BaseModel
1294
+ # @!attribute edges
1295
+ #
1296
+ # @return [Array<Revox::Models::CallCreateResponse::Call::Assistant::PromptFlow::Edge>]
1297
+ required :edges,
1298
+ -> { Revox::Internal::Type::ArrayOf[Revox::Models::CallCreateResponse::Call::Assistant::PromptFlow::Edge] }
1299
+
1300
+ # @!attribute nodes
1301
+ #
1302
+ # @return [Array<Revox::Models::CallCreateResponse::Call::Assistant::PromptFlow::Node>]
1303
+ required :nodes,
1304
+ -> { Revox::Internal::Type::ArrayOf[Revox::Models::CallCreateResponse::Call::Assistant::PromptFlow::Node] }
1305
+
1306
+ # @!method initialize(edges:, nodes:)
1307
+ # @param edges [Array<Revox::Models::CallCreateResponse::Call::Assistant::PromptFlow::Edge>]
1308
+ # @param nodes [Array<Revox::Models::CallCreateResponse::Call::Assistant::PromptFlow::Node>]
1309
+
1310
+ class Edge < Revox::Internal::Type::BaseModel
1311
+ # @!attribute id
1312
+ #
1313
+ # @return [String]
1314
+ required :id, String
1315
+
1316
+ # @!attribute source
1317
+ #
1318
+ # @return [String]
1319
+ required :source, String
1320
+
1321
+ # @!attribute target
1322
+ #
1323
+ # @return [String]
1324
+ required :target, String
1325
+
1326
+ # @!method initialize(id:, source:, target:)
1327
+ # @param id [String]
1328
+ # @param source [String]
1329
+ # @param target [String]
1330
+ end
1331
+
1332
+ class Node < Revox::Internal::Type::BaseModel
1333
+ # @!attribute id
1334
+ #
1335
+ # @return [String]
1336
+ required :id, String
1337
+
1338
+ # @!attribute data
1339
+ #
1340
+ # @return [Revox::Models::CallCreateResponse::Call::Assistant::PromptFlow::Node::Data]
1341
+ required :data, -> { Revox::Models::CallCreateResponse::Call::Assistant::PromptFlow::Node::Data }
1342
+
1343
+ # @!attribute position
1344
+ #
1345
+ # @return [Revox::Models::CallCreateResponse::Call::Assistant::PromptFlow::Node::Position]
1346
+ required :position, -> { Revox::Models::CallCreateResponse::Call::Assistant::PromptFlow::Node::Position }
1347
+
1348
+ # @!attribute type
1349
+ #
1350
+ # @return [Symbol, :promptBlock]
1351
+ required :type, const: :promptBlock
1352
+
1353
+ # @!method initialize(id:, data:, position:, type: :promptBlock)
1354
+ # @param id [String]
1355
+ # @param data [Revox::Models::CallCreateResponse::Call::Assistant::PromptFlow::Node::Data]
1356
+ # @param position [Revox::Models::CallCreateResponse::Call::Assistant::PromptFlow::Node::Position]
1357
+ # @param type [Symbol, :promptBlock]
1358
+
1359
+ # @see Revox::Models::CallCreateResponse::Call::Assistant::PromptFlow::Node#data
1360
+ class Data < Revox::Internal::Type::BaseModel
1361
+ # @!attribute body
1362
+ #
1363
+ # @return [String]
1364
+ required :body, String
1365
+
1366
+ # @!attribute title
1367
+ #
1368
+ # @return [String]
1369
+ required :title, String
1370
+
1371
+ # @!method initialize(body:, title:)
1372
+ # @param body [String]
1373
+ # @param title [String]
1374
+ end
1375
+
1376
+ # @see Revox::Models::CallCreateResponse::Call::Assistant::PromptFlow::Node#position
1377
+ class Position < Revox::Internal::Type::BaseModel
1378
+ # @!attribute x
1379
+ #
1380
+ # @return [Float]
1381
+ required :x, Float
1382
+
1383
+ # @!attribute y_
1384
+ #
1385
+ # @return [Float]
1386
+ required :y_, Float, api_name: :y
1387
+
1388
+ # @!method initialize(x:, y_:)
1389
+ # @param x [Float]
1390
+ # @param y_ [Float]
1391
+ end
1392
+ end
1393
+ end
1394
+
1395
+ # @see Revox::Models::CallCreateResponse::Call::Assistant#slack
1396
+ class Slack < Revox::Internal::Type::BaseModel
1397
+ # @!attribute channel_id
1398
+ # The Slack channel ID where the notification will be posted.
1399
+ #
1400
+ # @return [String]
1401
+ required :channel_id, String
1402
+
1403
+ # @!attribute connection_id
1404
+ # The Nango connection ID linking the org's Slack workspace to Revox.
1405
+ #
1406
+ # @return [String]
1407
+ required :connection_id, String
1408
+
1409
+ # @!attribute outcomes
1410
+ # Which call outcomes trigger a Slack notification (e.g. ['interested', 'none']).
1411
+ # Use 'none' to notify when outcome is null.
1412
+ #
1413
+ # @return [Array<Symbol, Revox::Models::CallCreateResponse::Call::Assistant::Slack::Outcome>]
1414
+ required :outcomes,
1415
+ -> { Revox::Internal::Type::ArrayOf[enum: Revox::Models::CallCreateResponse::Call::Assistant::Slack::Outcome] }
1416
+
1417
+ # @!attribute channel_name
1418
+ # Human-readable Slack channel name, cached for display in the UI.
1419
+ #
1420
+ # @return [String, nil]
1421
+ optional :channel_name, String, nil?: true
1422
+
1423
+ # @!attribute template
1424
+ # Optional message template. Supports {{summary}}, {{outcome}}, {{phone}},
1425
+ # {{call_url}}, {{assistant_name}}, {{campaign_name}}, {{first_name}},
1426
+ # {{last_name}}, {{email}}, {{company}}, {{contact_name}}, {{contact_line}}, plus
1427
+ # prompt_variables and structured_output keys. When null/empty a default template
1428
+ # is used.
1429
+ #
1430
+ # @return [String, nil]
1431
+ optional :template, String, nil?: true
1432
+
1433
+ # @!method initialize(channel_id:, connection_id:, outcomes:, channel_name: nil, template: nil)
1434
+ # Some parameter documentations has been truncated, see
1435
+ # {Revox::Models::CallCreateResponse::Call::Assistant::Slack} for more details.
1436
+ #
1437
+ # @param channel_id [String] The Slack channel ID where the notification will be posted.
1438
+ #
1439
+ # @param connection_id [String] The Nango connection ID linking the org's Slack workspace to Revox.
1440
+ #
1441
+ # @param outcomes [Array<Symbol, Revox::Models::CallCreateResponse::Call::Assistant::Slack::Outcome>] Which call outcomes trigger a Slack notification (e.g. ['interested', 'none']).
1442
+ #
1443
+ # @param channel_name [String, nil] Human-readable Slack channel name, cached for display in the UI.
1444
+ #
1445
+ # @param template [String, nil] Optional message template. Supports {{summary}}, {{outcome}}, {{phone}},
1446
+ # {{call\_
1447
+
1448
+ module Outcome
1449
+ extend Revox::Internal::Type::Enum
1450
+
1451
+ NOT_INTERESTED = :not_interested
1452
+ INTERESTED = :interested
1453
+ COMPLETED = :completed
1454
+ REQUESTED_CALLBACK_LATER = :requested_callback_later
1455
+ REQUESTED_CALLBACK_NEW_NUMBER = :requested_callback_new_number
1456
+ DO_NOT_CONTACT = :do_not_contact
1457
+ AI_AVERSE = :ai_averse
1458
+ NONE = :none
1459
+
1460
+ # @!method self.values
1461
+ # @return [Array<Symbol>]
1462
+ end
561
1463
  end
562
1464
 
563
1465
  class StructuredOutputConfig < Revox::Internal::Type::BaseModel
@@ -610,6 +1512,88 @@ module Revox
610
1512
  end
611
1513
  end
612
1514
 
1515
+ # @see Revox::Models::CallCreateResponse::Call::Assistant#stt_context
1516
+ class SttContext < Revox::Internal::Type::BaseModel
1517
+ # @!attribute general
1518
+ #
1519
+ # @return [Array<Revox::Models::CallCreateResponse::Call::Assistant::SttContext::General>]
1520
+ required :general,
1521
+ -> { Revox::Internal::Type::ArrayOf[Revox::Models::CallCreateResponse::Call::Assistant::SttContext::General] }
1522
+
1523
+ # @!attribute terms
1524
+ #
1525
+ # @return [Array<String>]
1526
+ required :terms, Revox::Internal::Type::ArrayOf[String]
1527
+
1528
+ # @!method initialize(general:, terms:)
1529
+ # Assistant-level speech-to-text context: structured `general` key/value pairs
1530
+ # plus a list of domain `terms`. Prompt-derived context is merged in without
1531
+ # replacing existing entries.
1532
+ #
1533
+ # @param general [Array<Revox::Models::CallCreateResponse::Call::Assistant::SttContext::General>]
1534
+ # @param terms [Array<String>]
1535
+
1536
+ class General < Revox::Internal::Type::BaseModel
1537
+ # @!attribute key
1538
+ #
1539
+ # @return [String]
1540
+ required :key, String
1541
+
1542
+ # @!attribute value
1543
+ #
1544
+ # @return [String]
1545
+ required :value, String
1546
+
1547
+ # @!method initialize(key:, value:)
1548
+ # @param key [String]
1549
+ # @param value [String]
1550
+ end
1551
+ end
1552
+
1553
+ # Transcriber (speech-to-text) model used for the assistant.
1554
+ #
1555
+ # @see Revox::Models::CallCreateResponse::Call::Assistant#stt_model
1556
+ module SttModel
1557
+ extend Revox::Internal::Type::Enum
1558
+
1559
+ STT_RT_V4 = :"stt-rt-v4"
1560
+ STT_RT_V5 = :"stt-rt-v5"
1561
+
1562
+ # @!method self.values
1563
+ # @return [Array<Symbol>]
1564
+ end
1565
+
1566
+ # Audio clip to play while the agent is processing a response. One of the built-in
1567
+ # LiveKit audio clips; null disables it.
1568
+ #
1569
+ # @see Revox::Models::CallCreateResponse::Call::Assistant#thinking_sound
1570
+ module ThinkingSound
1571
+ extend Revox::Internal::Type::Enum
1572
+
1573
+ CITY_AMBIENCE_OGG = :"city-ambience.ogg"
1574
+ FOREST_AMBIENCE_OGG = :"forest-ambience.ogg"
1575
+ OFFICE_AMBIENCE_OGG = :"office-ambience.ogg"
1576
+ CROWDED_ROOM_OGG = :"crowded-room.ogg"
1577
+ KEYBOARD_TYPING_OGG = :"keyboard-typing.ogg"
1578
+ KEYBOARD_TYPING2_OGG = :"keyboard-typing2.ogg"
1579
+ HOLD_MUSIC_OGG = :"hold_music.ogg"
1580
+
1581
+ # @!method self.values
1582
+ # @return [Array<Symbol>]
1583
+ end
1584
+
1585
+ # @see Revox::Models::CallCreateResponse::Call::Assistant#type
1586
+ module Type
1587
+ extend Revox::Internal::Type::Enum
1588
+
1589
+ STANDALONE = :standalone
1590
+ MULTI_STEP = :"multi-step"
1591
+ SUB_ASSISTANT = :"sub-assistant"
1592
+
1593
+ # @!method self.values
1594
+ # @return [Array<Symbol>]
1595
+ end
1596
+
613
1597
  # @see Revox::Models::CallCreateResponse::Call::Assistant#voice
614
1598
  class Voice < Revox::Internal::Type::BaseModel
615
1599
  # @!attribute id
@@ -624,6 +1608,13 @@ module Revox
624
1608
  # @return [Symbol, Revox::Models::CallCreateResponse::Call::Assistant::Voice::Provider]
625
1609
  required :provider, enum: -> { Revox::Models::CallCreateResponse::Call::Assistant::Voice::Provider }
626
1610
 
1611
+ # @!attribute model
1612
+ # Cartesia TTS model (Cartesia only). Defaults to sonic-3 when omitted. Ignored
1613
+ # for other providers.
1614
+ #
1615
+ # @return [Symbol, Revox::Models::CallCreateResponse::Call::Assistant::Voice::Model, nil]
1616
+ optional :model, enum: -> { Revox::Models::CallCreateResponse::Call::Assistant::Voice::Model }
1617
+
627
1618
  # @!attribute speed
628
1619
  # The speed of the voice. Range depends on provider: Cartesia 0.6–1.5, ElevenLabs
629
1620
  # 0.7–1.2. Default is 1.0.
@@ -631,7 +1622,14 @@ module Revox
631
1622
  # @return [Float, nil]
632
1623
  optional :speed, Float
633
1624
 
634
- # @!method initialize(id:, provider:, speed: nil)
1625
+ # @!attribute volume
1626
+ # Volume of the voice (Cartesia only). 0.5–2.0, default 1.0. Ignored for other
1627
+ # providers.
1628
+ #
1629
+ # @return [Float, nil]
1630
+ optional :volume, Float
1631
+
1632
+ # @!method initialize(id:, provider:, model: nil, speed: nil, volume: nil)
635
1633
  # Some parameter documentations has been truncated, see
636
1634
  # {Revox::Models::CallCreateResponse::Call::Assistant::Voice} for more details.
637
1635
  #
@@ -639,7 +1637,11 @@ module Revox
639
1637
  #
640
1638
  # @param provider [Symbol, Revox::Models::CallCreateResponse::Call::Assistant::Voice::Provider] The provider of the voice.
641
1639
  #
1640
+ # @param model [Symbol, Revox::Models::CallCreateResponse::Call::Assistant::Voice::Model] Cartesia TTS model (Cartesia only). Defaults to sonic-3 when omitted. Ignored fo
1641
+ #
642
1642
  # @param speed [Float] The speed of the voice. Range depends on provider: Cartesia 0.6–1.5, ElevenLabs
1643
+ #
1644
+ # @param volume [Float] Volume of the voice (Cartesia only). 0.5–2.0, default 1.0. Ignored for other pro
643
1645
 
644
1646
  # The provider of the voice.
645
1647
  #
@@ -653,6 +1655,159 @@ module Revox
653
1655
  # @!method self.values
654
1656
  # @return [Array<Symbol>]
655
1657
  end
1658
+
1659
+ # Cartesia TTS model (Cartesia only). Defaults to sonic-3 when omitted. Ignored
1660
+ # for other providers.
1661
+ #
1662
+ # @see Revox::Models::CallCreateResponse::Call::Assistant::Voice#model
1663
+ module Model
1664
+ extend Revox::Internal::Type::Enum
1665
+
1666
+ SONIC_3 = :"sonic-3"
1667
+ SONIC_3_5 = :"sonic-3.5"
1668
+
1669
+ # @!method self.values
1670
+ # @return [Array<Symbol>]
1671
+ end
1672
+ end
1673
+
1674
+ # @see Revox::Models::CallCreateResponse::Call::Assistant#zoho
1675
+ class Zoho < Revox::Internal::Type::BaseModel
1676
+ # @!attribute connection_id
1677
+ # The Nango connection ID linking the org's Zoho CRM account to Revox.
1678
+ #
1679
+ # @return [String]
1680
+ required :connection_id, String
1681
+
1682
+ # @!attribute field_mapping
1683
+ # Maps extracted call fields (structured_output / prompt variables) onto Zoho
1684
+ # field API names on the upserted record.
1685
+ #
1686
+ # @return [Array<Revox::Models::CallCreateResponse::Call::Assistant::Zoho::FieldMapping>]
1687
+ required :field_mapping,
1688
+ -> { Revox::Internal::Type::ArrayOf[Revox::Models::CallCreateResponse::Call::Assistant::Zoho::FieldMapping] }
1689
+
1690
+ # @!attribute log_call_activity
1691
+ # When true, also log the call as a record in Zoho's Calls module (related to the
1692
+ # upserted prospect via Who_Id).
1693
+ #
1694
+ # @return [Boolean]
1695
+ required :log_call_activity, Revox::Internal::Type::Boolean
1696
+
1697
+ # @!attribute module_
1698
+ # Zoho module the prospect record is upserted into (e.g. 'Leads' or 'Contacts').
1699
+ #
1700
+ # @return [String]
1701
+ required :module_, String, api_name: :module
1702
+
1703
+ # @!attribute outcomes
1704
+ # Which call outcomes trigger the Zoho push (e.g. ['interested', 'none']). Use
1705
+ # 'none' to push when outcome is null.
1706
+ #
1707
+ # @return [Array<Symbol, Revox::Models::CallCreateResponse::Call::Assistant::Zoho::Outcome>]
1708
+ required :outcomes,
1709
+ -> { Revox::Internal::Type::ArrayOf[enum: Revox::Models::CallCreateResponse::Call::Assistant::Zoho::Outcome] }
1710
+
1711
+ # @!attribute template
1712
+ # Optional Note body template. Supports {{summary}}, {{outcome}}, {{phone}},
1713
+ # {{call_url}}, {{assistant_name}}, {{campaign_name}}, {{transcript}}, plus
1714
+ # prompt_variables and structured_output keys. When null/empty a default note
1715
+ # (outcome + summary + auto-listed extracted fields) is used.
1716
+ #
1717
+ # @return [String, nil]
1718
+ optional :template, String, nil?: true
1719
+
1720
+ # @!method initialize(connection_id:, field_mapping:, log_call_activity:, module_:, outcomes:, template: nil)
1721
+ # Some parameter documentations has been truncated, see
1722
+ # {Revox::Models::CallCreateResponse::Call::Assistant::Zoho} for more details.
1723
+ #
1724
+ # @param connection_id [String] The Nango connection ID linking the org's Zoho CRM account to Revox.
1725
+ #
1726
+ # @param field_mapping [Array<Revox::Models::CallCreateResponse::Call::Assistant::Zoho::FieldMapping>] Maps extracted call fields (structured_output / prompt variables) onto Zoho fiel
1727
+ #
1728
+ # @param log_call_activity [Boolean] When true, also log the call as a record in Zoho's Calls module (related to the
1729
+ #
1730
+ # @param module_ [String] Zoho module the prospect record is upserted into (e.g. 'Leads' or 'Contacts').
1731
+ #
1732
+ # @param outcomes [Array<Symbol, Revox::Models::CallCreateResponse::Call::Assistant::Zoho::Outcome>] Which call outcomes trigger the Zoho push (e.g. ['interested', 'none']). Use 'no
1733
+ #
1734
+ # @param template [String, nil] Optional Note body template. Supports {{summary}}, {{outcome}}, {{phone}}, {{cal
1735
+
1736
+ class FieldMapping < Revox::Internal::Type::BaseModel
1737
+ # @!attribute source
1738
+ # Source key to read from the call: a structured_output field name, falling back
1739
+ # to a prompt variable of the same name.
1740
+ #
1741
+ # @return [String]
1742
+ required :source, String
1743
+
1744
+ # @!attribute zoho_field
1745
+ # Destination Zoho field API name on the upserted record (e.g. 'Email', 'Company',
1746
+ # or a custom 'Budget\_\_c').
1747
+ #
1748
+ # @return [String]
1749
+ required :zoho_field, String
1750
+
1751
+ # @!method initialize(source:, zoho_field:)
1752
+ # Some parameter documentations has been truncated, see
1753
+ # {Revox::Models::CallCreateResponse::Call::Assistant::Zoho::FieldMapping} for
1754
+ # more details.
1755
+ #
1756
+ # @param source [String] Source key to read from the call: a structured_output field name, falling back t
1757
+ #
1758
+ # @param zoho_field [String] Destination Zoho field API name on the upserted record (e.g. 'Email', 'Company',
1759
+ end
1760
+
1761
+ module Outcome
1762
+ extend Revox::Internal::Type::Enum
1763
+
1764
+ NOT_INTERESTED = :not_interested
1765
+ INTERESTED = :interested
1766
+ COMPLETED = :completed
1767
+ REQUESTED_CALLBACK_LATER = :requested_callback_later
1768
+ REQUESTED_CALLBACK_NEW_NUMBER = :requested_callback_new_number
1769
+ DO_NOT_CONTACT = :do_not_contact
1770
+ AI_AVERSE = :ai_averse
1771
+ NONE = :none
1772
+
1773
+ # @!method self.values
1774
+ # @return [Array<Symbol>]
1775
+ end
1776
+ end
1777
+
1778
+ # @see Revox::Models::CallCreateResponse::Call::Assistant#created_by
1779
+ class CreatedBy < Revox::Internal::Type::BaseModel
1780
+ # @!attribute id
1781
+ # The database user id of the creator.
1782
+ #
1783
+ # @return [String]
1784
+ required :id, String
1785
+
1786
+ # @!attribute email
1787
+ #
1788
+ # @return [String]
1789
+ required :email, String
1790
+
1791
+ # @!attribute first_name
1792
+ #
1793
+ # @return [String, nil]
1794
+ required :first_name, String, nil?: true
1795
+
1796
+ # @!attribute last_name
1797
+ #
1798
+ # @return [String, nil]
1799
+ required :last_name, String, nil?: true
1800
+
1801
+ # @!method initialize(id:, email:, first_name:, last_name:)
1802
+ # The user who created the assistant.
1803
+ #
1804
+ # @param id [String] The database user id of the creator.
1805
+ #
1806
+ # @param email [String]
1807
+ #
1808
+ # @param first_name [String, nil]
1809
+ #
1810
+ # @param last_name [String, nil]
656
1811
  end
657
1812
 
658
1813
  class FaqItem < Revox::Internal::Type::BaseModel
@@ -758,12 +1913,20 @@ module Revox
758
1913
  # @return [Symbol, Revox::Models::CallCreateResponse::Call::CallAttempt::Status]
759
1914
  required :status, enum: -> { Revox::Models::CallCreateResponse::Call::CallAttempt::Status }
760
1915
 
1916
+ # @!attribute assistants_used
1917
+ # Assistant node ids entered during this attempt, in traversal order.
1918
+ #
1919
+ # @return [Array<String>, nil]
1920
+ optional :assistants_used, Revox::Internal::Type::ArrayOf[String], nil?: true
1921
+
761
1922
  # @!attribute end_reason
762
1923
  # Reason for ending the call when ended_by is 'agent'. E.g. 'tool_end_call',
763
1924
  # 'voicemail', 'transfer', 'ivr_no_navigate'.
764
1925
  #
765
- # @return [String, nil]
766
- optional :end_reason, String, nil?: true
1926
+ # @return [Symbol, Revox::Models::CallCreateResponse::Call::CallAttempt::EndReason, nil]
1927
+ optional :end_reason,
1928
+ enum: -> { Revox::Models::CallCreateResponse::Call::CallAttempt::EndReason },
1929
+ nil?: true
767
1930
 
768
1931
  # @!attribute ended_by
769
1932
  # Who ended the call: 'agent' (AI agent), 'user' (caller/callee hung up), or
@@ -772,6 +1935,25 @@ module Revox
772
1935
  # @return [Symbol, Revox::Models::CallCreateResponse::Call::CallAttempt::EndedBy, nil]
773
1936
  optional :ended_by, enum: -> { Revox::Models::CallCreateResponse::Call::CallAttempt::EndedBy }, nil?: true
774
1937
 
1938
+ # @!attribute post_call_transcript
1939
+ # Higher-quality transcript generated after the call via Soniox async STT. Null
1940
+ # until generated or when no recording is available.
1941
+ #
1942
+ # @return [Array<Revox::Models::CallCreateResponse::Call::CallAttempt::PostCallTranscript>, nil]
1943
+ optional :post_call_transcript,
1944
+ -> { Revox::Internal::Type::ArrayOf[Revox::Models::CallCreateResponse::Call::CallAttempt::PostCallTranscript] },
1945
+ nil?: true
1946
+
1947
+ # @!attribute sms_log
1948
+ # Automatic SMS sent after the call (voicemail and after-call), ordered oldest
1949
+ # first. The in-call `send_sms` is excluded — it already appears in the transcript
1950
+ # as a tool call.
1951
+ #
1952
+ # @return [Array<Revox::Models::CallCreateResponse::Call::CallAttempt::SMSLog>, nil]
1953
+ optional :sms_log,
1954
+ -> { Revox::Internal::Type::ArrayOf[Revox::Models::CallCreateResponse::Call::CallAttempt::SMSLog] },
1955
+ nil?: true
1956
+
775
1957
  # @!attribute structured_output
776
1958
  # The data extracted from the call, using the structured output config from the
777
1959
  # parent call object.
@@ -782,14 +1964,14 @@ module Revox
782
1964
  nil?: true
783
1965
 
784
1966
  # @!attribute transcript
785
- # The transcript of the call.
1967
+ # The live transcript of the call, built in real time.
786
1968
  #
787
1969
  # @return [Array<Revox::Models::CallCreateResponse::Call::CallAttempt::Transcript>, nil]
788
1970
  optional :transcript,
789
1971
  -> { Revox::Internal::Type::ArrayOf[Revox::Models::CallCreateResponse::Call::CallAttempt::Transcript] },
790
1972
  nil?: true
791
1973
 
792
- # @!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)
1974
+ # @!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)
793
1975
  # Some parameter documentations has been truncated, see
794
1976
  # {Revox::Models::CallCreateResponse::Call::CallAttempt} for more details.
795
1977
  #
@@ -814,13 +1996,19 @@ module Revox
814
1996
  #
815
1997
  # @param status [Symbol, Revox::Models::CallCreateResponse::Call::CallAttempt::Status] The status of the call attempt.
816
1998
  #
817
- # @param end_reason [String, nil] Reason for ending the call when ended_by is 'agent'. E.g. 'tool_end_call', 'voic
1999
+ # @param assistants_used [Array<String>, nil] Assistant node ids entered during this attempt, in traversal order.
2000
+ #
2001
+ # @param end_reason [Symbol, Revox::Models::CallCreateResponse::Call::CallAttempt::EndReason, nil] Reason for ending the call when ended_by is 'agent'. E.g. 'tool_end_call', 'voic
818
2002
  #
819
2003
  # @param ended_by [Symbol, Revox::Models::CallCreateResponse::Call::CallAttempt::EndedBy, nil] Who ended the call: 'agent' (AI agent), 'user' (caller/callee hung up), or 'syst
820
2004
  #
2005
+ # @param post_call_transcript [Array<Revox::Models::CallCreateResponse::Call::CallAttempt::PostCallTranscript>, nil] Higher-quality transcript generated after the call via Soniox async STT. Null un
2006
+ #
2007
+ # @param sms_log [Array<Revox::Models::CallCreateResponse::Call::CallAttempt::SMSLog>, nil] Automatic SMS sent after the call (voicemail and after-call), ordered oldest fir
2008
+ #
821
2009
  # @param structured_output [Hash{Symbol=>Object}, nil] The data extracted from the call, using the structured output config from the pa
822
2010
  #
823
- # @param transcript [Array<Revox::Models::CallCreateResponse::Call::CallAttempt::Transcript>, nil] The transcript of the call.
2011
+ # @param transcript [Array<Revox::Models::CallCreateResponse::Call::CallAttempt::Transcript>, nil] The live transcript of the call, built in real time.
824
2012
 
825
2013
  # The SIP error that occurred.
826
2014
  #
@@ -845,45 +2033,201 @@ module Revox
845
2033
  module Result
846
2034
  extend Revox::Internal::Type::Enum
847
2035
 
848
- IVR = :IVR
849
- VOICEMAIL = :voicemail
850
- HUMAN = :human
851
- UNKNOWN = :unknown
852
- IOS_SCREENING_FILTER = :"ios-screening-filter"
2036
+ IVR = :IVR
2037
+ VOICEMAIL = :voicemail
2038
+ HUMAN = :human
2039
+ UNKNOWN = :unknown
2040
+ IOS_SCREENING_FILTER = :"ios-screening-filter"
2041
+
2042
+ # @!method self.values
2043
+ # @return [Array<Symbol>]
2044
+ end
2045
+
2046
+ # The status of the call attempt.
2047
+ #
2048
+ # @see Revox::Models::CallCreateResponse::Call::CallAttempt#status
2049
+ module Status
2050
+ extend Revox::Internal::Type::Enum
2051
+
2052
+ QUEUED = :queued
2053
+ RINGING = :ringing
2054
+ ONGOING = :ongoing
2055
+ COMPLETED = :completed
2056
+ ERROR = :error
2057
+
2058
+ # @!method self.values
2059
+ # @return [Array<Symbol>]
2060
+ end
2061
+
2062
+ # Reason for ending the call when ended_by is 'agent'. E.g. 'tool_end_call',
2063
+ # 'voicemail', 'transfer', 'ivr_no_navigate'.
2064
+ #
2065
+ # @see Revox::Models::CallCreateResponse::Call::CallAttempt#end_reason
2066
+ module EndReason
2067
+ extend Revox::Internal::Type::Enum
2068
+
2069
+ CLIENT_INITIATED = :client_initiated
2070
+ CONNECTION_TIMEOUT = :connection_timeout
2071
+ HUMAN_TAKEOVER = :human_takeover
2072
+ IVR_NO_NAVIGATE = :ivr_no_navigate
2073
+ MAX_DURATION = :max_duration
2074
+ PARTICIPANT_REMOVED = :participant_removed
2075
+ TOOL_END_CALL = :tool_end_call
2076
+ TRANSFER = :transfer
2077
+ USER_INACTIVE = :user_inactive
2078
+ USER_REJECTED = :user_rejected
2079
+ USER_UNAVAILABLE = :user_unavailable
2080
+ VOICEMAIL = :voicemail
2081
+ SPEED_DIAL_ABANDONED = :speed_dial_abandoned
2082
+ SPEED_DIAL_OPERATOR_MISSED = :speed_dial_operator_missed
2083
+ SPEED_DIAL_TIMEOUT = :speed_dial_timeout
2084
+ SPEED_DIAL_HANGUP = :speed_dial_hangup
2085
+
2086
+ # @!method self.values
2087
+ # @return [Array<Symbol>]
2088
+ end
2089
+
2090
+ # Who ended the call: 'agent' (AI agent), 'user' (caller/callee hung up), or
2091
+ # 'system' (e.g. max duration limit).
2092
+ #
2093
+ # @see Revox::Models::CallCreateResponse::Call::CallAttempt#ended_by
2094
+ module EndedBy
2095
+ extend Revox::Internal::Type::Enum
2096
+
2097
+ AGENT = :agent
2098
+ USER = :user
2099
+ SYSTEM = :system
2100
+
2101
+ # @!method self.values
2102
+ # @return [Array<Symbol>]
2103
+ end
2104
+
2105
+ class PostCallTranscript < Revox::Internal::Type::BaseModel
2106
+ # @!attribute content
2107
+ #
2108
+ # @return [String]
2109
+ required :content, String
2110
+
2111
+ # @!attribute role
2112
+ #
2113
+ # @return [Symbol, Revox::Models::CallCreateResponse::Call::CallAttempt::PostCallTranscript::Role]
2114
+ required :role,
2115
+ enum: -> { Revox::Models::CallCreateResponse::Call::CallAttempt::PostCallTranscript::Role }
2116
+
2117
+ # @!attribute tool_arguments
2118
+ #
2119
+ # @return [Hash{Symbol=>Object}, String, nil]
2120
+ optional :tool_arguments,
2121
+ union: -> { Revox::Models::CallCreateResponse::Call::CallAttempt::PostCallTranscript::ToolArguments }
2122
+
2123
+ # @!attribute tool_is_error
2124
+ #
2125
+ # @return [Boolean, nil]
2126
+ optional :tool_is_error, Revox::Internal::Type::Boolean
2127
+
2128
+ # @!attribute tool_name
2129
+ #
2130
+ # @return [String, nil]
2131
+ optional :tool_name, String
2132
+
2133
+ # @!attribute tool_output
2134
+ #
2135
+ # @return [String, nil]
2136
+ optional :tool_output, String
2137
+
2138
+ # @!method initialize(content:, role:, tool_arguments: nil, tool_is_error: nil, tool_name: nil, tool_output: nil)
2139
+ # @param content [String]
2140
+ # @param role [Symbol, Revox::Models::CallCreateResponse::Call::CallAttempt::PostCallTranscript::Role]
2141
+ # @param tool_arguments [Hash{Symbol=>Object}, String]
2142
+ # @param tool_is_error [Boolean]
2143
+ # @param tool_name [String]
2144
+ # @param tool_output [String]
2145
+
2146
+ # @see Revox::Models::CallCreateResponse::Call::CallAttempt::PostCallTranscript#role
2147
+ module Role
2148
+ extend Revox::Internal::Type::Enum
2149
+
2150
+ USER = :user
2151
+ ASSISTANT = :assistant
2152
+ HUMAN_AGENT = :human_agent
2153
+ TOOL = :tool
2154
+
2155
+ # @!method self.values
2156
+ # @return [Array<Symbol>]
2157
+ end
2158
+
2159
+ # @see Revox::Models::CallCreateResponse::Call::CallAttempt::PostCallTranscript#tool_arguments
2160
+ module ToolArguments
2161
+ extend Revox::Internal::Type::Union
2162
+
2163
+ variant -> { Revox::Models::CallCreateResponse::Call::CallAttempt::PostCallTranscript::ToolArguments::UnionMember0Map }
2164
+
2165
+ variant String
2166
+
2167
+ # @!method self.variants
2168
+ # @return [Array(Hash{Symbol=>Object}, String)]
2169
+
2170
+ # @type [Revox::Internal::Type::Converter]
2171
+ UnionMember0Map = Revox::Internal::Type::HashOf[Revox::Internal::Type::Unknown]
2172
+ end
2173
+ end
2174
+
2175
+ class SMSLog < Revox::Internal::Type::BaseModel
2176
+ # @!attribute id
2177
+ #
2178
+ # @return [String]
2179
+ required :id, String
2180
+
2181
+ # @!attribute created_at
2182
+ # When the SMS was sent.
2183
+ #
2184
+ # @return [Object]
2185
+ required :created_at, Revox::Internal::Type::Unknown
853
2186
 
854
- # @!method self.values
855
- # @return [Array<Symbol>]
856
- end
2187
+ # @!attribute message_body
2188
+ #
2189
+ # @return [String]
2190
+ required :message_body, String
857
2191
 
858
- # The status of the call attempt.
859
- #
860
- # @see Revox::Models::CallCreateResponse::Call::CallAttempt#status
861
- module Status
862
- extend Revox::Internal::Type::Enum
2192
+ # @!attribute to_phone_number
2193
+ #
2194
+ # @return [String]
2195
+ required :to_phone_number, String
863
2196
 
864
- QUEUED = :queued
865
- RINGING = :ringing
866
- ONGOING = :ongoing
867
- COMPLETED = :completed
868
- ERROR = :error
2197
+ # @!attribute twilio_message_sid
2198
+ #
2199
+ # @return [String, nil]
2200
+ required :twilio_message_sid, String, nil?: true
869
2201
 
870
- # @!method self.values
871
- # @return [Array<Symbol>]
872
- end
2202
+ # @!attribute type
2203
+ #
2204
+ # @return [Symbol, Revox::Models::CallCreateResponse::Call::CallAttempt::SMSLog::Type]
2205
+ required :type, enum: -> { Revox::Models::CallCreateResponse::Call::CallAttempt::SMSLog::Type }
873
2206
 
874
- # Who ended the call: 'agent' (AI agent), 'user' (caller/callee hung up), or
875
- # 'system' (e.g. max duration limit).
876
- #
877
- # @see Revox::Models::CallCreateResponse::Call::CallAttempt#ended_by
878
- module EndedBy
879
- extend Revox::Internal::Type::Enum
2207
+ # @!method initialize(id:, created_at:, message_body:, to_phone_number:, twilio_message_sid:, type:)
2208
+ # @param id [String]
2209
+ #
2210
+ # @param created_at [Object] When the SMS was sent.
2211
+ #
2212
+ # @param message_body [String]
2213
+ #
2214
+ # @param to_phone_number [String]
2215
+ #
2216
+ # @param twilio_message_sid [String, nil]
2217
+ #
2218
+ # @param type [Symbol, Revox::Models::CallCreateResponse::Call::CallAttempt::SMSLog::Type]
880
2219
 
881
- AGENT = :agent
882
- USER = :user
883
- SYSTEM = :system
2220
+ # @see Revox::Models::CallCreateResponse::Call::CallAttempt::SMSLog#type
2221
+ module Type
2222
+ extend Revox::Internal::Type::Enum
884
2223
 
885
- # @!method self.values
886
- # @return [Array<Symbol>]
2224
+ IN_CALL = :in_call
2225
+ VOICEMAIL = :voicemail
2226
+ AFTER_CALL = :after_call
2227
+
2228
+ # @!method self.values
2229
+ # @return [Array<Symbol>]
2230
+ end
887
2231
  end
888
2232
 
889
2233
  class Transcript < Revox::Internal::Type::BaseModel
@@ -913,12 +2257,18 @@ module Revox
913
2257
  # @return [String, nil]
914
2258
  optional :tool_name, String
915
2259
 
916
- # @!method initialize(content:, role:, tool_arguments: nil, tool_is_error: nil, tool_name: nil)
2260
+ # @!attribute tool_output
2261
+ #
2262
+ # @return [String, nil]
2263
+ optional :tool_output, String
2264
+
2265
+ # @!method initialize(content:, role:, tool_arguments: nil, tool_is_error: nil, tool_name: nil, tool_output: nil)
917
2266
  # @param content [String]
918
2267
  # @param role [Symbol, Revox::Models::CallCreateResponse::Call::CallAttempt::Transcript::Role]
919
2268
  # @param tool_arguments [Hash{Symbol=>Object}, String]
920
2269
  # @param tool_is_error [Boolean]
921
2270
  # @param tool_name [String]
2271
+ # @param tool_output [String]
922
2272
 
923
2273
  # @see Revox::Models::CallCreateResponse::Call::CallAttempt::Transcript#role
924
2274
  module Role
@@ -926,6 +2276,7 @@ module Revox
926
2276
 
927
2277
  USER = :user
928
2278
  ASSISTANT = :assistant
2279
+ HUMAN_AGENT = :human_agent
929
2280
  TOOL = :tool
930
2281
 
931
2282
  # @!method self.values
@@ -951,6 +2302,23 @@ module Revox
951
2302
 
952
2303
  # @see Revox::Models::CallCreateResponse::Call#call_retry_config
953
2304
  class CallRetryConfig < Revox::Internal::Type::BaseModel
2305
+ # @!attribute allowed_days
2306
+ # Days of the week when calls are allowed, in the recipient's timezone. Default:
2307
+ # Monday through Friday.
2308
+ #
2309
+ # @return [Array<Symbol, Revox::Models::CallCreateResponse::Call::CallRetryConfig::AllowedDay>]
2310
+ required :allowed_days,
2311
+ -> { Revox::Internal::Type::ArrayOf[enum: Revox::Models::CallCreateResponse::Call::CallRetryConfig::AllowedDay] }
2312
+
2313
+ # @!attribute call_twice_in_a_row
2314
+ # If true and max_retry_attempts >= 2, attempt #2 fires immediately (skipping
2315
+ # retry_delay_seconds) when attempt #1 didn't reach a human.
2316
+ # Calling-window/allowed-days checks still apply. Only affects the 1→2 transition.
2317
+ # Default: false.
2318
+ #
2319
+ # @return [Boolean]
2320
+ required :call_twice_in_a_row, Revox::Internal::Type::Boolean
2321
+
954
2322
  # @!attribute calling_windows
955
2323
  #
956
2324
  # @return [Array<Revox::Models::CallCreateResponse::Call::CallRetryConfig::CallingWindow>]
@@ -971,19 +2339,38 @@ module Revox
971
2339
  # @return [String, nil]
972
2340
  optional :timezone, String, nil?: true
973
2341
 
974
- # @!method initialize(calling_windows:, max_retry_attempts:, timezone: nil)
2342
+ # @!method initialize(allowed_days:, call_twice_in_a_row:, calling_windows:, max_retry_attempts:, timezone: nil)
975
2343
  # Some parameter documentations has been truncated, see
976
2344
  # {Revox::Models::CallCreateResponse::Call::CallRetryConfig} for more details.
977
2345
  #
978
2346
  # Configuration for call retry behavior including time windows, delays, and max
979
2347
  # iterations. If not provided, defaults will be used.
980
2348
  #
2349
+ # @param allowed_days [Array<Symbol, Revox::Models::CallCreateResponse::Call::CallRetryConfig::AllowedDay>] Days of the week when calls are allowed, in the recipient's timezone. Default: M
2350
+ #
2351
+ # @param call_twice_in_a_row [Boolean] If true and max_retry_attempts >= 2, attempt #2 fires immediately (skipping retr
2352
+ #
981
2353
  # @param calling_windows [Array<Revox::Models::CallCreateResponse::Call::CallRetryConfig::CallingWindow>]
982
2354
  #
983
2355
  # @param max_retry_attempts [Integer] Maximum number of call retry attempts. Default: 3.
984
2356
  #
985
2357
  # @param timezone [String, nil] Optional IANA timezone identifier to override the automatic timezone detection f
986
2358
 
2359
+ module AllowedDay
2360
+ extend Revox::Internal::Type::Enum
2361
+
2362
+ MONDAY = :monday
2363
+ TUESDAY = :tuesday
2364
+ WEDNESDAY = :wednesday
2365
+ THURSDAY = :thursday
2366
+ FRIDAY = :friday
2367
+ SATURDAY = :saturday
2368
+ SUNDAY = :sunday
2369
+
2370
+ # @!method self.values
2371
+ # @return [Array<Symbol>]
2372
+ end
2373
+
987
2374
  class CallingWindow < Revox::Internal::Type::BaseModel
988
2375
  # @!attribute calling_window_end_time
989
2376
  # End time for the calling window in the recipient's timezone (or
@@ -1037,6 +2424,38 @@ module Revox
1037
2424
  # @param name [String]
1038
2425
  end
1039
2426
 
2427
+ # @see Revox::Models::CallCreateResponse::Call#contact
2428
+ class Contact < Revox::Internal::Type::BaseModel
2429
+ # @!attribute company
2430
+ #
2431
+ # @return [String, nil]
2432
+ required :company, String, nil?: true
2433
+
2434
+ # @!attribute email
2435
+ #
2436
+ # @return [String, nil]
2437
+ required :email, String, nil?: true
2438
+
2439
+ # @!attribute first_name
2440
+ #
2441
+ # @return [String, nil]
2442
+ required :first_name, String, nil?: true
2443
+
2444
+ # @!attribute last_name
2445
+ #
2446
+ # @return [String, nil]
2447
+ required :last_name, String, nil?: true
2448
+
2449
+ # @!method initialize(company:, email:, first_name:, last_name:)
2450
+ # Magic contact variables (prospect identity) extracted from the call's input data
2451
+ # and transcript.
2452
+ #
2453
+ # @param company [String, nil]
2454
+ # @param email [String, nil]
2455
+ # @param first_name [String, nil]
2456
+ # @param last_name [String, nil]
2457
+ end
2458
+
1040
2459
  # Whether the call is inbound or outbound.
1041
2460
  #
1042
2461
  # @see Revox::Models::CallCreateResponse::Call#direction
@@ -1110,12 +2529,20 @@ module Revox
1110
2529
  # @return [Symbol, Revox::Models::CallCreateResponse::Call::LastCallAttempt::Status]
1111
2530
  required :status, enum: -> { Revox::Models::CallCreateResponse::Call::LastCallAttempt::Status }
1112
2531
 
2532
+ # @!attribute assistants_used
2533
+ # Assistant node ids entered during this attempt, in traversal order.
2534
+ #
2535
+ # @return [Array<String>, nil]
2536
+ optional :assistants_used, Revox::Internal::Type::ArrayOf[String], nil?: true
2537
+
1113
2538
  # @!attribute end_reason
1114
2539
  # Reason for ending the call when ended_by is 'agent'. E.g. 'tool_end_call',
1115
2540
  # 'voicemail', 'transfer', 'ivr_no_navigate'.
1116
2541
  #
1117
- # @return [String, nil]
1118
- optional :end_reason, String, nil?: true
2542
+ # @return [Symbol, Revox::Models::CallCreateResponse::Call::LastCallAttempt::EndReason, nil]
2543
+ optional :end_reason,
2544
+ enum: -> { Revox::Models::CallCreateResponse::Call::LastCallAttempt::EndReason },
2545
+ nil?: true
1119
2546
 
1120
2547
  # @!attribute ended_by
1121
2548
  # Who ended the call: 'agent' (AI agent), 'user' (caller/callee hung up), or
@@ -1126,6 +2553,25 @@ module Revox
1126
2553
  enum: -> { Revox::Models::CallCreateResponse::Call::LastCallAttempt::EndedBy },
1127
2554
  nil?: true
1128
2555
 
2556
+ # @!attribute post_call_transcript
2557
+ # Higher-quality transcript generated after the call via Soniox async STT. Null
2558
+ # until generated or when no recording is available.
2559
+ #
2560
+ # @return [Array<Revox::Models::CallCreateResponse::Call::LastCallAttempt::PostCallTranscript>, nil]
2561
+ optional :post_call_transcript,
2562
+ -> { Revox::Internal::Type::ArrayOf[Revox::Models::CallCreateResponse::Call::LastCallAttempt::PostCallTranscript] },
2563
+ nil?: true
2564
+
2565
+ # @!attribute sms_log
2566
+ # Automatic SMS sent after the call (voicemail and after-call), ordered oldest
2567
+ # first. The in-call `send_sms` is excluded — it already appears in the transcript
2568
+ # as a tool call.
2569
+ #
2570
+ # @return [Array<Revox::Models::CallCreateResponse::Call::LastCallAttempt::SMSLog>, nil]
2571
+ optional :sms_log,
2572
+ -> { Revox::Internal::Type::ArrayOf[Revox::Models::CallCreateResponse::Call::LastCallAttempt::SMSLog] },
2573
+ nil?: true
2574
+
1129
2575
  # @!attribute structured_output
1130
2576
  # The data extracted from the call, using the structured output config from the
1131
2577
  # parent call object.
@@ -1136,14 +2582,14 @@ module Revox
1136
2582
  nil?: true
1137
2583
 
1138
2584
  # @!attribute transcript
1139
- # The transcript of the call.
2585
+ # The live transcript of the call, built in real time.
1140
2586
  #
1141
2587
  # @return [Array<Revox::Models::CallCreateResponse::Call::LastCallAttempt::Transcript>, nil]
1142
2588
  optional :transcript,
1143
2589
  -> { Revox::Internal::Type::ArrayOf[Revox::Models::CallCreateResponse::Call::LastCallAttempt::Transcript] },
1144
2590
  nil?: true
1145
2591
 
1146
- # @!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)
2592
+ # @!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)
1147
2593
  # Some parameter documentations has been truncated, see
1148
2594
  # {Revox::Models::CallCreateResponse::Call::LastCallAttempt} for more details.
1149
2595
  #
@@ -1168,13 +2614,19 @@ module Revox
1168
2614
  #
1169
2615
  # @param status [Symbol, Revox::Models::CallCreateResponse::Call::LastCallAttempt::Status] The status of the call attempt.
1170
2616
  #
1171
- # @param end_reason [String, nil] Reason for ending the call when ended_by is 'agent'. E.g. 'tool_end_call', 'voic
2617
+ # @param assistants_used [Array<String>, nil] Assistant node ids entered during this attempt, in traversal order.
2618
+ #
2619
+ # @param end_reason [Symbol, Revox::Models::CallCreateResponse::Call::LastCallAttempt::EndReason, nil] Reason for ending the call when ended_by is 'agent'. E.g. 'tool_end_call', 'voic
1172
2620
  #
1173
2621
  # @param ended_by [Symbol, Revox::Models::CallCreateResponse::Call::LastCallAttempt::EndedBy, nil] Who ended the call: 'agent' (AI agent), 'user' (caller/callee hung up), or 'syst
1174
2622
  #
2623
+ # @param post_call_transcript [Array<Revox::Models::CallCreateResponse::Call::LastCallAttempt::PostCallTranscript>, nil] Higher-quality transcript generated after the call via Soniox async STT. Null un
2624
+ #
2625
+ # @param sms_log [Array<Revox::Models::CallCreateResponse::Call::LastCallAttempt::SMSLog>, nil] Automatic SMS sent after the call (voicemail and after-call), ordered oldest fir
2626
+ #
1175
2627
  # @param structured_output [Hash{Symbol=>Object}, nil] The data extracted from the call, using the structured output config from the pa
1176
2628
  #
1177
- # @param transcript [Array<Revox::Models::CallCreateResponse::Call::LastCallAttempt::Transcript>, nil] The transcript of the call.
2629
+ # @param transcript [Array<Revox::Models::CallCreateResponse::Call::LastCallAttempt::Transcript>, nil] The live transcript of the call, built in real time.
1178
2630
 
1179
2631
  # The SIP error that occurred.
1180
2632
  #
@@ -1225,6 +2677,34 @@ module Revox
1225
2677
  # @return [Array<Symbol>]
1226
2678
  end
1227
2679
 
2680
+ # Reason for ending the call when ended_by is 'agent'. E.g. 'tool_end_call',
2681
+ # 'voicemail', 'transfer', 'ivr_no_navigate'.
2682
+ #
2683
+ # @see Revox::Models::CallCreateResponse::Call::LastCallAttempt#end_reason
2684
+ module EndReason
2685
+ extend Revox::Internal::Type::Enum
2686
+
2687
+ CLIENT_INITIATED = :client_initiated
2688
+ CONNECTION_TIMEOUT = :connection_timeout
2689
+ HUMAN_TAKEOVER = :human_takeover
2690
+ IVR_NO_NAVIGATE = :ivr_no_navigate
2691
+ MAX_DURATION = :max_duration
2692
+ PARTICIPANT_REMOVED = :participant_removed
2693
+ TOOL_END_CALL = :tool_end_call
2694
+ TRANSFER = :transfer
2695
+ USER_INACTIVE = :user_inactive
2696
+ USER_REJECTED = :user_rejected
2697
+ USER_UNAVAILABLE = :user_unavailable
2698
+ VOICEMAIL = :voicemail
2699
+ SPEED_DIAL_ABANDONED = :speed_dial_abandoned
2700
+ SPEED_DIAL_OPERATOR_MISSED = :speed_dial_operator_missed
2701
+ SPEED_DIAL_TIMEOUT = :speed_dial_timeout
2702
+ SPEED_DIAL_HANGUP = :speed_dial_hangup
2703
+
2704
+ # @!method self.values
2705
+ # @return [Array<Symbol>]
2706
+ end
2707
+
1228
2708
  # Who ended the call: 'agent' (AI agent), 'user' (caller/callee hung up), or
1229
2709
  # 'system' (e.g. max duration limit).
1230
2710
  #
@@ -1240,6 +2720,134 @@ module Revox
1240
2720
  # @return [Array<Symbol>]
1241
2721
  end
1242
2722
 
2723
+ class PostCallTranscript < Revox::Internal::Type::BaseModel
2724
+ # @!attribute content
2725
+ #
2726
+ # @return [String]
2727
+ required :content, String
2728
+
2729
+ # @!attribute role
2730
+ #
2731
+ # @return [Symbol, Revox::Models::CallCreateResponse::Call::LastCallAttempt::PostCallTranscript::Role]
2732
+ required :role,
2733
+ enum: -> { Revox::Models::CallCreateResponse::Call::LastCallAttempt::PostCallTranscript::Role }
2734
+
2735
+ # @!attribute tool_arguments
2736
+ #
2737
+ # @return [Hash{Symbol=>Object}, String, nil]
2738
+ optional :tool_arguments,
2739
+ union: -> { Revox::Models::CallCreateResponse::Call::LastCallAttempt::PostCallTranscript::ToolArguments }
2740
+
2741
+ # @!attribute tool_is_error
2742
+ #
2743
+ # @return [Boolean, nil]
2744
+ optional :tool_is_error, Revox::Internal::Type::Boolean
2745
+
2746
+ # @!attribute tool_name
2747
+ #
2748
+ # @return [String, nil]
2749
+ optional :tool_name, String
2750
+
2751
+ # @!attribute tool_output
2752
+ #
2753
+ # @return [String, nil]
2754
+ optional :tool_output, String
2755
+
2756
+ # @!method initialize(content:, role:, tool_arguments: nil, tool_is_error: nil, tool_name: nil, tool_output: nil)
2757
+ # @param content [String]
2758
+ # @param role [Symbol, Revox::Models::CallCreateResponse::Call::LastCallAttempt::PostCallTranscript::Role]
2759
+ # @param tool_arguments [Hash{Symbol=>Object}, String]
2760
+ # @param tool_is_error [Boolean]
2761
+ # @param tool_name [String]
2762
+ # @param tool_output [String]
2763
+
2764
+ # @see Revox::Models::CallCreateResponse::Call::LastCallAttempt::PostCallTranscript#role
2765
+ module Role
2766
+ extend Revox::Internal::Type::Enum
2767
+
2768
+ USER = :user
2769
+ ASSISTANT = :assistant
2770
+ HUMAN_AGENT = :human_agent
2771
+ TOOL = :tool
2772
+
2773
+ # @!method self.values
2774
+ # @return [Array<Symbol>]
2775
+ end
2776
+
2777
+ # @see Revox::Models::CallCreateResponse::Call::LastCallAttempt::PostCallTranscript#tool_arguments
2778
+ module ToolArguments
2779
+ extend Revox::Internal::Type::Union
2780
+
2781
+ variant -> { Revox::Models::CallCreateResponse::Call::LastCallAttempt::PostCallTranscript::ToolArguments::UnionMember0Map }
2782
+
2783
+ variant String
2784
+
2785
+ # @!method self.variants
2786
+ # @return [Array(Hash{Symbol=>Object}, String)]
2787
+
2788
+ # @type [Revox::Internal::Type::Converter]
2789
+ UnionMember0Map = Revox::Internal::Type::HashOf[Revox::Internal::Type::Unknown]
2790
+ end
2791
+ end
2792
+
2793
+ class SMSLog < Revox::Internal::Type::BaseModel
2794
+ # @!attribute id
2795
+ #
2796
+ # @return [String]
2797
+ required :id, String
2798
+
2799
+ # @!attribute created_at
2800
+ # When the SMS was sent.
2801
+ #
2802
+ # @return [Object]
2803
+ required :created_at, Revox::Internal::Type::Unknown
2804
+
2805
+ # @!attribute message_body
2806
+ #
2807
+ # @return [String]
2808
+ required :message_body, String
2809
+
2810
+ # @!attribute to_phone_number
2811
+ #
2812
+ # @return [String]
2813
+ required :to_phone_number, String
2814
+
2815
+ # @!attribute twilio_message_sid
2816
+ #
2817
+ # @return [String, nil]
2818
+ required :twilio_message_sid, String, nil?: true
2819
+
2820
+ # @!attribute type
2821
+ #
2822
+ # @return [Symbol, Revox::Models::CallCreateResponse::Call::LastCallAttempt::SMSLog::Type]
2823
+ required :type, enum: -> { Revox::Models::CallCreateResponse::Call::LastCallAttempt::SMSLog::Type }
2824
+
2825
+ # @!method initialize(id:, created_at:, message_body:, to_phone_number:, twilio_message_sid:, type:)
2826
+ # @param id [String]
2827
+ #
2828
+ # @param created_at [Object] When the SMS was sent.
2829
+ #
2830
+ # @param message_body [String]
2831
+ #
2832
+ # @param to_phone_number [String]
2833
+ #
2834
+ # @param twilio_message_sid [String, nil]
2835
+ #
2836
+ # @param type [Symbol, Revox::Models::CallCreateResponse::Call::LastCallAttempt::SMSLog::Type]
2837
+
2838
+ # @see Revox::Models::CallCreateResponse::Call::LastCallAttempt::SMSLog#type
2839
+ module Type
2840
+ extend Revox::Internal::Type::Enum
2841
+
2842
+ IN_CALL = :in_call
2843
+ VOICEMAIL = :voicemail
2844
+ AFTER_CALL = :after_call
2845
+
2846
+ # @!method self.values
2847
+ # @return [Array<Symbol>]
2848
+ end
2849
+ end
2850
+
1243
2851
  class Transcript < Revox::Internal::Type::BaseModel
1244
2852
  # @!attribute content
1245
2853
  #
@@ -1267,12 +2875,18 @@ module Revox
1267
2875
  # @return [String, nil]
1268
2876
  optional :tool_name, String
1269
2877
 
1270
- # @!method initialize(content:, role:, tool_arguments: nil, tool_is_error: nil, tool_name: nil)
2878
+ # @!attribute tool_output
2879
+ #
2880
+ # @return [String, nil]
2881
+ optional :tool_output, String
2882
+
2883
+ # @!method initialize(content:, role:, tool_arguments: nil, tool_is_error: nil, tool_name: nil, tool_output: nil)
1271
2884
  # @param content [String]
1272
2885
  # @param role [Symbol, Revox::Models::CallCreateResponse::Call::LastCallAttempt::Transcript::Role]
1273
2886
  # @param tool_arguments [Hash{Symbol=>Object}, String]
1274
2887
  # @param tool_is_error [Boolean]
1275
2888
  # @param tool_name [String]
2889
+ # @param tool_output [String]
1276
2890
 
1277
2891
  # @see Revox::Models::CallCreateResponse::Call::LastCallAttempt::Transcript#role
1278
2892
  module Role
@@ -1280,6 +2894,7 @@ module Revox
1280
2894
 
1281
2895
  USER = :user
1282
2896
  ASSISTANT = :assistant
2897
+ HUMAN_AGENT = :human_agent
1283
2898
  TOOL = :tool
1284
2899
 
1285
2900
  # @!method self.values
@@ -1311,6 +2926,10 @@ module Revox
1311
2926
 
1312
2927
  variant -> { Revox::Models::CallCreateResponse::Call::LlmModel::UnionMember1 }
1313
2928
 
2929
+ variant -> { Revox::Models::CallCreateResponse::Call::LlmModel::UnionMember2 }
2930
+
2931
+ variant -> { Revox::Models::CallCreateResponse::Call::LlmModel::UnionMember3 }
2932
+
1314
2933
  class UnionMember0 < Revox::Internal::Type::BaseModel
1315
2934
  # @!attribute name
1316
2935
  #
@@ -1365,8 +2984,91 @@ module Revox
1365
2984
  # @param type [Symbol, :openrouter] Use a model from OpenRouter.
1366
2985
  end
1367
2986
 
2987
+ class UnionMember2 < Revox::Internal::Type::BaseModel
2988
+ # @!attribute api_key
2989
+ # API key sent as Bearer token to the custom endpoint.
2990
+ #
2991
+ # @return [String]
2992
+ required :api_key, String
2993
+
2994
+ # @!attribute api_url
2995
+ # Base URL for the OpenAI-compatible API, e.g. https://api.together.xyz/v1
2996
+ #
2997
+ # @return [String]
2998
+ required :api_url, String
2999
+
3000
+ # @!attribute model_name
3001
+ # Model name as expected by the provider, e.g. meta-llama/llama-3-70b
3002
+ #
3003
+ # @return [String]
3004
+ required :model_name, String
3005
+
3006
+ # @!attribute type
3007
+ # OpenAI-compatible chat completions API (bring your own endpoint and key).
3008
+ #
3009
+ # @return [Symbol, :custom]
3010
+ required :type, const: :custom
3011
+
3012
+ # @!method initialize(api_key:, api_url:, model_name:, type: :custom)
3013
+ # @param api_key [String] API key sent as Bearer token to the custom endpoint.
3014
+ #
3015
+ # @param api_url [String] Base URL for the OpenAI-compatible API, e.g. https://api.together.xyz/v1
3016
+ #
3017
+ # @param model_name [String] Model name as expected by the provider, e.g. meta-llama/llama-3-70b
3018
+ #
3019
+ # @param type [Symbol, :custom] OpenAI-compatible chat completions API (bring your own endpoint and key).
3020
+ end
3021
+
3022
+ class UnionMember3 < Revox::Internal::Type::BaseModel
3023
+ # @!attribute provider
3024
+ # The provider to use from Realtime. eg: openai, google.
3025
+ #
3026
+ # @return [Symbol, Revox::Models::CallCreateResponse::Call::LlmModel::UnionMember3::Provider]
3027
+ required :provider, enum: -> { Revox::Models::CallCreateResponse::Call::LlmModel::UnionMember3::Provider }
3028
+
3029
+ # @!attribute realtime_model_id
3030
+ # The model ID to use from Realtime. eg: gpt-4.1
3031
+ #
3032
+ # @return [String]
3033
+ required :realtime_model_id, String
3034
+
3035
+ # @!attribute type
3036
+ # Use a model from Realtime.
3037
+ #
3038
+ # @return [Symbol, :realtime]
3039
+ required :type, const: :realtime
3040
+
3041
+ # @!attribute realtime_voice_id
3042
+ # Output voice for the realtime provider (e.g. OpenAI: marin; Gemini: Puck).
3043
+ #
3044
+ # @return [String, nil]
3045
+ optional :realtime_voice_id, String
3046
+
3047
+ # @!method initialize(provider:, realtime_model_id:, realtime_voice_id: nil, type: :realtime)
3048
+ # @param provider [Symbol, Revox::Models::CallCreateResponse::Call::LlmModel::UnionMember3::Provider] The provider to use from Realtime. eg: openai, google.
3049
+ #
3050
+ # @param realtime_model_id [String] The model ID to use from Realtime. eg: gpt-4.1
3051
+ #
3052
+ # @param realtime_voice_id [String] Output voice for the realtime provider (e.g. OpenAI: marin; Gemini: Puck).
3053
+ #
3054
+ # @param type [Symbol, :realtime] Use a model from Realtime.
3055
+
3056
+ # The provider to use from Realtime. eg: openai, google.
3057
+ #
3058
+ # @see Revox::Models::CallCreateResponse::Call::LlmModel::UnionMember3#provider
3059
+ module Provider
3060
+ extend Revox::Internal::Type::Enum
3061
+
3062
+ OPENAI = :openai
3063
+ GOOGLE = :google
3064
+
3065
+ # @!method self.values
3066
+ # @return [Array<Symbol>]
3067
+ end
3068
+ end
3069
+
1368
3070
  # @!method self.variants
1369
- # @return [Array(Revox::Models::CallCreateResponse::Call::LlmModel::UnionMember0, Revox::Models::CallCreateResponse::Call::LlmModel::UnionMember1)]
3071
+ # @return [Array(Revox::Models::CallCreateResponse::Call::LlmModel::UnionMember0, Revox::Models::CallCreateResponse::Call::LlmModel::UnionMember1, Revox::Models::CallCreateResponse::Call::LlmModel::UnionMember2, Revox::Models::CallCreateResponse::Call::LlmModel::UnionMember3)]
1370
3072
  end
1371
3073
 
1372
3074
  # The status of the call.
@@ -1378,7 +3080,9 @@ module Revox
1378
3080
  INITIALIZING = :initializing
1379
3081
  QUEUED_FOR_CALLING = :queued_for_calling
1380
3082
  CALLING = :calling
3083
+ POST_PROCESSING = :post_processing
1381
3084
  SCHEDULED = :scheduled
3085
+ PAUSED = :paused
1382
3086
  COMPLETED = :completed
1383
3087
  CANCELLED = :cancelled
1384
3088
  ERRORED = :errored
@@ -1386,6 +3090,24 @@ module Revox
1386
3090
  # @!method self.values
1387
3091
  # @return [Array<Symbol>]
1388
3092
  end
3093
+
3094
+ # Business outcome of the call. Null if not computed or no transcript.
3095
+ #
3096
+ # @see Revox::Models::CallCreateResponse::Call#outcome
3097
+ module Outcome
3098
+ extend Revox::Internal::Type::Enum
3099
+
3100
+ NOT_INTERESTED = :not_interested
3101
+ INTERESTED = :interested
3102
+ COMPLETED = :completed
3103
+ REQUESTED_CALLBACK_LATER = :requested_callback_later
3104
+ REQUESTED_CALLBACK_NEW_NUMBER = :requested_callback_new_number
3105
+ DO_NOT_CONTACT = :do_not_contact
3106
+ AI_AVERSE = :ai_averse
3107
+
3108
+ # @!method self.values
3109
+ # @return [Array<Symbol>]
3110
+ end
1389
3111
  end
1390
3112
  end
1391
3113
  end