revox 0.0.2 → 0.1.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 (106) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +25 -0
  3. data/README.md +63 -22
  4. data/lib/revox/client.rb +4 -0
  5. data/lib/revox/internal/type/base_model.rb +3 -3
  6. data/lib/revox/internal/util.rb +31 -0
  7. data/lib/revox/models/assistant_create_params.rb +2 -2
  8. data/lib/revox/models/assistant_delete_params.rb +7 -1
  9. data/lib/revox/models/assistant_retrieve_params.rb +7 -1
  10. data/lib/revox/models/assistant_update_params.rb +10 -3
  11. data/lib/revox/models/call_create_params.rb +2 -2
  12. data/lib/revox/models/call_create_response.rb +720 -12
  13. data/lib/revox/models/call_list_params.rb +30 -7
  14. data/lib/revox/models/call_list_response.rb +63 -1
  15. data/lib/revox/models/call_retrieve_params.rb +7 -1
  16. data/lib/revox/models/call_retrieve_response.rb +723 -12
  17. data/lib/revox/models/campaign_cancel_params.rb +20 -0
  18. data/lib/revox/models/campaign_cancel_response.rb +16 -0
  19. data/lib/revox/models/campaign_create_params.rb +174 -0
  20. data/lib/revox/models/campaign_create_response.rb +775 -0
  21. data/lib/revox/models/campaign_delete_params.rb +20 -0
  22. data/lib/revox/models/campaign_delete_response.rb +16 -0
  23. data/lib/revox/models/campaign_export_rows_params.rb +20 -0
  24. data/lib/revox/models/campaign_export_rows_response.rb +22 -0
  25. data/lib/revox/models/campaign_get_rows_params.rb +65 -0
  26. data/lib/revox/models/campaign_get_rows_response.rb +1468 -0
  27. data/lib/revox/models/campaign_list_params.rb +14 -0
  28. data/lib/revox/models/campaign_list_response.rb +771 -0
  29. data/lib/revox/models/campaign_retrieve_params.rb +20 -0
  30. data/lib/revox/models/campaign_retrieve_response.rb +776 -0
  31. data/lib/revox/models/voice_preview_params.rb +1 -9
  32. data/lib/revox/models/voice_retrieve_params.rb +7 -1
  33. data/lib/revox/models.rb +14 -0
  34. data/lib/revox/resources/assistants.rb +26 -2
  35. data/lib/revox/resources/call.rb +20 -8
  36. data/lib/revox/resources/campaigns.rb +181 -0
  37. data/lib/revox/resources/voices.rb +12 -8
  38. data/lib/revox/version.rb +1 -1
  39. data/lib/revox.rb +15 -0
  40. data/rbi/revox/client.rbi +3 -0
  41. data/rbi/revox/internal/util.rbi +20 -0
  42. data/rbi/revox/models/assistant_create_params.rbi +3 -5
  43. data/rbi/revox/models/assistant_delete_params.rbi +11 -5
  44. data/rbi/revox/models/assistant_retrieve_params.rbi +11 -5
  45. data/rbi/revox/models/assistant_update_params.rbi +9 -5
  46. data/rbi/revox/models/call_create_params.rbi +3 -5
  47. data/rbi/revox/models/call_create_response.rbi +1537 -11
  48. data/rbi/revox/models/call_list_params.rbi +53 -6
  49. data/rbi/revox/models/call_list_response.rbi +162 -0
  50. data/rbi/revox/models/call_retrieve_params.rbi +11 -5
  51. data/rbi/revox/models/call_retrieve_response.rbi +1543 -11
  52. data/rbi/revox/models/campaign_cancel_params.rbi +33 -0
  53. data/rbi/revox/models/campaign_cancel_response.rbi +23 -0
  54. data/rbi/revox/models/campaign_create_params.rbi +297 -0
  55. data/rbi/revox/models/campaign_create_response.rbi +1490 -0
  56. data/rbi/revox/models/campaign_delete_params.rbi +33 -0
  57. data/rbi/revox/models/campaign_delete_response.rbi +23 -0
  58. data/rbi/revox/models/campaign_export_rows_params.rbi +33 -0
  59. data/rbi/revox/models/campaign_export_rows_response.rbi +29 -0
  60. data/rbi/revox/models/campaign_get_rows_params.rbi +113 -0
  61. data/rbi/revox/models/campaign_get_rows_response.rbi +2981 -0
  62. data/rbi/revox/models/campaign_list_params.rbi +27 -0
  63. data/rbi/revox/models/campaign_list_response.rbi +1482 -0
  64. data/rbi/revox/models/campaign_retrieve_params.rbi +33 -0
  65. data/rbi/revox/models/campaign_retrieve_response.rbi +1495 -0
  66. data/rbi/revox/models/voice_preview_params.rbi +0 -11
  67. data/rbi/revox/models/voice_retrieve_params.rbi +6 -1
  68. data/rbi/revox/models.rbi +14 -0
  69. data/rbi/revox/resources/assistants.rbi +21 -2
  70. data/rbi/revox/resources/call.rbi +18 -6
  71. data/rbi/revox/resources/campaigns.rbi +128 -0
  72. data/rbi/revox/resources/voices.rbi +9 -7
  73. data/sig/revox/client.rbs +2 -0
  74. data/sig/revox/internal/util.rbs +10 -0
  75. data/sig/revox/models/assistant_create_params.rbs +8 -4
  76. data/sig/revox/models/assistant_delete_params.rbs +8 -3
  77. data/sig/revox/models/assistant_retrieve_params.rbs +8 -3
  78. data/sig/revox/models/assistant_update_params.rbs +13 -4
  79. data/sig/revox/models/call_create_params.rbs +8 -4
  80. data/sig/revox/models/call_create_response.rbs +615 -8
  81. data/sig/revox/models/call_list_params.rbs +42 -7
  82. data/sig/revox/models/call_list_response.rbs +57 -2
  83. data/sig/revox/models/call_retrieve_params.rbs +9 -3
  84. data/sig/revox/models/call_retrieve_response.rbs +615 -8
  85. data/sig/revox/models/campaign_cancel_params.rbs +20 -0
  86. data/sig/revox/models/campaign_cancel_response.rbs +13 -0
  87. data/sig/revox/models/campaign_create_params.rbs +149 -0
  88. data/sig/revox/models/campaign_create_response.rbs +666 -0
  89. data/sig/revox/models/campaign_delete_params.rbs +20 -0
  90. data/sig/revox/models/campaign_delete_response.rbs +13 -0
  91. data/sig/revox/models/campaign_export_rows_params.rbs +20 -0
  92. data/sig/revox/models/campaign_export_rows_response.rbs +15 -0
  93. data/sig/revox/models/campaign_get_rows_params.rbs +82 -0
  94. data/sig/revox/models/campaign_get_rows_response.rbs +1220 -0
  95. data/sig/revox/models/campaign_list_params.rbs +14 -0
  96. data/sig/revox/models/campaign_list_response.rbs +666 -0
  97. data/sig/revox/models/campaign_retrieve_params.rbs +20 -0
  98. data/sig/revox/models/campaign_retrieve_response.rbs +666 -0
  99. data/sig/revox/models/voice_preview_params.rbs +1 -8
  100. data/sig/revox/models/voice_retrieve_params.rbs +5 -1
  101. data/sig/revox/models.rbs +14 -0
  102. data/sig/revox/resources/assistants.rbs +2 -2
  103. data/sig/revox/resources/call.rbs +3 -2
  104. data/sig/revox/resources/campaigns.rbs +52 -0
  105. data/sig/revox/resources/voices.rbs +0 -1
  106. metadata +47 -2
