revox 0.2.0 → 0.4.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 (208) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +36 -0
  3. data/README.md +38 -38
  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 +1616 -0
  8. data/lib/revox/models/assistant_create_params.rb +90 -66
  9. data/lib/revox/models/assistant_create_response.rb +87 -65
  10. data/lib/revox/models/assistant_list_response.rb +87 -65
  11. data/lib/revox/models/assistant_retrieve_response.rb +86 -65
  12. data/lib/revox/models/assistant_update_params.rb +90 -66
  13. data/lib/revox/models/assistant_update_response.rb +87 -65
  14. data/lib/revox/models/auth_status_retrieve_params.rb +14 -0
  15. data/lib/revox/models/auth_status_retrieve_response.rb +17 -0
  16. data/lib/revox/models/call_cancel_params.rb +20 -0
  17. data/lib/revox/models/call_cancel_response.rb +16 -0
  18. data/lib/revox/models/call_create_params.rb +117 -90
  19. data/lib/revox/models/call_create_response.rb +680 -90
  20. data/lib/revox/models/call_export_params.rb +203 -0
  21. data/lib/revox/models/call_export_response.rb +22 -0
  22. data/lib/revox/models/call_pause_params.rb +20 -0
  23. data/lib/revox/models/call_pause_response.rb +16 -0
  24. data/lib/revox/models/call_phone_history_params.rb +14 -0
  25. data/lib/revox/models/call_phone_history_response.rb +95 -0
  26. data/lib/revox/models/call_resume_params.rb +20 -0
  27. data/lib/revox/models/call_resume_response.rb +16 -0
  28. data/lib/revox/models/call_retrieve_response.rb +681 -90
  29. data/lib/revox/models/call_search_params.rb +169 -0
  30. data/lib/revox/models/call_search_response.rb +3694 -0
  31. data/lib/revox/models/campaign_create_params.rb +7 -57
  32. data/lib/revox/models/campaign_create_response.rb +108 -119
  33. data/lib/revox/models/campaign_get_rows_response.rb +682 -90
  34. data/lib/revox/models/campaign_list_response.rb +108 -119
  35. data/lib/revox/models/campaign_pause_params.rb +20 -0
  36. data/lib/revox/models/campaign_pause_response.rb +16 -0
  37. data/lib/revox/models/campaign_resume_params.rb +20 -0
  38. data/lib/revox/models/campaign_resume_response.rb +16 -0
  39. data/lib/revox/models/campaign_retrieve_response.rb +108 -119
  40. data/lib/revox/models/campaign_statistics_params.rb +20 -0
  41. data/lib/revox/models/campaign_statistics_response.rb +514 -0
  42. data/lib/revox/models/campaign_update_params.rb +165 -0
  43. data/lib/revox/models/campaign_update_response.rb +2019 -0
  44. data/lib/revox/models/phone_number_delete_params.rb +20 -0
  45. data/lib/revox/models/phone_number_delete_response.rb +16 -0
  46. data/lib/revox/models/phone_number_list_params.rb +14 -0
  47. data/lib/revox/models/phone_number_list_response.rb +1799 -0
  48. data/lib/revox/models/phone_number_update_params.rb +32 -0
  49. data/lib/revox/models/phone_number_update_response.rb +1799 -0
  50. data/lib/revox/models/user_retrieve_params.rb +14 -0
  51. data/lib/revox/models/user_retrieve_response.rb +99 -0
  52. data/lib/revox/models/voice_clone_params.rb +78 -0
  53. data/lib/revox/models/voice_clone_response.rb +40 -0
  54. data/lib/revox/models/voice_delete_params.rb +20 -0
  55. data/lib/revox/models/voice_delete_response.rb +16 -0
  56. data/lib/revox/models/voice_list_response.rb +1 -0
  57. data/lib/revox/models/voice_preview_params.rb +1 -0
  58. data/lib/revox/models/voice_retrieve_params.rb +1 -0
  59. data/lib/revox/models.rb +35 -1
  60. data/lib/revox/resources/assistants.rb +31 -10
  61. data/lib/revox/resources/auth_status.rb +32 -0
  62. data/lib/revox/resources/call.rb +149 -4
  63. data/lib/revox/resources/campaigns.rb +110 -11
  64. data/lib/revox/resources/phone_numbers.rb +74 -0
  65. data/lib/revox/resources/users.rb +17 -3
  66. data/lib/revox/resources/voices.rb +50 -0
  67. data/lib/revox/version.rb +1 -1
  68. data/lib/revox.rb +38 -5
  69. data/rbi/revox/client.rbi +6 -0
  70. data/rbi/revox/models/assistant_clone_params.rbi +33 -0
  71. data/rbi/revox/models/assistant_clone_response.rbi +3351 -0
  72. data/rbi/revox/models/assistant_create_params.rbi +148 -162
  73. data/rbi/revox/models/assistant_create_response.rbi +157 -147
  74. data/rbi/revox/models/assistant_list_response.rbi +157 -147
  75. data/rbi/revox/models/assistant_retrieve_response.rbi +153 -147
  76. data/rbi/revox/models/assistant_update_params.rbi +148 -162
  77. data/rbi/revox/models/assistant_update_response.rbi +157 -147
  78. data/rbi/revox/models/auth_status_retrieve_params.rbi +27 -0
  79. data/rbi/revox/models/auth_status_retrieve_response.rbi +30 -0
  80. data/rbi/revox/models/call_cancel_params.rbi +33 -0
  81. data/rbi/revox/models/call_cancel_response.rbi +23 -0
  82. data/rbi/revox/models/call_create_params.rbi +190 -187
  83. data/rbi/revox/models/call_create_response.rbi +1150 -227
  84. data/rbi/revox/models/call_export_params.rbi +446 -0
  85. data/rbi/revox/models/call_export_response.rbi +26 -0
  86. data/rbi/revox/models/call_pause_params.rbi +31 -0
  87. data/rbi/revox/models/call_pause_response.rbi +23 -0
  88. data/rbi/revox/models/call_phone_history_params.rbi +27 -0
  89. data/rbi/revox/models/call_phone_history_response.rbi +209 -0
  90. data/rbi/revox/models/call_resume_params.rbi +33 -0
  91. data/rbi/revox/models/call_resume_response.rbi +23 -0
  92. data/rbi/revox/models/call_retrieve_response.rbi +1150 -227
  93. data/rbi/revox/models/call_search_params.rbi +281 -0
  94. data/rbi/revox/models/call_search_response.rbi +7504 -0
  95. data/rbi/revox/models/campaign_create_params.rbi +9 -87
  96. data/rbi/revox/models/campaign_create_response.rbi +188 -266
  97. data/rbi/revox/models/campaign_get_rows_response.rbi +1150 -225
  98. data/rbi/revox/models/campaign_list_response.rbi +188 -262
  99. data/rbi/revox/models/campaign_pause_params.rbi +33 -0
  100. data/rbi/revox/models/campaign_pause_response.rbi +23 -0
  101. data/rbi/revox/models/campaign_resume_params.rbi +33 -0
  102. data/rbi/revox/models/campaign_resume_response.rbi +23 -0
  103. data/rbi/revox/models/campaign_retrieve_response.rbi +188 -266
  104. data/rbi/revox/models/campaign_statistics_params.rbi +33 -0
  105. data/rbi/revox/models/campaign_statistics_response.rbi +1069 -0
  106. data/rbi/revox/models/campaign_update_params.rbi +313 -0
  107. data/rbi/revox/models/campaign_update_response.rbi +4092 -0
  108. data/rbi/revox/models/phone_number_delete_params.rbi +33 -0
  109. data/rbi/revox/models/phone_number_delete_response.rbi +26 -0
  110. data/rbi/revox/models/phone_number_list_params.rbi +27 -0
  111. data/rbi/revox/models/phone_number_list_response.rbi +3690 -0
  112. data/rbi/revox/models/phone_number_update_params.rbi +53 -0
  113. data/rbi/revox/models/phone_number_update_response.rbi +3693 -0
  114. data/rbi/revox/models/user_retrieve_params.rbi +27 -0
  115. data/rbi/revox/models/user_retrieve_response.rbi +140 -0
  116. data/rbi/revox/models/voice_clone_params.rbi +141 -0
  117. data/rbi/revox/models/voice_clone_response.rbi +53 -0
  118. data/rbi/revox/models/voice_delete_params.rbi +33 -0
  119. data/rbi/revox/models/voice_delete_response.rbi +23 -0
  120. data/rbi/revox/models/voice_list_response.rbi +5 -0
  121. data/rbi/revox/models/voice_preview_params.rbi +2 -0
  122. data/rbi/revox/models/voice_retrieve_params.rbi +2 -0
  123. data/rbi/revox/models.rbi +35 -1
  124. data/rbi/revox/resources/assistants.rbi +52 -22
  125. data/rbi/revox/resources/auth_status.rbi +21 -0
  126. data/rbi/revox/resources/call.rbi +114 -4
  127. data/rbi/revox/resources/campaigns.rbi +77 -15
  128. data/rbi/revox/resources/phone_numbers.rbi +43 -0
  129. data/rbi/revox/resources/users.rbi +8 -2
  130. data/rbi/revox/resources/voices.rbi +39 -0
  131. data/sig/revox/client.rbs +4 -0
  132. data/sig/revox/models/assistant_clone_params.rbs +20 -0
  133. data/sig/revox/models/assistant_clone_response.rbs +1310 -0
  134. data/sig/revox/models/assistant_create_params.rbs +39 -58
  135. data/sig/revox/models/assistant_create_response.rbs +46 -54
  136. data/sig/revox/models/assistant_list_response.rbs +46 -54
  137. data/sig/revox/models/assistant_retrieve_response.rbs +46 -54
  138. data/sig/revox/models/assistant_update_params.rbs +39 -58
  139. data/sig/revox/models/assistant_update_response.rbs +46 -54
  140. data/sig/revox/models/auth_status_retrieve_params.rbs +15 -0
  141. data/sig/revox/models/auth_status_retrieve_response.rbs +13 -0
  142. data/sig/revox/models/call_cancel_params.rbs +20 -0
  143. data/sig/revox/models/call_cancel_response.rbs +13 -0
  144. data/sig/revox/models/call_create_params.rbs +50 -71
  145. data/sig/revox/models/call_create_response.rbs +473 -77
  146. data/sig/revox/models/call_export_params.rbs +230 -0
  147. data/sig/revox/models/call_export_response.rbs +15 -0
  148. data/sig/revox/models/call_pause_params.rbs +20 -0
  149. data/sig/revox/models/call_pause_response.rbs +13 -0
  150. data/sig/revox/models/call_phone_history_params.rbs +15 -0
  151. data/sig/revox/models/call_phone_history_response.rbs +93 -0
  152. data/sig/revox/models/call_resume_params.rbs +20 -0
  153. data/sig/revox/models/call_resume_response.rbs +13 -0
  154. data/sig/revox/models/call_retrieve_response.rbs +473 -77
  155. data/sig/revox/models/call_search_params.rbs +194 -0
  156. data/sig/revox/models/call_search_response.rbs +3045 -0
  157. data/sig/revox/models/campaign_create_params.rbs +5 -50
  158. data/sig/revox/models/campaign_create_response.rbs +62 -98
  159. data/sig/revox/models/campaign_get_rows_response.rbs +472 -73
  160. data/sig/revox/models/campaign_list_response.rbs +62 -98
  161. data/sig/revox/models/campaign_pause_params.rbs +20 -0
  162. data/sig/revox/models/campaign_pause_response.rbs +13 -0
  163. data/sig/revox/models/campaign_resume_params.rbs +20 -0
  164. data/sig/revox/models/campaign_resume_response.rbs +13 -0
  165. data/sig/revox/models/campaign_retrieve_response.rbs +62 -98
  166. data/sig/revox/models/campaign_statistics_params.rbs +20 -0
  167. data/sig/revox/models/campaign_statistics_response.rbs +489 -0
  168. data/sig/revox/models/campaign_update_params.rbs +135 -0
  169. data/sig/revox/models/campaign_update_response.rbs +1658 -0
  170. data/sig/revox/models/phone_number_delete_params.rbs +20 -0
  171. data/sig/revox/models/phone_number_delete_response.rbs +13 -0
  172. data/sig/revox/models/phone_number_list_params.rbs +15 -0
  173. data/sig/revox/models/phone_number_list_response.rbs +1454 -0
  174. data/sig/revox/models/phone_number_update_params.rbs +32 -0
  175. data/sig/revox/models/phone_number_update_response.rbs +1452 -0
  176. data/sig/revox/models/user_retrieve_params.rbs +14 -0
  177. data/sig/revox/models/user_retrieve_response.rbs +71 -0
  178. data/sig/revox/models/voice_clone_params.rbs +79 -0
  179. data/sig/revox/models/voice_clone_response.rbs +40 -0
  180. data/sig/revox/models/voice_delete_params.rbs +20 -0
  181. data/sig/revox/models/voice_delete_response.rbs +13 -0
  182. data/sig/revox/models/voice_list_response.rbs +2 -1
  183. data/sig/revox/models/voice_preview_params.rbs +2 -1
  184. data/sig/revox/models/voice_retrieve_params.rbs +2 -1
  185. data/sig/revox/models.rbs +35 -1
  186. data/sig/revox/resources/assistants.rbs +9 -4
  187. data/sig/revox/resources/auth_status.rbs +11 -0
  188. data/sig/revox/resources/call.rbs +46 -1
  189. data/sig/revox/resources/campaigns.rbs +24 -3
  190. data/sig/revox/resources/phone_numbers.rbs +23 -0
  191. data/sig/revox/resources/users.rbs +3 -1
  192. data/sig/revox/resources/voices.rbs +13 -0
  193. metadata +116 -17
  194. data/lib/revox/models/users/me_retrieve_params.rb +0 -16
  195. data/lib/revox/models/users/me_retrieve_response.rb +0 -101
  196. data/lib/revox/models/users/me_update_params.rb +0 -22
  197. data/lib/revox/models/users/me_update_response.rb +0 -101
  198. data/lib/revox/resources/users/me.rb +0 -55
  199. data/rbi/revox/models/users/me_retrieve_params.rbi +0 -29
  200. data/rbi/revox/models/users/me_retrieve_response.rbi +0 -149
  201. data/rbi/revox/models/users/me_update_params.rbi +0 -43
  202. data/rbi/revox/models/users/me_update_response.rbi +0 -149
  203. data/rbi/revox/resources/users/me.rbi +0 -33
  204. data/sig/revox/models/users/me_retrieve_params.rbs +0 -16
  205. data/sig/revox/models/users/me_retrieve_response.rbs +0 -75
  206. data/sig/revox/models/users/me_update_params.rbs +0 -28
  207. data/sig/revox/models/users/me_update_response.rbs +0 -75
  208. data/sig/revox/resources/users/me.rbs +0 -18
