revox 0.2.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 (172) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +10 -0
  3. data/README.md +1 -1
  4. data/lib/revox/client.rb +8 -0
  5. data/lib/revox/internal/type/base_model.rb +3 -3
  6. data/lib/revox/models/assistant_clone_params.rb +20 -0
  7. data/lib/revox/models/assistant_clone_response.rb +1594 -0
  8. data/lib/revox/models/auth_status_retrieve_params.rb +14 -0
  9. data/lib/revox/models/auth_status_retrieve_response.rb +17 -0
  10. data/lib/revox/models/call_cancel_params.rb +20 -0
  11. data/lib/revox/models/call_cancel_response.rb +16 -0
  12. data/lib/revox/models/call_create_response.rb +11 -1
  13. data/lib/revox/models/call_export_params.rb +205 -0
  14. data/lib/revox/models/call_export_response.rb +22 -0
  15. data/lib/revox/models/call_pause_params.rb +20 -0
  16. data/lib/revox/models/call_pause_response.rb +16 -0
  17. data/lib/revox/models/call_phone_history_params.rb +14 -0
  18. data/lib/revox/models/call_phone_history_response.rb +98 -0
  19. data/lib/revox/models/call_resume_params.rb +20 -0
  20. data/lib/revox/models/call_resume_response.rb +16 -0
  21. data/lib/revox/models/call_retrieve_response.rb +11 -1
  22. data/lib/revox/models/call_search_params.rb +171 -0
  23. data/lib/revox/models/call_search_response.rb +3114 -0
  24. data/lib/revox/models/campaign_get_rows_response.rb +11 -1
  25. data/lib/revox/models/campaign_launch_params.rb +20 -0
  26. data/lib/revox/models/campaign_launch_response.rb +2030 -0
  27. data/lib/revox/models/campaign_pause_params.rb +20 -0
  28. data/lib/revox/models/campaign_pause_response.rb +16 -0
  29. data/lib/revox/models/campaign_resume_params.rb +20 -0
  30. data/lib/revox/models/campaign_resume_response.rb +16 -0
  31. data/lib/revox/models/campaign_statistics_params.rb +20 -0
  32. data/lib/revox/models/campaign_statistics_response.rb +486 -0
  33. data/lib/revox/models/campaign_update_params.rb +234 -0
  34. data/lib/revox/models/campaign_update_response.rb +2030 -0
  35. data/lib/revox/models/phone_number_delete_params.rb +20 -0
  36. data/lib/revox/models/phone_number_delete_response.rb +16 -0
  37. data/lib/revox/models/phone_number_list_params.rb +14 -0
  38. data/lib/revox/models/phone_number_list_response.rb +1777 -0
  39. data/lib/revox/models/phone_number_update_params.rb +32 -0
  40. data/lib/revox/models/phone_number_update_response.rb +1777 -0
  41. data/lib/revox/models/user_retrieve_params.rb +14 -0
  42. data/lib/revox/models/user_retrieve_response.rb +99 -0
  43. data/lib/revox/models/voice_clone_params.rb +78 -0
  44. data/lib/revox/models/voice_clone_response.rb +40 -0
  45. data/lib/revox/models/voice_delete_params.rb +20 -0
  46. data/lib/revox/models/voice_delete_response.rb +16 -0
  47. data/lib/revox/models.rb +37 -1
  48. data/lib/revox/resources/assistants.rb +21 -0
  49. data/lib/revox/resources/auth_status.rb +32 -0
  50. data/lib/revox/resources/call.rb +145 -0
  51. data/lib/revox/resources/campaigns.rb +131 -0
  52. data/lib/revox/resources/phone_numbers.rb +74 -0
  53. data/lib/revox/resources/users.rb +17 -3
  54. data/lib/revox/resources/voices.rb +50 -0
  55. data/lib/revox/version.rb +1 -1
  56. data/lib/revox.rb +40 -5
  57. data/rbi/revox/client.rbi +6 -0
  58. data/rbi/revox/models/assistant_clone_params.rbi +33 -0
  59. data/rbi/revox/models/assistant_clone_response.rbi +3341 -0
  60. data/rbi/revox/models/auth_status_retrieve_params.rbi +27 -0
  61. data/rbi/revox/models/auth_status_retrieve_response.rbi +30 -0
  62. data/rbi/revox/models/call_cancel_params.rbi +33 -0
  63. data/rbi/revox/models/call_cancel_response.rbi +23 -0
  64. data/rbi/revox/models/call_create_response.rbi +12 -0
  65. data/rbi/revox/models/call_export_params.rbi +456 -0
  66. data/rbi/revox/models/call_export_response.rbi +26 -0
  67. data/rbi/revox/models/call_pause_params.rbi +31 -0
  68. data/rbi/revox/models/call_pause_response.rbi +23 -0
  69. data/rbi/revox/models/call_phone_history_params.rbi +27 -0
  70. data/rbi/revox/models/call_phone_history_response.rbi +224 -0
  71. data/rbi/revox/models/call_resume_params.rbi +33 -0
  72. data/rbi/revox/models/call_resume_response.rbi +23 -0
  73. data/rbi/revox/models/call_retrieve_response.rbi +12 -0
  74. data/rbi/revox/models/call_search_params.rbi +288 -0
  75. data/rbi/revox/models/call_search_response.rbi +6593 -0
  76. data/rbi/revox/models/campaign_get_rows_response.rbi +12 -0
  77. data/rbi/revox/models/campaign_launch_params.rbi +33 -0
  78. data/rbi/revox/models/campaign_launch_response.rbi +4170 -0
  79. data/rbi/revox/models/campaign_pause_params.rbi +33 -0
  80. data/rbi/revox/models/campaign_pause_response.rbi +23 -0
  81. data/rbi/revox/models/campaign_resume_params.rbi +33 -0
  82. data/rbi/revox/models/campaign_resume_response.rbi +23 -0
  83. data/rbi/revox/models/campaign_statistics_params.rbi +33 -0
  84. data/rbi/revox/models/campaign_statistics_response.rbi +1011 -0
  85. data/rbi/revox/models/campaign_update_params.rbi +431 -0
  86. data/rbi/revox/models/campaign_update_response.rbi +4170 -0
  87. data/rbi/revox/models/phone_number_delete_params.rbi +33 -0
  88. data/rbi/revox/models/phone_number_delete_response.rbi +26 -0
  89. data/rbi/revox/models/phone_number_list_params.rbi +27 -0
  90. data/rbi/revox/models/phone_number_list_response.rbi +3680 -0
  91. data/rbi/revox/models/phone_number_update_params.rbi +53 -0
  92. data/rbi/revox/models/phone_number_update_response.rbi +3683 -0
  93. data/rbi/revox/models/user_retrieve_params.rbi +27 -0
  94. data/rbi/revox/models/user_retrieve_response.rbi +140 -0
  95. data/rbi/revox/models/voice_clone_params.rbi +141 -0
  96. data/rbi/revox/models/voice_clone_response.rbi +53 -0
  97. data/rbi/revox/models/voice_delete_params.rbi +33 -0
  98. data/rbi/revox/models/voice_delete_response.rbi +23 -0
  99. data/rbi/revox/models.rbi +37 -1
  100. data/rbi/revox/resources/assistants.rbi +12 -0
  101. data/rbi/revox/resources/auth_status.rbi +21 -0
  102. data/rbi/revox/resources/call.rbi +107 -0
  103. data/rbi/revox/resources/campaigns.rbi +94 -0
  104. data/rbi/revox/resources/phone_numbers.rbi +43 -0
  105. data/rbi/revox/resources/users.rbi +8 -2
  106. data/rbi/revox/resources/voices.rbi +39 -0
  107. data/sig/revox/client.rbs +4 -0
  108. data/sig/revox/models/assistant_clone_params.rbs +20 -0
  109. data/sig/revox/models/assistant_clone_response.rbs +1318 -0
  110. data/sig/revox/models/auth_status_retrieve_params.rbs +15 -0
  111. data/sig/revox/models/auth_status_retrieve_response.rbs +13 -0
  112. data/sig/revox/models/call_cancel_params.rbs +20 -0
  113. data/sig/revox/models/call_cancel_response.rbs +13 -0
  114. data/sig/revox/models/call_create_response.rbs +5 -0
  115. data/sig/revox/models/call_export_params.rbs +234 -0
  116. data/sig/revox/models/call_export_response.rbs +15 -0
  117. data/sig/revox/models/call_pause_params.rbs +20 -0
  118. data/sig/revox/models/call_pause_response.rbs +13 -0
  119. data/sig/revox/models/call_phone_history_params.rbs +15 -0
  120. data/sig/revox/models/call_phone_history_response.rbs +102 -0
  121. data/sig/revox/models/call_resume_params.rbs +20 -0
  122. data/sig/revox/models/call_resume_response.rbs +13 -0
  123. data/sig/revox/models/call_retrieve_response.rbs +5 -0
  124. data/sig/revox/models/call_search_params.rbs +198 -0
  125. data/sig/revox/models/call_search_response.rbs +2654 -0
  126. data/sig/revox/models/campaign_get_rows_response.rbs +5 -0
  127. data/sig/revox/models/campaign_launch_params.rbs +20 -0
  128. data/sig/revox/models/campaign_launch_response.rbs +1694 -0
  129. data/sig/revox/models/campaign_pause_params.rbs +20 -0
  130. data/sig/revox/models/campaign_pause_response.rbs +13 -0
  131. data/sig/revox/models/campaign_resume_params.rbs +20 -0
  132. data/sig/revox/models/campaign_resume_response.rbs +13 -0
  133. data/sig/revox/models/campaign_statistics_params.rbs +20 -0
  134. data/sig/revox/models/campaign_statistics_response.rbs +458 -0
  135. data/sig/revox/models/campaign_update_params.rbs +203 -0
  136. data/sig/revox/models/campaign_update_response.rbs +1694 -0
  137. data/sig/revox/models/phone_number_delete_params.rbs +20 -0
  138. data/sig/revox/models/phone_number_delete_response.rbs +13 -0
  139. data/sig/revox/models/phone_number_list_params.rbs +15 -0
  140. data/sig/revox/models/phone_number_list_response.rbs +1462 -0
  141. data/sig/revox/models/phone_number_update_params.rbs +32 -0
  142. data/sig/revox/models/phone_number_update_response.rbs +1460 -0
  143. data/sig/revox/models/user_retrieve_params.rbs +14 -0
  144. data/sig/revox/models/user_retrieve_response.rbs +71 -0
  145. data/sig/revox/models/voice_clone_params.rbs +79 -0
  146. data/sig/revox/models/voice_clone_response.rbs +40 -0
  147. data/sig/revox/models/voice_delete_params.rbs +20 -0
  148. data/sig/revox/models/voice_delete_response.rbs +13 -0
  149. data/sig/revox/models.rbs +37 -1
  150. data/sig/revox/resources/assistants.rbs +5 -0
  151. data/sig/revox/resources/auth_status.rbs +11 -0
  152. data/sig/revox/resources/call.rbs +45 -0
  153. data/sig/revox/resources/campaigns.rbs +33 -0
  154. data/sig/revox/resources/phone_numbers.rbs +23 -0
  155. data/sig/revox/resources/users.rbs +3 -1
  156. data/sig/revox/resources/voices.rbs +13 -0
  157. metadata +121 -16
  158. data/lib/revox/models/users/me_retrieve_params.rb +0 -16
  159. data/lib/revox/models/users/me_retrieve_response.rb +0 -101
  160. data/lib/revox/models/users/me_update_params.rb +0 -22
  161. data/lib/revox/models/users/me_update_response.rb +0 -101
  162. data/lib/revox/resources/users/me.rb +0 -55
  163. data/rbi/revox/models/users/me_retrieve_params.rbi +0 -29
  164. data/rbi/revox/models/users/me_retrieve_response.rbi +0 -149
  165. data/rbi/revox/models/users/me_update_params.rbi +0 -43
  166. data/rbi/revox/models/users/me_update_response.rbi +0 -149
  167. data/rbi/revox/resources/users/me.rbi +0 -33
  168. data/sig/revox/models/users/me_retrieve_params.rbs +0 -16
  169. data/sig/revox/models/users/me_retrieve_response.rbs +0 -75
  170. data/sig/revox/models/users/me_update_params.rbs +0 -28
  171. data/sig/revox/models/users/me_update_response.rbs +0 -75
  172. data/sig/revox/resources/users/me.rbs +0 -18