@@ -10,23 +10,37 @@ module Revox
10
10
  T.type_alias { T.any(Revox::CallListParams, Revox::Internal::AnyHash) }
11
11
 
12
12
  # The page number you want to get. Starting at 0.
13
- sig { returns(Float) }
13
+ sig { returns(Integer) }
14
14
  attr_accessor :page
15
15
 
16
- sig { returns(Float) }
16
+ # The number of calls to return per page.
17
+ sig { returns(Integer) }
17
18
  attr_accessor :page_size
18
19
 
20
+ sig do
21
+ returns(T.nilable(T::Array[Revox::CallListParams::Status::OrSymbol]))
22
+ end
23
+ attr_reader :statuses
24
+
25
+ sig do
26
+ params(statuses: T::Array[Revox::CallListParams::Status::OrSymbol]).void
27
+ end
28
+ attr_writer :statuses
29
+
19
30
  sig do
20
31
  params(
21
- page: Float,
22
- page_size: Float,
32
+ page: Integer,
33
+ page_size: Integer,
34
+ statuses: T::Array[Revox::CallListParams::Status::OrSymbol],
23
35
  request_options: Revox::RequestOptions::OrHash
24
36
  ).returns(T.attached_class)
25
37
  end
26
38
  def self.new(
27
39
  # The page number you want to get. Starting at 0.
28
40
  page:,
41
+ # The number of calls to return per page.
29
42
  page_size:,
43
+ statuses: nil,
30
44
  request_options: {}
31
45
  )