@@ -0,0 +1,1069 @@
1
+ # typed: strong
2
+
3
+ module Revox
4
+ module Models
5
+ class CampaignStatisticsResponse < Revox::Internal::Type::BaseModel
6
+ OrHash =
7
+ T.type_alias do
8
+ T.any(
9
+ Revox::Models::CampaignStatisticsResponse,
10
+ Revox::Internal::AnyHash
11
+ )
12
+ end
13
+
14
+ sig { returns(Revox::Models::CampaignStatisticsResponse::Statistics) }
15
+ attr_reader :statistics
16
+
17
+ sig do
18
+ params(
19
+ statistics:
20
+ Revox::Models::CampaignStatisticsResponse::Statistics::OrHash
21
+ ).void
22
+ end
23
+ attr_writer :statistics
24
+
25
+ sig do
26
+ params(
27
+ statistics:
28
+ Revox::Models::CampaignStatisticsResponse::Statistics::OrHash
29
+ ).returns(T.attached_class)
30
+ end
31
+ def self.new(statistics:)
32
+ end
33
+
34
+ sig do
35
+ override.returns(
36
+ { statistics: Revox::Models::CampaignStatisticsResponse::Statistics }
37
+ )
38
+ end
39
+ def to_hash
40
+ end
41
+
42
+ class Statistics < Revox::Internal::Type::BaseModel
43
+ OrHash =
44
+ T.type_alias do
45
+ T.any(
46
+ Revox::Models::CampaignStatisticsResponse::Statistics,
47
+ Revox::Internal::AnyHash
48
+ )
49
+ end
50
+
51
+ sig do
52
+ returns(
53
+ Revox::Models::CampaignStatisticsResponse::Statistics::Campaign
54
+ )
55
+ end
56
+ attr_reader :campaign
57
+
58
+ sig do
59
+ params(
60
+ campaign:
61
+ Revox::Models::CampaignStatisticsResponse::Statistics::Campaign::OrHash
62
+ ).void
63
+ end
64
+ attr_writer :campaign
65
+
66
+ sig do
67
+ returns(
68
+ T.nilable(
69
+ Revox::Models::CampaignStatisticsResponse::Statistics::DataExtraction
70
+ )
71
+ )
72
+ end
73
+ attr_reader :data_extraction
74
+
75
+ sig do
76
+ params(
77
+ data_extraction:
78
+ T.nilable(
79
+ Revox::Models::CampaignStatisticsResponse::Statistics::DataExtraction::OrHash
80
+ )
81
+ ).void
82
+ end
83
+ attr_writer :data_extraction
84
+
85
+ sig do
86
+ returns(Revox::Models::CampaignStatisticsResponse::Statistics::Effort)
87
+ end
88
+ attr_reader :effort
89
+
90
+ sig do
91
+ params(
92
+ effort:
93
+ Revox::Models::CampaignStatisticsResponse::Statistics::Effort::OrHash
94
+ ).void
95
+ end
96
+ attr_writer :effort
97
+
98
+ sig do
99
+ returns(Revox::Models::CampaignStatisticsResponse::Statistics::Funnel)
100
+ end
101
+ attr_reader :funnel
102
+
103
+ sig do
104
+ params(
105
+ funnel:
106
+ Revox::Models::CampaignStatisticsResponse::Statistics::Funnel::OrHash
107
+ ).void
108
+ end
109
+ attr_writer :funnel
110
+
111
+ sig { returns(T::Array[String]) }
112
+ attr_accessor :hot_lead_outcomes
113
+
114
+ sig do
115
+ returns(
116
+ Revox::Models::CampaignStatisticsResponse::Statistics::Inbound
117
+ )
118
+ end
119
+ attr_reader :inbound
120
+
121
+ sig do
122
+ params(
123
+ inbound:
124
+ Revox::Models::CampaignStatisticsResponse::Statistics::Inbound::OrHash
125
+ ).void
126
+ end
127
+ attr_writer :inbound
128
+
129
+ sig do
130
+ returns(Revox::Models::CampaignStatisticsResponse::Statistics::JumpIn)
131
+ end
132
+ attr_reader :jump_in
133
+
134
+ sig do
135
+ params(
136
+ jump_in:
137
+ Revox::Models::CampaignStatisticsResponse::Statistics::JumpIn::OrHash
138
+ ).void
139
+ end
140
+ attr_writer :jump_in
141
+
142
+ sig do
143
+ returns(Revox::Models::CampaignStatisticsResponse::Statistics::Leads)
144
+ end
145
+ attr_reader :leads
146
+
147
+ sig do
148
+ params(
149
+ leads:
150
+ Revox::Models::CampaignStatisticsResponse::Statistics::Leads::OrHash
151
+ ).void
152
+ end
153
+ attr_writer :leads
154
+
155
+ sig do
156
+ returns(
157
+ T::Array[
158
+ Revox::Models::CampaignStatisticsResponse::Statistics::OutcomeBreakdown
159
+ ]
160
+ )
161
+ end
162
+ attr_accessor :outcome_breakdown
163
+
164
+ sig do
165
+ params(
166
+ campaign:
167
+ Revox::Models::CampaignStatisticsResponse::Statistics::Campaign::OrHash,
168
+ data_extraction:
169
+ T.nilable(
170
+ Revox::Models::CampaignStatisticsResponse::Statistics::DataExtraction::OrHash
171
+ ),
172
+ effort:
173
+ Revox::Models::CampaignStatisticsResponse::Statistics::Effort::OrHash,
174
+ funnel:
175
+ Revox::Models::CampaignStatisticsResponse::Statistics::Funnel::OrHash,
176
+ hot_lead_outcomes: T::Array[String],
177
+ inbound:
178
+ Revox::Models::CampaignStatisticsResponse::Statistics::Inbound::OrHash,
179
+ jump_in:
180
+ Revox::Models::CampaignStatisticsResponse::Statistics::JumpIn::OrHash,
181
+ leads:
182
+ Revox::Models::CampaignStatisticsResponse::Statistics::Leads::OrHash,
183
+ outcome_breakdown:
184
+ T::Array[
185
+ Revox::Models::CampaignStatisticsResponse::Statistics::OutcomeBreakdown::OrHash
186
+ ]
187
+ ).returns(T.attached_class)
188
+ end
189
+ def self.new(
190
+ campaign:,
191
+ data_extraction:,
192
+ effort:,
193
+ funnel:,
194
+ hot_lead_outcomes:,
195
+ inbound:,
196
+ jump_in:,
197
+ leads:,
198
+ outcome_breakdown:
199
+ )
200
+ end
201
+
202
+ sig do
203
+ override.returns(
204
+ {
205
+ campaign:
206
+ Revox::Models::CampaignStatisticsResponse::Statistics::Campaign,
207
+ data_extraction:
208
+ T.nilable(
209
+ Revox::Models::CampaignStatisticsResponse::Statistics::DataExtraction
210
+ ),
211
+ effort:
212
+ Revox::Models::CampaignStatisticsResponse::Statistics::Effort,
213
+ funnel:
214
+ Revox::Models::CampaignStatisticsResponse::Statistics::Funnel,
215
+ hot_lead_outcomes: T::Array[String],
216
+ inbound:
217
+ Revox::Models::CampaignStatisticsResponse::Statistics::Inbound,
218
+ jump_in:
219
+ Revox::Models::CampaignStatisticsResponse::Statistics::JumpIn,
220
+ leads:
221
+ Revox::Models::CampaignStatisticsResponse::Statistics::Leads,
222
+ outcome_breakdown:
223
+ T::Array[
224
+ Revox::Models::CampaignStatisticsResponse::Statistics::OutcomeBreakdown
225
+ ]
226
+ }
227
+ )
228
+ end
229
+ def to_hash
230
+ end
231
+
232
+ class Campaign < Revox::Internal::Type::BaseModel
233
+ OrHash =
234
+ T.type_alias do
235
+ T.any(
236
+ Revox::Models::CampaignStatisticsResponse::Statistics::Campaign,
237
+ Revox::Internal::AnyHash
238
+ )
239
+ end
240
+
241
+ sig { returns(String) }
242
+ attr_accessor :id
243
+
244
+ sig { returns(T.nilable(String)) }
245
+ attr_accessor :agent_name
246
+
247
+ sig { returns(T.anything) }
248
+ attr_accessor :first_activity_at
249
+
250
+ sig { returns(T::Boolean) }
251
+ attr_accessor :has_activity
252
+
253
+ sig { returns(T::Boolean) }
254
+ attr_accessor :is_cancelled
255
+
256
+ sig { returns(T.anything) }
257
+ attr_accessor :last_activity_at
258
+
259
+ sig { returns(T.nilable(Float)) }
260
+ attr_accessor :max_attempts_per_contact
261
+
262
+ sig { returns(String) }
263
+ attr_accessor :name
264
+
265
+ sig do
266
+ returns(
267
+ Revox::Models::CampaignStatisticsResponse::Statistics::Campaign::Status::TaggedSymbol
268
+ )
269
+ end
270
+ attr_accessor :status
271
+
272
+ sig { returns(String) }
273
+ attr_accessor :timezone
274
+
275
+ sig do
276
+ params(
277
+ id: String,
278
+ agent_name: T.nilable(String),
279
+ first_activity_at: T.anything,
280
+ has_activity: T::Boolean,
281
+ is_cancelled: T::Boolean,
282
+ last_activity_at: T.anything,
283
+ max_attempts_per_contact: T.nilable(Float),
284
+ name: String,
285
+ status:
286
+ Revox::Models::CampaignStatisticsResponse::Statistics::Campaign::Status::OrSymbol,
287
+ timezone: String
288
+ ).returns(T.attached_class)
289
+ end
290
+ def self.new(
291
+ id:,
292
+ agent_name:,
293
+ first_activity_at:,
294
+ has_activity:,
295
+ is_cancelled:,
296
+ last_activity_at:,
297
+ max_attempts_per_contact:,
298
+ name:,
299
+ status:,
300
+ timezone:
301
+ )
302
+ end
303
+
304
+ sig do
305
+ override.returns(
306
+ {
307
+ id: String,
308
+ agent_name: T.nilable(String),
309
+ first_activity_at: T.anything,
310
+ has_activity: T::Boolean,
311
+ is_cancelled: T::Boolean,
312
+ last_activity_at: T.anything,
313
+ max_attempts_per_contact: T.nilable(Float),
314
+ name: String,
315
+ status:
316
+ Revox::Models::CampaignStatisticsResponse::Statistics::Campaign::Status::TaggedSymbol,
317
+ timezone: String
318
+ }
319
+ )
320
+ end
321
+ def to_hash
322
+ end
323
+
324
+ module Status
325
+ extend Revox::Internal::Type::Enum
326
+
327
+ TaggedSymbol =
328
+ T.type_alias do
329
+ T.all(
330
+ Symbol,
331
+ Revox::Models::CampaignStatisticsResponse::Statistics::Campaign::Status
332
+ )
333
+ end
334
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
335
+
336
+ RUNNING =
337
+ T.let(
338
+ :running,
339
+ Revox::Models::CampaignStatisticsResponse::Statistics::Campaign::Status::TaggedSymbol
340
+ )
341
+ PAUSED =
342
+ T.let(
343
+ :paused,
344
+ Revox::Models::CampaignStatisticsResponse::Statistics::Campaign::Status::TaggedSymbol
345
+ )
346
+ COMPLETED =
347
+ T.let(
348
+ :completed,
349
+ Revox::Models::CampaignStatisticsResponse::Statistics::Campaign::Status::TaggedSymbol
350
+ )
351
+
352
+ sig do
353
+ override.returns(
354
+ T::Array[
355
+ Revox::Models::CampaignStatisticsResponse::Statistics::Campaign::Status::TaggedSymbol
356
+ ]
357
+ )
358
+ end
359
+ def self.values
360
+ end
361
+ end
362
+ end
363
+
364
+ class DataExtraction < Revox::Internal::Type::BaseModel
365
+ OrHash =
366
+ T.type_alias do
367
+ T.any(
368
+ Revox::Models::CampaignStatisticsResponse::Statistics::DataExtraction,
369
+ Revox::Internal::AnyHash
370
+ )
371
+ end
372
+
373
+ sig { returns(T::Array[String]) }
374
+ attr_accessor :fields
375
+
376
+ sig { returns(String) }
377
+ attr_accessor :intro
378
+
379
+ sig do
380
+ params(fields: T::Array[String], intro: String).returns(
381
+ T.attached_class
382
+ )
383
+ end
384
+ def self.new(fields:, intro:)
385
+ end
386
+
387
+ sig { override.returns({ fields: T::Array[String], intro: String }) }
388
+ def to_hash
389
+ end
390
+ end
391
+
392
+ class Effort < Revox::Internal::Type::BaseModel
393
+ OrHash =
394
+ T.type_alias do
395
+ T.any(
396
+ Revox::Models::CampaignStatisticsResponse::Statistics::Effort,
397
+ Revox::Internal::AnyHash
398
+ )
399
+ end
400
+
401
+ sig { returns(Float) }
402
+ attr_accessor :calls_total
403
+
404
+ sig { returns(Float) }
405
+ attr_accessor :inbound_calls
406
+
407
+ sig { returns(Float) }
408
+ attr_accessor :outbound_attempts
409
+
410
+ sig do
411
+ params(
412
+ calls_total: Float,
413
+ inbound_calls: Float,
414
+ outbound_attempts: Float
415
+ ).returns(T.attached_class)
416
+ end
417
+ def self.new(calls_total:, inbound_calls:, outbound_attempts:)
418
+ end
419
+
420
+ sig do
421
+ override.returns(
422
+ {
423
+ calls_total: Float,
424
+ inbound_calls: Float,
425
+ outbound_attempts: Float
426
+ }
427
+ )
428
+ end
429
+ def to_hash
430
+ end
431
+ end
432
+
433
+ class Funnel < Revox::Internal::Type::BaseModel
434
+ OrHash =
435
+ T.type_alias do
436
+ T.any(
437
+ Revox::Models::CampaignStatisticsResponse::Statistics::Funnel,
438
+ Revox::Internal::AnyHash
439
+ )
440
+ end
441
+
442
+ sig do
443
+ returns(
444
+ Revox::Models::CampaignStatisticsResponse::Statistics::Funnel::Called
445
+ )
446
+ end
447
+ attr_reader :called
448
+
449
+ sig do
450
+ params(
451
+ called:
452
+ Revox::Models::CampaignStatisticsResponse::Statistics::Funnel::Called::OrHash
453
+ ).void
454
+ end
455
+ attr_writer :called
456
+
457
+ sig do
458
+ returns(
459
+ Revox::Models::CampaignStatisticsResponse::Statistics::Funnel::HotLeads
460
+ )
461
+ end
462
+ attr_reader :hot_leads
463
+
464
+ sig do
465
+ params(
466
+ hot_leads:
467
+ Revox::Models::CampaignStatisticsResponse::Statistics::Funnel::HotLeads::OrHash
468
+ ).void
469
+ end
470
+ attr_writer :hot_leads
471
+
472
+ sig do
473
+ returns(
474
+ Revox::Models::CampaignStatisticsResponse::Statistics::Funnel::Reached
475
+ )
476
+ end
477
+ attr_reader :reached
478
+
479
+ sig do
480
+ params(
481
+ reached:
482
+ Revox::Models::CampaignStatisticsResponse::Statistics::Funnel::Reached::OrHash
483
+ ).void
484
+ end
485
+ attr_writer :reached
486
+
487
+ sig do
488
+ returns(
489
+ Revox::Models::CampaignStatisticsResponse::Statistics::Funnel::RealExchanges
490
+ )
491
+ end
492
+ attr_reader :real_exchanges
493
+
494
+ sig do
495
+ params(
496
+ real_exchanges:
497
+ Revox::Models::CampaignStatisticsResponse::Statistics::Funnel::RealExchanges::OrHash
498
+ ).void
499
+ end
500
+ attr_writer :real_exchanges
501
+
502
+ sig do
503
+ params(
504
+ called:
505
+ Revox::Models::CampaignStatisticsResponse::Statistics::Funnel::Called::OrHash,
506
+ hot_leads:
507
+ Revox::Models::CampaignStatisticsResponse::Statistics::Funnel::HotLeads::OrHash,
508
+ reached:
509
+ Revox::Models::CampaignStatisticsResponse::Statistics::Funnel::Reached::OrHash,
510
+ real_exchanges:
511
+ Revox::Models::CampaignStatisticsResponse::Statistics::Funnel::RealExchanges::OrHash
512
+ ).returns(T.attached_class)
513
+ end
514
+ def self.new(called:, hot_leads:, reached:, real_exchanges:)
515
+ end
516
+
517
+ sig do
518
+ override.returns(
519
+ {
520
+ called:
521
+ Revox::Models::CampaignStatisticsResponse::Statistics::Funnel::Called,
522
+ hot_leads:
523
+ Revox::Models::CampaignStatisticsResponse::Statistics::Funnel::HotLeads,
524
+ reached:
525
+ Revox::Models::CampaignStatisticsResponse::Statistics::Funnel::Reached,
526
+ real_exchanges:
527
+ Revox::Models::CampaignStatisticsResponse::Statistics::Funnel::RealExchanges
528
+ }
529
+ )
530
+ end
531
+ def to_hash
532
+ end
533
+
534
+ class Called < Revox::Internal::Type::BaseModel
535
+ OrHash =
536
+ T.type_alias do
537
+ T.any(
538
+ Revox::Models::CampaignStatisticsResponse::Statistics::Funnel::Called,
539
+ Revox::Internal::AnyHash
540
+ )
541
+ end
542
+
543
+ sig { returns(Float) }
544
+ attr_accessor :count
545
+
546
+ sig { returns(Float) }
547
+ attr_accessor :imported_rows
548
+
549
+ sig do
550
+ params(count: Float, imported_rows: Float).returns(
551
+ T.attached_class
552
+ )
553
+ end
554
+ def self.new(count:, imported_rows:)
555
+ end
556
+
557
+ sig { override.returns({ count: Float, imported_rows: Float }) }
558
+ def to_hash
559
+ end
560
+ end
561
+
562
+ class HotLeads < Revox::Internal::Type::BaseModel
563
+ OrHash =
564
+ T.type_alias do
565
+ T.any(
566
+ Revox::Models::CampaignStatisticsResponse::Statistics::Funnel::HotLeads,
567
+ Revox::Internal::AnyHash
568
+ )
569
+ end
570
+
571
+ sig { returns(Float) }
572
+ attr_accessor :count
573
+
574
+ sig { returns(T.nilable(Float)) }
575
+ attr_accessor :pct_of_reached
576
+
577
+ sig do
578
+ params(count: Float, pct_of_reached: T.nilable(Float)).returns(
579
+ T.attached_class
580
+ )
581
+ end
582
+ def self.new(count:, pct_of_reached:)
583
+ end
584
+
585
+ sig do
586
+ override.returns(
587
+ { count: Float, pct_of_reached: T.nilable(Float) }
588
+ )
589
+ end
590
+ def to_hash
591
+ end
592
+ end
593
+
594
+ class Reached < Revox::Internal::Type::BaseModel
595
+ OrHash =
596
+ T.type_alias do
597
+ T.any(
598
+ Revox::Models::CampaignStatisticsResponse::Statistics::Funnel::Reached,
599
+ Revox::Internal::AnyHash
600
+ )
601
+ end
602
+
603
+ sig { returns(Float) }
604
+ attr_accessor :count
605
+
606
+ sig { returns(Float) }
607
+ attr_accessor :inbound
608
+
609
+ sig { returns(Float) }
610
+ attr_accessor :outbound
611
+
612
+ sig { returns(Float) }
613
+ attr_accessor :overlap
614
+
615
+ sig { returns(T.nilable(Float)) }
616
+ attr_accessor :pct_of_called
617
+
618
+ sig do
619
+ params(
620
+ count: Float,
621
+ inbound: Float,
622
+ outbound: Float,
623
+ overlap: Float,
624
+ pct_of_called: T.nilable(Float)
625
+ ).returns(T.attached_class)
626
+ end
627
+ def self.new(count:, inbound:, outbound:, overlap:, pct_of_called:)
628
+ end
629
+
630
+ sig do
631
+ override.returns(
632
+ {
633
+ count: Float,
634
+ inbound: Float,
635
+ outbound: Float,
636
+ overlap: Float,
637
+ pct_of_called: T.nilable(Float)
638
+ }
639
+ )
640
+ end
641
+ def to_hash
642
+ end
643
+ end
644
+
645
+ class RealExchanges < Revox::Internal::Type::BaseModel
646
+ OrHash =
647
+ T.type_alias do
648
+ T.any(
649
+ Revox::Models::CampaignStatisticsResponse::Statistics::Funnel::RealExchanges,
650
+ Revox::Internal::AnyHash
651
+ )
652
+ end
653
+
654
+ sig { returns(Float) }
655
+ attr_accessor :count
656
+
657
+ sig { returns(T.nilable(Float)) }
658
+ attr_accessor :pct_of_reached
659
+
660
+ sig do
661
+ params(count: Float, pct_of_reached: T.nilable(Float)).returns(
662
+ T.attached_class
663
+ )
664
+ end
665
+ def self.new(count:, pct_of_reached:)
666
+ end
667
+
668
+ sig do
669
+ override.returns(
670
+ { count: Float, pct_of_reached: T.nilable(Float) }
671
+ )
672
+ end
673
+ def to_hash
674
+ end
675
+ end
676
+ end
677
+
678
+ class Inbound < Revox::Internal::Type::BaseModel
679
+ OrHash =
680
+ T.type_alias do
681
+ T.any(
682
+ Revox::Models::CampaignStatisticsResponse::Statistics::Inbound,
683
+ Revox::Internal::AnyHash
684
+ )
685
+ end
686
+
687
+ sig { returns(Float) }
688
+ attr_accessor :unique_callers
689
+
690
+ sig { params(unique_callers: Float).returns(T.attached_class) }
691
+ def self.new(unique_callers:)
692
+ end
693
+
694
+ sig { override.returns({ unique_callers: Float }) }
695
+ def to_hash
696
+ end
697
+ end
698
+
699
+ class JumpIn < Revox::Internal::Type::BaseModel
700
+ OrHash =
701
+ T.type_alias do
702
+ T.any(
703
+ Revox::Models::CampaignStatisticsResponse::Statistics::JumpIn,
704
+ Revox::Internal::AnyHash
705
+ )
706
+ end
707
+
708
+ sig { returns(Float) }
709
+ attr_accessor :joined_calls
710
+
711
+ sig { returns(T.nilable(Float)) }
712
+ attr_accessor :median_conversation_seconds
713
+
714
+ sig { returns(T.nilable(Float)) }
715
+ attr_accessor :median_time_to_join_seconds
716
+
717
+ sig do
718
+ params(
719
+ joined_calls: Float,
720
+ median_conversation_seconds: T.nilable(Float),
721
+ median_time_to_join_seconds: T.nilable(Float)
722
+ ).returns(T.attached_class)
723
+ end
724
+ def self.new(
725
+ joined_calls:,
726
+ median_conversation_seconds:,
727
+ median_time_to_join_seconds:
728
+ )
729
+ end
730
+
731
+ sig do
732
+ override.returns(
733
+ {
734
+ joined_calls: Float,
735
+ median_conversation_seconds: T.nilable(Float),
736
+ median_time_to_join_seconds: T.nilable(Float)
737
+ }
738
+ )
739
+ end
740
+ def to_hash
741
+ end
742
+ end
743
+
744
+ class Leads < Revox::Internal::Type::BaseModel
745
+ OrHash =
746
+ T.type_alias do
747
+ T.any(
748
+ Revox::Models::CampaignStatisticsResponse::Statistics::Leads,
749
+ Revox::Internal::AnyHash
750
+ )
751
+ end
752
+
753
+ sig do
754
+ returns(
755
+ T::Array[
756
+ Revox::Models::CampaignStatisticsResponse::Statistics::Leads::CallbackRequested
757
+ ]
758
+ )
759
+ end
760
+ attr_accessor :callback_requested
761
+
762
+ sig do
763
+ returns(
764
+ T::Array[
765
+ Revox::Models::CampaignStatisticsResponse::Statistics::Leads::Interested
766
+ ]
767
+ )
768
+ end
769
+ attr_accessor :interested
770
+
771
+ sig do
772
+ params(
773
+ callback_requested:
774
+ T::Array[
775
+ Revox::Models::CampaignStatisticsResponse::Statistics::Leads::CallbackRequested::OrHash
776
+ ],
777
+ interested:
778
+ T::Array[
779
+ Revox::Models::CampaignStatisticsResponse::Statistics::Leads::Interested::OrHash
780
+ ]
781
+ ).returns(T.attached_class)
782
+ end
783
+ def self.new(callback_requested:, interested:)
784
+ end
785
+
786
+ sig do
787
+ override.returns(
788
+ {
789
+ callback_requested:
790
+ T::Array[
791
+ Revox::Models::CampaignStatisticsResponse::Statistics::Leads::CallbackRequested
792
+ ],
793
+ interested:
794
+ T::Array[
795
+ Revox::Models::CampaignStatisticsResponse::Statistics::Leads::Interested
796
+ ]
797
+ }
798
+ )
799
+ end
800
+ def to_hash
801
+ end
802
+
803
+ class CallbackRequested < Revox::Internal::Type::BaseModel
804
+ OrHash =
805
+ T.type_alias do
806
+ T.any(
807
+ Revox::Models::CampaignStatisticsResponse::Statistics::Leads::CallbackRequested,
808
+ Revox::Internal::AnyHash
809
+ )
810
+ end
811
+
812
+ sig { returns(T.nilable(String)) }
813
+ attr_accessor :attempt_id
814
+
815
+ sig { returns(String) }
816
+ attr_accessor :call_id
817
+
818
+ sig do
819
+ returns(
820
+ Revox::Models::CampaignStatisticsResponse::Statistics::Leads::CallbackRequested::Direction::TaggedSymbol
821
+ )
822
+ end
823
+ attr_accessor :direction
824
+
825
+ sig { returns(T.nilable(String)) }
826
+ attr_accessor :email
827
+
828
+ sig { returns(T.anything) }
829
+ attr_accessor :last_activity_at
830
+
831
+ sig { returns(String) }
832
+ attr_accessor :name
833
+
834
+ sig { returns(String) }
835
+ attr_accessor :phone
836
+
837
+ sig { returns(T.nilable(String)) }
838
+ attr_accessor :summary
839
+
840
+ sig do
841
+ params(
842
+ attempt_id: T.nilable(String),
843
+ call_id: String,
844
+ direction:
845
+ Revox::Models::CampaignStatisticsResponse::Statistics::Leads::CallbackRequested::Direction::OrSymbol,
846
+ email: T.nilable(String),
847
+ last_activity_at: T.anything,
848
+ name: String,
849
+ phone: String,
850
+ summary: T.nilable(String)
851
+ ).returns(T.attached_class)
852
+ end
853
+ def self.new(
854
+ attempt_id:,
855
+ call_id:,
856
+ direction:,
857
+ email:,
858
+ last_activity_at:,
859
+ name:,
860
+ phone:,
861
+ summary:
862
+ )
863
+ end
864
+
865
+ sig do
866
+ override.returns(
867
+ {
868
+ attempt_id: T.nilable(String),
869
+ call_id: String,
870
+ direction:
871
+ Revox::Models::CampaignStatisticsResponse::Statistics::Leads::CallbackRequested::Direction::TaggedSymbol,
872
+ email: T.nilable(String),
873
+ last_activity_at: T.anything,
874
+ name: String,
875
+ phone: String,
876
+ summary: T.nilable(String)
877
+ }
878
+ )
879
+ end
880
+ def to_hash
881
+ end
882
+
883
+ module Direction
884
+ extend Revox::Internal::Type::Enum
885
+
886
+ TaggedSymbol =
887
+ T.type_alias do
888
+ T.all(
889
+ Symbol,
890
+ Revox::Models::CampaignStatisticsResponse::Statistics::Leads::CallbackRequested::Direction
891
+ )
892
+ end
893
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
894
+
895
+ INBOUND =
896
+ T.let(
897
+ :inbound,
898
+ Revox::Models::CampaignStatisticsResponse::Statistics::Leads::CallbackRequested::Direction::TaggedSymbol
899
+ )
900
+ OUTBOUND =
901
+ T.let(
902
+ :outbound,
903
+ Revox::Models::CampaignStatisticsResponse::Statistics::Leads::CallbackRequested::Direction::TaggedSymbol
904
+ )
905
+
906
+ sig do
907
+ override.returns(
908
+ T::Array[
909
+ Revox::Models::CampaignStatisticsResponse::Statistics::Leads::CallbackRequested::Direction::TaggedSymbol
910
+ ]
911
+ )
912
+ end
913
+ def self.values
914
+ end
915
+ end
916
+ end
917
+
918
+ class Interested < Revox::Internal::Type::BaseModel
919
+ OrHash =
920
+ T.type_alias do
921
+ T.any(
922
+ Revox::Models::CampaignStatisticsResponse::Statistics::Leads::Interested,
923
+ Revox::Internal::AnyHash
924
+ )
925
+ end
926
+
927
+ sig { returns(T.nilable(String)) }
928
+ attr_accessor :attempt_id
929
+
930
+ sig { returns(String) }
931
+ attr_accessor :call_id
932
+
933
+ sig do
934
+ returns(
935
+ Revox::Models::CampaignStatisticsResponse::Statistics::Leads::Interested::Direction::TaggedSymbol
936
+ )
937
+ end
938
+ attr_accessor :direction
939
+
940
+ sig { returns(T.nilable(String)) }
941
+ attr_accessor :email
942
+
943
+ sig { returns(T.anything) }
944
+ attr_accessor :last_activity_at
945
+
946
+ sig { returns(String) }
947
+ attr_accessor :name
948
+
949
+ sig { returns(String) }
950
+ attr_accessor :phone
951
+
952
+ sig { returns(T.nilable(String)) }
953
+ attr_accessor :summary
954
+
955
+ sig do
956
+ params(
957
+ attempt_id: T.nilable(String),
958
+ call_id: String,
959
+ direction:
960
+ Revox::Models::CampaignStatisticsResponse::Statistics::Leads::Interested::Direction::OrSymbol,
961
+ email: T.nilable(String),
962
+ last_activity_at: T.anything,
963
+ name: String,
964
+ phone: String,
965
+ summary: T.nilable(String)
966
+ ).returns(T.attached_class)
967
+ end
968
+ def self.new(
969
+ attempt_id:,
970
+ call_id:,
971
+ direction:,
972
+ email:,
973
+ last_activity_at:,
974
+ name:,
975
+ phone:,
976
+ summary:
977
+ )
978
+ end
979
+
980
+ sig do
981
+ override.returns(
982
+ {
983
+ attempt_id: T.nilable(String),
984
+ call_id: String,
985
+ direction:
986
+ Revox::Models::CampaignStatisticsResponse::Statistics::Leads::Interested::Direction::TaggedSymbol,
987
+ email: T.nilable(String),
988
+ last_activity_at: T.anything,
989
+ name: String,
990
+ phone: String,
991
+ summary: T.nilable(String)
992
+ }
993
+ )
994
+ end
995
+ def to_hash
996
+ end
997
+
998
+ module Direction
999
+ extend Revox::Internal::Type::Enum
1000
+
1001
+ TaggedSymbol =
1002
+ T.type_alias do
1003
+ T.all(
1004
+ Symbol,
1005
+ Revox::Models::CampaignStatisticsResponse::Statistics::Leads::Interested::Direction
1006
+ )
1007
+ end
1008
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
1009
+
1010
+ INBOUND =
1011
+ T.let(
1012
+ :inbound,
1013
+ Revox::Models::CampaignStatisticsResponse::Statistics::Leads::Interested::Direction::TaggedSymbol
1014
+ )
1015
+ OUTBOUND =
1016
+ T.let(
1017
+ :outbound,
1018
+ Revox::Models::CampaignStatisticsResponse::Statistics::Leads::Interested::Direction::TaggedSymbol
1019
+ )
1020
+
1021
+ sig do
1022
+ override.returns(
1023
+ T::Array[
1024
+ Revox::Models::CampaignStatisticsResponse::Statistics::Leads::Interested::Direction::TaggedSymbol
1025
+ ]
1026
+ )
1027
+ end
1028
+ def self.values
1029
+ end
1030
+ end
1031
+ end
1032
+ end
1033
+
1034
+ class OutcomeBreakdown < Revox::Internal::Type::BaseModel
1035
+ OrHash =
1036
+ T.type_alias do
1037
+ T.any(
1038
+ Revox::Models::CampaignStatisticsResponse::Statistics::OutcomeBreakdown,
1039
+ Revox::Internal::AnyHash
1040
+ )
1041
+ end
1042
+
1043
+ sig { returns(Float) }
1044
+ attr_accessor :count
1045
+
1046
+ sig { returns(String) }
1047
+ attr_accessor :label
1048
+
1049
+ sig { returns(String) }
1050
+ attr_accessor :outcome
1051
+
1052
+ sig do
1053
+ params(count: Float, label: String, outcome: String).returns(
1054
+ T.attached_class
1055
+ )
1056
+ end
1057
+ def self.new(count:, label:, outcome:)
1058
+ end
1059
+
1060
+ sig do
1061
+ override.returns({ count: Float, label: String, outcome: String })
1062
+ end
1063
+ def to_hash
1064
+ end
1065
+ end
1066
+ end
1067
+ end
1068
+ end
1069
+ end