@@ -0,0 +1,1777 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Revox
4
+ module Models
5
+ # @see Revox::Resources::PhoneNumbers#list
6
+ class PhoneNumberListResponse < Revox::Internal::Type::BaseModel
7
+ # @!attribute phone_numbers
8
+ #
9
+ # @return [Array<Revox::Models::PhoneNumberListResponse::PhoneNumber>]
10
+ required :phone_numbers,
11
+ -> { Revox::Internal::Type::ArrayOf[Revox::Models::PhoneNumberListResponse::PhoneNumber] }
12
+
13
+ # @!method initialize(phone_numbers:)
14
+ # @param phone_numbers [Array<Revox::Models::PhoneNumberListResponse::PhoneNumber>]
15
+
16
+ class PhoneNumber < Revox::Internal::Type::BaseModel
17
+ # @!attribute id
18
+ #
19
+ # @return [String]
20
+ required :id, String
21
+
22
+ # @!attribute created_at
23
+ #
24
+ # @return [Object]
25
+ required :created_at, Revox::Internal::Type::Unknown
26
+
27
+ # @!attribute created_by
28
+ # A member of the current organization.
29
+ #
30
+ # @return [Revox::Models::PhoneNumberListResponse::PhoneNumber::CreatedBy, nil]
31
+ required :created_by, -> { Revox::Models::PhoneNumberListResponse::PhoneNumber::CreatedBy }, nil?: true
32
+
33
+ # @!attribute inbound_assistant
34
+ #
35
+ # @return [Revox::Models::PhoneNumberListResponse::PhoneNumber::InboundAssistant, nil]
36
+ required :inbound_assistant,
37
+ -> { Revox::Models::PhoneNumberListResponse::PhoneNumber::InboundAssistant },
38
+ nil?: true
39
+
40
+ # @!attribute inbound_sip_uri
41
+ #
42
+ # @return [String, nil]
43
+ required :inbound_sip_uri, String, nil?: true
44
+
45
+ # @!attribute label
46
+ #
47
+ # @return [String, nil]
48
+ required :label, String, nil?: true
49
+
50
+ # @!attribute livekit_outbound_trunk_id
51
+ #
52
+ # @return [String, nil]
53
+ required :livekit_outbound_trunk_id, String, nil?: true
54
+
55
+ # @!attribute phone_number
56
+ #
57
+ # @return [String]
58
+ required :phone_number, String
59
+
60
+ # @!attribute provider
61
+ #
62
+ # @return [Symbol, Revox::Models::PhoneNumberListResponse::PhoneNumber::Provider]
63
+ required :provider, enum: -> { Revox::Models::PhoneNumberListResponse::PhoneNumber::Provider }
64
+
65
+ # @!attribute source
66
+ #
67
+ # @return [Symbol, Revox::Models::PhoneNumberListResponse::PhoneNumber::Source]
68
+ required :source, enum: -> { Revox::Models::PhoneNumberListResponse::PhoneNumber::Source }
69
+
70
+ # @!attribute type
71
+ #
72
+ # @return [Symbol, Revox::Models::PhoneNumberListResponse::PhoneNumber::Type]
73
+ required :type, enum: -> { Revox::Models::PhoneNumberListResponse::PhoneNumber::Type }
74
+
75
+ # @!method initialize(id:, created_at:, created_by:, inbound_assistant:, inbound_sip_uri:, label:, livekit_outbound_trunk_id:, phone_number:, provider:, source:, type:)
76
+ # @param id [String]
77
+ #
78
+ # @param created_at [Object]
79
+ #
80
+ # @param created_by [Revox::Models::PhoneNumberListResponse::PhoneNumber::CreatedBy, nil] A member of the current organization.
81
+ #
82
+ # @param inbound_assistant [Revox::Models::PhoneNumberListResponse::PhoneNumber::InboundAssistant, nil]
83
+ #
84
+ # @param inbound_sip_uri [String, nil]
85
+ #
86
+ # @param label [String, nil]
87
+ #
88
+ # @param livekit_outbound_trunk_id [String, nil]
89
+ #
90
+ # @param phone_number [String]
91
+ #
92
+ # @param provider [Symbol, Revox::Models::PhoneNumberListResponse::PhoneNumber::Provider]
93
+ #
94
+ # @param source [Symbol, Revox::Models::PhoneNumberListResponse::PhoneNumber::Source]
95
+ #
96
+ # @param type [Symbol, Revox::Models::PhoneNumberListResponse::PhoneNumber::Type]
97
+
98
+ # @see Revox::Models::PhoneNumberListResponse::PhoneNumber#created_by
99
+ class CreatedBy < Revox::Internal::Type::BaseModel
100
+ # @!attribute id
101
+ # The database user id (foreign key target on calls.assignee_id).
102
+ #
103
+ # @return [String]
104
+ required :id, String
105
+
106
+ # @!attribute email
107
+ #
108
+ # @return [String]
109
+ required :email, String
110
+
111
+ # @!attribute first_name
112
+ #
113
+ # @return [String, nil]
114
+ required :first_name, String, nil?: true
115
+
116
+ # @!attribute last_name
117
+ #
118
+ # @return [String, nil]
119
+ required :last_name, String, nil?: true
120
+
121
+ # @!method initialize(id:, email:, first_name:, last_name:)
122
+ # A member of the current organization.
123
+ #
124
+ # @param id [String] The database user id (foreign key target on calls.assignee_id).
125
+ #
126
+ # @param email [String]
127
+ #
128
+ # @param first_name [String, nil]
129
+ #
130
+ # @param last_name [String, nil]
131
+ end
132
+
133
+ # @see Revox::Models::PhoneNumberListResponse::PhoneNumber#inbound_assistant
134
+ class InboundAssistant < Revox::Internal::Type::BaseModel
135
+ # @!attribute id
136
+ #
137
+ # @return [String]
138
+ required :id, String
139
+
140
+ # @!attribute after_call_sms_outcomes
141
+ # Which call outcomes trigger the after-call SMS. When empty or null, no
142
+ # after-call SMS is sent. Use "none" when outcome is null.
143
+ #
144
+ # @return [Array<Symbol, Revox::Models::PhoneNumberListResponse::PhoneNumber::InboundAssistant::AfterCallSMSOutcome>, nil]
145
+ required :after_call_sms_outcomes,
146
+ -> { Revox::Internal::Type::ArrayOf[enum: Revox::Models::PhoneNumberListResponse::PhoneNumber::InboundAssistant::AfterCallSMSOutcome] },
147
+ nil?: true
148
+
149
+ # @!attribute after_call_sms_prompt
150
+ # Prompt / instructions for the after-call SMS. Supports {{variable}}
151
+ # placeholders. When null, no after-call SMS is sent.
152
+ #
153
+ # @return [String, nil]
154
+ required :after_call_sms_prompt, String, nil?: true
155
+
156
+ # @!attribute background_sound
157
+ # Ambient background sound to play during the call. null disables it.
158
+ #
159
+ # @return [Symbol, Revox::Models::PhoneNumberListResponse::PhoneNumber::InboundAssistant::BackgroundSound, nil]
160
+ required :background_sound,
161
+ enum: -> { Revox::Models::PhoneNumberListResponse::PhoneNumber::InboundAssistant::BackgroundSound },
162
+ nil?: true
163
+
164
+ # @!attribute background_sound_volume
165
+ # Volume of the ambient background sound (0 = silent, 1 = max).
166
+ #
167
+ # @return [Float]
168
+ required :background_sound_volume, Float
169
+
170
+ # @!attribute calendly
171
+ #
172
+ # @return [Revox::Models::PhoneNumberListResponse::PhoneNumber::InboundAssistant::Calendly, nil]
173
+ required :calendly,
174
+ -> { Revox::Models::PhoneNumberListResponse::PhoneNumber::InboundAssistant::Calendly },
175
+ nil?: true
176
+
177
+ # @!attribute call_retry_config
178
+ # Configuration for call retry behavior including time windows, delays, and max
179
+ # iterations. If not provided, defaults will be used.
180
+ #
181
+ # @return [Revox::Models::PhoneNumberListResponse::PhoneNumber::InboundAssistant::CallRetryConfig, nil]
182
+ required :call_retry_config,
183
+ -> { Revox::Models::PhoneNumberListResponse::PhoneNumber::InboundAssistant::CallRetryConfig },
184
+ nil?: true
185
+
186
+ # @!attribute cartesia_dictionary_pronunciation_id
187
+ # Optional Cartesia pronunciation dictionary ID linked to this assistant.
188
+ #
189
+ # @return [String, nil]
190
+ required :cartesia_dictionary_pronunciation_id, String, nil?: true
191
+
192
+ # @!attribute created_at
193
+ #
194
+ # @return [Object]
195
+ required :created_at, Revox::Internal::Type::Unknown
196
+
197
+ # @!attribute custom_tools
198
+ #
199
+ # @return [Array<Revox::Models::PhoneNumberListResponse::PhoneNumber::InboundAssistant::CustomTool>, nil]
200
+ required :custom_tools,
201
+ -> { Revox::Internal::Type::ArrayOf[Revox::Models::PhoneNumberListResponse::PhoneNumber::InboundAssistant::CustomTool] },
202
+ nil?: true
203
+
204
+ # @!attribute email_notification_address
205
+ # Email address(es) to receive notifications when a call ends with a matching
206
+ # outcome. Accepts a single email or a comma-separated list (e.g. "alice@x.com,
207
+ # bob@y.com").
208
+ #
209
+ # @return [String, nil]
210
+ required :email_notification_address, String, nil?: true
211
+
212
+ # @!attribute email_notification_language
213
+ # The language used for the notification email content. One of "en" or "fr".
214
+ #
215
+ # @return [Symbol, Revox::Models::PhoneNumberListResponse::PhoneNumber::InboundAssistant::EmailNotificationLanguage]
216
+ required :email_notification_language,
217
+ enum: -> { Revox::Models::PhoneNumberListResponse::PhoneNumber::InboundAssistant::EmailNotificationLanguage }
218
+
219
+ # @!attribute email_notification_outcomes
220
+ # Which call outcomes trigger an email notification. E.g. ["interested",
221
+ # "completed", "none"]. Use "none" when outcome is null.
222
+ #
223
+ # @return [Array<Symbol, Revox::Models::PhoneNumberListResponse::PhoneNumber::InboundAssistant::EmailNotificationOutcome>, nil]
224
+ required :email_notification_outcomes,
225
+ -> { Revox::Internal::Type::ArrayOf[enum: Revox::Models::PhoneNumberListResponse::PhoneNumber::InboundAssistant::EmailNotificationOutcome] },
226
+ nil?: true
227
+
228
+ # @!attribute end_of_call_sentence
229
+ #
230
+ # @return [String, nil]
231
+ required :end_of_call_sentence, String, nil?: true
232
+
233
+ # @!attribute first_sentence
234
+ #
235
+ # @return [String, nil]
236
+ required :first_sentence, String, nil?: true
237
+
238
+ # @!attribute first_sentence_delay_ms
239
+ # Delay in milliseconds before speaking the first sentence. Default: 400.
240
+ #
241
+ # @return [Integer]
242
+ required :first_sentence_delay_ms, Integer
243
+
244
+ # @!attribute first_sentence_mode
245
+ #
246
+ # @return [Symbol, Revox::Models::PhoneNumberListResponse::PhoneNumber::InboundAssistant::FirstSentenceMode]
247
+ required :first_sentence_mode,
248
+ enum: -> { Revox::Models::PhoneNumberListResponse::PhoneNumber::InboundAssistant::FirstSentenceMode }
249
+
250
+ # @!attribute from_phone_number
251
+ # Override the default outbound phone number for calls placed with this assistant.
252
+ # When null, the organization's default phone number is used.
253
+ #
254
+ # @return [String, nil]
255
+ required :from_phone_number, String, nil?: true
256
+
257
+ # @!attribute human_transfer_mode
258
+ # Warm or cold transfer when transfer_phone_number is set; null when transfer is
259
+ # not configured.
260
+ #
261
+ # @return [Symbol, Revox::Models::PhoneNumberListResponse::PhoneNumber::InboundAssistant::HumanTransferMode, nil]
262
+ required :human_transfer_mode,
263
+ enum: -> { Revox::Models::PhoneNumberListResponse::PhoneNumber::InboundAssistant::HumanTransferMode },
264
+ nil?: true
265
+
266
+ # @!attribute ivr_navigation_enabled
267
+ # Enable IVR navigation tools. When enabled, the assistant can send DTMF tones and
268
+ # skip turns to navigate phone menus.
269
+ #
270
+ # @return [Boolean]
271
+ required :ivr_navigation_enabled, Revox::Internal::Type::Boolean
272
+
273
+ # @!attribute llm_model
274
+ #
275
+ # @return [Revox::Models::PhoneNumberListResponse::PhoneNumber::InboundAssistant::LlmModel::UnionMember0, Revox::Models::PhoneNumberListResponse::PhoneNumber::InboundAssistant::LlmModel::UnionMember1, Revox::Models::PhoneNumberListResponse::PhoneNumber::InboundAssistant::LlmModel::UnionMember2, Revox::Models::PhoneNumberListResponse::PhoneNumber::InboundAssistant::LlmModel::UnionMember3]
276
+ required :llm_model,
277
+ union: -> { Revox::Models::PhoneNumberListResponse::PhoneNumber::InboundAssistant::LlmModel }
278
+
279
+ # @!attribute logo_url
280
+ # Public URL of the brand logo shown on the assistant's demo page. Null when
281
+ # unset.
282
+ #
283
+ # @return [String, nil]
284
+ required :logo_url, String, nil?: true
285
+
286
+ # @!attribute max_call_duration_secs
287
+ # The maximum duration of the call in seconds. This is the maximum time the call
288
+ # will be allowed to run.
289
+ #
290
+ # @return [Float]
291
+ required :max_call_duration_secs, Float
292
+
293
+ # @!attribute max_duration_end_message
294
+ # Optional message the agent will say, without being interruptible, when the call
295
+ # reaches its max duration. Kept short so it fits inside the farewell buffer. If
296
+ # null, the call ends silently.
297
+ #
298
+ # @return [String, nil]
299
+ required :max_duration_end_message, String, nil?: true
300
+
301
+ # @!attribute name
302
+ #
303
+ # @return [String]
304
+ required :name, String
305
+
306
+ # @!attribute organization_id
307
+ #
308
+ # @return [String]
309
+ required :organization_id, String
310
+
311
+ # @!attribute position
312
+ #
313
+ # @return [Revox::Models::PhoneNumberListResponse::PhoneNumber::InboundAssistant::Position, nil]
314
+ required :position,
315
+ -> { Revox::Models::PhoneNumberListResponse::PhoneNumber::InboundAssistant::Position },
316
+ nil?: true
317
+
318
+ # @!attribute prompt
319
+ #
320
+ # @return [String]
321
+ required :prompt, String
322
+
323
+ # @!attribute prompt_flow
324
+ #
325
+ # @return [Revox::Models::PhoneNumberListResponse::PhoneNumber::InboundAssistant::PromptFlow, nil]
326
+ required :prompt_flow,
327
+ -> { Revox::Models::PhoneNumberListResponse::PhoneNumber::InboundAssistant::PromptFlow },
328
+ nil?: true
329
+
330
+ # @!attribute slack
331
+ #
332
+ # @return [Revox::Models::PhoneNumberListResponse::PhoneNumber::InboundAssistant::Slack, nil]
333
+ required :slack,
334
+ -> { Revox::Models::PhoneNumberListResponse::PhoneNumber::InboundAssistant::Slack },
335
+ nil?: true
336
+
337
+ # @!attribute sms_enabled
338
+ # Enable SMS tool during calls. When enabled, the agent can send SMS messages to
339
+ # the user on the call.
340
+ #
341
+ # @return [Boolean]
342
+ required :sms_enabled, Revox::Internal::Type::Boolean
343
+
344
+ # @!attribute sms_template
345
+ # Hardcoded SMS template to send during calls. When set, this exact text is sent
346
+ # instead of letting the agent generate the message. Supports {{variable}}
347
+ # placeholders.
348
+ #
349
+ # @return [String, nil]
350
+ required :sms_template, String, nil?: true
351
+
352
+ # @!attribute structured_output_config
353
+ # The structured output config to use for the call. This is used to extract the
354
+ # data from the call (like email, name, company name, etc.).
355
+ #
356
+ # @return [Array<Revox::Models::PhoneNumberListResponse::PhoneNumber::InboundAssistant::StructuredOutputConfig>, nil]
357
+ required :structured_output_config,
358
+ -> { Revox::Internal::Type::ArrayOf[Revox::Models::PhoneNumberListResponse::PhoneNumber::InboundAssistant::StructuredOutputConfig] },
359
+ nil?: true
360
+
361
+ # @!attribute structured_output_prompt
362
+ # Custom prompt for structured data extraction. If not provided, a default prompt
363
+ # is used. Available variables: {{transcript}}, {{call_direction}},
364
+ # {{user_phone_number}}, {{agent_phone_number}}.
365
+ #
366
+ # @return [String, nil]
367
+ required :structured_output_prompt, String, nil?: true
368
+
369
+ # @!attribute stt_context
370
+ # Assistant-level speech-to-text context: structured `general` key/value pairs
371
+ # plus a list of domain `terms`. Prompt-derived context is merged in without
372
+ # replacing existing entries.
373
+ #
374
+ # @return [Revox::Models::PhoneNumberListResponse::PhoneNumber::InboundAssistant::SttContext, nil]
375
+ required :stt_context,
376
+ -> { Revox::Models::PhoneNumberListResponse::PhoneNumber::InboundAssistant::SttContext },
377
+ nil?: true
378
+
379
+ # @!attribute stt_model
380
+ # Transcriber (speech-to-text) model used for the assistant.
381
+ #
382
+ # @return [Symbol, Revox::Models::PhoneNumberListResponse::PhoneNumber::InboundAssistant::SttModel]
383
+ required :stt_model,
384
+ enum: -> { Revox::Models::PhoneNumberListResponse::PhoneNumber::InboundAssistant::SttModel }
385
+
386
+ # @!attribute thinking_sound
387
+ # Audio clip to play while the agent is processing a response. One of the built-in
388
+ # LiveKit audio clips; null disables it.
389
+ #
390
+ # @return [Symbol, Revox::Models::PhoneNumberListResponse::PhoneNumber::InboundAssistant::ThinkingSound, nil]
391
+ required :thinking_sound,
392
+ enum: -> { Revox::Models::PhoneNumberListResponse::PhoneNumber::InboundAssistant::ThinkingSound },
393
+ nil?: true
394
+
395
+ # @!attribute thinking_sound_probability
396
+ # Probability [0..1] that the thinking sound plays on any given turn; otherwise
397
+ # the agent is silent while thinking.
398
+ #
399
+ # @return [Float]
400
+ required :thinking_sound_probability, Float
401
+
402
+ # @!attribute thinking_sound_volume
403
+ # Volume of the thinking sound (0 = silent, 1 = max).
404
+ #
405
+ # @return [Float]
406
+ required :thinking_sound_volume, Float
407
+
408
+ # @!attribute transfer_phone_number
409
+ # Phone number to transfer calls to when users request to speak to a human agent.
410
+ #
411
+ # @return [String, nil]
412
+ required :transfer_phone_number, String, nil?: true
413
+
414
+ # @!attribute type
415
+ #
416
+ # @return [Symbol, Revox::Models::PhoneNumberListResponse::PhoneNumber::InboundAssistant::Type]
417
+ required :type, enum: -> { Revox::Models::PhoneNumberListResponse::PhoneNumber::InboundAssistant::Type }
418
+
419
+ # @!attribute updated_at
420
+ #
421
+ # @return [Object]
422
+ required :updated_at, Revox::Internal::Type::Unknown
423
+
424
+ # @!attribute voice
425
+ #
426
+ # @return [Revox::Models::PhoneNumberListResponse::PhoneNumber::InboundAssistant::Voice, nil]
427
+ required :voice,
428
+ -> { Revox::Models::PhoneNumberListResponse::PhoneNumber::InboundAssistant::Voice },
429
+ nil?: true
430
+
431
+ # @!attribute voicemail_message
432
+ # If set, when voicemail is detected the agent will speak this message then hang
433
+ # up; if null, hang up immediately.
434
+ #
435
+ # @return [String, nil]
436
+ required :voicemail_message, String, nil?: true
437
+
438
+ # @!attribute voicemail_sms_prompt
439
+ # Prompt / instructions for the voicemail SMS. Supports {{variable}} placeholders.
440
+ # When null, no SMS is sent on voicemail.
441
+ #
442
+ # @return [String, nil]
443
+ required :voicemail_sms_prompt, String, nil?: true
444
+
445
+ # @!attribute warm_transfer_summary_instructions
446
+ # Warm transfer only: instructions for the supervisor handoff summary; null when
447
+ # not configured or cold transfer.
448
+ #
449
+ # @return [String, nil]
450
+ required :warm_transfer_summary_instructions, String, nil?: true
451
+
452
+ # @!attribute webhook_url
453
+ # The webhook URL to call when the call is completed.
454
+ #
455
+ # @return [String, nil]
456
+ required :webhook_url, String, nil?: true
457
+
458
+ # @!attribute zoho
459
+ #
460
+ # @return [Revox::Models::PhoneNumberListResponse::PhoneNumber::InboundAssistant::Zoho, nil]
461
+ required :zoho,
462
+ -> { Revox::Models::PhoneNumberListResponse::PhoneNumber::InboundAssistant::Zoho },
463
+ nil?: true
464
+
465
+ # @!attribute created_by
466
+ # The user who created the assistant.
467
+ #
468
+ # @return [Revox::Models::PhoneNumberListResponse::PhoneNumber::InboundAssistant::CreatedBy, nil]
469
+ optional :created_by,
470
+ -> { Revox::Models::PhoneNumberListResponse::PhoneNumber::InboundAssistant::CreatedBy },
471
+ nil?: true
472
+
473
+ # @!attribute faq_items
474
+ #
475
+ # @return [Array<Revox::Models::PhoneNumberListResponse::PhoneNumber::InboundAssistant::FaqItem>, nil]
476
+ optional :faq_items,
477
+ -> { Revox::Internal::Type::ArrayOf[Revox::Models::PhoneNumberListResponse::PhoneNumber::InboundAssistant::FaqItem] }
478
+
479
+ # @!attribute is_realestate_assistant
480
+ #
481
+ # @return [Boolean, nil]
482
+ optional :is_realestate_assistant, Revox::Internal::Type::Boolean
483
+
484
+ # @!attribute pending_faq_count
485
+ #
486
+ # @return [Float, nil]
487
+ optional :pending_faq_count, Float
488
+
489
+ # @!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)
490
+ # Some parameter documentations has been truncated, see
491
+ # {Revox::Models::PhoneNumberListResponse::PhoneNumber::InboundAssistant} for more
492
+ # details.
493
+ #
494
+ # @param id [String]
495
+ #
496
+ # @param after_call_sms_outcomes [Array<Symbol, Revox::Models::PhoneNumberListResponse::PhoneNumber::InboundAssistant::AfterCallSMSOutcome>, nil] Which call outcomes trigger the after-call SMS. When empty or null, no after-cal
497
+ #
498
+ # @param after_call_sms_prompt [String, nil] Prompt / instructions for the after-call SMS. Supports {{variable}} placeholders
499
+ #
500
+ # @param background_sound [Symbol, Revox::Models::PhoneNumberListResponse::PhoneNumber::InboundAssistant::BackgroundSound, nil] Ambient background sound to play during the call. null disables it.
501
+ #
502
+ # @param background_sound_volume [Float] Volume of the ambient background sound (0 = silent, 1 = max).
503
+ #
504
+ # @param calendly [Revox::Models::PhoneNumberListResponse::PhoneNumber::InboundAssistant::Calendly, nil]
505
+ #
506
+ # @param call_retry_config [Revox::Models::PhoneNumberListResponse::PhoneNumber::InboundAssistant::CallRetryConfig, nil] Configuration for call retry behavior including time windows, delays, and max it
507
+ #
508
+ # @param cartesia_dictionary_pronunciation_id [String, nil] Optional Cartesia pronunciation dictionary ID linked to this assistant.
509
+ #
510
+ # @param created_at [Object]
511
+ #
512
+ # @param custom_tools [Array<Revox::Models::PhoneNumberListResponse::PhoneNumber::InboundAssistant::CustomTool>, nil]
513
+ #
514
+ # @param email_notification_address [String, nil] Email address(es) to receive notifications when a call ends with a matching outc
515
+ #
516
+ # @param email_notification_language [Symbol, Revox::Models::PhoneNumberListResponse::PhoneNumber::InboundAssistant::EmailNotificationLanguage] The language used for the notification email content. One of "en" or "fr".
517
+ #
518
+ # @param email_notification_outcomes [Array<Symbol, Revox::Models::PhoneNumberListResponse::PhoneNumber::InboundAssistant::EmailNotificationOutcome>, nil] Which call outcomes trigger an email notification. E.g. ["interested", "complete
519
+ #
520
+ # @param end_of_call_sentence [String, nil]
521
+ #
522
+ # @param first_sentence [String, nil]
523
+ #
524
+ # @param first_sentence_delay_ms [Integer] Delay in milliseconds before speaking the first sentence. Default: 400.
525
+ #
526
+ # @param first_sentence_mode [Symbol, Revox::Models::PhoneNumberListResponse::PhoneNumber::InboundAssistant::FirstSentenceMode]
527
+ #
528
+ # @param from_phone_number [String, nil] Override the default outbound phone number for calls placed with this assistant.
529
+ #
530
+ # @param human_transfer_mode [Symbol, Revox::Models::PhoneNumberListResponse::PhoneNumber::InboundAssistant::HumanTransferMode, nil] Warm or cold transfer when transfer_phone_number is set; null when transfer is n
531
+ #
532
+ # @param ivr_navigation_enabled [Boolean] Enable IVR navigation tools. When enabled, the assistant can send DTMF tones and
533
+ #
534
+ # @param llm_model [Revox::Models::PhoneNumberListResponse::PhoneNumber::InboundAssistant::LlmModel::UnionMember0, Revox::Models::PhoneNumberListResponse::PhoneNumber::InboundAssistant::LlmModel::UnionMember1, Revox::Models::PhoneNumberListResponse::PhoneNumber::InboundAssistant::LlmModel::UnionMember2, Revox::Models::PhoneNumberListResponse::PhoneNumber::InboundAssistant::LlmModel::UnionMember3]
535
+ #
536
+ # @param logo_url [String, nil] Public URL of the brand logo shown on the assistant's demo page. Null when unset
537
+ #
538
+ # @param max_call_duration_secs [Float] The maximum duration of the call in seconds. This is the maximum time the call w
539
+ #
540
+ # @param max_duration_end_message [String, nil] Optional message the agent will say, without being interruptible, when the call
541
+ #
542
+ # @param name [String]
543
+ #
544
+ # @param organization_id [String]
545
+ #
546
+ # @param position [Revox::Models::PhoneNumberListResponse::PhoneNumber::InboundAssistant::Position, nil]
547
+ #
548
+ # @param prompt [String]
549
+ #
550
+ # @param prompt_flow [Revox::Models::PhoneNumberListResponse::PhoneNumber::InboundAssistant::PromptFlow, nil]
551
+ #
552
+ # @param slack [Revox::Models::PhoneNumberListResponse::PhoneNumber::InboundAssistant::Slack, nil]
553
+ #
554
+ # @param sms_enabled [Boolean] Enable SMS tool during calls. When enabled, the agent can send SMS messages to t
555
+ #
556
+ # @param sms_template [String, nil] Hardcoded SMS template to send during calls. When set, this exact text is sent i
557
+ #
558
+ # @param structured_output_config [Array<Revox::Models::PhoneNumberListResponse::PhoneNumber::InboundAssistant::StructuredOutputConfig>, nil] The structured output config to use for the call. This is used to extract the da
559
+ #
560
+ # @param structured_output_prompt [String, nil] Custom prompt for structured data extraction. If not provided, a default prompt
561
+ #
562
+ # @param stt_context [Revox::Models::PhoneNumberListResponse::PhoneNumber::InboundAssistant::SttContext, nil] Assistant-level speech-to-text context: structured `general` key/value pairs plu
563
+ #
564
+ # @param stt_model [Symbol, Revox::Models::PhoneNumberListResponse::PhoneNumber::InboundAssistant::SttModel] Transcriber (speech-to-text) model used for the assistant.
565
+ #
566
+ # @param thinking_sound [Symbol, Revox::Models::PhoneNumberListResponse::PhoneNumber::InboundAssistant::ThinkingSound, nil] Audio clip to play while the agent is processing a response. One of the built-in
567
+ #
568
+ # @param thinking_sound_probability [Float] Probability [0..1] that the thinking sound plays on any given turn; otherwise th
569
+ #
570
+ # @param thinking_sound_volume [Float] Volume of the thinking sound (0 = silent, 1 = max).
571
+ #
572
+ # @param transfer_phone_number [String, nil] Phone number to transfer calls to when users request to speak to a human agent.
573
+ #
574
+ # @param type [Symbol, Revox::Models::PhoneNumberListResponse::PhoneNumber::InboundAssistant::Type]
575
+ #
576
+ # @param updated_at [Object]
577
+ #
578
+ # @param voice [Revox::Models::PhoneNumberListResponse::PhoneNumber::InboundAssistant::Voice, nil]
579
+ #
580
+ # @param voicemail_message [String, nil] If set, when voicemail is detected the agent will speak this message then hang u
581
+ #
582
+ # @param voicemail_sms_prompt [String, nil] Prompt / instructions for the voicemail SMS. Supports {{variable}} placeholders.
583
+ #
584
+ # @param warm_transfer_summary_instructions [String, nil] Warm transfer only: instructions for the supervisor handoff summary; null when n
585
+ #
586
+ # @param webhook_url [String, nil] The webhook URL to call when the call is completed.
587
+ #
588
+ # @param zoho [Revox::Models::PhoneNumberListResponse::PhoneNumber::InboundAssistant::Zoho, nil]
589
+ #
590
+ # @param created_by [Revox::Models::PhoneNumberListResponse::PhoneNumber::InboundAssistant::CreatedBy, nil] The user who created the assistant.
591
+ #
592
+ # @param faq_items [Array<Revox::Models::PhoneNumberListResponse::PhoneNumber::InboundAssistant::FaqItem>]
593
+ #
594
+ # @param is_realestate_assistant [Boolean]
595
+ #
596
+ # @param pending_faq_count [Float]
597
+
598
+ module AfterCallSMSOutcome
599
+ extend Revox::Internal::Type::Enum
600
+
601
+ NOT_INTERESTED = :not_interested
602
+ INTERESTED = :interested
603
+ COMPLETED = :completed
604
+ REQUESTED_CALLBACK_LATER = :requested_callback_later
605
+ REQUESTED_CALLBACK_NEW_NUMBER = :requested_callback_new_number
606
+ DO_NOT_CONTACT = :do_not_contact
607
+ AI_AVERSE = :ai_averse
608
+ NONE = :none
609
+
610
+ # @!method self.values
611
+ # @return [Array<Symbol>]
612
+ end
613
+
614
+ # Ambient background sound to play during the call. null disables it.
615
+ #
616
+ # @see Revox::Models::PhoneNumberListResponse::PhoneNumber::InboundAssistant#background_sound
617
+ module BackgroundSound
618
+ extend Revox::Internal::Type::Enum
619
+
620
+ AUDIO_OFFICE_OGG = :"audio/office.ogg"
621
+
622
+ # @!method self.values
623
+ # @return [Array<Symbol>]
624
+ end
625
+
626
+ # @see Revox::Models::PhoneNumberListResponse::PhoneNumber::InboundAssistant#calendly
627
+ class Calendly < Revox::Internal::Type::BaseModel
628
+ # @!attribute connection_id
629
+ # The connection ID representing the link between your Calendly account and Revox.
630
+ #
631
+ # @return [String]
632
+ required :connection_id, String
633
+
634
+ # @!attribute event_type_id
635
+ # The event type ID representing the event type to schedule. (eg:
636
+ # https://api.calendly.com/event_types/b2330295-2a91-4a1d-bb73-99e7707663d5)
637
+ #
638
+ # @return [String]
639
+ required :event_type_id, String
640
+
641
+ # @!method initialize(connection_id:, event_type_id:)
642
+ # Some parameter documentations has been truncated, see
643
+ # {Revox::Models::PhoneNumberListResponse::PhoneNumber::InboundAssistant::Calendly}
644
+ # for more details.
645
+ #
646
+ # @param connection_id [String] The connection ID representing the link between your Calendly account and Revox.
647
+ #
648
+ # @param event_type_id [String] The event type ID representing the event type to schedule. (eg: https://api.cale
649
+ end
650
+
651
+ # @see Revox::Models::PhoneNumberListResponse::PhoneNumber::InboundAssistant#call_retry_config
652
+ class CallRetryConfig < Revox::Internal::Type::BaseModel
653
+ # @!attribute allowed_days
654
+ # Days of the week when calls are allowed, in the recipient's timezone. Default:
655
+ # Monday through Friday.
656
+ #
657
+ # @return [Array<Symbol, Revox::Models::PhoneNumberListResponse::PhoneNumber::InboundAssistant::CallRetryConfig::AllowedDay>]
658
+ required :allowed_days,
659
+ -> { Revox::Internal::Type::ArrayOf[enum: Revox::Models::PhoneNumberListResponse::PhoneNumber::InboundAssistant::CallRetryConfig::AllowedDay] }
660
+
661
+ # @!attribute call_twice_in_a_row
662
+ # If true and max_retry_attempts >= 2, attempt #2 fires immediately (skipping
663
+ # retry_delay_seconds) when attempt #1 didn't reach a human.
664
+ # Calling-window/allowed-days checks still apply. Only affects the 1→2 transition.
665
+ # Default: false.
666
+ #
667
+ # @return [Boolean]
668
+ required :call_twice_in_a_row, Revox::Internal::Type::Boolean
669
+
670
+ # @!attribute calling_windows
671
+ #
672
+ # @return [Array<Revox::Models::PhoneNumberListResponse::PhoneNumber::InboundAssistant::CallRetryConfig::CallingWindow>]
673
+ required :calling_windows,
674
+ -> { Revox::Internal::Type::ArrayOf[Revox::Models::PhoneNumberListResponse::PhoneNumber::InboundAssistant::CallRetryConfig::CallingWindow] }
675
+
676
+ # @!attribute max_retry_attempts
677
+ # Maximum number of call retry attempts. Default: 3.
678
+ #
679
+ # @return [Integer]
680
+ required :max_retry_attempts, Integer
681
+
682
+ # @!attribute timezone
683
+ # Optional IANA timezone identifier to override the automatic timezone detection
684
+ # from phone number. If not provided, timezone is determined from the recipient's
685
+ # phone number country code. Examples: 'America/New_York', 'Europe/Paris'.
686
+ #
687
+ # @return [String, nil]
688
+ optional :timezone, String, nil?: true
689
+
690
+ # @!method initialize(allowed_days:, call_twice_in_a_row:, calling_windows:, max_retry_attempts:, timezone: nil)
691
+ # Some parameter documentations has been truncated, see
692
+ # {Revox::Models::PhoneNumberListResponse::PhoneNumber::InboundAssistant::CallRetryConfig}
693
+ # for more details.
694
+ #
695
+ # Configuration for call retry behavior including time windows, delays, and max
696
+ # iterations. If not provided, defaults will be used.
697
+ #
698
+ # @param allowed_days [Array<Symbol, Revox::Models::PhoneNumberListResponse::PhoneNumber::InboundAssistant::CallRetryConfig::AllowedDay>] Days of the week when calls are allowed, in the recipient's timezone. Default: M
699
+ #
700
+ # @param call_twice_in_a_row [Boolean] If true and max_retry_attempts >= 2, attempt #2 fires immediately (skipping retr
701
+ #
702
+ # @param calling_windows [Array<Revox::Models::PhoneNumberListResponse::PhoneNumber::InboundAssistant::CallRetryConfig::CallingWindow>]
703
+ #
704
+ # @param max_retry_attempts [Integer] Maximum number of call retry attempts. Default: 3.
705
+ #
706
+ # @param timezone [String, nil] Optional IANA timezone identifier to override the automatic timezone detection f
707
+
708
+ module AllowedDay
709
+ extend Revox::Internal::Type::Enum
710
+
711
+ MONDAY = :monday
712
+ TUESDAY = :tuesday
713
+ WEDNESDAY = :wednesday
714
+ THURSDAY = :thursday
715
+ FRIDAY = :friday
716
+ SATURDAY = :saturday
717
+ SUNDAY = :sunday
718
+
719
+ # @!method self.values
720
+ # @return [Array<Symbol>]
721
+ end
722
+
723
+ class CallingWindow < Revox::Internal::Type::BaseModel
724
+ # @!attribute calling_window_end_time
725
+ # End time for the calling window in the recipient's timezone (or
726
+ # timezone_override if provided). Format: 'HH:mm' (24-hour) or 'H:mma' (12-hour).
727
+ # Examples: '17:00', '6pm'. Default: '18:00'.
728
+ #
729
+ # @return [String]
730
+ required :calling_window_end_time, String
731
+
732
+ # @!attribute calling_window_start_time
733
+ # Start time for the calling window in the recipient's timezone (or
734
+ # timezone_override if provided). Format: 'HH:mm' (24-hour) or 'H:mma' (12-hour).
735
+ # Examples: '09:00', '10am'. Default: '10:00'.
736
+ #
737
+ # @return [String]
738
+ required :calling_window_start_time, String
739
+
740
+ # @!attribute retry_delay_seconds
741
+ # Delay between retry attempts in seconds. Default: 7200 (2 hours).
742
+ #
743
+ # @return [Integer]
744
+ required :retry_delay_seconds, Integer
745
+
746
+ # @!method initialize(calling_window_end_time:, calling_window_start_time:, retry_delay_seconds:)
747
+ # Some parameter documentations has been truncated, see
748
+ # {Revox::Models::PhoneNumberListResponse::PhoneNumber::InboundAssistant::CallRetryConfig::CallingWindow}
749
+ # for more details.
750
+ #
751
+ # @param calling_window_end_time [String] End time for the calling window in the recipient's timezone (or timezone_overrid
752
+ #
753
+ # @param calling_window_start_time [String] Start time for the calling window in the recipient's timezone (or timezone_overr
754
+ #
755
+ # @param retry_delay_seconds [Integer] Delay between retry attempts in seconds. Default: 7200 (2 hours).
756
+ end
757
+ end
758
+
759
+ class CustomTool < Revox::Internal::Type::BaseModel
760
+ # @!attribute body_template
761
+ # JSON body template for the request. Use quoted {{variable}} placeholders (e.g.
762
+ # "{{name}}") for dynamic values
763
+ #
764
+ # @return [String, nil]
765
+ required :body_template, String, nil?: true
766
+
767
+ # @!attribute description
768
+ # Human-readable description of what the tool does, used by the LLM to decide when
769
+ # to call it
770
+ #
771
+ # @return [String]
772
+ required :description, String
773
+
774
+ # @!attribute headers
775
+ # HTTP headers to include in the request. Values support {{variable}} placeholders
776
+ #
777
+ # @return [Array<Revox::Models::PhoneNumberListResponse::PhoneNumber::InboundAssistant::CustomTool::Header>]
778
+ required :headers,
779
+ -> { Revox::Internal::Type::ArrayOf[Revox::Models::PhoneNumberListResponse::PhoneNumber::InboundAssistant::CustomTool::Header] }
780
+
781
+ # @!attribute input_schema
782
+ # Schema defining the parameters the LLM should extract from the conversation to
783
+ # pass to this tool
784
+ #
785
+ # @return [Array<Revox::Models::PhoneNumberListResponse::PhoneNumber::InboundAssistant::CustomTool::InputSchema>]
786
+ required :input_schema,
787
+ -> { Revox::Internal::Type::ArrayOf[Revox::Models::PhoneNumberListResponse::PhoneNumber::InboundAssistant::CustomTool::InputSchema] }
788
+
789
+ # @!attribute method_
790
+ # HTTP method to use when calling the API endpoint
791
+ #
792
+ # @return [Symbol, Revox::Models::PhoneNumberListResponse::PhoneNumber::InboundAssistant::CustomTool::Method]
793
+ required :method_,
794
+ enum: -> { Revox::Models::PhoneNumberListResponse::PhoneNumber::InboundAssistant::CustomTool::Method },
795
+ api_name: :method
796
+
797
+ # @!attribute name
798
+ # Unique tool name in lowercase_snake_case (e.g. check_inventory)
799
+ #
800
+ # @return [String]
801
+ required :name, String
802
+
803
+ # @!attribute query_params
804
+ # Query string parameters appended to the URL. Values support {{variable}}
805
+ # placeholders
806
+ #
807
+ # @return [Array<Revox::Models::PhoneNumberListResponse::PhoneNumber::InboundAssistant::CustomTool::QueryParam>]
808
+ required :query_params,
809
+ -> { Revox::Internal::Type::ArrayOf[Revox::Models::PhoneNumberListResponse::PhoneNumber::InboundAssistant::CustomTool::QueryParam] }
810
+
811
+ # @!attribute url
812
+ # Full URL of the API endpoint. Supports {{variable}} placeholders for dynamic
813
+ # values
814
+ #
815
+ # @return [String]
816
+ required :url, String
817
+
818
+ # @!method initialize(body_template:, description:, headers:, input_schema:, method_:, name:, query_params:, url:)
819
+ # Some parameter documentations has been truncated, see
820
+ # {Revox::Models::PhoneNumberListResponse::PhoneNumber::InboundAssistant::CustomTool}
821
+ # for more details.
822
+ #
823
+ # @param body_template [String, nil] JSON body template for the request. Use quoted {{variable}} placeholders (e.g. "
824
+ #
825
+ # @param description [String] Human-readable description of what the tool does, used by the LLM to decide when
826
+ #
827
+ # @param headers [Array<Revox::Models::PhoneNumberListResponse::PhoneNumber::InboundAssistant::CustomTool::Header>] HTTP headers to include in the request. Values support {{variable}} placeholders
828
+ #
829
+ # @param input_schema [Array<Revox::Models::PhoneNumberListResponse::PhoneNumber::InboundAssistant::CustomTool::InputSchema>] Schema defining the parameters the LLM should extract from the conversation to p
830
+ #
831
+ # @param method_ [Symbol, Revox::Models::PhoneNumberListResponse::PhoneNumber::InboundAssistant::CustomTool::Method] HTTP method to use when calling the API endpoint
832
+ #
833
+ # @param name [String] Unique tool name in lowercase_snake_case (e.g. check_inventory)
834
+ #
835
+ # @param query_params [Array<Revox::Models::PhoneNumberListResponse::PhoneNumber::InboundAssistant::CustomTool::QueryParam>] Query string parameters appended to the URL. Values support {{variable}} placeho
836
+ #
837
+ # @param url [String] Full URL of the API endpoint. Supports {{variable}} placeholders for dynamic val
838
+
839
+ class Header < Revox::Internal::Type::BaseModel
840
+ # @!attribute key
841
+ #
842
+ # @return [String]
843
+ required :key, String
844
+
845
+ # @!attribute value
846
+ #
847
+ # @return [String]
848
+ required :value, String
849
+
850
+ # @!method initialize(key:, value:)
851
+ # @param key [String]
852
+ # @param value [String]
853
+ end
854
+
855
+ class InputSchema < Revox::Internal::Type::BaseModel
856
+ # @!attribute name
857
+ #
858
+ # @return [String]
859
+ required :name, String
860
+
861
+ # @!attribute required
862
+ #
863
+ # @return [Boolean]
864
+ required :required, Revox::Internal::Type::Boolean
865
+
866
+ # @!attribute type
867
+ #
868
+ # @return [Symbol, Revox::Models::PhoneNumberListResponse::PhoneNumber::InboundAssistant::CustomTool::InputSchema::Type]
869
+ required :type,
870
+ enum: -> { Revox::Models::PhoneNumberListResponse::PhoneNumber::InboundAssistant::CustomTool::InputSchema::Type }
871
+
872
+ # @!attribute description
873
+ #
874
+ # @return [String, nil]
875
+ optional :description, String
876
+
877
+ # @!attribute enum_options
878
+ #
879
+ # @return [Array<String>, nil]
880
+ optional :enum_options, Revox::Internal::Type::ArrayOf[String]
881
+
882
+ # @!method initialize(name:, required:, type:, description: nil, enum_options: nil)
883
+ # @param name [String]
884
+ # @param required [Boolean]
885
+ # @param type [Symbol, Revox::Models::PhoneNumberListResponse::PhoneNumber::InboundAssistant::CustomTool::InputSchema::Type]
886
+ # @param description [String]
887
+ # @param enum_options [Array<String>]
888
+
889
+ # @see Revox::Models::PhoneNumberListResponse::PhoneNumber::InboundAssistant::CustomTool::InputSchema#type
890
+ module Type
891
+ extend Revox::Internal::Type::Enum
892
+
893
+ STRING = :string
894
+ NUMBER = :number
895
+ BOOLEAN = :boolean
896
+ ENUM = :enum
897
+ DATE = :date
898
+ DATETIME = :datetime
899
+
900
+ # @!method self.values
901
+ # @return [Array<Symbol>]
902
+ end
903
+ end
904
+
905
+ # HTTP method to use when calling the API endpoint
906
+ #
907
+ # @see Revox::Models::PhoneNumberListResponse::PhoneNumber::InboundAssistant::CustomTool#method_
908
+ module Method
909
+ extend Revox::Internal::Type::Enum
910
+
911
+ GET = :GET
912
+ POST = :POST
913
+ PUT = :PUT
914
+ PATCH = :PATCH
915
+ DELETE = :DELETE
916
+
917
+ # @!method self.values
918
+ # @return [Array<Symbol>]
919
+ end
920
+
921
+ class QueryParam < Revox::Internal::Type::BaseModel
922
+ # @!attribute key
923
+ #
924
+ # @return [String]
925
+ required :key, String
926
+
927
+ # @!attribute value
928
+ #
929
+ # @return [String]
930
+ required :value, String
931
+
932
+ # @!method initialize(key:, value:)
933
+ # @param key [String]
934
+ # @param value [String]
935
+ end
936
+ end
937
+
938
+ # The language used for the notification email content. One of "en" or "fr".
939
+ #
940
+ # @see Revox::Models::PhoneNumberListResponse::PhoneNumber::InboundAssistant#email_notification_language
941
+ module EmailNotificationLanguage
942
+ extend Revox::Internal::Type::Enum
943
+
944
+ EN = :en
945
+ FR = :fr
946
+
947
+ # @!method self.values
948
+ # @return [Array<Symbol>]
949
+ end
950
+
951
+ module EmailNotificationOutcome
952
+ extend Revox::Internal::Type::Enum
953
+
954
+ NOT_INTERESTED = :not_interested
955
+ INTERESTED = :interested
956
+ COMPLETED = :completed
957
+ REQUESTED_CALLBACK_LATER = :requested_callback_later
958
+ REQUESTED_CALLBACK_NEW_NUMBER = :requested_callback_new_number
959
+ DO_NOT_CONTACT = :do_not_contact
960
+ AI_AVERSE = :ai_averse
961
+ NONE = :none
962
+
963
+ # @!method self.values
964
+ # @return [Array<Symbol>]
965
+ end
966
+
967
+ # @see Revox::Models::PhoneNumberListResponse::PhoneNumber::InboundAssistant#first_sentence_mode
968
+ module FirstSentenceMode
969
+ extend Revox::Internal::Type::Enum
970
+
971
+ GENERATED = :generated
972
+ STATIC = :static
973
+ NONE = :none
974
+
975
+ # @!method self.values
976
+ # @return [Array<Symbol>]
977
+ end
978
+
979
+ # Warm or cold transfer when transfer_phone_number is set; null when transfer is
980
+ # not configured.
981
+ #
982
+ # @see Revox::Models::PhoneNumberListResponse::PhoneNumber::InboundAssistant#human_transfer_mode
983
+ module HumanTransferMode
984
+ extend Revox::Internal::Type::Enum
985
+
986
+ WARM = :warm
987
+ COLD = :cold
988
+
989
+ # @!method self.values
990
+ # @return [Array<Symbol>]
991
+ end
992
+
993
+ # @see Revox::Models::PhoneNumberListResponse::PhoneNumber::InboundAssistant#llm_model
994
+ module LlmModel
995
+ extend Revox::Internal::Type::Union
996
+
997
+ variant -> { Revox::Models::PhoneNumberListResponse::PhoneNumber::InboundAssistant::LlmModel::UnionMember0 }
998
+
999
+ variant -> { Revox::Models::PhoneNumberListResponse::PhoneNumber::InboundAssistant::LlmModel::UnionMember1 }
1000
+
1001
+ variant -> { Revox::Models::PhoneNumberListResponse::PhoneNumber::InboundAssistant::LlmModel::UnionMember2 }
1002
+
1003
+ variant -> { Revox::Models::PhoneNumberListResponse::PhoneNumber::InboundAssistant::LlmModel::UnionMember3 }
1004
+
1005
+ class UnionMember0 < Revox::Internal::Type::BaseModel
1006
+ # @!attribute name
1007
+ #
1008
+ # @return [Symbol, Revox::Models::PhoneNumberListResponse::PhoneNumber::InboundAssistant::LlmModel::UnionMember0::Name]
1009
+ required :name,
1010
+ enum: -> { Revox::Models::PhoneNumberListResponse::PhoneNumber::InboundAssistant::LlmModel::UnionMember0::Name }
1011
+
1012
+ # @!attribute type
1013
+ #
1014
+ # @return [Symbol, :"dedicated-instance"]
1015
+ required :type, const: :"dedicated-instance"
1016
+
1017
+ # @!method initialize(name:, type: :"dedicated-instance")
1018
+ # @param name [Symbol, Revox::Models::PhoneNumberListResponse::PhoneNumber::InboundAssistant::LlmModel::UnionMember0::Name]
1019
+ # @param type [Symbol, :"dedicated-instance"]
1020
+
1021
+ # @see Revox::Models::PhoneNumberListResponse::PhoneNumber::InboundAssistant::LlmModel::UnionMember0#name
1022
+ module Name
1023
+ extend Revox::Internal::Type::Enum
1024
+
1025
+ GPT_4_1 = :"gpt-4.1"
1026
+ MINISTRAL_3_8B_INSTRUCT = :"ministral-3-8b-instruct"
1027
+
1028
+ # @!method self.values
1029
+ # @return [Array<Symbol>]
1030
+ end
1031
+ end
1032
+
1033
+ class UnionMember1 < Revox::Internal::Type::BaseModel
1034
+ # @!attribute openrouter_model_id
1035
+ # The model ID to use from OpenRouter. eg: openai/gpt-4.1
1036
+ #
1037
+ # @return [String]
1038
+ required :openrouter_model_id, String
1039
+
1040
+ # @!attribute openrouter_provider
1041
+ # The provider to use from OpenRouter. eg: nebius, openai, azure, etc.
1042
+ #
1043
+ # @return [String]
1044
+ required :openrouter_provider, String
1045
+
1046
+ # @!attribute type
1047
+ # Use a model from OpenRouter.
1048
+ #
1049
+ # @return [Symbol, :openrouter]
1050
+ required :type, const: :openrouter
1051
+
1052
+ # @!method initialize(openrouter_model_id:, openrouter_provider:, type: :openrouter)
1053
+ # @param openrouter_model_id [String] The model ID to use from OpenRouter. eg: openai/gpt-4.1
1054
+ #
1055
+ # @param openrouter_provider [String] The provider to use from OpenRouter. eg: nebius, openai, azure, etc.
1056
+ #
1057
+ # @param type [Symbol, :openrouter] Use a model from OpenRouter.
1058
+ end
1059
+
1060
+ class UnionMember2 < Revox::Internal::Type::BaseModel
1061
+ # @!attribute api_key
1062
+ # API key sent as Bearer token to the custom endpoint.
1063
+ #
1064
+ # @return [String]
1065
+ required :api_key, String
1066
+
1067
+ # @!attribute api_url
1068
+ # Base URL for the OpenAI-compatible API, e.g. https://api.together.xyz/v1
1069
+ #
1070
+ # @return [String]
1071
+ required :api_url, String
1072
+
1073
+ # @!attribute model_name
1074
+ # Model name as expected by the provider, e.g. meta-llama/llama-3-70b
1075
+ #
1076
+ # @return [String]
1077
+ required :model_name, String
1078
+
1079
+ # @!attribute type
1080
+ # OpenAI-compatible chat completions API (bring your own endpoint and key).
1081
+ #
1082
+ # @return [Symbol, :custom]
1083
+ required :type, const: :custom
1084
+
1085
+ # @!method initialize(api_key:, api_url:, model_name:, type: :custom)
1086
+ # @param api_key [String] API key sent as Bearer token to the custom endpoint.
1087
+ #
1088
+ # @param api_url [String] Base URL for the OpenAI-compatible API, e.g. https://api.together.xyz/v1
1089
+ #
1090
+ # @param model_name [String] Model name as expected by the provider, e.g. meta-llama/llama-3-70b
1091
+ #
1092
+ # @param type [Symbol, :custom] OpenAI-compatible chat completions API (bring your own endpoint and key).
1093
+ end
1094
+
1095
+ class UnionMember3 < Revox::Internal::Type::BaseModel
1096
+ # @!attribute provider
1097
+ # The provider to use from Realtime. eg: openai, google.
1098
+ #
1099
+ # @return [Symbol, Revox::Models::PhoneNumberListResponse::PhoneNumber::InboundAssistant::LlmModel::UnionMember3::Provider]
1100
+ required :provider,
1101
+ enum: -> { Revox::Models::PhoneNumberListResponse::PhoneNumber::InboundAssistant::LlmModel::UnionMember3::Provider }
1102
+
1103
+ # @!attribute realtime_model_id
1104
+ # The model ID to use from Realtime. eg: gpt-4.1
1105
+ #
1106
+ # @return [String]
1107
+ required :realtime_model_id, String
1108
+
1109
+ # @!attribute type
1110
+ # Use a model from Realtime.
1111
+ #
1112
+ # @return [Symbol, :realtime]
1113
+ required :type, const: :realtime
1114
+
1115
+ # @!attribute realtime_voice_id
1116
+ # Output voice for the realtime provider (e.g. OpenAI: marin; Gemini: Puck).
1117
+ #
1118
+ # @return [String, nil]
1119
+ optional :realtime_voice_id, String
1120
+
1121
+ # @!method initialize(provider:, realtime_model_id:, realtime_voice_id: nil, type: :realtime)
1122
+ # @param provider [Symbol, Revox::Models::PhoneNumberListResponse::PhoneNumber::InboundAssistant::LlmModel::UnionMember3::Provider] The provider to use from Realtime. eg: openai, google.
1123
+ #
1124
+ # @param realtime_model_id [String] The model ID to use from Realtime. eg: gpt-4.1
1125
+ #
1126
+ # @param realtime_voice_id [String] Output voice for the realtime provider (e.g. OpenAI: marin; Gemini: Puck).
1127
+ #
1128
+ # @param type [Symbol, :realtime] Use a model from Realtime.
1129
+
1130
+ # The provider to use from Realtime. eg: openai, google.
1131
+ #
1132
+ # @see Revox::Models::PhoneNumberListResponse::PhoneNumber::InboundAssistant::LlmModel::UnionMember3#provider
1133
+ module Provider
1134
+ extend Revox::Internal::Type::Enum
1135
+
1136
+ OPENAI = :openai
1137
+ GOOGLE = :google
1138
+
1139
+ # @!method self.values
1140
+ # @return [Array<Symbol>]
1141
+ end
1142
+ end
1143
+
1144
+ # @!method self.variants
1145
+ # @return [Array(Revox::Models::PhoneNumberListResponse::PhoneNumber::InboundAssistant::LlmModel::UnionMember0, Revox::Models::PhoneNumberListResponse::PhoneNumber::InboundAssistant::LlmModel::UnionMember1, Revox::Models::PhoneNumberListResponse::PhoneNumber::InboundAssistant::LlmModel::UnionMember2, Revox::Models::PhoneNumberListResponse::PhoneNumber::InboundAssistant::LlmModel::UnionMember3)]
1146
+ end
1147
+
1148
+ # @see Revox::Models::PhoneNumberListResponse::PhoneNumber::InboundAssistant#position
1149
+ class Position < Revox::Internal::Type::BaseModel
1150
+ # @!attribute x
1151
+ #
1152
+ # @return [Float]
1153
+ required :x, Float
1154
+
1155
+ # @!attribute y_
1156
+ #
1157
+ # @return [Float]
1158
+ required :y_, Float, api_name: :y
1159
+
1160
+ # @!method initialize(x:, y_:)
1161
+ # @param x [Float]
1162
+ # @param y_ [Float]
1163
+ end
1164
+
1165
+ # @see Revox::Models::PhoneNumberListResponse::PhoneNumber::InboundAssistant#prompt_flow
1166
+ class PromptFlow < Revox::Internal::Type::BaseModel
1167
+ # @!attribute edges
1168
+ #
1169
+ # @return [Array<Revox::Models::PhoneNumberListResponse::PhoneNumber::InboundAssistant::PromptFlow::Edge>]
1170
+ required :edges,
1171
+ -> { Revox::Internal::Type::ArrayOf[Revox::Models::PhoneNumberListResponse::PhoneNumber::InboundAssistant::PromptFlow::Edge] }
1172
+
1173
+ # @!attribute nodes
1174
+ #
1175
+ # @return [Array<Revox::Models::PhoneNumberListResponse::PhoneNumber::InboundAssistant::PromptFlow::Node>]
1176
+ required :nodes,
1177
+ -> { Revox::Internal::Type::ArrayOf[Revox::Models::PhoneNumberListResponse::PhoneNumber::InboundAssistant::PromptFlow::Node] }
1178
+
1179
+ # @!method initialize(edges:, nodes:)
1180
+ # @param edges [Array<Revox::Models::PhoneNumberListResponse::PhoneNumber::InboundAssistant::PromptFlow::Edge>]
1181
+ # @param nodes [Array<Revox::Models::PhoneNumberListResponse::PhoneNumber::InboundAssistant::PromptFlow::Node>]
1182
+
1183
+ class Edge < Revox::Internal::Type::BaseModel
1184
+ # @!attribute id
1185
+ #
1186
+ # @return [String]
1187
+ required :id, String
1188
+
1189
+ # @!attribute source
1190
+ #
1191
+ # @return [String]
1192
+ required :source, String
1193
+
1194
+ # @!attribute target
1195
+ #
1196
+ # @return [String]
1197
+ required :target, String
1198
+
1199
+ # @!method initialize(id:, source:, target:)
1200
+ # @param id [String]
1201
+ # @param source [String]
1202
+ # @param target [String]
1203
+ end
1204
+
1205
+ class Node < Revox::Internal::Type::BaseModel
1206
+ # @!attribute id
1207
+ #
1208
+ # @return [String]
1209
+ required :id, String
1210
+
1211
+ # @!attribute data
1212
+ #
1213
+ # @return [Revox::Models::PhoneNumberListResponse::PhoneNumber::InboundAssistant::PromptFlow::Node::Data]
1214
+ required :data,
1215
+ -> { Revox::Models::PhoneNumberListResponse::PhoneNumber::InboundAssistant::PromptFlow::Node::Data }
1216
+
1217
+ # @!attribute position
1218
+ #
1219
+ # @return [Revox::Models::PhoneNumberListResponse::PhoneNumber::InboundAssistant::PromptFlow::Node::Position]
1220
+ required :position,
1221
+ -> { Revox::Models::PhoneNumberListResponse::PhoneNumber::InboundAssistant::PromptFlow::Node::Position }
1222
+
1223
+ # @!attribute type
1224
+ #
1225
+ # @return [Symbol, :promptBlock]
1226
+ required :type, const: :promptBlock
1227
+
1228
+ # @!method initialize(id:, data:, position:, type: :promptBlock)
1229
+ # @param id [String]
1230
+ # @param data [Revox::Models::PhoneNumberListResponse::PhoneNumber::InboundAssistant::PromptFlow::Node::Data]
1231
+ # @param position [Revox::Models::PhoneNumberListResponse::PhoneNumber::InboundAssistant::PromptFlow::Node::Position]
1232
+ # @param type [Symbol, :promptBlock]
1233
+
1234
+ # @see Revox::Models::PhoneNumberListResponse::PhoneNumber::InboundAssistant::PromptFlow::Node#data
1235
+ class Data < Revox::Internal::Type::BaseModel
1236
+ # @!attribute body
1237
+ #
1238
+ # @return [String]
1239
+ required :body, String
1240
+
1241
+ # @!attribute title
1242
+ #
1243
+ # @return [String]
1244
+ required :title, String
1245
+
1246
+ # @!method initialize(body:, title:)
1247
+ # @param body [String]
1248
+ # @param title [String]
1249
+ end
1250
+
1251
+ # @see Revox::Models::PhoneNumberListResponse::PhoneNumber::InboundAssistant::PromptFlow::Node#position
1252
+ class Position < Revox::Internal::Type::BaseModel
1253
+ # @!attribute x
1254
+ #
1255
+ # @return [Float]
1256
+ required :x, Float
1257
+
1258
+ # @!attribute y_
1259
+ #
1260
+ # @return [Float]
1261
+ required :y_, Float, api_name: :y
1262
+
1263
+ # @!method initialize(x:, y_:)
1264
+ # @param x [Float]
1265
+ # @param y_ [Float]
1266
+ end
1267
+ end
1268
+ end
1269
+
1270
+ # @see Revox::Models::PhoneNumberListResponse::PhoneNumber::InboundAssistant#slack
1271
+ class Slack < Revox::Internal::Type::BaseModel
1272
+ # @!attribute channel_id
1273
+ # The Slack channel ID where the notification will be posted.
1274
+ #
1275
+ # @return [String]
1276
+ required :channel_id, String
1277
+
1278
+ # @!attribute connection_id
1279
+ # The Nango connection ID linking the org's Slack workspace to Revox.
1280
+ #
1281
+ # @return [String]
1282
+ required :connection_id, String
1283
+
1284
+ # @!attribute outcomes
1285
+ # Which call outcomes trigger a Slack notification (e.g. ['interested', 'none']).
1286
+ # Use 'none' to notify when outcome is null.
1287
+ #
1288
+ # @return [Array<Symbol, Revox::Models::PhoneNumberListResponse::PhoneNumber::InboundAssistant::Slack::Outcome>]
1289
+ required :outcomes,
1290
+ -> { Revox::Internal::Type::ArrayOf[enum: Revox::Models::PhoneNumberListResponse::PhoneNumber::InboundAssistant::Slack::Outcome] }
1291
+
1292
+ # @!attribute channel_name
1293
+ # Human-readable Slack channel name, cached for display in the UI.
1294
+ #
1295
+ # @return [String, nil]
1296
+ optional :channel_name, String, nil?: true
1297
+
1298
+ # @!attribute template
1299
+ # Optional message template. Supports {{summary}}, {{outcome}}, {{phone}},
1300
+ # {{call_url}}, {{assistant_name}}, {{campaign_name}}, {{first_name}},
1301
+ # {{last_name}}, {{email}}, {{company}}, {{contact_name}}, {{contact_line}}, plus
1302
+ # prompt_variables and structured_output keys. When null/empty a default template
1303
+ # is used.
1304
+ #
1305
+ # @return [String, nil]
1306
+ optional :template, String, nil?: true
1307
+
1308
+ # @!method initialize(channel_id:, connection_id:, outcomes:, channel_name: nil, template: nil)
1309
+ # Some parameter documentations has been truncated, see
1310
+ # {Revox::Models::PhoneNumberListResponse::PhoneNumber::InboundAssistant::Slack}
1311
+ # for more details.
1312
+ #
1313
+ # @param channel_id [String] The Slack channel ID where the notification will be posted.
1314
+ #
1315
+ # @param connection_id [String] The Nango connection ID linking the org's Slack workspace to Revox.
1316
+ #
1317
+ # @param outcomes [Array<Symbol, Revox::Models::PhoneNumberListResponse::PhoneNumber::InboundAssistant::Slack::Outcome>] Which call outcomes trigger a Slack notification (e.g. ['interested', 'none']).
1318
+ #
1319
+ # @param channel_name [String, nil] Human-readable Slack channel name, cached for display in the UI.
1320
+ #
1321
+ # @param template [String, nil] Optional message template. Supports {{summary}}, {{outcome}}, {{phone}},
1322
+ # {{call\_
1323
+
1324
+ module Outcome
1325
+ extend Revox::Internal::Type::Enum
1326
+
1327
+ NOT_INTERESTED = :not_interested
1328
+ INTERESTED = :interested
1329
+ COMPLETED = :completed
1330
+ REQUESTED_CALLBACK_LATER = :requested_callback_later
1331
+ REQUESTED_CALLBACK_NEW_NUMBER = :requested_callback_new_number
1332
+ DO_NOT_CONTACT = :do_not_contact
1333
+ AI_AVERSE = :ai_averse
1334
+ NONE = :none
1335
+
1336
+ # @!method self.values
1337
+ # @return [Array<Symbol>]
1338
+ end
1339
+ end
1340
+
1341
+ class StructuredOutputConfig < Revox::Internal::Type::BaseModel
1342
+ # @!attribute name
1343
+ #
1344
+ # @return [String]
1345
+ required :name, String
1346
+
1347
+ # @!attribute required
1348
+ #
1349
+ # @return [Boolean]
1350
+ required :required, Revox::Internal::Type::Boolean
1351
+
1352
+ # @!attribute type
1353
+ #
1354
+ # @return [Symbol, Revox::Models::PhoneNumberListResponse::PhoneNumber::InboundAssistant::StructuredOutputConfig::Type]
1355
+ required :type,
1356
+ enum: -> { Revox::Models::PhoneNumberListResponse::PhoneNumber::InboundAssistant::StructuredOutputConfig::Type }
1357
+
1358
+ # @!attribute description
1359
+ #
1360
+ # @return [String, nil]
1361
+ optional :description, String
1362
+
1363
+ # @!attribute enum_options
1364
+ #
1365
+ # @return [Array<String>, nil]
1366
+ optional :enum_options, Revox::Internal::Type::ArrayOf[String]
1367
+
1368
+ # @!method initialize(name:, required:, type:, description: nil, enum_options: nil)
1369
+ # @param name [String]
1370
+ # @param required [Boolean]
1371
+ # @param type [Symbol, Revox::Models::PhoneNumberListResponse::PhoneNumber::InboundAssistant::StructuredOutputConfig::Type]
1372
+ # @param description [String]
1373
+ # @param enum_options [Array<String>]
1374
+
1375
+ # @see Revox::Models::PhoneNumberListResponse::PhoneNumber::InboundAssistant::StructuredOutputConfig#type
1376
+ module Type
1377
+ extend Revox::Internal::Type::Enum
1378
+
1379
+ STRING = :string
1380
+ NUMBER = :number
1381
+ BOOLEAN = :boolean
1382
+ ENUM = :enum
1383
+ DATE = :date
1384
+ DATETIME = :datetime
1385
+
1386
+ # @!method self.values
1387
+ # @return [Array<Symbol>]
1388
+ end
1389
+ end
1390
+
1391
+ # @see Revox::Models::PhoneNumberListResponse::PhoneNumber::InboundAssistant#stt_context
1392
+ class SttContext < Revox::Internal::Type::BaseModel
1393
+ # @!attribute general
1394
+ #
1395
+ # @return [Array<Revox::Models::PhoneNumberListResponse::PhoneNumber::InboundAssistant::SttContext::General>]
1396
+ required :general,
1397
+ -> { Revox::Internal::Type::ArrayOf[Revox::Models::PhoneNumberListResponse::PhoneNumber::InboundAssistant::SttContext::General] }
1398
+
1399
+ # @!attribute terms
1400
+ #
1401
+ # @return [Array<String>]
1402
+ required :terms, Revox::Internal::Type::ArrayOf[String]
1403
+
1404
+ # @!method initialize(general:, terms:)
1405
+ # Assistant-level speech-to-text context: structured `general` key/value pairs
1406
+ # plus a list of domain `terms`. Prompt-derived context is merged in without
1407
+ # replacing existing entries.
1408
+ #
1409
+ # @param general [Array<Revox::Models::PhoneNumberListResponse::PhoneNumber::InboundAssistant::SttContext::General>]
1410
+ # @param terms [Array<String>]
1411
+
1412
+ class General < Revox::Internal::Type::BaseModel
1413
+ # @!attribute key
1414
+ #
1415
+ # @return [String]
1416
+ required :key, String
1417
+
1418
+ # @!attribute value
1419
+ #
1420
+ # @return [String]
1421
+ required :value, String
1422
+
1423
+ # @!method initialize(key:, value:)
1424
+ # @param key [String]
1425
+ # @param value [String]
1426
+ end
1427
+ end
1428
+
1429
+ # Transcriber (speech-to-text) model used for the assistant.
1430
+ #
1431
+ # @see Revox::Models::PhoneNumberListResponse::PhoneNumber::InboundAssistant#stt_model
1432
+ module SttModel
1433
+ extend Revox::Internal::Type::Enum
1434
+
1435
+ STT_RT_V4 = :"stt-rt-v4"
1436
+ STT_RT_V5 = :"stt-rt-v5"
1437
+
1438
+ # @!method self.values
1439
+ # @return [Array<Symbol>]
1440
+ end
1441
+
1442
+ # Audio clip to play while the agent is processing a response. One of the built-in
1443
+ # LiveKit audio clips; null disables it.
1444
+ #
1445
+ # @see Revox::Models::PhoneNumberListResponse::PhoneNumber::InboundAssistant#thinking_sound
1446
+ module ThinkingSound
1447
+ extend Revox::Internal::Type::Enum
1448
+
1449
+ CITY_AMBIENCE_OGG = :"city-ambience.ogg"
1450
+ FOREST_AMBIENCE_OGG = :"forest-ambience.ogg"
1451
+ OFFICE_AMBIENCE_OGG = :"office-ambience.ogg"
1452
+ CROWDED_ROOM_OGG = :"crowded-room.ogg"
1453
+ KEYBOARD_TYPING_OGG = :"keyboard-typing.ogg"
1454
+ KEYBOARD_TYPING2_OGG = :"keyboard-typing2.ogg"
1455
+ HOLD_MUSIC_OGG = :"hold_music.ogg"
1456
+
1457
+ # @!method self.values
1458
+ # @return [Array<Symbol>]
1459
+ end
1460
+
1461
+ # @see Revox::Models::PhoneNumberListResponse::PhoneNumber::InboundAssistant#type
1462
+ module Type
1463
+ extend Revox::Internal::Type::Enum
1464
+
1465
+ STANDALONE = :standalone
1466
+ MULTI_STEP = :"multi-step"
1467
+ SUB_ASSISTANT = :"sub-assistant"
1468
+
1469
+ # @!method self.values
1470
+ # @return [Array<Symbol>]
1471
+ end
1472
+
1473
+ # @see Revox::Models::PhoneNumberListResponse::PhoneNumber::InboundAssistant#voice
1474
+ class Voice < Revox::Internal::Type::BaseModel
1475
+ # @!attribute id
1476
+ # The ID of the voice.
1477
+ #
1478
+ # @return [String]
1479
+ required :id, String
1480
+
1481
+ # @!attribute provider
1482
+ # The provider of the voice.
1483
+ #
1484
+ # @return [Symbol, Revox::Models::PhoneNumberListResponse::PhoneNumber::InboundAssistant::Voice::Provider]
1485
+ required :provider,
1486
+ enum: -> { Revox::Models::PhoneNumberListResponse::PhoneNumber::InboundAssistant::Voice::Provider }
1487
+
1488
+ # @!attribute model
1489
+ # Cartesia TTS model (Cartesia only). Defaults to sonic-3 when omitted. Ignored
1490
+ # for other providers.
1491
+ #
1492
+ # @return [Symbol, Revox::Models::PhoneNumberListResponse::PhoneNumber::InboundAssistant::Voice::Model, nil]
1493
+ optional :model,
1494
+ enum: -> { Revox::Models::PhoneNumberListResponse::PhoneNumber::InboundAssistant::Voice::Model }
1495
+
1496
+ # @!attribute speed
1497
+ # The speed of the voice. Range depends on provider: Cartesia 0.6–1.5, ElevenLabs
1498
+ # 0.7–1.2. Default is 1.0.
1499
+ #
1500
+ # @return [Float, nil]
1501
+ optional :speed, Float
1502
+
1503
+ # @!attribute volume
1504
+ # Volume of the voice (Cartesia only). 0.5–2.0, default 1.0. Ignored for other
1505
+ # providers.
1506
+ #
1507
+ # @return [Float, nil]
1508
+ optional :volume, Float
1509
+
1510
+ # @!method initialize(id:, provider:, model: nil, speed: nil, volume: nil)
1511
+ # Some parameter documentations has been truncated, see
1512
+ # {Revox::Models::PhoneNumberListResponse::PhoneNumber::InboundAssistant::Voice}
1513
+ # for more details.
1514
+ #
1515
+ # @param id [String] The ID of the voice.
1516
+ #
1517
+ # @param provider [Symbol, Revox::Models::PhoneNumberListResponse::PhoneNumber::InboundAssistant::Voice::Provider] The provider of the voice.
1518
+ #
1519
+ # @param model [Symbol, Revox::Models::PhoneNumberListResponse::PhoneNumber::InboundAssistant::Voice::Model] Cartesia TTS model (Cartesia only). Defaults to sonic-3 when omitted. Ignored fo
1520
+ #
1521
+ # @param speed [Float] The speed of the voice. Range depends on provider: Cartesia 0.6–1.5, ElevenLabs
1522
+ #
1523
+ # @param volume [Float] Volume of the voice (Cartesia only). 0.5–2.0, default 1.0. Ignored for other pro
1524
+
1525
+ # The provider of the voice.
1526
+ #
1527
+ # @see Revox::Models::PhoneNumberListResponse::PhoneNumber::InboundAssistant::Voice#provider
1528
+ module Provider
1529
+ extend Revox::Internal::Type::Enum
1530
+
1531
+ CARTESIA = :cartesia
1532
+ ELEVENLABS = :elevenlabs
1533
+
1534
+ # @!method self.values
1535
+ # @return [Array<Symbol>]
1536
+ end
1537
+
1538
+ # Cartesia TTS model (Cartesia only). Defaults to sonic-3 when omitted. Ignored
1539
+ # for other providers.
1540
+ #
1541
+ # @see Revox::Models::PhoneNumberListResponse::PhoneNumber::InboundAssistant::Voice#model
1542
+ module Model
1543
+ extend Revox::Internal::Type::Enum
1544
+
1545
+ SONIC_3 = :"sonic-3"
1546
+ SONIC_3_5 = :"sonic-3.5"
1547
+
1548
+ # @!method self.values
1549
+ # @return [Array<Symbol>]
1550
+ end
1551
+ end
1552
+
1553
+ # @see Revox::Models::PhoneNumberListResponse::PhoneNumber::InboundAssistant#zoho
1554
+ class Zoho < Revox::Internal::Type::BaseModel
1555
+ # @!attribute connection_id
1556
+ # The Nango connection ID linking the org's Zoho CRM account to Revox.
1557
+ #
1558
+ # @return [String]
1559
+ required :connection_id, String
1560
+
1561
+ # @!attribute field_mapping
1562
+ # Maps extracted call fields (structured_output / prompt variables) onto Zoho
1563
+ # field API names on the upserted record.
1564
+ #
1565
+ # @return [Array<Revox::Models::PhoneNumberListResponse::PhoneNumber::InboundAssistant::Zoho::FieldMapping>]
1566
+ required :field_mapping,
1567
+ -> { Revox::Internal::Type::ArrayOf[Revox::Models::PhoneNumberListResponse::PhoneNumber::InboundAssistant::Zoho::FieldMapping] }
1568
+
1569
+ # @!attribute log_call_activity
1570
+ # When true, also log the call as a record in Zoho's Calls module (related to the
1571
+ # upserted prospect via Who_Id).
1572
+ #
1573
+ # @return [Boolean]
1574
+ required :log_call_activity, Revox::Internal::Type::Boolean
1575
+
1576
+ # @!attribute module_
1577
+ # Zoho module the prospect record is upserted into (e.g. 'Leads' or 'Contacts').
1578
+ #
1579
+ # @return [String]
1580
+ required :module_, String, api_name: :module
1581
+
1582
+ # @!attribute outcomes
1583
+ # Which call outcomes trigger the Zoho push (e.g. ['interested', 'none']). Use
1584
+ # 'none' to push when outcome is null.
1585
+ #
1586
+ # @return [Array<Symbol, Revox::Models::PhoneNumberListResponse::PhoneNumber::InboundAssistant::Zoho::Outcome>]
1587
+ required :outcomes,
1588
+ -> { Revox::Internal::Type::ArrayOf[enum: Revox::Models::PhoneNumberListResponse::PhoneNumber::InboundAssistant::Zoho::Outcome] }
1589
+
1590
+ # @!attribute template
1591
+ # Optional Note body template. Supports {{summary}}, {{outcome}}, {{phone}},
1592
+ # {{call_url}}, {{assistant_name}}, {{campaign_name}}, {{transcript}}, plus
1593
+ # prompt_variables and structured_output keys. When null/empty a default note
1594
+ # (outcome + summary + auto-listed extracted fields) is used.
1595
+ #
1596
+ # @return [String, nil]
1597
+ optional :template, String, nil?: true
1598
+
1599
+ # @!method initialize(connection_id:, field_mapping:, log_call_activity:, module_:, outcomes:, template: nil)
1600
+ # Some parameter documentations has been truncated, see
1601
+ # {Revox::Models::PhoneNumberListResponse::PhoneNumber::InboundAssistant::Zoho}
1602
+ # for more details.
1603
+ #
1604
+ # @param connection_id [String] The Nango connection ID linking the org's Zoho CRM account to Revox.
1605
+ #
1606
+ # @param field_mapping [Array<Revox::Models::PhoneNumberListResponse::PhoneNumber::InboundAssistant::Zoho::FieldMapping>] Maps extracted call fields (structured_output / prompt variables) onto Zoho fiel
1607
+ #
1608
+ # @param log_call_activity [Boolean] When true, also log the call as a record in Zoho's Calls module (related to the
1609
+ #
1610
+ # @param module_ [String] Zoho module the prospect record is upserted into (e.g. 'Leads' or 'Contacts').
1611
+ #
1612
+ # @param outcomes [Array<Symbol, Revox::Models::PhoneNumberListResponse::PhoneNumber::InboundAssistant::Zoho::Outcome>] Which call outcomes trigger the Zoho push (e.g. ['interested', 'none']). Use 'no
1613
+ #
1614
+ # @param template [String, nil] Optional Note body template. Supports {{summary}}, {{outcome}}, {{phone}}, {{cal
1615
+
1616
+ class FieldMapping < Revox::Internal::Type::BaseModel
1617
+ # @!attribute source
1618
+ # Source key to read from the call: a structured_output field name, falling back
1619
+ # to a prompt variable of the same name.
1620
+ #
1621
+ # @return [String]
1622
+ required :source, String
1623
+
1624
+ # @!attribute zoho_field
1625
+ # Destination Zoho field API name on the upserted record (e.g. 'Email', 'Company',
1626
+ # or a custom 'Budget\_\_c').
1627
+ #
1628
+ # @return [String]
1629
+ required :zoho_field, String
1630
+
1631
+ # @!method initialize(source:, zoho_field:)
1632
+ # Some parameter documentations has been truncated, see
1633
+ # {Revox::Models::PhoneNumberListResponse::PhoneNumber::InboundAssistant::Zoho::FieldMapping}
1634
+ # for more details.
1635
+ #
1636
+ # @param source [String] Source key to read from the call: a structured_output field name, falling back t
1637
+ #
1638
+ # @param zoho_field [String] Destination Zoho field API name on the upserted record (e.g. 'Email', 'Company',
1639
+ end
1640
+
1641
+ module Outcome
1642
+ extend Revox::Internal::Type::Enum
1643
+
1644
+ NOT_INTERESTED = :not_interested
1645
+ INTERESTED = :interested
1646
+ COMPLETED = :completed
1647
+ REQUESTED_CALLBACK_LATER = :requested_callback_later
1648
+ REQUESTED_CALLBACK_NEW_NUMBER = :requested_callback_new_number
1649
+ DO_NOT_CONTACT = :do_not_contact
1650
+ AI_AVERSE = :ai_averse
1651
+ NONE = :none
1652
+
1653
+ # @!method self.values
1654
+ # @return [Array<Symbol>]
1655
+ end
1656
+ end
1657
+
1658
+ # @see Revox::Models::PhoneNumberListResponse::PhoneNumber::InboundAssistant#created_by
1659
+ class CreatedBy < Revox::Internal::Type::BaseModel
1660
+ # @!attribute id
1661
+ # The database user id of the creator.
1662
+ #
1663
+ # @return [String]
1664
+ required :id, String
1665
+
1666
+ # @!attribute email
1667
+ #
1668
+ # @return [String]
1669
+ required :email, String
1670
+
1671
+ # @!attribute first_name
1672
+ #
1673
+ # @return [String, nil]
1674
+ required :first_name, String, nil?: true
1675
+
1676
+ # @!attribute last_name
1677
+ #
1678
+ # @return [String, nil]
1679
+ required :last_name, String, nil?: true
1680
+
1681
+ # @!method initialize(id:, email:, first_name:, last_name:)
1682
+ # The user who created the assistant.
1683
+ #
1684
+ # @param id [String] The database user id of the creator.
1685
+ #
1686
+ # @param email [String]
1687
+ #
1688
+ # @param first_name [String, nil]
1689
+ #
1690
+ # @param last_name [String, nil]
1691
+ end
1692
+
1693
+ class FaqItem < Revox::Internal::Type::BaseModel
1694
+ # @!attribute answer
1695
+ #
1696
+ # @return [String]
1697
+ required :answer, String
1698
+
1699
+ # @!attribute question
1700
+ #
1701
+ # @return [String]
1702
+ required :question, String
1703
+
1704
+ # @!attribute id
1705
+ #
1706
+ # @return [String, nil]
1707
+ optional :id, String
1708
+
1709
+ # @!attribute needs_human_answer
1710
+ #
1711
+ # @return [Boolean, nil]
1712
+ optional :needs_human_answer, Revox::Internal::Type::Boolean
1713
+
1714
+ # @!attribute source
1715
+ #
1716
+ # @return [Symbol, Revox::Models::PhoneNumberListResponse::PhoneNumber::InboundAssistant::FaqItem::Source, nil]
1717
+ optional :source,
1718
+ enum: -> { Revox::Models::PhoneNumberListResponse::PhoneNumber::InboundAssistant::FaqItem::Source }
1719
+
1720
+ # @!method initialize(answer:, question:, id: nil, needs_human_answer: nil, source: nil)
1721
+ # @param answer [String]
1722
+ # @param question [String]
1723
+ # @param id [String]
1724
+ # @param needs_human_answer [Boolean]
1725
+ # @param source [Symbol, Revox::Models::PhoneNumberListResponse::PhoneNumber::InboundAssistant::FaqItem::Source]
1726
+
1727
+ # @see Revox::Models::PhoneNumberListResponse::PhoneNumber::InboundAssistant::FaqItem#source
1728
+ module Source
1729
+ extend Revox::Internal::Type::Enum
1730
+
1731
+ HUMAN = :human
1732
+ AI = :ai
1733
+
1734
+ # @!method self.values
1735
+ # @return [Array<Symbol>]
1736
+ end
1737
+ end
1738
+ end
1739
+
1740
+ # @see Revox::Models::PhoneNumberListResponse::PhoneNumber#provider
1741
+ module Provider
1742
+ extend Revox::Internal::Type::Enum
1743
+
1744
+ TWILIO = :twilio
1745
+ TELNYX = :telnyx
1746
+ SIP = :sip
1747
+
1748
+ # @!method self.values
1749
+ # @return [Array<Symbol>]
1750
+ end
1751
+
1752
+ # @see Revox::Models::PhoneNumberListResponse::PhoneNumber#source
1753
+ module Source
1754
+ extend Revox::Internal::Type::Enum
1755
+
1756
+ USER_IMPORTED = :user_imported
1757
+ REVOX_PROVISIONED = :revox_provisioned
1758
+ REVOX_PURCHASED = :revox_purchased
1759
+
1760
+ # @!method self.values
1761
+ # @return [Array<Symbol>]
1762
+ end
1763
+
1764
+ # @see Revox::Models::PhoneNumberListResponse::PhoneNumber#type
1765
+ module Type
1766
+ extend Revox::Internal::Type::Enum
1767
+
1768
+ OWNED_NUMBER = :owned_number
1769
+ VERIFIED_CALLER_ID = :verified_caller_id
1770
+
1771
+ # @!method self.values
1772
+ # @return [Array<Symbol>]
1773
+ end
1774
+ end
1775
+ end
1776
+ end
1777
+ end