32
46
  end
@@ -34,14 +48,47 @@ module Revox
34
48
  sig do
35
49
  override.returns(
36
50
  {
37
- page: Float,
38
- page_size: Float,
51
+ page: Integer,
52
+ page_size: Integer,
53
+ statuses: T::Array[Revox::CallListParams::Status::OrSymbol],
39
54
  request_options: Revox::RequestOptions
40
55
  }
41
56
  )
42
57
  end
43
58
  def to_hash
44
59
  end
60
+
61
+ module Status
62
+ extend Revox::Internal::Type::Enum
63
+
64
+ TaggedSymbol =
65
+ T.type_alias { T.all(Symbol, Revox::CallListParams::Status) }
66
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
67
+
68
+ INITIALIZING =
69
+ T.let(:initializing, Revox::CallListParams::Status::TaggedSymbol)
70
+ QUEUED_FOR_CALLING =
71
+ T.let(
72
+ :queued_for_calling,
73
+ Revox::CallListParams::Status::TaggedSymbol
74
+ )
75
+ CALLING = T.let(:calling, Revox::CallListParams::Status::TaggedSymbol)
76
+ SCHEDULED =
77
+ T.let(:scheduled, Revox::CallListParams::Status::TaggedSymbol)
78
+ COMPLETED =
79
+ T.let(:completed, Revox::CallListParams::Status::TaggedSymbol)
80
+ CANCELLED =
81
+ T.let(:cancelled, Revox::CallListParams::Status::TaggedSymbol)
82
+ ERRORED = T.let(:errored, Revox::CallListParams::Status::TaggedSymbol)
83
+
84
+ sig do
85
+ override.returns(
86
+ T::Array[Revox::CallListParams::Status::TaggedSymbol]
87
+ )
88
+ end
89
+ def self.values
90
+ end
91
+ end
45
92
  end
46
93
  end
47
94
  end
@@ -44,6 +44,16 @@ module Revox
44
44
  sig { returns(T.anything) }
45
45
  attr_accessor :answered_at
46
46
 
47
+ # The SIP error that occurred.
48
+ sig do
49
+ returns(
50
+ T.nilable(
51
+ Revox::Models::CallListResponse::Call::DialError::TaggedSymbol
52
+ )
53
+ )
54
+ end
55
+ attr_accessor :dial_error
56
+
47
57
  # The time the call ended.
48
58
  sig { returns(T.anything) }
49
59
  attr_accessor :ended_at
@@ -76,6 +86,22 @@ module Revox
76
86
  end
77
87
  attr_accessor :status
78
88
 
89
+ # Reason for ending the call when ended_by is 'agent'. E.g. 'tool_end_call',
90
+ # 'voicemail', 'transfer', 'ivr_no_navigate'.
91
+ sig { returns(T.nilable(String)) }
92
+ attr_accessor :end_reason
93
+
94
+ # Who ended the call: 'agent' (AI agent), 'user' (caller/callee hung up), or
95
+ # 'system' (e.g. max duration limit).
96
+ sig do
97
+ returns(
98
+ T.nilable(
99
+ Revox::Models::CallListResponse::Call::EndedBy::TaggedSymbol
100
+ )
101
+ )
102
+ end
103
+ attr_accessor :ended_by
104
+
79
105
  # The data extracted from the call, using the structured output config from the
80
106
  # parent call object.
81
107
  sig { returns(T.nilable(T::Hash[Symbol, T.anything])) }
