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
@@ -0,0 +1,3114 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Revox
4
+ module Models
5
+ # @see Revox::Resources::Call#search
6
+ class CallSearchResponse < Revox::Internal::Type::BaseModel
7
+ # @!attribute calls
8
+ #
9
+ # @return [Array<Revox::Models::CallSearchResponse::Call>]
10
+ required :calls, -> { Revox::Internal::Type::ArrayOf[Revox::Models::CallSearchResponse::Call] }
11
+
12
+ # @!attribute total_count
13
+ #
14
+ # @return [Float]
15
+ required :total_count, Float
16
+
17
+ # @!method initialize(calls:, total_count:)
18
+ # @param calls [Array<Revox::Models::CallSearchResponse::Call>]
19
+ # @param total_count [Float]
20
+
21
+ class Call < Revox::Internal::Type::BaseModel
22
+ # @!attribute id
23
+ # The ID of the call.
24
+ #
25
+ # @return [String]
26
+ required :id, String
27
+
28
+ # @!attribute assignee
29
+ # The team member responsible for following up on this call.
30
+ #
31
+ # @return [Revox::Models::CallSearchResponse::Call::Assignee, nil]
32
+ required :assignee, -> { Revox::Models::CallSearchResponse::Call::Assignee }, nil?: true
33
+
34
+ # @!attribute assistant
35
+ #
36
+ # @return [Revox::Models::CallSearchResponse::Call::Assistant, nil]
37
+ required :assistant, -> { Revox::Models::CallSearchResponse::Call::Assistant }, nil?: true
38
+
39
+ # @!attribute call_attempts
40
+ # All call attempts for this call order, ordered by most recent first.
41
+ #
42
+ # @return [Array<Revox::Models::CallSearchResponse::Call::CallAttempt>]
43
+ required :call_attempts,
44
+ -> { Revox::Internal::Type::ArrayOf[Revox::Models::CallSearchResponse::Call::CallAttempt] }
45
+
46
+ # @!attribute call_retry_config
47
+ # Configuration for call retry behavior including time windows, delays, and max
48
+ # iterations. If not provided, defaults will be used.
49
+ #
50
+ # @return [Revox::Models::CallSearchResponse::Call::CallRetryConfig, nil]
51
+ required :call_retry_config, -> { Revox::Models::CallSearchResponse::Call::CallRetryConfig }, nil?: true
52
+
53
+ # @!attribute calls_count
54
+ # The number of call attempts made.
55
+ #
56
+ # @return [Float]
57
+ required :calls_count, Float
58
+
59
+ # @!attribute campaign
60
+ #
61
+ # @return [Revox::Models::CallSearchResponse::Call::Campaign, nil]
62
+ required :campaign, -> { Revox::Models::CallSearchResponse::Call::Campaign }, nil?: true
63
+
64
+ # @!attribute contact
65
+ # Magic contact variables (prospect identity) extracted from the call's input data
66
+ # and transcript.
67
+ #
68
+ # @return [Revox::Models::CallSearchResponse::Call::Contact]
69
+ required :contact, -> { Revox::Models::CallSearchResponse::Call::Contact }
70
+
71
+ # @!attribute created_at
72
+ # The time the call order was created.
73
+ #
74
+ # @return [Object]
75
+ required :created_at, Revox::Internal::Type::Unknown
76
+
77
+ # @!attribute direction
78
+ # Whether the call is inbound or outbound.
79
+ #
80
+ # @return [Symbol, Revox::Models::CallSearchResponse::Call::Direction]
81
+ required :direction, enum: -> { Revox::Models::CallSearchResponse::Call::Direction }
82
+
83
+ # @!attribute first_sentence_delay_ms
84
+ # Delay in milliseconds before speaking the first sentence. Default: 400.
85
+ #
86
+ # @return [Integer]
87
+ required :first_sentence_delay_ms, Integer
88
+
89
+ # @!attribute from_phone_number
90
+ # The phone number that made the call. Formatted in E.164 format. Example:
91
+ # +1234567890
92
+ #
93
+ # @return [String]
94
+ required :from_phone_number, String
95
+
96
+ # @!attribute is_cancelled
97
+ # DEPRECATED: Whether the call has been cancelled. This is derived from `status`.
98
+ # Use `status` instead.
99
+ #
100
+ # @return [Boolean]
101
+ required :is_cancelled, Revox::Internal::Type::Boolean
102
+
103
+ # @!attribute is_completed
104
+ # DEPRECATED: Whether the call has completed. This is derived from `status`. Use
105
+ # `status` instead.
106
+ #
107
+ # @return [Boolean]
108
+ required :is_completed, Revox::Internal::Type::Boolean
109
+
110
+ # @!attribute last_call_attempt
111
+ # This represent a single call attempt. A call attempt is a single call made to
112
+ # the phone number.
113
+ #
114
+ # @return [Revox::Models::CallSearchResponse::Call::LastCallAttempt, nil]
115
+ required :last_call_attempt, -> { Revox::Models::CallSearchResponse::Call::LastCallAttempt }, nil?: true
116
+
117
+ # @!attribute llm_model
118
+ #
119
+ # @return [Revox::Models::CallSearchResponse::Call::LlmModel::UnionMember0, Revox::Models::CallSearchResponse::Call::LlmModel::UnionMember1, Revox::Models::CallSearchResponse::Call::LlmModel::UnionMember2, Revox::Models::CallSearchResponse::Call::LlmModel::UnionMember3]
120
+ required :llm_model, union: -> { Revox::Models::CallSearchResponse::Call::LlmModel }
121
+
122
+ # @!attribute metadata
123
+ # Metadata stored with the call.
124
+ #
125
+ # @return [Hash{Symbol=>String}, nil]
126
+ required :metadata, Revox::Internal::Type::HashOf[String], nil?: true
127
+
128
+ # @!attribute organization_id
129
+ # The ID of the organization that owns the call.
130
+ #
131
+ # @return [String]
132
+ required :organization_id, String
133
+
134
+ # @!attribute prompt_variables
135
+ # Variables used to interpolate the prompt.
136
+ #
137
+ # @return [Hash{Symbol=>String}, nil]
138
+ required :prompt_variables, Revox::Internal::Type::HashOf[String], nil?: true
139
+
140
+ # @!attribute scheduled_at
141
+ # The time the call order is scheduled to start.
142
+ #
143
+ # @return [Object]
144
+ required :scheduled_at, Revox::Internal::Type::Unknown
145
+
146
+ # @!attribute status
147
+ # The status of the call.
148
+ #
149
+ # @return [Symbol, Revox::Models::CallSearchResponse::Call::Status]
150
+ required :status, enum: -> { Revox::Models::CallSearchResponse::Call::Status }
151
+
152
+ # @!attribute to_phone_number
153
+ # The phone number that received the call. Formatted in E.164 format. Example:
154
+ # +1234567890
155
+ #
156
+ # @return [String]
157
+ required :to_phone_number, String
158
+
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::CallSearchResponse::Call::Outcome, nil]
178
+ optional :outcome, enum: -> { Revox::Models::CallSearchResponse::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)
187
+ # Some parameter documentations has been truncated, see
188
+ # {Revox::Models::CallSearchResponse::Call} for more details.
189
+ #
190
+ # This represent a call "order" that was requested by the user. A call order can
191
+ # be resolved over multiple call attempts spanning up to a few days.
192
+ #
193
+ # @param id [String] The ID of the call.
194
+ #
195
+ # @param assignee [Revox::Models::CallSearchResponse::Call::Assignee, nil] The team member responsible for following up on this call.
196
+ #
197
+ # @param assistant [Revox::Models::CallSearchResponse::Call::Assistant, nil]
198
+ #
199
+ # @param call_attempts [Array<Revox::Models::CallSearchResponse::Call::CallAttempt>] All call attempts for this call order, ordered by most recent first.
200
+ #
201
+ # @param call_retry_config [Revox::Models::CallSearchResponse::Call::CallRetryConfig, nil] Configuration for call retry behavior including time windows, delays, and max it
202
+ #
203
+ # @param calls_count [Float] The number of call attempts made.
204
+ #
205
+ # @param campaign [Revox::Models::CallSearchResponse::Call::Campaign, nil]
206
+ #
207
+ # @param contact [Revox::Models::CallSearchResponse::Call::Contact] Magic contact variables (prospect identity) extracted from the call's input data
208
+ #
209
+ # @param created_at [Object] The time the call order was created.
210
+ #
211
+ # @param direction [Symbol, Revox::Models::CallSearchResponse::Call::Direction] Whether the call is inbound or outbound.
212
+ #
213
+ # @param first_sentence_delay_ms [Integer] Delay in milliseconds before speaking the first sentence. Default: 400.
214
+ #
215
+ # @param from_phone_number [String] The phone number that made the call. Formatted in E.164 format. Example: +123456
216
+ #
217
+ # @param is_cancelled [Boolean] DEPRECATED: Whether the call has been cancelled. This is derived from `status`.
218
+ #
219
+ # @param is_completed [Boolean] DEPRECATED: Whether the call has completed. This is derived from `status`. Use `
220
+ #
221
+ # @param last_call_attempt [Revox::Models::CallSearchResponse::Call::LastCallAttempt, nil] This represent a single call attempt. A call attempt is a single call made to th
222
+ #
223
+ # @param llm_model [Revox::Models::CallSearchResponse::Call::LlmModel::UnionMember0, Revox::Models::CallSearchResponse::Call::LlmModel::UnionMember1, Revox::Models::CallSearchResponse::Call::LlmModel::UnionMember2, Revox::Models::CallSearchResponse::Call::LlmModel::UnionMember3]
224
+ #
225
+ # @param metadata [Hash{Symbol=>String}, nil] Metadata stored with the call.
226
+ #
227
+ # @param organization_id [String] The ID of the organization that owns the call.
228
+ #
229
+ # @param prompt_variables [Hash{Symbol=>String}, nil] Variables used to interpolate the prompt.
230
+ #
231
+ # @param scheduled_at [Object] The time the call order is scheduled to start.
232
+ #
233
+ # @param status [Symbol, Revox::Models::CallSearchResponse::Call::Status] The status of the call.
234
+ #
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::CallSearchResponse::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::CallSearchResponse::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
279
+
280
+ # @see Revox::Models::CallSearchResponse::Call#assistant
281
+ class Assistant < Revox::Internal::Type::BaseModel
282
+ # @!attribute id
283
+ #
284
+ # @return [String]
285
+ required :id, String
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::CallSearchResponse::Call::Assistant::AfterCallSMSOutcome>, nil]
292
+ required :after_call_sms_outcomes,
293
+ -> { Revox::Internal::Type::ArrayOf[enum: Revox::Models::CallSearchResponse::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
+
303
+ # @!attribute background_sound
304
+ # Ambient background sound to play during the call. null disables it.
305
+ #
306
+ # @return [Symbol, Revox::Models::CallSearchResponse::Call::Assistant::BackgroundSound, nil]
307
+ required :background_sound,
308
+ enum: -> { Revox::Models::CallSearchResponse::Call::Assistant::BackgroundSound },
309
+ nil?: true
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
+
317
+ # @!attribute calendly
318
+ #
319
+ # @return [Revox::Models::CallSearchResponse::Call::Assistant::Calendly, nil]
320
+ required :calendly, -> { Revox::Models::CallSearchResponse::Call::Assistant::Calendly }, nil?: true
321
+
322
+ # @!attribute call_retry_config
323
+ # Configuration for call retry behavior including time windows, delays, and max
324
+ # iterations. If not provided, defaults will be used.
325
+ #
326
+ # @return [Revox::Models::CallSearchResponse::Call::Assistant::CallRetryConfig, nil]
327
+ required :call_retry_config,
328
+ -> { Revox::Models::CallSearchResponse::Call::Assistant::CallRetryConfig },
329
+ nil?: true
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
+
337
+ # @!attribute created_at
338
+ #
339
+ # @return [Object]
340
+ required :created_at, Revox::Internal::Type::Unknown
341
+
342
+ # @!attribute custom_tools
343
+ #
344
+ # @return [Array<Revox::Models::CallSearchResponse::Call::Assistant::CustomTool>, nil]
345
+ required :custom_tools,
346
+ -> { Revox::Internal::Type::ArrayOf[Revox::Models::CallSearchResponse::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::CallSearchResponse::Call::Assistant::EmailNotificationLanguage]
361
+ required :email_notification_language,
362
+ enum: -> { Revox::Models::CallSearchResponse::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::CallSearchResponse::Call::Assistant::EmailNotificationOutcome>, nil]
369
+ required :email_notification_outcomes,
370
+ -> { Revox::Internal::Type::ArrayOf[enum: Revox::Models::CallSearchResponse::Call::Assistant::EmailNotificationOutcome] },
371
+ nil?: true
372
+
373
+ # @!attribute end_of_call_sentence
374
+ #
375
+ # @return [String, nil]
376
+ required :end_of_call_sentence, String, nil?: true
377
+
378
+ # @!attribute first_sentence
379
+ #
380
+ # @return [String, nil]
381
+ required :first_sentence, String, nil?: true
382
+
383
+ # @!attribute first_sentence_delay_ms
384
+ # Delay in milliseconds before speaking the first sentence. Default: 400.
385
+ #
386
+ # @return [Integer]
387
+ required :first_sentence_delay_ms, Integer
388
+
389
+ # @!attribute first_sentence_mode
390
+ #
391
+ # @return [Symbol, Revox::Models::CallSearchResponse::Call::Assistant::FirstSentenceMode]
392
+ required :first_sentence_mode,
393
+ enum: -> { Revox::Models::CallSearchResponse::Call::Assistant::FirstSentenceMode }
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::CallSearchResponse::Call::Assistant::HumanTransferMode, nil]
407
+ required :human_transfer_mode,
408
+ enum: -> { Revox::Models::CallSearchResponse::Call::Assistant::HumanTransferMode },
409
+ nil?: true
410
+
411
+ # @!attribute ivr_navigation_enabled
412
+ # Enable IVR navigation tools. When enabled, the assistant can send DTMF tones and
413
+ # skip turns to navigate phone menus.
414
+ #
415
+ # @return [Boolean]
416
+ required :ivr_navigation_enabled, Revox::Internal::Type::Boolean
417
+
418
+ # @!attribute llm_model
419
+ #
420
+ # @return [Revox::Models::CallSearchResponse::Call::Assistant::LlmModel::UnionMember0, Revox::Models::CallSearchResponse::Call::Assistant::LlmModel::UnionMember1, Revox::Models::CallSearchResponse::Call::Assistant::LlmModel::UnionMember2, Revox::Models::CallSearchResponse::Call::Assistant::LlmModel::UnionMember3]
421
+ required :llm_model, union: -> { Revox::Models::CallSearchResponse::Call::Assistant::LlmModel }
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
+
430
+ # @!attribute max_call_duration_secs
431
+ # The maximum duration of the call in seconds. This is the maximum time the call
432
+ # will be allowed to run.
433
+ #
434
+ # @return [Float]
435
+ required :max_call_duration_secs, Float
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
+
445
+ # @!attribute name
446
+ #
447
+ # @return [String]
448
+ required :name, String
449
+
450
+ # @!attribute organization_id
451
+ #
452
+ # @return [String]
453
+ required :organization_id, String
454
+
455
+ # @!attribute position
456
+ #
457
+ # @return [Revox::Models::CallSearchResponse::Call::Assistant::Position, nil]
458
+ required :position, -> { Revox::Models::CallSearchResponse::Call::Assistant::Position }, nil?: true
459
+
460
+ # @!attribute prompt
461
+ #
462
+ # @return [String]
463
+ required :prompt, String
464
+
465
+ # @!attribute prompt_flow
466
+ #
467
+ # @return [Revox::Models::CallSearchResponse::Call::Assistant::PromptFlow, nil]
468
+ required :prompt_flow, -> { Revox::Models::CallSearchResponse::Call::Assistant::PromptFlow }, nil?: true
469
+
470
+ # @!attribute slack
471
+ #
472
+ # @return [Revox::Models::CallSearchResponse::Call::Assistant::Slack, nil]
473
+ required :slack, -> { Revox::Models::CallSearchResponse::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
+
490
+ # @!attribute structured_output_config
491
+ # The structured output config to use for the call. This is used to extract the
492
+ # data from the call (like email, name, company name, etc.).
493
+ #
494
+ # @return [Array<Revox::Models::CallSearchResponse::Call::Assistant::StructuredOutputConfig>, nil]
495
+ required :structured_output_config,
496
+ -> { Revox::Internal::Type::ArrayOf[Revox::Models::CallSearchResponse::Call::Assistant::StructuredOutputConfig] },
497
+ nil?: true
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::CallSearchResponse::Call::Assistant::SttContext, nil]
513
+ required :stt_context, -> { Revox::Models::CallSearchResponse::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::CallSearchResponse::Call::Assistant::SttModel]
519
+ required :stt_model, enum: -> { Revox::Models::CallSearchResponse::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::CallSearchResponse::Call::Assistant::ThinkingSound, nil]
526
+ required :thinking_sound,
527
+ enum: -> { Revox::Models::CallSearchResponse::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
+
543
+ # @!attribute transfer_phone_number
544
+ # Phone number to transfer calls to when users request to speak to a human agent.
545
+ #
546
+ # @return [String, nil]
547
+ required :transfer_phone_number, String, nil?: true
548
+
549
+ # @!attribute type
550
+ #
551
+ # @return [Symbol, Revox::Models::CallSearchResponse::Call::Assistant::Type]
552
+ required :type, enum: -> { Revox::Models::CallSearchResponse::Call::Assistant::Type }
553
+
554
+ # @!attribute updated_at
555
+ #
556
+ # @return [Object]
557
+ required :updated_at, Revox::Internal::Type::Unknown
558
+
559
+ # @!attribute voice
560
+ #
561
+ # @return [Revox::Models::CallSearchResponse::Call::Assistant::Voice, nil]
562
+ required :voice, -> { Revox::Models::CallSearchResponse::Call::Assistant::Voice }, nil?: true
563
+
564
+ # @!attribute voicemail_message
565
+ # If set, when voicemail is detected the agent will speak this message then hang
566
+ # up; if null, hang up immediately.
567
+ #
568
+ # @return [String, nil]
569
+ required :voicemail_message, String, nil?: true
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
+
585
+ # @!attribute webhook_url
586
+ # The webhook URL to call when the call is completed.
587
+ #
588
+ # @return [String, nil]
589
+ required :webhook_url, String, nil?: true
590
+
591
+ # @!attribute zoho
592
+ #
593
+ # @return [Revox::Models::CallSearchResponse::Call::Assistant::Zoho, nil]
594
+ required :zoho, -> { Revox::Models::CallSearchResponse::Call::Assistant::Zoho }, nil?: true
595
+
596
+ # @!attribute created_by
597
+ # The user who created the assistant.
598
+ #
599
+ # @return [Revox::Models::CallSearchResponse::Call::Assistant::CreatedBy, nil]
600
+ optional :created_by, -> { Revox::Models::CallSearchResponse::Call::Assistant::CreatedBy }, nil?: true
601
+
602
+ # @!attribute faq_items
603
+ #
604
+ # @return [Array<Revox::Models::CallSearchResponse::Call::Assistant::FaqItem>, nil]
605
+ optional :faq_items,
606
+ -> { Revox::Internal::Type::ArrayOf[Revox::Models::CallSearchResponse::Call::Assistant::FaqItem] }
607
+
608
+ # @!attribute is_realestate_assistant
609
+ #
610
+ # @return [Boolean, nil]
611
+ optional :is_realestate_assistant, Revox::Internal::Type::Boolean
612
+
613
+ # @!attribute pending_faq_count
614
+ #
615
+ # @return [Float, nil]
616
+ optional :pending_faq_count, Float
617
+
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)
619
+ # Some parameter documentations has been truncated, see
620
+ # {Revox::Models::CallSearchResponse::Call::Assistant} for more details.
621
+ #
622
+ # @param id [String]
623
+ #
624
+ # @param after_call_sms_outcomes [Array<Symbol, Revox::Models::CallSearchResponse::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::CallSearchResponse::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).
631
+ #
632
+ # @param calendly [Revox::Models::CallSearchResponse::Call::Assistant::Calendly, nil]
633
+ #
634
+ # @param call_retry_config [Revox::Models::CallSearchResponse::Call::Assistant::CallRetryConfig, nil] Configuration for call retry behavior including time windows, delays, and max it
635
+ #
636
+ # @param cartesia_dictionary_pronunciation_id [String, nil] Optional Cartesia pronunciation dictionary ID linked to this assistant.
637
+ #
638
+ # @param created_at [Object]
639
+ #
640
+ # @param custom_tools [Array<Revox::Models::CallSearchResponse::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::CallSearchResponse::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::CallSearchResponse::Call::Assistant::EmailNotificationOutcome>, nil] Which call outcomes trigger an email notification. E.g. ["interested", "complete
647
+ #
648
+ # @param end_of_call_sentence [String, nil]
649
+ #
650
+ # @param first_sentence [String, nil]
651
+ #
652
+ # @param first_sentence_delay_ms [Integer] Delay in milliseconds before speaking the first sentence. Default: 400.
653
+ #
654
+ # @param first_sentence_mode [Symbol, Revox::Models::CallSearchResponse::Call::Assistant::FirstSentenceMode]
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::CallSearchResponse::Call::Assistant::HumanTransferMode, nil] Warm or cold transfer when transfer_phone_number is set; null when transfer is n
659
+ #
660
+ # @param ivr_navigation_enabled [Boolean] Enable IVR navigation tools. When enabled, the assistant can send DTMF tones and
661
+ #
662
+ # @param llm_model [Revox::Models::CallSearchResponse::Call::Assistant::LlmModel::UnionMember0, Revox::Models::CallSearchResponse::Call::Assistant::LlmModel::UnionMember1, Revox::Models::CallSearchResponse::Call::Assistant::LlmModel::UnionMember2, Revox::Models::CallSearchResponse::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
665
+ #
666
+ # @param max_call_duration_secs [Float] The maximum duration of the call in seconds. This is the maximum time the call w
667
+ #
668
+ # @param max_duration_end_message [String, nil] Optional message the agent will say, without being interruptible, when the call
669
+ #
670
+ # @param name [String]
671
+ #
672
+ # @param organization_id [String]
673
+ #
674
+ # @param position [Revox::Models::CallSearchResponse::Call::Assistant::Position, nil]
675
+ #
676
+ # @param prompt [String]
677
+ #
678
+ # @param prompt_flow [Revox::Models::CallSearchResponse::Call::Assistant::PromptFlow, nil]
679
+ #
680
+ # @param slack [Revox::Models::CallSearchResponse::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
+ #
686
+ # @param structured_output_config [Array<Revox::Models::CallSearchResponse::Call::Assistant::StructuredOutputConfig>, nil] The structured output config to use for the call. This is used to extract the da
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::CallSearchResponse::Call::Assistant::SttContext, nil] Assistant-level speech-to-text context: structured `general` key/value pairs plu
691
+ #
692
+ # @param stt_model [Symbol, Revox::Models::CallSearchResponse::Call::Assistant::SttModel] Transcriber (speech-to-text) model used for the assistant.
693
+ #
694
+ # @param thinking_sound [Symbol, Revox::Models::CallSearchResponse::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
+ #
700
+ # @param transfer_phone_number [String, nil] Phone number to transfer calls to when users request to speak to a human agent.
701
+ #
702
+ # @param type [Symbol, Revox::Models::CallSearchResponse::Call::Assistant::Type]
703
+ #
704
+ # @param updated_at [Object]
705
+ #
706
+ # @param voice [Revox::Models::CallSearchResponse::Call::Assistant::Voice, nil]
707
+ #
708
+ # @param voicemail_message [String, nil] If set, when voicemail is detected the agent will speak this message then hang u
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
+ #
714
+ # @param webhook_url [String, nil] The webhook URL to call when the call is completed.
715
+ #
716
+ # @param zoho [Revox::Models::CallSearchResponse::Call::Assistant::Zoho, nil]
717
+ #
718
+ # @param created_by [Revox::Models::CallSearchResponse::Call::Assistant::CreatedBy, nil] The user who created the assistant.
719
+ #
720
+ # @param faq_items [Array<Revox::Models::CallSearchResponse::Call::Assistant::FaqItem>]
721
+ #
722
+ # @param is_realestate_assistant [Boolean]
723
+ #
724
+ # @param pending_faq_count [Float]
725
+
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.
743
+ #
744
+ # @see Revox::Models::CallSearchResponse::Call::Assistant#background_sound
745
+ module BackgroundSound
746
+ extend Revox::Internal::Type::Enum
747
+
748
+ AUDIO_OFFICE_OGG = :"audio/office.ogg"
749
+
750
+ # @!method self.values
751
+ # @return [Array<Symbol>]
752
+ end
753
+
754
+ # @see Revox::Models::CallSearchResponse::Call::Assistant#calendly
755
+ class Calendly < Revox::Internal::Type::BaseModel
756
+ # @!attribute connection_id
757
+ # The connection ID representing the link between your Calendly account and Revox.
758
+ #
759
+ # @return [String]
760
+ required :connection_id, String
761
+
762
+ # @!attribute event_type_id
763
+ # The event type ID representing the event type to schedule. (eg:
764
+ # https://api.calendly.com/event_types/b2330295-2a91-4a1d-bb73-99e7707663d5)
765
+ #
766
+ # @return [String]
767
+ required :event_type_id, String
768
+
769
+ # @!method initialize(connection_id:, event_type_id:)
770
+ # Some parameter documentations has been truncated, see
771
+ # {Revox::Models::CallSearchResponse::Call::Assistant::Calendly} for more details.
772
+ #
773
+ # @param connection_id [String] The connection ID representing the link between your Calendly account and Revox.
774
+ #
775
+ # @param event_type_id [String] The event type ID representing the event type to schedule. (eg: https://api.cale
776
+ end
777
+
778
+ # @see Revox::Models::CallSearchResponse::Call::Assistant#call_retry_config
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::CallSearchResponse::Call::Assistant::CallRetryConfig::AllowedDay>]
785
+ required :allowed_days,
786
+ -> { Revox::Internal::Type::ArrayOf[enum: Revox::Models::CallSearchResponse::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
+
797
+ # @!attribute calling_windows
798
+ #
799
+ # @return [Array<Revox::Models::CallSearchResponse::Call::Assistant::CallRetryConfig::CallingWindow>]
800
+ required :calling_windows,
801
+ -> { Revox::Internal::Type::ArrayOf[Revox::Models::CallSearchResponse::Call::Assistant::CallRetryConfig::CallingWindow] }
802
+
803
+ # @!attribute max_retry_attempts
804
+ # Maximum number of call retry attempts. Default: 3.
805
+ #
806
+ # @return [Integer]
807
+ required :max_retry_attempts, Integer
808
+
809
+ # @!attribute timezone
810
+ # Optional IANA timezone identifier to override the automatic timezone detection
811
+ # from phone number. If not provided, timezone is determined from the recipient's
812
+ # phone number country code. Examples: 'America/New_York', 'Europe/Paris'.
813
+ #
814
+ # @return [String, nil]
815
+ optional :timezone, String, nil?: true
816
+
817
+ # @!method initialize(allowed_days:, call_twice_in_a_row:, calling_windows:, max_retry_attempts:, timezone: nil)
818
+ # Some parameter documentations has been truncated, see
819
+ # {Revox::Models::CallSearchResponse::Call::Assistant::CallRetryConfig} for more
820
+ # details.
821
+ #
822
+ # Configuration for call retry behavior including time windows, delays, and max
823
+ # iterations. If not provided, defaults will be used.
824
+ #
825
+ # @param allowed_days [Array<Symbol, Revox::Models::CallSearchResponse::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
+ #
829
+ # @param calling_windows [Array<Revox::Models::CallSearchResponse::Call::Assistant::CallRetryConfig::CallingWindow>]
830
+ #
831
+ # @param max_retry_attempts [Integer] Maximum number of call retry attempts. Default: 3.
832
+ #
833
+ # @param timezone [String, nil] Optional IANA timezone identifier to override the automatic timezone detection f
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
+
850
+ class CallingWindow < Revox::Internal::Type::BaseModel
851
+ # @!attribute calling_window_end_time
852
+ # End time for the calling window in the recipient's timezone (or
853
+ # timezone_override if provided). Format: 'HH:mm' (24-hour) or 'H:mma' (12-hour).
854
+ # Examples: '17:00', '6pm'. Default: '18:00'.
855
+ #
856
+ # @return [String]
857
+ required :calling_window_end_time, String
858
+
859
+ # @!attribute calling_window_start_time
860
+ # Start time for the calling window in the recipient's timezone (or
861
+ # timezone_override if provided). Format: 'HH:mm' (24-hour) or 'H:mma' (12-hour).
862
+ # Examples: '09:00', '10am'. Default: '10:00'.
863
+ #
864
+ # @return [String]
865
+ required :calling_window_start_time, String
866
+
867
+ # @!attribute retry_delay_seconds
868
+ # Delay between retry attempts in seconds. Default: 7200 (2 hours).
869
+ #
870
+ # @return [Integer]
871
+ required :retry_delay_seconds, Integer
872
+
873
+ # @!method initialize(calling_window_end_time:, calling_window_start_time:, retry_delay_seconds:)
874
+ # Some parameter documentations has been truncated, see
875
+ # {Revox::Models::CallSearchResponse::Call::Assistant::CallRetryConfig::CallingWindow}
876
+ # for more details.
877
+ #
878
+ # @param calling_window_end_time [String] End time for the calling window in the recipient's timezone (or timezone_overrid
879
+ #
880
+ # @param calling_window_start_time [String] Start time for the calling window in the recipient's timezone (or timezone_overr
881
+ #
882
+ # @param retry_delay_seconds [Integer] Delay between retry attempts in seconds. Default: 7200 (2 hours).
883
+ end
884
+ end
885
+
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
893
+
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
900
+
901
+ # @!attribute headers
902
+ # HTTP headers to include in the request. Values support {{variable}} placeholders
903
+ #
904
+ # @return [Array<Revox::Models::CallSearchResponse::Call::Assistant::CustomTool::Header>]
905
+ required :headers,
906
+ -> { Revox::Internal::Type::ArrayOf[Revox::Models::CallSearchResponse::Call::Assistant::CustomTool::Header] }
907
+
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::CallSearchResponse::Call::Assistant::CustomTool::InputSchema>]
913
+ required :input_schema,
914
+ -> { Revox::Internal::Type::ArrayOf[Revox::Models::CallSearchResponse::Call::Assistant::CustomTool::InputSchema] }
915
+
916
+ # @!attribute method_
917
+ # HTTP method to use when calling the API endpoint
918
+ #
919
+ # @return [Symbol, Revox::Models::CallSearchResponse::Call::Assistant::CustomTool::Method]
920
+ required :method_,
921
+ enum: -> { Revox::Models::CallSearchResponse::Call::Assistant::CustomTool::Method },
922
+ api_name: :method
923
+
924
+ # @!attribute name
925
+ # Unique tool name in lowercase_snake_case (e.g. check_inventory)
926
+ #
927
+ # @return [String]
928
+ required :name, String
929
+
930
+ # @!attribute query_params
931
+ # Query string parameters appended to the URL. Values support {{variable}}
932
+ # placeholders
933
+ #
934
+ # @return [Array<Revox::Models::CallSearchResponse::Call::Assistant::CustomTool::QueryParam>]
935
+ required :query_params,
936
+ -> { Revox::Internal::Type::ArrayOf[Revox::Models::CallSearchResponse::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::CallSearchResponse::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::CallSearchResponse::Call::Assistant::CustomTool::Header>] HTTP headers to include in the request. Values support {{variable}} placeholders
955
+ #
956
+ # @param input_schema [Array<Revox::Models::CallSearchResponse::Call::Assistant::CustomTool::InputSchema>] Schema defining the parameters the LLM should extract from the conversation to p
957
+ #
958
+ # @param method_ [Symbol, Revox::Models::CallSearchResponse::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::CallSearchResponse::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
983
+ # @!attribute name
984
+ #
985
+ # @return [String]
986
+ required :name, String
987
+
988
+ # @!attribute required
989
+ #
990
+ # @return [Boolean]
991
+ required :required, Revox::Internal::Type::Boolean
992
+
993
+ # @!attribute type
994
+ #
995
+ # @return [Symbol, Revox::Models::CallSearchResponse::Call::Assistant::CustomTool::InputSchema::Type]
996
+ required :type,
997
+ enum: -> { Revox::Models::CallSearchResponse::Call::Assistant::CustomTool::InputSchema::Type }
998
+
999
+ # @!attribute description
1000
+ #
1001
+ # @return [String, nil]
1002
+ optional :description, String
1003
+
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::CallSearchResponse::Call::Assistant::CustomTool::InputSchema::Type]
1013
+ # @param description [String]
1014
+ # @param enum_options [Array<String>]
1015
+
1016
+ # @see Revox::Models::CallSearchResponse::Call::Assistant::CustomTool::InputSchema#type
1017
+ module Type
1018
+ extend Revox::Internal::Type::Enum
1019
+
1020
+ STRING = :string
1021
+ NUMBER = :number
1022
+ BOOLEAN = :boolean
1023
+ ENUM = :enum
1024
+ DATE = :date
1025
+ DATETIME = :datetime
1026
+
1027
+ # @!method self.values
1028
+ # @return [Array<Symbol>]
1029
+ end
1030
+ end
1031
+
1032
+ # HTTP method to use when calling the API endpoint
1033
+ #
1034
+ # @see Revox::Models::CallSearchResponse::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
1050
+ #
1051
+ # @return [String]
1052
+ required :key, String
1053
+
1054
+ # @!attribute value
1055
+ #
1056
+ # @return [String]
1057
+ required :value, String
1058
+
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::CallSearchResponse::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::CallSearchResponse::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::CallSearchResponse::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::CallSearchResponse::Call::Assistant#llm_model
1121
+ module LlmModel
1122
+ extend Revox::Internal::Type::Union
1123
+
1124
+ variant -> { Revox::Models::CallSearchResponse::Call::Assistant::LlmModel::UnionMember0 }
1125
+
1126
+ variant -> { Revox::Models::CallSearchResponse::Call::Assistant::LlmModel::UnionMember1 }
1127
+
1128
+ variant -> { Revox::Models::CallSearchResponse::Call::Assistant::LlmModel::UnionMember2 }
1129
+
1130
+ variant -> { Revox::Models::CallSearchResponse::Call::Assistant::LlmModel::UnionMember3 }
1131
+
1132
+ class UnionMember0 < Revox::Internal::Type::BaseModel
1133
+ # @!attribute name
1134
+ #
1135
+ # @return [Symbol, Revox::Models::CallSearchResponse::Call::Assistant::LlmModel::UnionMember0::Name]
1136
+ required :name,
1137
+ enum: -> { Revox::Models::CallSearchResponse::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::CallSearchResponse::Call::Assistant::LlmModel::UnionMember0::Name]
1146
+ # @param type [Symbol, :"dedicated-instance"]
1147
+
1148
+ # @see Revox::Models::CallSearchResponse::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.
1175
+ #
1176
+ # @return [Symbol, :openrouter]
1177
+ required :type, const: :openrouter
1178
+
1179
+ # @!method initialize(openrouter_model_id:, openrouter_provider:, type: :openrouter)
1180
+ # @param openrouter_model_id [String] The model ID to use from OpenRouter. eg: openai/gpt-4.1
1181
+ #
1182
+ # @param openrouter_provider [String] The provider to use from OpenRouter. eg: nebius, openai, azure, etc.
1183
+ #
1184
+ # @param type [Symbol, :openrouter] Use a model from OpenRouter.
1185
+ end
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::CallSearchResponse::Call::Assistant::LlmModel::UnionMember3::Provider]
1227
+ required :provider,
1228
+ enum: -> { Revox::Models::CallSearchResponse::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::CallSearchResponse::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::CallSearchResponse::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
+
1271
+ # @!method self.variants
1272
+ # @return [Array(Revox::Models::CallSearchResponse::Call::Assistant::LlmModel::UnionMember0, Revox::Models::CallSearchResponse::Call::Assistant::LlmModel::UnionMember1, Revox::Models::CallSearchResponse::Call::Assistant::LlmModel::UnionMember2, Revox::Models::CallSearchResponse::Call::Assistant::LlmModel::UnionMember3)]
1273
+ end
1274
+
1275
+ # @see Revox::Models::CallSearchResponse::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::CallSearchResponse::Call::Assistant#prompt_flow
1293
+ class PromptFlow < Revox::Internal::Type::BaseModel
1294
+ # @!attribute edges
1295
+ #
1296
+ # @return [Array<Revox::Models::CallSearchResponse::Call::Assistant::PromptFlow::Edge>]
1297
+ required :edges,
1298
+ -> { Revox::Internal::Type::ArrayOf[Revox::Models::CallSearchResponse::Call::Assistant::PromptFlow::Edge] }
1299
+
1300
+ # @!attribute nodes
1301
+ #
1302
+ # @return [Array<Revox::Models::CallSearchResponse::Call::Assistant::PromptFlow::Node>]
1303
+ required :nodes,
1304
+ -> { Revox::Internal::Type::ArrayOf[Revox::Models::CallSearchResponse::Call::Assistant::PromptFlow::Node] }
1305
+
1306
+ # @!method initialize(edges:, nodes:)
1307
+ # @param edges [Array<Revox::Models::CallSearchResponse::Call::Assistant::PromptFlow::Edge>]
1308
+ # @param nodes [Array<Revox::Models::CallSearchResponse::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::CallSearchResponse::Call::Assistant::PromptFlow::Node::Data]
1341
+ required :data, -> { Revox::Models::CallSearchResponse::Call::Assistant::PromptFlow::Node::Data }
1342
+
1343
+ # @!attribute position
1344
+ #
1345
+ # @return [Revox::Models::CallSearchResponse::Call::Assistant::PromptFlow::Node::Position]
1346
+ required :position, -> { Revox::Models::CallSearchResponse::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::CallSearchResponse::Call::Assistant::PromptFlow::Node::Data]
1356
+ # @param position [Revox::Models::CallSearchResponse::Call::Assistant::PromptFlow::Node::Position]
1357
+ # @param type [Symbol, :promptBlock]
1358
+
1359
+ # @see Revox::Models::CallSearchResponse::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::CallSearchResponse::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::CallSearchResponse::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::CallSearchResponse::Call::Assistant::Slack::Outcome>]
1414
+ required :outcomes,
1415
+ -> { Revox::Internal::Type::ArrayOf[enum: Revox::Models::CallSearchResponse::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::CallSearchResponse::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::CallSearchResponse::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
1463
+ end
1464
+
1465
+ class StructuredOutputConfig < Revox::Internal::Type::BaseModel
1466
+ # @!attribute name
1467
+ #
1468
+ # @return [String]
1469
+ required :name, String
1470
+
1471
+ # @!attribute required
1472
+ #
1473
+ # @return [Boolean]
1474
+ required :required, Revox::Internal::Type::Boolean
1475
+
1476
+ # @!attribute type
1477
+ #
1478
+ # @return [Symbol, Revox::Models::CallSearchResponse::Call::Assistant::StructuredOutputConfig::Type]
1479
+ required :type,
1480
+ enum: -> { Revox::Models::CallSearchResponse::Call::Assistant::StructuredOutputConfig::Type }
1481
+
1482
+ # @!attribute description
1483
+ #
1484
+ # @return [String, nil]
1485
+ optional :description, String
1486
+
1487
+ # @!attribute enum_options
1488
+ #
1489
+ # @return [Array<String>, nil]
1490
+ optional :enum_options, Revox::Internal::Type::ArrayOf[String]
1491
+
1492
+ # @!method initialize(name:, required:, type:, description: nil, enum_options: nil)
1493
+ # @param name [String]
1494
+ # @param required [Boolean]
1495
+ # @param type [Symbol, Revox::Models::CallSearchResponse::Call::Assistant::StructuredOutputConfig::Type]
1496
+ # @param description [String]
1497
+ # @param enum_options [Array<String>]
1498
+
1499
+ # @see Revox::Models::CallSearchResponse::Call::Assistant::StructuredOutputConfig#type
1500
+ module Type
1501
+ extend Revox::Internal::Type::Enum
1502
+
1503
+ STRING = :string
1504
+ NUMBER = :number
1505
+ BOOLEAN = :boolean
1506
+ ENUM = :enum
1507
+ DATE = :date
1508
+ DATETIME = :datetime
1509
+
1510
+ # @!method self.values
1511
+ # @return [Array<Symbol>]
1512
+ end
1513
+ end
1514
+
1515
+ # @see Revox::Models::CallSearchResponse::Call::Assistant#stt_context
1516
+ class SttContext < Revox::Internal::Type::BaseModel
1517
+ # @!attribute general
1518
+ #
1519
+ # @return [Array<Revox::Models::CallSearchResponse::Call::Assistant::SttContext::General>]
1520
+ required :general,
1521
+ -> { Revox::Internal::Type::ArrayOf[Revox::Models::CallSearchResponse::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::CallSearchResponse::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::CallSearchResponse::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::CallSearchResponse::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::CallSearchResponse::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
+
1597
+ # @see Revox::Models::CallSearchResponse::Call::Assistant#voice
1598
+ class Voice < Revox::Internal::Type::BaseModel
1599
+ # @!attribute id
1600
+ # The ID of the voice.
1601
+ #
1602
+ # @return [String]
1603
+ required :id, String
1604
+
1605
+ # @!attribute provider
1606
+ # The provider of the voice.
1607
+ #
1608
+ # @return [Symbol, Revox::Models::CallSearchResponse::Call::Assistant::Voice::Provider]
1609
+ required :provider, enum: -> { Revox::Models::CallSearchResponse::Call::Assistant::Voice::Provider }
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::CallSearchResponse::Call::Assistant::Voice::Model, nil]
1616
+ optional :model, enum: -> { Revox::Models::CallSearchResponse::Call::Assistant::Voice::Model }
1617
+
1618
+ # @!attribute speed
1619
+ # The speed of the voice. Range depends on provider: Cartesia 0.6–1.5, ElevenLabs
1620
+ # 0.7–1.2. Default is 1.0.
1621
+ #
1622
+ # @return [Float, nil]
1623
+ optional :speed, Float
1624
+
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)
1633
+ # Some parameter documentations has been truncated, see
1634
+ # {Revox::Models::CallSearchResponse::Call::Assistant::Voice} for more details.
1635
+ #
1636
+ # @param id [String] The ID of the voice.
1637
+ #
1638
+ # @param provider [Symbol, Revox::Models::CallSearchResponse::Call::Assistant::Voice::Provider] The provider of the voice.
1639
+ #
1640
+ # @param model [Symbol, Revox::Models::CallSearchResponse::Call::Assistant::Voice::Model] Cartesia TTS model (Cartesia only). Defaults to sonic-3 when omitted. Ignored fo
1641
+ #
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
1645
+
1646
+ # The provider of the voice.
1647
+ #
1648
+ # @see Revox::Models::CallSearchResponse::Call::Assistant::Voice#provider
1649
+ module Provider
1650
+ extend Revox::Internal::Type::Enum
1651
+
1652
+ CARTESIA = :cartesia
1653
+ ELEVENLABS = :elevenlabs
1654
+
1655
+ # @!method self.values
1656
+ # @return [Array<Symbol>]
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::CallSearchResponse::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::CallSearchResponse::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::CallSearchResponse::Call::Assistant::Zoho::FieldMapping>]
1687
+ required :field_mapping,
1688
+ -> { Revox::Internal::Type::ArrayOf[Revox::Models::CallSearchResponse::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::CallSearchResponse::Call::Assistant::Zoho::Outcome>]
1708
+ required :outcomes,
1709
+ -> { Revox::Internal::Type::ArrayOf[enum: Revox::Models::CallSearchResponse::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::CallSearchResponse::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::CallSearchResponse::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::CallSearchResponse::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::CallSearchResponse::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::CallSearchResponse::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]
1811
+ end
1812
+
1813
+ class FaqItem < Revox::Internal::Type::BaseModel
1814
+ # @!attribute answer
1815
+ #
1816
+ # @return [String]
1817
+ required :answer, String
1818
+
1819
+ # @!attribute question
1820
+ #
1821
+ # @return [String]
1822
+ required :question, String
1823
+
1824
+ # @!attribute id
1825
+ #
1826
+ # @return [String, nil]
1827
+ optional :id, String
1828
+
1829
+ # @!attribute needs_human_answer
1830
+ #
1831
+ # @return [Boolean, nil]
1832
+ optional :needs_human_answer, Revox::Internal::Type::Boolean
1833
+
1834
+ # @!attribute source
1835
+ #
1836
+ # @return [Symbol, Revox::Models::CallSearchResponse::Call::Assistant::FaqItem::Source, nil]
1837
+ optional :source, enum: -> { Revox::Models::CallSearchResponse::Call::Assistant::FaqItem::Source }
1838
+
1839
+ # @!method initialize(answer:, question:, id: nil, needs_human_answer: nil, source: nil)
1840
+ # @param answer [String]
1841
+ # @param question [String]
1842
+ # @param id [String]
1843
+ # @param needs_human_answer [Boolean]
1844
+ # @param source [Symbol, Revox::Models::CallSearchResponse::Call::Assistant::FaqItem::Source]
1845
+
1846
+ # @see Revox::Models::CallSearchResponse::Call::Assistant::FaqItem#source
1847
+ module Source
1848
+ extend Revox::Internal::Type::Enum
1849
+
1850
+ HUMAN = :human
1851
+ AI = :ai
1852
+
1853
+ # @!method self.values
1854
+ # @return [Array<Symbol>]
1855
+ end
1856
+ end
1857
+ end
1858
+
1859
+ class CallAttempt < Revox::Internal::Type::BaseModel
1860
+ # @!attribute id
1861
+ # The ID of the call attempt.
1862
+ #
1863
+ # @return [String]
1864
+ required :id, String
1865
+
1866
+ # @!attribute answered_at
1867
+ # The time the call was answered.
1868
+ #
1869
+ # @return [Object]
1870
+ required :answered_at, Revox::Internal::Type::Unknown
1871
+
1872
+ # @!attribute dial_error
1873
+ # The SIP error that occurred.
1874
+ #
1875
+ # @return [Symbol, Revox::Models::CallSearchResponse::Call::CallAttempt::DialError, nil]
1876
+ required :dial_error,
1877
+ enum: -> { Revox::Models::CallSearchResponse::Call::CallAttempt::DialError },
1878
+ nil?: true
1879
+
1880
+ # @!attribute ended_at
1881
+ # The time the call ended.
1882
+ #
1883
+ # @return [Object]
1884
+ required :ended_at, Revox::Internal::Type::Unknown
1885
+
1886
+ # @!attribute phone_number
1887
+ # The phone number that was called. Formatted in E.164 format. Example:
1888
+ # +1234567890
1889
+ #
1890
+ # @return [String]
1891
+ required :phone_number, String
1892
+
1893
+ # @!attribute recording_url
1894
+ # The URL of the audio recording of the call.
1895
+ #
1896
+ # @return [String, nil]
1897
+ required :recording_url, String, nil?: true
1898
+
1899
+ # @!attribute result
1900
+ #
1901
+ # @return [Symbol, Revox::Models::CallSearchResponse::Call::CallAttempt::Result, nil]
1902
+ required :result, enum: -> { Revox::Models::CallSearchResponse::Call::CallAttempt::Result }, nil?: true
1903
+
1904
+ # @!attribute started_at
1905
+ # The time the call started.
1906
+ #
1907
+ # @return [Object]
1908
+ required :started_at, Revox::Internal::Type::Unknown
1909
+
1910
+ # @!attribute status
1911
+ # The status of the call attempt.
1912
+ #
1913
+ # @return [Symbol, Revox::Models::CallSearchResponse::Call::CallAttempt::Status]
1914
+ required :status, enum: -> { Revox::Models::CallSearchResponse::Call::CallAttempt::Status }
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
+
1922
+ # @!attribute end_reason
1923
+ # Reason for ending the call when ended_by is 'agent'. E.g. 'tool_end_call',
1924
+ # 'voicemail', 'transfer', 'ivr_no_navigate'.
1925
+ #
1926
+ # @return [Symbol, Revox::Models::CallSearchResponse::Call::CallAttempt::EndReason, nil]
1927
+ optional :end_reason,
1928
+ enum: -> { Revox::Models::CallSearchResponse::Call::CallAttempt::EndReason },
1929
+ nil?: true
1930
+
1931
+ # @!attribute ended_by
1932
+ # Who ended the call: 'agent' (AI agent), 'user' (caller/callee hung up), or
1933
+ # 'system' (e.g. max duration limit).
1934
+ #
1935
+ # @return [Symbol, Revox::Models::CallSearchResponse::Call::CallAttempt::EndedBy, nil]
1936
+ optional :ended_by, enum: -> { Revox::Models::CallSearchResponse::Call::CallAttempt::EndedBy }, nil?: true
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::CallSearchResponse::Call::CallAttempt::PostCallTranscript>, nil]
1943
+ optional :post_call_transcript,
1944
+ -> { Revox::Internal::Type::ArrayOf[Revox::Models::CallSearchResponse::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::CallSearchResponse::Call::CallAttempt::SMSLog>, nil]
1953
+ optional :sms_log,
1954
+ -> { Revox::Internal::Type::ArrayOf[Revox::Models::CallSearchResponse::Call::CallAttempt::SMSLog] },
1955
+ nil?: true
1956
+
1957
+ # @!attribute structured_output
1958
+ # The data extracted from the call, using the structured output config from the
1959
+ # parent call object.
1960
+ #
1961
+ # @return [Hash{Symbol=>Object}, nil]
1962
+ optional :structured_output,
1963
+ Revox::Internal::Type::HashOf[Revox::Internal::Type::Unknown],
1964
+ nil?: true
1965
+
1966
+ # @!attribute transcript
1967
+ # The live transcript of the call, built in real time.
1968
+ #
1969
+ # @return [Array<Revox::Models::CallSearchResponse::Call::CallAttempt::Transcript>, nil]
1970
+ optional :transcript,
1971
+ -> { Revox::Internal::Type::ArrayOf[Revox::Models::CallSearchResponse::Call::CallAttempt::Transcript] },
1972
+ nil?: true
1973
+
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)
1975
+ # Some parameter documentations has been truncated, see
1976
+ # {Revox::Models::CallSearchResponse::Call::CallAttempt} for more details.
1977
+ #
1978
+ # This represent a single call attempt. A call attempt is a single call made to
1979
+ # the phone number.
1980
+ #
1981
+ # @param id [String] The ID of the call attempt.
1982
+ #
1983
+ # @param answered_at [Object] The time the call was answered.
1984
+ #
1985
+ # @param dial_error [Symbol, Revox::Models::CallSearchResponse::Call::CallAttempt::DialError, nil] The SIP error that occurred.
1986
+ #
1987
+ # @param ended_at [Object] The time the call ended.
1988
+ #
1989
+ # @param phone_number [String] The phone number that was called. Formatted in E.164 format. Example: +123456789
1990
+ #
1991
+ # @param recording_url [String, nil] The URL of the audio recording of the call.
1992
+ #
1993
+ # @param result [Symbol, Revox::Models::CallSearchResponse::Call::CallAttempt::Result, nil]
1994
+ #
1995
+ # @param started_at [Object] The time the call started.
1996
+ #
1997
+ # @param status [Symbol, Revox::Models::CallSearchResponse::Call::CallAttempt::Status] The status of the call attempt.
1998
+ #
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::CallSearchResponse::Call::CallAttempt::EndReason, nil] Reason for ending the call when ended_by is 'agent'. E.g. 'tool_end_call', 'voic
2002
+ #
2003
+ # @param ended_by [Symbol, Revox::Models::CallSearchResponse::Call::CallAttempt::EndedBy, nil] Who ended the call: 'agent' (AI agent), 'user' (caller/callee hung up), or 'syst
2004
+ #
2005
+ # @param post_call_transcript [Array<Revox::Models::CallSearchResponse::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::CallSearchResponse::Call::CallAttempt::SMSLog>, nil] Automatic SMS sent after the call (voicemail and after-call), ordered oldest fir
2008
+ #
2009
+ # @param structured_output [Hash{Symbol=>Object}, nil] The data extracted from the call, using the structured output config from the pa
2010
+ #
2011
+ # @param transcript [Array<Revox::Models::CallSearchResponse::Call::CallAttempt::Transcript>, nil] The live transcript of the call, built in real time.
2012
+
2013
+ # The SIP error that occurred.
2014
+ #
2015
+ # @see Revox::Models::CallSearchResponse::Call::CallAttempt#dial_error
2016
+ module DialError
2017
+ extend Revox::Internal::Type::Enum
2018
+
2019
+ NUMBER_NON_ATTRIBUTED = :number_non_attributed
2020
+ TOO_MANY_CALLS = :too_many_calls
2021
+ BUSY = :busy
2022
+ TEMPORARILY_UNAVAILABLE = :temporarily_unavailable
2023
+ NO_ANSWER = :no_answer
2024
+ NO_INTERNATIONAL_PERMISSION = :no_international_permission
2025
+ PRECONDITION_FAILED = :precondition_failed
2026
+ NON_CLASSIFIED_ERROR = :non_classified_error
2027
+
2028
+ # @!method self.values
2029
+ # @return [Array<Symbol>]
2030
+ end
2031
+
2032
+ # @see Revox::Models::CallSearchResponse::Call::CallAttempt#result
2033
+ module Result
2034
+ extend Revox::Internal::Type::Enum
2035
+
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::CallSearchResponse::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::CallSearchResponse::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::CallSearchResponse::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::CallSearchResponse::Call::CallAttempt::PostCallTranscript::Role]
2114
+ required :role,
2115
+ enum: -> { Revox::Models::CallSearchResponse::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::CallSearchResponse::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::CallSearchResponse::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::CallSearchResponse::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::CallSearchResponse::Call::CallAttempt::PostCallTranscript#tool_arguments
2160
+ module ToolArguments
2161
+ extend Revox::Internal::Type::Union
2162
+
2163
+ variant -> { Revox::Models::CallSearchResponse::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
2186
+
2187
+ # @!attribute message_body
2188
+ #
2189
+ # @return [String]
2190
+ required :message_body, String
2191
+
2192
+ # @!attribute to_phone_number
2193
+ #
2194
+ # @return [String]
2195
+ required :to_phone_number, String
2196
+
2197
+ # @!attribute twilio_message_sid
2198
+ #
2199
+ # @return [String, nil]
2200
+ required :twilio_message_sid, String, nil?: true
2201
+
2202
+ # @!attribute type
2203
+ #
2204
+ # @return [Symbol, Revox::Models::CallSearchResponse::Call::CallAttempt::SMSLog::Type]
2205
+ required :type, enum: -> { Revox::Models::CallSearchResponse::Call::CallAttempt::SMSLog::Type }
2206
+
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::CallSearchResponse::Call::CallAttempt::SMSLog::Type]
2219
+
2220
+ # @see Revox::Models::CallSearchResponse::Call::CallAttempt::SMSLog#type
2221
+ module Type
2222
+ extend Revox::Internal::Type::Enum
2223
+
2224
+ IN_CALL = :in_call
2225
+ VOICEMAIL = :voicemail
2226
+ AFTER_CALL = :after_call
2227
+
2228
+ # @!method self.values
2229
+ # @return [Array<Symbol>]
2230
+ end
2231
+ end
2232
+
2233
+ class Transcript < Revox::Internal::Type::BaseModel
2234
+ # @!attribute content
2235
+ #
2236
+ # @return [String]
2237
+ required :content, String
2238
+
2239
+ # @!attribute role
2240
+ #
2241
+ # @return [Symbol, Revox::Models::CallSearchResponse::Call::CallAttempt::Transcript::Role]
2242
+ required :role, enum: -> { Revox::Models::CallSearchResponse::Call::CallAttempt::Transcript::Role }
2243
+
2244
+ # @!attribute tool_arguments
2245
+ #
2246
+ # @return [Hash{Symbol=>Object}, String, nil]
2247
+ optional :tool_arguments,
2248
+ union: -> { Revox::Models::CallSearchResponse::Call::CallAttempt::Transcript::ToolArguments }
2249
+
2250
+ # @!attribute tool_is_error
2251
+ #
2252
+ # @return [Boolean, nil]
2253
+ optional :tool_is_error, Revox::Internal::Type::Boolean
2254
+
2255
+ # @!attribute tool_name
2256
+ #
2257
+ # @return [String, nil]
2258
+ optional :tool_name, String
2259
+
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)
2266
+ # @param content [String]
2267
+ # @param role [Symbol, Revox::Models::CallSearchResponse::Call::CallAttempt::Transcript::Role]
2268
+ # @param tool_arguments [Hash{Symbol=>Object}, String]
2269
+ # @param tool_is_error [Boolean]
2270
+ # @param tool_name [String]
2271
+ # @param tool_output [String]
2272
+
2273
+ # @see Revox::Models::CallSearchResponse::Call::CallAttempt::Transcript#role
2274
+ module Role
2275
+ extend Revox::Internal::Type::Enum
2276
+
2277
+ USER = :user
2278
+ ASSISTANT = :assistant
2279
+ HUMAN_AGENT = :human_agent
2280
+ TOOL = :tool
2281
+
2282
+ # @!method self.values
2283
+ # @return [Array<Symbol>]
2284
+ end
2285
+
2286
+ # @see Revox::Models::CallSearchResponse::Call::CallAttempt::Transcript#tool_arguments
2287
+ module ToolArguments
2288
+ extend Revox::Internal::Type::Union
2289
+
2290
+ variant -> { Revox::Models::CallSearchResponse::Call::CallAttempt::Transcript::ToolArguments::UnionMember0Map }
2291
+
2292
+ variant String
2293
+
2294
+ # @!method self.variants
2295
+ # @return [Array(Hash{Symbol=>Object}, String)]
2296
+
2297
+ # @type [Revox::Internal::Type::Converter]
2298
+ UnionMember0Map = Revox::Internal::Type::HashOf[Revox::Internal::Type::Unknown]
2299
+ end
2300
+ end
2301
+ end
2302
+
2303
+ # @see Revox::Models::CallSearchResponse::Call#call_retry_config
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::CallSearchResponse::Call::CallRetryConfig::AllowedDay>]
2310
+ required :allowed_days,
2311
+ -> { Revox::Internal::Type::ArrayOf[enum: Revox::Models::CallSearchResponse::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
+
2322
+ # @!attribute calling_windows
2323
+ #
2324
+ # @return [Array<Revox::Models::CallSearchResponse::Call::CallRetryConfig::CallingWindow>]
2325
+ required :calling_windows,
2326
+ -> { Revox::Internal::Type::ArrayOf[Revox::Models::CallSearchResponse::Call::CallRetryConfig::CallingWindow] }
2327
+
2328
+ # @!attribute max_retry_attempts
2329
+ # Maximum number of call retry attempts. Default: 3.
2330
+ #
2331
+ # @return [Integer]
2332
+ required :max_retry_attempts, Integer
2333
+
2334
+ # @!attribute timezone
2335
+ # Optional IANA timezone identifier to override the automatic timezone detection
2336
+ # from phone number. If not provided, timezone is determined from the recipient's
2337
+ # phone number country code. Examples: 'America/New_York', 'Europe/Paris'.
2338
+ #
2339
+ # @return [String, nil]
2340
+ optional :timezone, String, nil?: true
2341
+
2342
+ # @!method initialize(allowed_days:, call_twice_in_a_row:, calling_windows:, max_retry_attempts:, timezone: nil)
2343
+ # Some parameter documentations has been truncated, see
2344
+ # {Revox::Models::CallSearchResponse::Call::CallRetryConfig} for more details.
2345
+ #
2346
+ # Configuration for call retry behavior including time windows, delays, and max
2347
+ # iterations. If not provided, defaults will be used.
2348
+ #
2349
+ # @param allowed_days [Array<Symbol, Revox::Models::CallSearchResponse::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
+ #
2353
+ # @param calling_windows [Array<Revox::Models::CallSearchResponse::Call::CallRetryConfig::CallingWindow>]
2354
+ #
2355
+ # @param max_retry_attempts [Integer] Maximum number of call retry attempts. Default: 3.
2356
+ #
2357
+ # @param timezone [String, nil] Optional IANA timezone identifier to override the automatic timezone detection f
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
+
2374
+ class CallingWindow < Revox::Internal::Type::BaseModel
2375
+ # @!attribute calling_window_end_time
2376
+ # End time for the calling window in the recipient's timezone (or
2377
+ # timezone_override if provided). Format: 'HH:mm' (24-hour) or 'H:mma' (12-hour).
2378
+ # Examples: '17:00', '6pm'. Default: '18:00'.
2379
+ #
2380
+ # @return [String]
2381
+ required :calling_window_end_time, String
2382
+
2383
+ # @!attribute calling_window_start_time
2384
+ # Start time for the calling window in the recipient's timezone (or
2385
+ # timezone_override if provided). Format: 'HH:mm' (24-hour) or 'H:mma' (12-hour).
2386
+ # Examples: '09:00', '10am'. Default: '10:00'.
2387
+ #
2388
+ # @return [String]
2389
+ required :calling_window_start_time, String
2390
+
2391
+ # @!attribute retry_delay_seconds
2392
+ # Delay between retry attempts in seconds. Default: 7200 (2 hours).
2393
+ #
2394
+ # @return [Integer]
2395
+ required :retry_delay_seconds, Integer
2396
+
2397
+ # @!method initialize(calling_window_end_time:, calling_window_start_time:, retry_delay_seconds:)
2398
+ # Some parameter documentations has been truncated, see
2399
+ # {Revox::Models::CallSearchResponse::Call::CallRetryConfig::CallingWindow} for
2400
+ # more details.
2401
+ #
2402
+ # @param calling_window_end_time [String] End time for the calling window in the recipient's timezone (or timezone_overrid
2403
+ #
2404
+ # @param calling_window_start_time [String] Start time for the calling window in the recipient's timezone (or timezone_overr
2405
+ #
2406
+ # @param retry_delay_seconds [Integer] Delay between retry attempts in seconds. Default: 7200 (2 hours).
2407
+ end
2408
+ end
2409
+
2410
+ # @see Revox::Models::CallSearchResponse::Call#campaign
2411
+ class Campaign < Revox::Internal::Type::BaseModel
2412
+ # @!attribute id
2413
+ #
2414
+ # @return [String]
2415
+ required :id, String
2416
+
2417
+ # @!attribute name
2418
+ #
2419
+ # @return [String]
2420
+ required :name, String
2421
+
2422
+ # @!method initialize(id:, name:)
2423
+ # @param id [String]
2424
+ # @param name [String]
2425
+ end
2426
+
2427
+ # @see Revox::Models::CallSearchResponse::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
+
2459
+ # Whether the call is inbound or outbound.
2460
+ #
2461
+ # @see Revox::Models::CallSearchResponse::Call#direction
2462
+ module Direction
2463
+ extend Revox::Internal::Type::Enum
2464
+
2465
+ INBOUND = :inbound
2466
+ OUTBOUND = :outbound
2467
+
2468
+ # @!method self.values
2469
+ # @return [Array<Symbol>]
2470
+ end
2471
+
2472
+ # @see Revox::Models::CallSearchResponse::Call#last_call_attempt
2473
+ class LastCallAttempt < Revox::Internal::Type::BaseModel
2474
+ # @!attribute id
2475
+ # The ID of the call attempt.
2476
+ #
2477
+ # @return [String]
2478
+ required :id, String
2479
+
2480
+ # @!attribute answered_at
2481
+ # The time the call was answered.
2482
+ #
2483
+ # @return [Object]
2484
+ required :answered_at, Revox::Internal::Type::Unknown
2485
+
2486
+ # @!attribute dial_error
2487
+ # The SIP error that occurred.
2488
+ #
2489
+ # @return [Symbol, Revox::Models::CallSearchResponse::Call::LastCallAttempt::DialError, nil]
2490
+ required :dial_error,
2491
+ enum: -> { Revox::Models::CallSearchResponse::Call::LastCallAttempt::DialError },
2492
+ nil?: true
2493
+
2494
+ # @!attribute ended_at
2495
+ # The time the call ended.
2496
+ #
2497
+ # @return [Object]
2498
+ required :ended_at, Revox::Internal::Type::Unknown
2499
+
2500
+ # @!attribute phone_number
2501
+ # The phone number that was called. Formatted in E.164 format. Example:
2502
+ # +1234567890
2503
+ #
2504
+ # @return [String]
2505
+ required :phone_number, String
2506
+
2507
+ # @!attribute recording_url
2508
+ # The URL of the audio recording of the call.
2509
+ #
2510
+ # @return [String, nil]
2511
+ required :recording_url, String, nil?: true
2512
+
2513
+ # @!attribute result
2514
+ #
2515
+ # @return [Symbol, Revox::Models::CallSearchResponse::Call::LastCallAttempt::Result, nil]
2516
+ required :result,
2517
+ enum: -> { Revox::Models::CallSearchResponse::Call::LastCallAttempt::Result },
2518
+ nil?: true
2519
+
2520
+ # @!attribute started_at
2521
+ # The time the call started.
2522
+ #
2523
+ # @return [Object]
2524
+ required :started_at, Revox::Internal::Type::Unknown
2525
+
2526
+ # @!attribute status
2527
+ # The status of the call attempt.
2528
+ #
2529
+ # @return [Symbol, Revox::Models::CallSearchResponse::Call::LastCallAttempt::Status]
2530
+ required :status, enum: -> { Revox::Models::CallSearchResponse::Call::LastCallAttempt::Status }
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
+
2538
+ # @!attribute end_reason
2539
+ # Reason for ending the call when ended_by is 'agent'. E.g. 'tool_end_call',
2540
+ # 'voicemail', 'transfer', 'ivr_no_navigate'.
2541
+ #
2542
+ # @return [Symbol, Revox::Models::CallSearchResponse::Call::LastCallAttempt::EndReason, nil]
2543
+ optional :end_reason,
2544
+ enum: -> { Revox::Models::CallSearchResponse::Call::LastCallAttempt::EndReason },
2545
+ nil?: true
2546
+
2547
+ # @!attribute ended_by
2548
+ # Who ended the call: 'agent' (AI agent), 'user' (caller/callee hung up), or
2549
+ # 'system' (e.g. max duration limit).
2550
+ #
2551
+ # @return [Symbol, Revox::Models::CallSearchResponse::Call::LastCallAttempt::EndedBy, nil]
2552
+ optional :ended_by,
2553
+ enum: -> { Revox::Models::CallSearchResponse::Call::LastCallAttempt::EndedBy },
2554
+ nil?: true
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::CallSearchResponse::Call::LastCallAttempt::PostCallTranscript>, nil]
2561
+ optional :post_call_transcript,
2562
+ -> { Revox::Internal::Type::ArrayOf[Revox::Models::CallSearchResponse::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::CallSearchResponse::Call::LastCallAttempt::SMSLog>, nil]
2571
+ optional :sms_log,
2572
+ -> { Revox::Internal::Type::ArrayOf[Revox::Models::CallSearchResponse::Call::LastCallAttempt::SMSLog] },
2573
+ nil?: true
2574
+
2575
+ # @!attribute structured_output
2576
+ # The data extracted from the call, using the structured output config from the
2577
+ # parent call object.
2578
+ #
2579
+ # @return [Hash{Symbol=>Object}, nil]
2580
+ optional :structured_output,
2581
+ Revox::Internal::Type::HashOf[Revox::Internal::Type::Unknown],
2582
+ nil?: true
2583
+
2584
+ # @!attribute transcript
2585
+ # The live transcript of the call, built in real time.
2586
+ #
2587
+ # @return [Array<Revox::Models::CallSearchResponse::Call::LastCallAttempt::Transcript>, nil]
2588
+ optional :transcript,
2589
+ -> { Revox::Internal::Type::ArrayOf[Revox::Models::CallSearchResponse::Call::LastCallAttempt::Transcript] },
2590
+ nil?: true
2591
+
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)
2593
+ # Some parameter documentations has been truncated, see
2594
+ # {Revox::Models::CallSearchResponse::Call::LastCallAttempt} for more details.
2595
+ #
2596
+ # This represent a single call attempt. A call attempt is a single call made to
2597
+ # the phone number.
2598
+ #
2599
+ # @param id [String] The ID of the call attempt.
2600
+ #
2601
+ # @param answered_at [Object] The time the call was answered.
2602
+ #
2603
+ # @param dial_error [Symbol, Revox::Models::CallSearchResponse::Call::LastCallAttempt::DialError, nil] The SIP error that occurred.
2604
+ #
2605
+ # @param ended_at [Object] The time the call ended.
2606
+ #
2607
+ # @param phone_number [String] The phone number that was called. Formatted in E.164 format. Example: +123456789
2608
+ #
2609
+ # @param recording_url [String, nil] The URL of the audio recording of the call.
2610
+ #
2611
+ # @param result [Symbol, Revox::Models::CallSearchResponse::Call::LastCallAttempt::Result, nil]
2612
+ #
2613
+ # @param started_at [Object] The time the call started.
2614
+ #
2615
+ # @param status [Symbol, Revox::Models::CallSearchResponse::Call::LastCallAttempt::Status] The status of the call attempt.
2616
+ #
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::CallSearchResponse::Call::LastCallAttempt::EndReason, nil] Reason for ending the call when ended_by is 'agent'. E.g. 'tool_end_call', 'voic
2620
+ #
2621
+ # @param ended_by [Symbol, Revox::Models::CallSearchResponse::Call::LastCallAttempt::EndedBy, nil] Who ended the call: 'agent' (AI agent), 'user' (caller/callee hung up), or 'syst
2622
+ #
2623
+ # @param post_call_transcript [Array<Revox::Models::CallSearchResponse::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::CallSearchResponse::Call::LastCallAttempt::SMSLog>, nil] Automatic SMS sent after the call (voicemail and after-call), ordered oldest fir
2626
+ #
2627
+ # @param structured_output [Hash{Symbol=>Object}, nil] The data extracted from the call, using the structured output config from the pa
2628
+ #
2629
+ # @param transcript [Array<Revox::Models::CallSearchResponse::Call::LastCallAttempt::Transcript>, nil] The live transcript of the call, built in real time.
2630
+
2631
+ # The SIP error that occurred.
2632
+ #
2633
+ # @see Revox::Models::CallSearchResponse::Call::LastCallAttempt#dial_error
2634
+ module DialError
2635
+ extend Revox::Internal::Type::Enum
2636
+
2637
+ NUMBER_NON_ATTRIBUTED = :number_non_attributed
2638
+ TOO_MANY_CALLS = :too_many_calls
2639
+ BUSY = :busy
2640
+ TEMPORARILY_UNAVAILABLE = :temporarily_unavailable
2641
+ NO_ANSWER = :no_answer
2642
+ NO_INTERNATIONAL_PERMISSION = :no_international_permission
2643
+ PRECONDITION_FAILED = :precondition_failed
2644
+ NON_CLASSIFIED_ERROR = :non_classified_error
2645
+
2646
+ # @!method self.values
2647
+ # @return [Array<Symbol>]
2648
+ end
2649
+
2650
+ # @see Revox::Models::CallSearchResponse::Call::LastCallAttempt#result
2651
+ module Result
2652
+ extend Revox::Internal::Type::Enum
2653
+
2654
+ IVR = :IVR
2655
+ VOICEMAIL = :voicemail
2656
+ HUMAN = :human
2657
+ UNKNOWN = :unknown
2658
+ IOS_SCREENING_FILTER = :"ios-screening-filter"
2659
+
2660
+ # @!method self.values
2661
+ # @return [Array<Symbol>]
2662
+ end
2663
+
2664
+ # The status of the call attempt.
2665
+ #
2666
+ # @see Revox::Models::CallSearchResponse::Call::LastCallAttempt#status
2667
+ module Status
2668
+ extend Revox::Internal::Type::Enum
2669
+
2670
+ QUEUED = :queued
2671
+ RINGING = :ringing
2672
+ ONGOING = :ongoing
2673
+ COMPLETED = :completed
2674
+ ERROR = :error
2675
+
2676
+ # @!method self.values
2677
+ # @return [Array<Symbol>]
2678
+ end
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::CallSearchResponse::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
+
2708
+ # Who ended the call: 'agent' (AI agent), 'user' (caller/callee hung up), or
2709
+ # 'system' (e.g. max duration limit).
2710
+ #
2711
+ # @see Revox::Models::CallSearchResponse::Call::LastCallAttempt#ended_by
2712
+ module EndedBy
2713
+ extend Revox::Internal::Type::Enum
2714
+
2715
+ AGENT = :agent
2716
+ USER = :user
2717
+ SYSTEM = :system
2718
+
2719
+ # @!method self.values
2720
+ # @return [Array<Symbol>]
2721
+ end
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::CallSearchResponse::Call::LastCallAttempt::PostCallTranscript::Role]
2732
+ required :role,
2733
+ enum: -> { Revox::Models::CallSearchResponse::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::CallSearchResponse::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::CallSearchResponse::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::CallSearchResponse::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::CallSearchResponse::Call::LastCallAttempt::PostCallTranscript#tool_arguments
2778
+ module ToolArguments
2779
+ extend Revox::Internal::Type::Union
2780
+
2781
+ variant -> { Revox::Models::CallSearchResponse::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::CallSearchResponse::Call::LastCallAttempt::SMSLog::Type]
2823
+ required :type, enum: -> { Revox::Models::CallSearchResponse::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::CallSearchResponse::Call::LastCallAttempt::SMSLog::Type]
2837
+
2838
+ # @see Revox::Models::CallSearchResponse::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
+
2851
+ class Transcript < Revox::Internal::Type::BaseModel
2852
+ # @!attribute content
2853
+ #
2854
+ # @return [String]
2855
+ required :content, String
2856
+
2857
+ # @!attribute role
2858
+ #
2859
+ # @return [Symbol, Revox::Models::CallSearchResponse::Call::LastCallAttempt::Transcript::Role]
2860
+ required :role, enum: -> { Revox::Models::CallSearchResponse::Call::LastCallAttempt::Transcript::Role }
2861
+
2862
+ # @!attribute tool_arguments
2863
+ #
2864
+ # @return [Hash{Symbol=>Object}, String, nil]
2865
+ optional :tool_arguments,
2866
+ union: -> { Revox::Models::CallSearchResponse::Call::LastCallAttempt::Transcript::ToolArguments }
2867
+
2868
+ # @!attribute tool_is_error
2869
+ #
2870
+ # @return [Boolean, nil]
2871
+ optional :tool_is_error, Revox::Internal::Type::Boolean
2872
+
2873
+ # @!attribute tool_name
2874
+ #
2875
+ # @return [String, nil]
2876
+ optional :tool_name, String
2877
+
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)
2884
+ # @param content [String]
2885
+ # @param role [Symbol, Revox::Models::CallSearchResponse::Call::LastCallAttempt::Transcript::Role]
2886
+ # @param tool_arguments [Hash{Symbol=>Object}, String]
2887
+ # @param tool_is_error [Boolean]
2888
+ # @param tool_name [String]
2889
+ # @param tool_output [String]
2890
+
2891
+ # @see Revox::Models::CallSearchResponse::Call::LastCallAttempt::Transcript#role
2892
+ module Role
2893
+ extend Revox::Internal::Type::Enum
2894
+
2895
+ USER = :user
2896
+ ASSISTANT = :assistant
2897
+ HUMAN_AGENT = :human_agent
2898
+ TOOL = :tool
2899
+
2900
+ # @!method self.values
2901
+ # @return [Array<Symbol>]
2902
+ end
2903
+
2904
+ # @see Revox::Models::CallSearchResponse::Call::LastCallAttempt::Transcript#tool_arguments
2905
+ module ToolArguments
2906
+ extend Revox::Internal::Type::Union
2907
+
2908
+ variant -> { Revox::Models::CallSearchResponse::Call::LastCallAttempt::Transcript::ToolArguments::UnionMember0Map }
2909
+
2910
+ variant String
2911
+
2912
+ # @!method self.variants
2913
+ # @return [Array(Hash{Symbol=>Object}, String)]
2914
+
2915
+ # @type [Revox::Internal::Type::Converter]
2916
+ UnionMember0Map = Revox::Internal::Type::HashOf[Revox::Internal::Type::Unknown]
2917
+ end
2918
+ end
2919
+ end
2920
+
2921
+ # @see Revox::Models::CallSearchResponse::Call#llm_model
2922
+ module LlmModel
2923
+ extend Revox::Internal::Type::Union
2924
+
2925
+ variant -> { Revox::Models::CallSearchResponse::Call::LlmModel::UnionMember0 }
2926
+
2927
+ variant -> { Revox::Models::CallSearchResponse::Call::LlmModel::UnionMember1 }
2928
+
2929
+ variant -> { Revox::Models::CallSearchResponse::Call::LlmModel::UnionMember2 }
2930
+
2931
+ variant -> { Revox::Models::CallSearchResponse::Call::LlmModel::UnionMember3 }
2932
+
2933
+ class UnionMember0 < Revox::Internal::Type::BaseModel
2934
+ # @!attribute name
2935
+ #
2936
+ # @return [Symbol, Revox::Models::CallSearchResponse::Call::LlmModel::UnionMember0::Name]
2937
+ required :name, enum: -> { Revox::Models::CallSearchResponse::Call::LlmModel::UnionMember0::Name }
2938
+
2939
+ # @!attribute type
2940
+ #
2941
+ # @return [Symbol, :"dedicated-instance"]
2942
+ required :type, const: :"dedicated-instance"
2943
+
2944
+ # @!method initialize(name:, type: :"dedicated-instance")
2945
+ # @param name [Symbol, Revox::Models::CallSearchResponse::Call::LlmModel::UnionMember0::Name]
2946
+ # @param type [Symbol, :"dedicated-instance"]
2947
+
2948
+ # @see Revox::Models::CallSearchResponse::Call::LlmModel::UnionMember0#name
2949
+ module Name
2950
+ extend Revox::Internal::Type::Enum
2951
+
2952
+ GPT_4_1 = :"gpt-4.1"
2953
+ MINISTRAL_3_8B_INSTRUCT = :"ministral-3-8b-instruct"
2954
+
2955
+ # @!method self.values
2956
+ # @return [Array<Symbol>]
2957
+ end
2958
+ end
2959
+
2960
+ class UnionMember1 < Revox::Internal::Type::BaseModel
2961
+ # @!attribute openrouter_model_id
2962
+ # The model ID to use from OpenRouter. eg: openai/gpt-4.1
2963
+ #
2964
+ # @return [String]
2965
+ required :openrouter_model_id, String
2966
+
2967
+ # @!attribute openrouter_provider
2968
+ # The provider to use from OpenRouter. eg: nebius, openai, azure, etc.
2969
+ #
2970
+ # @return [String]
2971
+ required :openrouter_provider, String
2972
+
2973
+ # @!attribute type
2974
+ # Use a model from OpenRouter.
2975
+ #
2976
+ # @return [Symbol, :openrouter]
2977
+ required :type, const: :openrouter
2978
+
2979
+ # @!method initialize(openrouter_model_id:, openrouter_provider:, type: :openrouter)
2980
+ # @param openrouter_model_id [String] The model ID to use from OpenRouter. eg: openai/gpt-4.1
2981
+ #
2982
+ # @param openrouter_provider [String] The provider to use from OpenRouter. eg: nebius, openai, azure, etc.
2983
+ #
2984
+ # @param type [Symbol, :openrouter] Use a model from OpenRouter.
2985
+ end
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::CallSearchResponse::Call::LlmModel::UnionMember3::Provider]
3027
+ required :provider, enum: -> { Revox::Models::CallSearchResponse::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::CallSearchResponse::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::CallSearchResponse::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
+
3070
+ # @!method self.variants
3071
+ # @return [Array(Revox::Models::CallSearchResponse::Call::LlmModel::UnionMember0, Revox::Models::CallSearchResponse::Call::LlmModel::UnionMember1, Revox::Models::CallSearchResponse::Call::LlmModel::UnionMember2, Revox::Models::CallSearchResponse::Call::LlmModel::UnionMember3)]
3072
+ end
3073
+
3074
+ # The status of the call.
3075
+ #
3076
+ # @see Revox::Models::CallSearchResponse::Call#status
3077
+ module Status
3078
+ extend Revox::Internal::Type::Enum
3079
+
3080
+ INITIALIZING = :initializing
3081
+ QUEUED_FOR_CALLING = :queued_for_calling
3082
+ CALLING = :calling
3083
+ POST_PROCESSING = :post_processing
3084
+ SCHEDULED = :scheduled
3085
+ PAUSED = :paused
3086
+ COMPLETED = :completed
3087
+ CANCELLED = :cancelled
3088
+ ERRORED = :errored
3089
+
3090
+ # @!method self.values
3091
+ # @return [Array<Symbol>]
3092
+ end
3093
+
3094
+ # Business outcome of the call. Null if not computed or no transcript.
3095
+ #
3096
+ # @see Revox::Models::CallSearchResponse::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
3111
+ end
3112
+ end
3113
+ end
3114
+ end