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,313 @@
1
+ # typed: strong
2
+
3
+ module Revox
4
+ module Models
5
+ class CampaignUpdateParams < Revox::Internal::Type::BaseModel
6
+ extend Revox::Internal::Type::RequestParameters::Converter
7
+ include Revox::Internal::Type::RequestParameters
8
+
9
+ OrHash =
10
+ T.type_alias do
11
+ T.any(Revox::CampaignUpdateParams, Revox::Internal::AnyHash)
12
+ end
13
+
14
+ sig { returns(String) }
15
+ attr_accessor :id
16
+
17
+ # Configuration for call retry behavior including time windows, delays, and max
18
+ # iterations. If not provided, defaults will be used.
19
+ sig { returns(T.nilable(Revox::CampaignUpdateParams::CallRetryConfig)) }
20
+ attr_reader :call_retry_config
21
+
22
+ sig do
23
+ params(
24
+ call_retry_config:
25
+ T.nilable(Revox::CampaignUpdateParams::CallRetryConfig::OrHash)
26
+ ).void
27
+ end
28
+ attr_writer :call_retry_config
29
+
30
+ # The phone number to use for outbound calls. Editable after launch; applied to
31
+ # the campaign's calls that have not completed yet.
32
+ sig { returns(T.nilable(String)) }
33
+ attr_accessor :from_phone_number
34
+
35
+ # Maximum concurrent calls. Editable after launch.
36
+ sig { returns(T.nilable(Float)) }
37
+ attr_accessor :max_concurrent_calls
38
+
39
+ # Campaign display name
40
+ sig { returns(T.nilable(String)) }
41
+ attr_reader :name
42
+
43
+ sig { params(name: String).void }
44
+ attr_writer :name
45
+
46
+ sig do
47
+ params(
48
+ id: String,
49
+ call_retry_config:
50
+ T.nilable(Revox::CampaignUpdateParams::CallRetryConfig::OrHash),
51
+ from_phone_number: T.nilable(String),
52
+ max_concurrent_calls: T.nilable(Float),
53
+ name: String,
54
+ request_options: Revox::RequestOptions::OrHash
55
+ ).returns(T.attached_class)
56
+ end
57
+ def self.new(
58
+ id:,
59
+ # Configuration for call retry behavior including time windows, delays, and max
60
+ # iterations. If not provided, defaults will be used.
61
+ call_retry_config: nil,
62
+ # The phone number to use for outbound calls. Editable after launch; applied to
63
+ # the campaign's calls that have not completed yet.
64
+ from_phone_number: nil,
65
+ # Maximum concurrent calls. Editable after launch.
66
+ max_concurrent_calls: nil,
67
+ # Campaign display name
68
+ name: nil,
69
+ request_options: {}
70
+ )
71
+ end
72
+
73
+ sig do
74
+ override.returns(
75
+ {
76
+ id: String,
77
+ call_retry_config:
78
+ T.nilable(Revox::CampaignUpdateParams::CallRetryConfig),
79
+ from_phone_number: T.nilable(String),
80
+ max_concurrent_calls: T.nilable(Float),
81
+ name: String,
82
+ request_options: Revox::RequestOptions
83
+ }
84
+ )
85
+ end
86
+ def to_hash
87
+ end
88
+
89
+ class CallRetryConfig < Revox::Internal::Type::BaseModel
90
+ OrHash =
91
+ T.type_alias do
92
+ T.any(
93
+ Revox::CampaignUpdateParams::CallRetryConfig,
94
+ Revox::Internal::AnyHash
95
+ )
96
+ end
97
+
98
+ # Days of the week when calls are allowed, in the recipient's timezone. Default:
99
+ # Monday through Friday.
100
+ sig do
101
+ returns(
102
+ T::Array[
103
+ Revox::CampaignUpdateParams::CallRetryConfig::AllowedDay::OrSymbol
104
+ ]
105
+ )
106
+ end
107
+ attr_accessor :allowed_days
108
+
109
+ # If true and max_retry_attempts >= 2, attempt #2 fires immediately (skipping
110
+ # retry_delay_seconds) when attempt #1 didn't reach a human.
111
+ # Calling-window/allowed-days checks still apply. Only affects the 1→2 transition.
112
+ # Default: false.
113
+ sig { returns(T::Boolean) }
114
+ attr_accessor :call_twice_in_a_row
115
+
116
+ sig do
117
+ returns(
118
+ T::Array[
119
+ Revox::CampaignUpdateParams::CallRetryConfig::CallingWindow
120
+ ]
121
+ )
122
+ end
123
+ attr_accessor :calling_windows
124
+
125
+ # Maximum number of call retry attempts. Default: 3.
126
+ sig { returns(Integer) }
127
+ attr_accessor :max_retry_attempts
128
+
129
+ # Optional IANA timezone identifier to override the automatic timezone detection
130
+ # from phone number. If not provided, timezone is determined from the recipient's
131
+ # phone number country code. Examples: 'America/New_York', 'Europe/Paris'.
132
+ sig { returns(T.nilable(String)) }
133
+ attr_accessor :timezone
134
+
135
+ # Configuration for call retry behavior including time windows, delays, and max
136
+ # iterations. If not provided, defaults will be used.
137
+ sig do
138
+ params(
139
+ allowed_days:
140
+ T::Array[
141
+ Revox::CampaignUpdateParams::CallRetryConfig::AllowedDay::OrSymbol
142
+ ],
143
+ call_twice_in_a_row: T::Boolean,
144
+ calling_windows:
145
+ T::Array[
146
+ Revox::CampaignUpdateParams::CallRetryConfig::CallingWindow::OrHash
147
+ ],
148
+ max_retry_attempts: Integer,
149
+ timezone: T.nilable(String)
150
+ ).returns(T.attached_class)
151
+ end
152
+ def self.new(
153
+ # Days of the week when calls are allowed, in the recipient's timezone. Default:
154
+ # Monday through Friday.
155
+ allowed_days:,
156
+ # If true and max_retry_attempts >= 2, attempt #2 fires immediately (skipping
157
+ # retry_delay_seconds) when attempt #1 didn't reach a human.
158
+ # Calling-window/allowed-days checks still apply. Only affects the 1→2 transition.
159
+ # Default: false.
160
+ call_twice_in_a_row:,
161
+ calling_windows:,
162
+ # Maximum number of call retry attempts. Default: 3.
163
+ max_retry_attempts:,
164
+ # Optional IANA timezone identifier to override the automatic timezone detection
165
+ # from phone number. If not provided, timezone is determined from the recipient's
166
+ # phone number country code. Examples: 'America/New_York', 'Europe/Paris'.
167
+ timezone: nil
168
+ )
169
+ end
170
+
171
+ sig do
172
+ override.returns(
173
+ {
174
+ allowed_days:
175
+ T::Array[
176
+ Revox::CampaignUpdateParams::CallRetryConfig::AllowedDay::OrSymbol
177
+ ],
178
+ call_twice_in_a_row: T::Boolean,
179
+ calling_windows:
180
+ T::Array[
181
+ Revox::CampaignUpdateParams::CallRetryConfig::CallingWindow
182
+ ],
183
+ max_retry_attempts: Integer,
184
+ timezone: T.nilable(String)
185
+ }
186
+ )
187
+ end
188
+ def to_hash
189
+ end
190
+
191
+ module AllowedDay
192
+ extend Revox::Internal::Type::Enum
193
+
194
+ TaggedSymbol =
195
+ T.type_alias do
196
+ T.all(
197
+ Symbol,
198
+ Revox::CampaignUpdateParams::CallRetryConfig::AllowedDay
199
+ )
200
+ end
201
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
202
+
203
+ MONDAY =
204
+ T.let(
205
+ :monday,
206
+ Revox::CampaignUpdateParams::CallRetryConfig::AllowedDay::TaggedSymbol
207
+ )
208
+ TUESDAY =
209
+ T.let(
210
+ :tuesday,
211
+ Revox::CampaignUpdateParams::CallRetryConfig::AllowedDay::TaggedSymbol
212
+ )
213
+ WEDNESDAY =
214
+ T.let(
215
+ :wednesday,
216
+ Revox::CampaignUpdateParams::CallRetryConfig::AllowedDay::TaggedSymbol
217
+ )
218
+ THURSDAY =
219
+ T.let(
220
+ :thursday,
221
+ Revox::CampaignUpdateParams::CallRetryConfig::AllowedDay::TaggedSymbol
222
+ )
223
+ FRIDAY =
224
+ T.let(
225
+ :friday,
226
+ Revox::CampaignUpdateParams::CallRetryConfig::AllowedDay::TaggedSymbol
227
+ )
228
+ SATURDAY =
229
+ T.let(
230
+ :saturday,
231
+ Revox::CampaignUpdateParams::CallRetryConfig::AllowedDay::TaggedSymbol
232
+ )
233
+ SUNDAY =
234
+ T.let(
235
+ :sunday,
236
+ Revox::CampaignUpdateParams::CallRetryConfig::AllowedDay::TaggedSymbol
237
+ )
238
+
239
+ sig do
240
+ override.returns(
241
+ T::Array[
242
+ Revox::CampaignUpdateParams::CallRetryConfig::AllowedDay::TaggedSymbol
243
+ ]
244
+ )
245
+ end
246
+ def self.values
247
+ end
248
+ end
249
+
250
+ class CallingWindow < Revox::Internal::Type::BaseModel
251
+ OrHash =
252
+ T.type_alias do
253
+ T.any(
254
+ Revox::CampaignUpdateParams::CallRetryConfig::CallingWindow,
255
+ Revox::Internal::AnyHash
256
+ )
257
+ end
258
+
259
+ # End time for the calling window in the recipient's timezone (or
260
+ # timezone_override if provided). Format: 'HH:mm' (24-hour) or 'H:mma' (12-hour).
261
+ # Examples: '17:00', '6pm'. Default: '18:00'.
262
+ sig { returns(String) }
263
+ attr_accessor :calling_window_end_time
264
+
265
+ # Start time for the calling window in the recipient's timezone (or
266
+ # timezone_override if provided). Format: 'HH:mm' (24-hour) or 'H:mma' (12-hour).
267
+ # Examples: '09:00', '10am'. Default: '10:00'.
268
+ sig { returns(String) }
269
+ attr_accessor :calling_window_start_time
270
+
271
+ # Delay between retry attempts in seconds. 0 retries as soon as the calling window
272
+ # allows. Default: 7200 (2 hours).
273
+ sig { returns(Integer) }
274
+ attr_accessor :retry_delay_seconds
275
+
276
+ sig do
277
+ params(
278
+ calling_window_end_time: String,
279
+ calling_window_start_time: String,
280
+ retry_delay_seconds: Integer
281
+ ).returns(T.attached_class)
282
+ end
283
+ def self.new(
284
+ # End time for the calling window in the recipient's timezone (or
285
+ # timezone_override if provided). Format: 'HH:mm' (24-hour) or 'H:mma' (12-hour).
286
+ # Examples: '17:00', '6pm'. Default: '18:00'.
287
+ calling_window_end_time:,
288
+ # Start time for the calling window in the recipient's timezone (or
289
+ # timezone_override if provided). Format: 'HH:mm' (24-hour) or 'H:mma' (12-hour).
290
+ # Examples: '09:00', '10am'. Default: '10:00'.
291
+ calling_window_start_time:,
292
+ # Delay between retry attempts in seconds. 0 retries as soon as the calling window
293
+ # allows. Default: 7200 (2 hours).
294
+ retry_delay_seconds:
295
+ )
296
+ end
297
+
298
+ sig do
299
+ override.returns(
300
+ {
301
+ calling_window_end_time: String,
302
+ calling_window_start_time: String,
303
+ retry_delay_seconds: Integer
304
+ }
305
+ )
306
+ end
307
+ def to_hash
308
+ end
309
+ end
310
+ end
311
+ end
312
+ end
313
+ end