@@ -97,6 +123,10 @@ module Revox
97
123
  params(
98
124
  id: String,
99
125
  answered_at: T.anything,
126
+ dial_error:
127
+ T.nilable(
128
+ Revox::Models::CallListResponse::Call::DialError::OrSymbol
129
+ ),
100
130
  ended_at: T.anything,
101
131
  phone_number: String,
102
132
  recording_url: T.nilable(String),
@@ -106,6 +136,11 @@ module Revox
106
136
  ),
107
137
  started_at: T.anything,
108
138
  status: Revox::Models::CallListResponse::Call::Status::OrSymbol,
139
+ end_reason: T.nilable(String),
140
+ ended_by:
141
+ T.nilable(
142
+ Revox::Models::CallListResponse::Call::EndedBy::OrSymbol
143
+ ),
109
144
  structured_output: T.nilable(T::Hash[Symbol, T.anything]),
110
145
  transcript:
111
146
  T.nilable(
@@ -120,6 +155,8 @@ module Revox
120
155
  id:,
121
156
  # The time the call was answered.
122
157
  answered_at:,
158
+ # The SIP error that occurred.
159
+ dial_error:,
123
160
  # The time the call ended.
124
161
  ended_at:,
125
162
  # The phone number that was called. Formatted in E.164 format. Example:
@@ -132,6 +169,12 @@ module Revox
132
169
  started_at:,
133
170
  # The status of the call attempt.
134
171
  status:,
172
+ # Reason for ending the call when ended_by is 'agent'. E.g. 'tool_end_call',
173
+ # 'voicemail', 'transfer', 'ivr_no_navigate'.
174
+ end_reason: nil,
175
+ # Who ended the call: 'agent' (AI agent), 'user' (caller/callee hung up), or
176
+ # 'system' (e.g. max duration limit).
177
+ ended_by: nil,
135
178
  # The data extracted from the call, using the structured output config from the
136
179
  # parent call object.
137
180
  structured_output: nil,
@@ -145,6 +188,10 @@ module Revox
145
188
  {
146
189
  id: String,
147
190
  answered_at: T.anything,
191
+ dial_error:
192
+ T.nilable(
193
+ Revox::Models::CallListResponse::Call::DialError::TaggedSymbol
194
+ ),
148
195
  ended_at: T.anything,
149
196
  phone_number: String,
150
197
  recording_url: T.nilable(String),
@@ -155,6 +202,11 @@ module Revox
155
202
  started_at: T.anything,
156
203
  status:
157
204
  Revox::Models::CallListResponse::Call::Status::TaggedSymbol,
205
+ end_reason: T.nilable(String),
206
+ ended_by:
207
+ T.nilable(
208
+ Revox::Models::CallListResponse::Call::EndedBy::TaggedSymbol
209
+ ),
158
210
  structured_output: T.nilable(T::Hash[Symbol, T.anything]),
159
211
  transcript:
160
212
  T.nilable(
@@ -166,6 +218,68 @@ module Revox
166
218
  def to_hash
167
219
  end
168
220
 
221
+ # The SIP error that occurred.
222
+ module DialError
223
+ extend Revox::Internal::Type::Enum
224
+
225
+ TaggedSymbol =
226
+ T.type_alias do
227
+ T.all(Symbol, Revox::Models::CallListResponse::Call::DialError)
228
+ end
229
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
230
+
231
+ NUMBER_NON_ATTRIBUTED =
232
+ T.let(
233
+ :number_non_attributed,
234
+ Revox::Models::CallListResponse::Call::DialError::TaggedSymbol
235
+ )
236
+ TOO_MANY_CALLS =
237
+ T.let(
238
+ :too_many_calls,
239
+ Revox::Models::CallListResponse::Call::DialError::TaggedSymbol
240
+ )
241
+ BUSY =
242
+ T.let(
243
+ :busy,
244
+ Revox::Models::CallListResponse::Call::DialError::TaggedSymbol
245
+ )
246
+ TEMPORARILY_UNAVAILABLE =
247
+ T.let(
248
+ :temporarily_unavailable,
249
+ Revox::Models::CallListResponse::Call::DialError::TaggedSymbol
250
+ )
251
+ NO_ANSWER =
252
+ T.let(
253
+ :no_answer,
254
+ Revox::Models::CallListResponse::Call::DialError::TaggedSymbol
255
+ )
256
+ NO_INTERNATIONAL_PERMISSION =
257
+ T.let(
258
+ :no_international_permission,
259
+ Revox::Models::CallListResponse::Call::DialError::TaggedSymbol
260
+ )
261
+ PRECONDITION_FAILED =
262
+ T.let(
263
+ :precondition_failed,
264
+ Revox::Models::CallListResponse::Call::DialError::TaggedSymbol
265
+ )
266
+ NON_CLASSIFIED_ERROR =
267
+ T.let(
268
+ :non_classified_error,
269
+ Revox::Models::CallListResponse::Call::DialError::TaggedSymbol
270
+ )
271
+
272
+ sig do
273
+ override.returns(
274
+ T::Array[
275
+ Revox::Models::CallListResponse::Call::DialError::TaggedSymbol
276
+ ]
277
+ )
278
+ end
279
+ def self.values
280
+ end
281
+ end
282
+
169
283
  module Result
170
284
  extend Revox::Internal::Type::Enum
171
285
 
@@ -195,6 +309,11 @@ module Revox
195
309
  :unknown,
196
310
  Revox::Models::CallListResponse::Call::Result::TaggedSymbol
197
311
  )
312
+ IOS_SCREENING_FILTER =
313
+ T.let(
314
+ :"ios-screening-filter",
315
+ Revox::Models::CallListResponse::Call::Result::TaggedSymbol
316
+ )
198
317
 
199
318
  sig do
200
319
  override.returns(
@@ -237,6 +356,11 @@ module Revox
237
356
  :completed,
238
357
  Revox::Models::CallListResponse::Call::Status::TaggedSymbol
239
358
  )
359
+ ERROR =
360
+ T.let(
361
+ :error,
362
+ Revox::Models::CallListResponse::Call::Status::TaggedSymbol
363
+ )
240
364
 
241
365
  sig do
242
366
  override.returns(
@@ -249,6 +373,44 @@ module Revox
249
373
  end
250
374
  end
251
375
 
376
+ # Who ended the call: 'agent' (AI agent), 'user' (caller/callee hung up), or
377
+ # 'system' (e.g. max duration limit).
378
+ module EndedBy
379
+ extend Revox::Internal::Type::Enum
380
+
381
+ TaggedSymbol =
382
+ T.type_alias do
383
+ T.all(Symbol, Revox::Models::CallListResponse::Call::EndedBy)
384
+ end
385
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
386
+
387
+ AGENT =
388
+ T.let(
389
+ :agent,
390
+ Revox::Models::CallListResponse::Call::EndedBy::TaggedSymbol
391
+ )
392
+ USER =
393
+ T.let(
394
+ :user,
395
+ Revox::Models::CallListResponse::Call::EndedBy::TaggedSymbol
396
+ )
397
+ SYSTEM =
398
+ T.let(
399
+ :system,
400
+ Revox::Models::CallListResponse::Call::EndedBy::TaggedSymbol
401
+ )
402
+
403
+ sig do
404
+ override.returns(
405
+ T::Array[
406
+ Revox::Models::CallListResponse::Call::EndedBy::TaggedSymbol
407
+ ]
408
+ )
409
+ end
410
+ def self.values
411
+ end
412
+ end
413
+
252
414
  class Transcript < Revox::Internal::Type::BaseModel
253
415
  OrHash =
254
416
  T.type_alias do
@@ -11,15 +11,21 @@ module Revox
11
11
  T.any(Revox::CallRetrieveParams, Revox::Internal::AnyHash)
12
12
  end
13
13
 
14
+ sig { returns(String) }
15
+ attr_accessor :id
16
+
14
17
  sig do
15
- params(request_options: Revox::RequestOptions::OrHash).returns(
16
- T.attached_class
17
- )
18
+ params(
19
+ id: String,
20
+ request_options: Revox::RequestOptions::OrHash
21
+ ).returns(T.attached_class)
18
22
  end
19
- def self.new(request_options: {})
23
+ def self.new(id:, request_options: {})
20
24
  end
21
25
 
22
- sig { override.returns({ request_options: Revox::RequestOptions }) }
26
+ sig do
27
+ override.returns({ id: String, request_options: Revox::RequestOptions })
28
+ end
23
29
  def to_hash
24
30
  end
25
31
  end