ark-email 0.14.0 → 0.15.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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +15 -0
- data/README.md +3 -3
- data/lib/ark_email/client.rb +4 -0
- data/lib/ark_email/models/dns_record.rb +49 -19
- data/lib/ark_email/models/domain_create_response.rb +117 -25
- data/lib/ark_email/models/domain_list_response.rb +12 -13
- data/lib/ark_email/models/domain_retrieve_response.rb +117 -25
- data/lib/ark_email/models/domain_verify_response.rb +117 -25
- data/lib/ark_email/models/track_domain.rb +6 -2
- data/lib/ark_email/models/usage_retrieve_params.rb +14 -0
- data/lib/ark_email/models/usage_retrieve_response.rb +270 -0
- data/lib/ark_email/models/webhook_create_params.rb +0 -2
- data/lib/ark_email/models/webhook_create_response.rb +0 -2
- data/lib/ark_email/models/webhook_list_deliveries_params.rb +0 -2
- data/lib/ark_email/models/webhook_list_deliveries_response.rb +0 -2
- data/lib/ark_email/models/webhook_retrieve_delivery_response.rb +0 -2
- data/lib/ark_email/models/webhook_retrieve_response.rb +0 -2
- data/lib/ark_email/models/webhook_test_params.rb +0 -2
- data/lib/ark_email/models/webhook_update_response.rb +0 -2
- data/lib/ark_email/models.rb +2 -0
- data/lib/ark_email/resources/usage.rb +51 -0
- data/lib/ark_email/version.rb +1 -1
- data/lib/ark_email.rb +3 -0
- data/rbi/ark_email/client.rbi +3 -0
- data/rbi/ark_email/models/dns_record.rbi +57 -22
- data/rbi/ark_email/models/domain_create_response.rbi +189 -28
- data/rbi/ark_email/models/domain_list_response.rbi +13 -19
- data/rbi/ark_email/models/domain_retrieve_response.rbi +191 -28
- data/rbi/ark_email/models/domain_verify_response.rbi +189 -28
- data/rbi/ark_email/models/track_domain.rbi +4 -2
- data/rbi/ark_email/models/usage_retrieve_params.rbi +27 -0
- data/rbi/ark_email/models/usage_retrieve_response.rbi +511 -0
- data/rbi/ark_email/models/webhook_create_params.rbi +0 -10
- data/rbi/ark_email/models/webhook_create_response.rbi +0 -10
- data/rbi/ark_email/models/webhook_list_deliveries_params.rbi +0 -10
- data/rbi/ark_email/models/webhook_list_deliveries_response.rbi +0 -10
- data/rbi/ark_email/models/webhook_retrieve_delivery_response.rbi +0 -10
- data/rbi/ark_email/models/webhook_retrieve_response.rbi +0 -10
- data/rbi/ark_email/models/webhook_test_params.rbi +0 -10
- data/rbi/ark_email/models/webhook_update_response.rbi +0 -10
- data/rbi/ark_email/models.rbi +2 -0
- data/rbi/ark_email/resources/usage.rbi +40 -0
- data/sig/ark_email/client.rbs +2 -0
- data/sig/ark_email/models/dns_record.rbs +5 -0
- data/sig/ark_email/models/domain_create_response.rbs +27 -20
- data/sig/ark_email/models/domain_list_response.rbs +4 -16
- data/sig/ark_email/models/domain_retrieve_response.rbs +27 -20
- data/sig/ark_email/models/domain_verify_response.rbs +27 -20
- data/sig/ark_email/models/usage_retrieve_params.rbs +15 -0
- data/sig/ark_email/models/usage_retrieve_response.rbs +212 -0
- data/sig/ark_email/models/webhook_create_params.rbs +0 -4
- data/sig/ark_email/models/webhook_create_response.rbs +0 -4
- data/sig/ark_email/models/webhook_list_deliveries_params.rbs +0 -4
- data/sig/ark_email/models/webhook_list_deliveries_response.rbs +0 -4
- data/sig/ark_email/models/webhook_retrieve_delivery_response.rbs +0 -4
- data/sig/ark_email/models/webhook_retrieve_response.rbs +0 -4
- data/sig/ark_email/models/webhook_test_params.rbs +0 -4
- data/sig/ark_email/models/webhook_update_response.rbs +0 -4
- data/sig/ark_email/models.rbs +2 -0
- data/sig/ark_email/resources/usage.rbs +11 -0
- metadata +11 -2
|
@@ -0,0 +1,511 @@
|
|
|
1
|
+
# typed: strong
|
|
2
|
+
|
|
3
|
+
module ArkEmail
|
|
4
|
+
module Models
|
|
5
|
+
class UsageRetrieveResponse < ArkEmail::Internal::Type::BaseModel
|
|
6
|
+
OrHash =
|
|
7
|
+
T.type_alias do
|
|
8
|
+
T.any(
|
|
9
|
+
ArkEmail::Models::UsageRetrieveResponse,
|
|
10
|
+
ArkEmail::Internal::AnyHash
|
|
11
|
+
)
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
# Current usage and limit information
|
|
15
|
+
sig { returns(ArkEmail::Models::UsageRetrieveResponse::Data) }
|
|
16
|
+
attr_reader :data
|
|
17
|
+
|
|
18
|
+
sig do
|
|
19
|
+
params(data: ArkEmail::Models::UsageRetrieveResponse::Data::OrHash).void
|
|
20
|
+
end
|
|
21
|
+
attr_writer :data
|
|
22
|
+
|
|
23
|
+
sig { returns(ArkEmail::APIMeta) }
|
|
24
|
+
attr_reader :meta
|
|
25
|
+
|
|
26
|
+
sig { params(meta: ArkEmail::APIMeta::OrHash).void }
|
|
27
|
+
attr_writer :meta
|
|
28
|
+
|
|
29
|
+
sig { returns(T::Boolean) }
|
|
30
|
+
attr_accessor :success
|
|
31
|
+
|
|
32
|
+
# Account usage and limits response
|
|
33
|
+
sig do
|
|
34
|
+
params(
|
|
35
|
+
data: ArkEmail::Models::UsageRetrieveResponse::Data::OrHash,
|
|
36
|
+
meta: ArkEmail::APIMeta::OrHash,
|
|
37
|
+
success: T::Boolean
|
|
38
|
+
).returns(T.attached_class)
|
|
39
|
+
end
|
|
40
|
+
def self.new(
|
|
41
|
+
# Current usage and limit information
|
|
42
|
+
data:,
|
|
43
|
+
meta:,
|
|
44
|
+
success: true
|
|
45
|
+
)
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
sig do
|
|
49
|
+
override.returns(
|
|
50
|
+
{
|
|
51
|
+
data: ArkEmail::Models::UsageRetrieveResponse::Data,
|
|
52
|
+
meta: ArkEmail::APIMeta,
|
|
53
|
+
success: T::Boolean
|
|
54
|
+
}
|
|
55
|
+
)
|
|
56
|
+
end
|
|
57
|
+
def to_hash
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
class Data < ArkEmail::Internal::Type::BaseModel
|
|
61
|
+
OrHash =
|
|
62
|
+
T.type_alias do
|
|
63
|
+
T.any(
|
|
64
|
+
ArkEmail::Models::UsageRetrieveResponse::Data,
|
|
65
|
+
ArkEmail::Internal::AnyHash
|
|
66
|
+
)
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
# Billing and credit information
|
|
70
|
+
sig do
|
|
71
|
+
returns(
|
|
72
|
+
T.nilable(ArkEmail::Models::UsageRetrieveResponse::Data::Billing)
|
|
73
|
+
)
|
|
74
|
+
end
|
|
75
|
+
attr_reader :billing
|
|
76
|
+
|
|
77
|
+
sig do
|
|
78
|
+
params(
|
|
79
|
+
billing:
|
|
80
|
+
T.nilable(
|
|
81
|
+
ArkEmail::Models::UsageRetrieveResponse::Data::Billing::OrHash
|
|
82
|
+
)
|
|
83
|
+
).void
|
|
84
|
+
end
|
|
85
|
+
attr_writer :billing
|
|
86
|
+
|
|
87
|
+
# API rate limit status
|
|
88
|
+
sig do
|
|
89
|
+
returns(ArkEmail::Models::UsageRetrieveResponse::Data::RateLimit)
|
|
90
|
+
end
|
|
91
|
+
attr_reader :rate_limit
|
|
92
|
+
|
|
93
|
+
sig do
|
|
94
|
+
params(
|
|
95
|
+
rate_limit:
|
|
96
|
+
ArkEmail::Models::UsageRetrieveResponse::Data::RateLimit::OrHash
|
|
97
|
+
).void
|
|
98
|
+
end
|
|
99
|
+
attr_writer :rate_limit
|
|
100
|
+
|
|
101
|
+
# Email send limit status (hourly cap)
|
|
102
|
+
sig do
|
|
103
|
+
returns(
|
|
104
|
+
T.nilable(ArkEmail::Models::UsageRetrieveResponse::Data::SendLimit)
|
|
105
|
+
)
|
|
106
|
+
end
|
|
107
|
+
attr_reader :send_limit
|
|
108
|
+
|
|
109
|
+
sig do
|
|
110
|
+
params(
|
|
111
|
+
send_limit:
|
|
112
|
+
T.nilable(
|
|
113
|
+
ArkEmail::Models::UsageRetrieveResponse::Data::SendLimit::OrHash
|
|
114
|
+
)
|
|
115
|
+
).void
|
|
116
|
+
end
|
|
117
|
+
attr_writer :send_limit
|
|
118
|
+
|
|
119
|
+
# Current usage and limit information
|
|
120
|
+
sig do
|
|
121
|
+
params(
|
|
122
|
+
billing:
|
|
123
|
+
T.nilable(
|
|
124
|
+
ArkEmail::Models::UsageRetrieveResponse::Data::Billing::OrHash
|
|
125
|
+
),
|
|
126
|
+
rate_limit:
|
|
127
|
+
ArkEmail::Models::UsageRetrieveResponse::Data::RateLimit::OrHash,
|
|
128
|
+
send_limit:
|
|
129
|
+
T.nilable(
|
|
130
|
+
ArkEmail::Models::UsageRetrieveResponse::Data::SendLimit::OrHash
|
|
131
|
+
)
|
|
132
|
+
).returns(T.attached_class)
|
|
133
|
+
end
|
|
134
|
+
def self.new(
|
|
135
|
+
# Billing and credit information
|
|
136
|
+
billing:,
|
|
137
|
+
# API rate limit status
|
|
138
|
+
rate_limit:,
|
|
139
|
+
# Email send limit status (hourly cap)
|
|
140
|
+
send_limit:
|
|
141
|
+
)
|
|
142
|
+
end
|
|
143
|
+
|
|
144
|
+
sig do
|
|
145
|
+
override.returns(
|
|
146
|
+
{
|
|
147
|
+
billing:
|
|
148
|
+
T.nilable(
|
|
149
|
+
ArkEmail::Models::UsageRetrieveResponse::Data::Billing
|
|
150
|
+
),
|
|
151
|
+
rate_limit:
|
|
152
|
+
ArkEmail::Models::UsageRetrieveResponse::Data::RateLimit,
|
|
153
|
+
send_limit:
|
|
154
|
+
T.nilable(
|
|
155
|
+
ArkEmail::Models::UsageRetrieveResponse::Data::SendLimit
|
|
156
|
+
)
|
|
157
|
+
}
|
|
158
|
+
)
|
|
159
|
+
end
|
|
160
|
+
def to_hash
|
|
161
|
+
end
|
|
162
|
+
|
|
163
|
+
class Billing < ArkEmail::Internal::Type::BaseModel
|
|
164
|
+
OrHash =
|
|
165
|
+
T.type_alias do
|
|
166
|
+
T.any(
|
|
167
|
+
ArkEmail::Models::UsageRetrieveResponse::Data::Billing,
|
|
168
|
+
ArkEmail::Internal::AnyHash
|
|
169
|
+
)
|
|
170
|
+
end
|
|
171
|
+
|
|
172
|
+
# Auto-recharge configuration
|
|
173
|
+
sig do
|
|
174
|
+
returns(
|
|
175
|
+
ArkEmail::Models::UsageRetrieveResponse::Data::Billing::AutoRecharge
|
|
176
|
+
)
|
|
177
|
+
end
|
|
178
|
+
attr_reader :auto_recharge
|
|
179
|
+
|
|
180
|
+
sig do
|
|
181
|
+
params(
|
|
182
|
+
auto_recharge:
|
|
183
|
+
ArkEmail::Models::UsageRetrieveResponse::Data::Billing::AutoRecharge::OrHash
|
|
184
|
+
).void
|
|
185
|
+
end
|
|
186
|
+
attr_writer :auto_recharge
|
|
187
|
+
|
|
188
|
+
# Current credit balance as formatted string (e.g., "25.50")
|
|
189
|
+
sig { returns(String) }
|
|
190
|
+
attr_accessor :credit_balance
|
|
191
|
+
|
|
192
|
+
# Current credit balance in cents for precise calculations
|
|
193
|
+
sig { returns(Integer) }
|
|
194
|
+
attr_accessor :credit_balance_cents
|
|
195
|
+
|
|
196
|
+
# Whether a payment method is configured
|
|
197
|
+
sig { returns(T::Boolean) }
|
|
198
|
+
attr_accessor :has_payment_method
|
|
199
|
+
|
|
200
|
+
# Billing and credit information
|
|
201
|
+
sig do
|
|
202
|
+
params(
|
|
203
|
+
auto_recharge:
|
|
204
|
+
ArkEmail::Models::UsageRetrieveResponse::Data::Billing::AutoRecharge::OrHash,
|
|
205
|
+
credit_balance: String,
|
|
206
|
+
credit_balance_cents: Integer,
|
|
207
|
+
has_payment_method: T::Boolean
|
|
208
|
+
).returns(T.attached_class)
|
|
209
|
+
end
|
|
210
|
+
def self.new(
|
|
211
|
+
# Auto-recharge configuration
|
|
212
|
+
auto_recharge:,
|
|
213
|
+
# Current credit balance as formatted string (e.g., "25.50")
|
|
214
|
+
credit_balance:,
|
|
215
|
+
# Current credit balance in cents for precise calculations
|
|
216
|
+
credit_balance_cents:,
|
|
217
|
+
# Whether a payment method is configured
|
|
218
|
+
has_payment_method:
|
|
219
|
+
)
|
|
220
|
+
end
|
|
221
|
+
|
|
222
|
+
sig do
|
|
223
|
+
override.returns(
|
|
224
|
+
{
|
|
225
|
+
auto_recharge:
|
|
226
|
+
ArkEmail::Models::UsageRetrieveResponse::Data::Billing::AutoRecharge,
|
|
227
|
+
credit_balance: String,
|
|
228
|
+
credit_balance_cents: Integer,
|
|
229
|
+
has_payment_method: T::Boolean
|
|
230
|
+
}
|
|
231
|
+
)
|
|
232
|
+
end
|
|
233
|
+
def to_hash
|
|
234
|
+
end
|
|
235
|
+
|
|
236
|
+
class AutoRecharge < ArkEmail::Internal::Type::BaseModel
|
|
237
|
+
OrHash =
|
|
238
|
+
T.type_alias do
|
|
239
|
+
T.any(
|
|
240
|
+
ArkEmail::Models::UsageRetrieveResponse::Data::Billing::AutoRecharge,
|
|
241
|
+
ArkEmail::Internal::AnyHash
|
|
242
|
+
)
|
|
243
|
+
end
|
|
244
|
+
|
|
245
|
+
# Amount to recharge when triggered
|
|
246
|
+
sig { returns(String) }
|
|
247
|
+
attr_accessor :amount
|
|
248
|
+
|
|
249
|
+
# Whether auto-recharge is enabled
|
|
250
|
+
sig { returns(T::Boolean) }
|
|
251
|
+
attr_accessor :enabled
|
|
252
|
+
|
|
253
|
+
# Balance threshold that triggers recharge
|
|
254
|
+
sig { returns(String) }
|
|
255
|
+
attr_accessor :threshold
|
|
256
|
+
|
|
257
|
+
# Auto-recharge configuration
|
|
258
|
+
sig do
|
|
259
|
+
params(
|
|
260
|
+
amount: String,
|
|
261
|
+
enabled: T::Boolean,
|
|
262
|
+
threshold: String
|
|
263
|
+
).returns(T.attached_class)
|
|
264
|
+
end
|
|
265
|
+
def self.new(
|
|
266
|
+
# Amount to recharge when triggered
|
|
267
|
+
amount:,
|
|
268
|
+
# Whether auto-recharge is enabled
|
|
269
|
+
enabled:,
|
|
270
|
+
# Balance threshold that triggers recharge
|
|
271
|
+
threshold:
|
|
272
|
+
)
|
|
273
|
+
end
|
|
274
|
+
|
|
275
|
+
sig do
|
|
276
|
+
override.returns(
|
|
277
|
+
{ amount: String, enabled: T::Boolean, threshold: String }
|
|
278
|
+
)
|
|
279
|
+
end
|
|
280
|
+
def to_hash
|
|
281
|
+
end
|
|
282
|
+
end
|
|
283
|
+
end
|
|
284
|
+
|
|
285
|
+
class RateLimit < ArkEmail::Internal::Type::BaseModel
|
|
286
|
+
OrHash =
|
|
287
|
+
T.type_alias do
|
|
288
|
+
T.any(
|
|
289
|
+
ArkEmail::Models::UsageRetrieveResponse::Data::RateLimit,
|
|
290
|
+
ArkEmail::Internal::AnyHash
|
|
291
|
+
)
|
|
292
|
+
end
|
|
293
|
+
|
|
294
|
+
# Maximum requests allowed per period
|
|
295
|
+
sig { returns(Integer) }
|
|
296
|
+
attr_accessor :limit
|
|
297
|
+
|
|
298
|
+
# Time period for the limit
|
|
299
|
+
sig do
|
|
300
|
+
returns(
|
|
301
|
+
ArkEmail::Models::UsageRetrieveResponse::Data::RateLimit::Period::TaggedSymbol
|
|
302
|
+
)
|
|
303
|
+
end
|
|
304
|
+
attr_accessor :period
|
|
305
|
+
|
|
306
|
+
# Requests remaining in current window
|
|
307
|
+
sig { returns(Integer) }
|
|
308
|
+
attr_accessor :remaining
|
|
309
|
+
|
|
310
|
+
# Unix timestamp when the limit resets
|
|
311
|
+
sig { returns(Integer) }
|
|
312
|
+
attr_accessor :reset
|
|
313
|
+
|
|
314
|
+
# API rate limit status
|
|
315
|
+
sig do
|
|
316
|
+
params(
|
|
317
|
+
limit: Integer,
|
|
318
|
+
period:
|
|
319
|
+
ArkEmail::Models::UsageRetrieveResponse::Data::RateLimit::Period::OrSymbol,
|
|
320
|
+
remaining: Integer,
|
|
321
|
+
reset: Integer
|
|
322
|
+
).returns(T.attached_class)
|
|
323
|
+
end
|
|
324
|
+
def self.new(
|
|
325
|
+
# Maximum requests allowed per period
|
|
326
|
+
limit:,
|
|
327
|
+
# Time period for the limit
|
|
328
|
+
period:,
|
|
329
|
+
# Requests remaining in current window
|
|
330
|
+
remaining:,
|
|
331
|
+
# Unix timestamp when the limit resets
|
|
332
|
+
reset:
|
|
333
|
+
)
|
|
334
|
+
end
|
|
335
|
+
|
|
336
|
+
sig do
|
|
337
|
+
override.returns(
|
|
338
|
+
{
|
|
339
|
+
limit: Integer,
|
|
340
|
+
period:
|
|
341
|
+
ArkEmail::Models::UsageRetrieveResponse::Data::RateLimit::Period::TaggedSymbol,
|
|
342
|
+
remaining: Integer,
|
|
343
|
+
reset: Integer
|
|
344
|
+
}
|
|
345
|
+
)
|
|
346
|
+
end
|
|
347
|
+
def to_hash
|
|
348
|
+
end
|
|
349
|
+
|
|
350
|
+
# Time period for the limit
|
|
351
|
+
module Period
|
|
352
|
+
extend ArkEmail::Internal::Type::Enum
|
|
353
|
+
|
|
354
|
+
TaggedSymbol =
|
|
355
|
+
T.type_alias do
|
|
356
|
+
T.all(
|
|
357
|
+
Symbol,
|
|
358
|
+
ArkEmail::Models::UsageRetrieveResponse::Data::RateLimit::Period
|
|
359
|
+
)
|
|
360
|
+
end
|
|
361
|
+
OrSymbol = T.type_alias { T.any(Symbol, String) }
|
|
362
|
+
|
|
363
|
+
SECOND =
|
|
364
|
+
T.let(
|
|
365
|
+
:second,
|
|
366
|
+
ArkEmail::Models::UsageRetrieveResponse::Data::RateLimit::Period::TaggedSymbol
|
|
367
|
+
)
|
|
368
|
+
|
|
369
|
+
sig do
|
|
370
|
+
override.returns(
|
|
371
|
+
T::Array[
|
|
372
|
+
ArkEmail::Models::UsageRetrieveResponse::Data::RateLimit::Period::TaggedSymbol
|
|
373
|
+
]
|
|
374
|
+
)
|
|
375
|
+
end
|
|
376
|
+
def self.values
|
|
377
|
+
end
|
|
378
|
+
end
|
|
379
|
+
end
|
|
380
|
+
|
|
381
|
+
class SendLimit < ArkEmail::Internal::Type::BaseModel
|
|
382
|
+
OrHash =
|
|
383
|
+
T.type_alias do
|
|
384
|
+
T.any(
|
|
385
|
+
ArkEmail::Models::UsageRetrieveResponse::Data::SendLimit,
|
|
386
|
+
ArkEmail::Internal::AnyHash
|
|
387
|
+
)
|
|
388
|
+
end
|
|
389
|
+
|
|
390
|
+
# Whether approaching the limit (>90%)
|
|
391
|
+
sig { returns(T::Boolean) }
|
|
392
|
+
attr_accessor :approaching
|
|
393
|
+
|
|
394
|
+
# Whether the limit has been exceeded
|
|
395
|
+
sig { returns(T::Boolean) }
|
|
396
|
+
attr_accessor :exceeded
|
|
397
|
+
|
|
398
|
+
# Maximum emails allowed per hour (null = unlimited)
|
|
399
|
+
sig { returns(T.nilable(Integer)) }
|
|
400
|
+
attr_accessor :limit
|
|
401
|
+
|
|
402
|
+
# Time period for the limit
|
|
403
|
+
sig do
|
|
404
|
+
returns(
|
|
405
|
+
ArkEmail::Models::UsageRetrieveResponse::Data::SendLimit::Period::TaggedSymbol
|
|
406
|
+
)
|
|
407
|
+
end
|
|
408
|
+
attr_accessor :period
|
|
409
|
+
|
|
410
|
+
# Emails remaining in current period (null if unlimited)
|
|
411
|
+
sig { returns(T.nilable(Integer)) }
|
|
412
|
+
attr_accessor :remaining
|
|
413
|
+
|
|
414
|
+
# ISO timestamp when the limit window resets (top of next hour)
|
|
415
|
+
sig { returns(Time) }
|
|
416
|
+
attr_accessor :resets_at
|
|
417
|
+
|
|
418
|
+
# Usage as a percentage (null if unlimited)
|
|
419
|
+
sig { returns(T.nilable(Float)) }
|
|
420
|
+
attr_accessor :usage_percent
|
|
421
|
+
|
|
422
|
+
# Emails sent in current period
|
|
423
|
+
sig { returns(Integer) }
|
|
424
|
+
attr_accessor :used
|
|
425
|
+
|
|
426
|
+
# Email send limit status (hourly cap)
|
|
427
|
+
sig do
|
|
428
|
+
params(
|
|
429
|
+
approaching: T::Boolean,
|
|
430
|
+
exceeded: T::Boolean,
|
|
431
|
+
limit: T.nilable(Integer),
|
|
432
|
+
period:
|
|
433
|
+
ArkEmail::Models::UsageRetrieveResponse::Data::SendLimit::Period::OrSymbol,
|
|
434
|
+
remaining: T.nilable(Integer),
|
|
435
|
+
resets_at: Time,
|
|
436
|
+
usage_percent: T.nilable(Float),
|
|
437
|
+
used: Integer
|
|
438
|
+
).returns(T.attached_class)
|
|
439
|
+
end
|
|
440
|
+
def self.new(
|
|
441
|
+
# Whether approaching the limit (>90%)
|
|
442
|
+
approaching:,
|
|
443
|
+
# Whether the limit has been exceeded
|
|
444
|
+
exceeded:,
|
|
445
|
+
# Maximum emails allowed per hour (null = unlimited)
|
|
446
|
+
limit:,
|
|
447
|
+
# Time period for the limit
|
|
448
|
+
period:,
|
|
449
|
+
# Emails remaining in current period (null if unlimited)
|
|
450
|
+
remaining:,
|
|
451
|
+
# ISO timestamp when the limit window resets (top of next hour)
|
|
452
|
+
resets_at:,
|
|
453
|
+
# Usage as a percentage (null if unlimited)
|
|
454
|
+
usage_percent:,
|
|
455
|
+
# Emails sent in current period
|
|
456
|
+
used:
|
|
457
|
+
)
|
|
458
|
+
end
|
|
459
|
+
|
|
460
|
+
sig do
|
|
461
|
+
override.returns(
|
|
462
|
+
{
|
|
463
|
+
approaching: T::Boolean,
|
|
464
|
+
exceeded: T::Boolean,
|
|
465
|
+
limit: T.nilable(Integer),
|
|
466
|
+
period:
|
|
467
|
+
ArkEmail::Models::UsageRetrieveResponse::Data::SendLimit::Period::TaggedSymbol,
|
|
468
|
+
remaining: T.nilable(Integer),
|
|
469
|
+
resets_at: Time,
|
|
470
|
+
usage_percent: T.nilable(Float),
|
|
471
|
+
used: Integer
|
|
472
|
+
}
|
|
473
|
+
)
|
|
474
|
+
end
|
|
475
|
+
def to_hash
|
|
476
|
+
end
|
|
477
|
+
|
|
478
|
+
# Time period for the limit
|
|
479
|
+
module Period
|
|
480
|
+
extend ArkEmail::Internal::Type::Enum
|
|
481
|
+
|
|
482
|
+
TaggedSymbol =
|
|
483
|
+
T.type_alias do
|
|
484
|
+
T.all(
|
|
485
|
+
Symbol,
|
|
486
|
+
ArkEmail::Models::UsageRetrieveResponse::Data::SendLimit::Period
|
|
487
|
+
)
|
|
488
|
+
end
|
|
489
|
+
OrSymbol = T.type_alias { T.any(Symbol, String) }
|
|
490
|
+
|
|
491
|
+
HOUR =
|
|
492
|
+
T.let(
|
|
493
|
+
:hour,
|
|
494
|
+
ArkEmail::Models::UsageRetrieveResponse::Data::SendLimit::Period::TaggedSymbol
|
|
495
|
+
)
|
|
496
|
+
|
|
497
|
+
sig do
|
|
498
|
+
override.returns(
|
|
499
|
+
T::Array[
|
|
500
|
+
ArkEmail::Models::UsageRetrieveResponse::Data::SendLimit::Period::TaggedSymbol
|
|
501
|
+
]
|
|
502
|
+
)
|
|
503
|
+
end
|
|
504
|
+
def self.values
|
|
505
|
+
end
|
|
506
|
+
end
|
|
507
|
+
end
|
|
508
|
+
end
|
|
509
|
+
end
|
|
510
|
+
end
|
|
511
|
+
end
|
|
@@ -144,16 +144,6 @@ module ArkEmail
|
|
|
144
144
|
:DomainDNSError,
|
|
145
145
|
ArkEmail::WebhookCreateParams::Event::TaggedSymbol
|
|
146
146
|
)
|
|
147
|
-
SEND_LIMIT_APPROACHING =
|
|
148
|
-
T.let(
|
|
149
|
-
:SendLimitApproaching,
|
|
150
|
-
ArkEmail::WebhookCreateParams::Event::TaggedSymbol
|
|
151
|
-
)
|
|
152
|
-
SEND_LIMIT_EXCEEDED =
|
|
153
|
-
T.let(
|
|
154
|
-
:SendLimitExceeded,
|
|
155
|
-
ArkEmail::WebhookCreateParams::Event::TaggedSymbol
|
|
156
|
-
)
|
|
157
147
|
|
|
158
148
|
sig do
|
|
159
149
|
override.returns(
|
|
@@ -200,16 +200,6 @@ module ArkEmail
|
|
|
200
200
|
:DomainDNSError,
|
|
201
201
|
ArkEmail::Models::WebhookCreateResponse::Data::Event::TaggedSymbol
|
|
202
202
|
)
|
|
203
|
-
SEND_LIMIT_APPROACHING =
|
|
204
|
-
T.let(
|
|
205
|
-
:SendLimitApproaching,
|
|
206
|
-
ArkEmail::Models::WebhookCreateResponse::Data::Event::TaggedSymbol
|
|
207
|
-
)
|
|
208
|
-
SEND_LIMIT_EXCEEDED =
|
|
209
|
-
T.let(
|
|
210
|
-
:SendLimitExceeded,
|
|
211
|
-
ArkEmail::Models::WebhookCreateResponse::Data::Event::TaggedSymbol
|
|
212
|
-
)
|
|
213
203
|
|
|
214
204
|
sig do
|
|
215
205
|
override.returns(
|
|
@@ -158,16 +158,6 @@ module ArkEmail
|
|
|
158
158
|
:DomainDNSError,
|
|
159
159
|
ArkEmail::WebhookListDeliveriesParams::Event::TaggedSymbol
|
|
160
160
|
)
|
|
161
|
-
SEND_LIMIT_APPROACHING =
|
|
162
|
-
T.let(
|
|
163
|
-
:SendLimitApproaching,
|
|
164
|
-
ArkEmail::WebhookListDeliveriesParams::Event::TaggedSymbol
|
|
165
|
-
)
|
|
166
|
-
SEND_LIMIT_EXCEEDED =
|
|
167
|
-
T.let(
|
|
168
|
-
:SendLimitExceeded,
|
|
169
|
-
ArkEmail::WebhookListDeliveriesParams::Event::TaggedSymbol
|
|
170
|
-
)
|
|
171
161
|
|
|
172
162
|
sig do
|
|
173
163
|
override.returns(
|
|
@@ -240,16 +240,6 @@ module ArkEmail
|
|
|
240
240
|
:DomainDNSError,
|
|
241
241
|
ArkEmail::Models::WebhookListDeliveriesResponse::Data::Event::TaggedSymbol
|
|
242
242
|
)
|
|
243
|
-
SEND_LIMIT_APPROACHING =
|
|
244
|
-
T.let(
|
|
245
|
-
:SendLimitApproaching,
|
|
246
|
-
ArkEmail::Models::WebhookListDeliveriesResponse::Data::Event::TaggedSymbol
|
|
247
|
-
)
|
|
248
|
-
SEND_LIMIT_EXCEEDED =
|
|
249
|
-
T.let(
|
|
250
|
-
:SendLimitExceeded,
|
|
251
|
-
ArkEmail::Models::WebhookListDeliveriesResponse::Data::Event::TaggedSymbol
|
|
252
|
-
)
|
|
253
243
|
|
|
254
244
|
sig do
|
|
255
245
|
override.returns(
|
|
@@ -269,16 +269,6 @@ module ArkEmail
|
|
|
269
269
|
:DomainDNSError,
|
|
270
270
|
ArkEmail::Models::WebhookRetrieveDeliveryResponse::Data::Event::TaggedSymbol
|
|
271
271
|
)
|
|
272
|
-
SEND_LIMIT_APPROACHING =
|
|
273
|
-
T.let(
|
|
274
|
-
:SendLimitApproaching,
|
|
275
|
-
ArkEmail::Models::WebhookRetrieveDeliveryResponse::Data::Event::TaggedSymbol
|
|
276
|
-
)
|
|
277
|
-
SEND_LIMIT_EXCEEDED =
|
|
278
|
-
T.let(
|
|
279
|
-
:SendLimitExceeded,
|
|
280
|
-
ArkEmail::Models::WebhookRetrieveDeliveryResponse::Data::Event::TaggedSymbol
|
|
281
|
-
)
|
|
282
272
|
|
|
283
273
|
sig do
|
|
284
274
|
override.returns(
|
|
@@ -202,16 +202,6 @@ module ArkEmail
|
|
|
202
202
|
:DomainDNSError,
|
|
203
203
|
ArkEmail::Models::WebhookRetrieveResponse::Data::Event::TaggedSymbol
|
|
204
204
|
)
|
|
205
|
-
SEND_LIMIT_APPROACHING =
|
|
206
|
-
T.let(
|
|
207
|
-
:SendLimitApproaching,
|
|
208
|
-
ArkEmail::Models::WebhookRetrieveResponse::Data::Event::TaggedSymbol
|
|
209
|
-
)
|
|
210
|
-
SEND_LIMIT_EXCEEDED =
|
|
211
|
-
T.let(
|
|
212
|
-
:SendLimitExceeded,
|
|
213
|
-
ArkEmail::Models::WebhookRetrieveResponse::Data::Event::TaggedSymbol
|
|
214
|
-
)
|
|
215
205
|
|
|
216
206
|
sig do
|
|
217
207
|
override.returns(
|
|
@@ -81,16 +81,6 @@ module ArkEmail
|
|
|
81
81
|
:DomainDNSError,
|
|
82
82
|
ArkEmail::WebhookTestParams::Event::TaggedSymbol
|
|
83
83
|
)
|
|
84
|
-
SEND_LIMIT_APPROACHING =
|
|
85
|
-
T.let(
|
|
86
|
-
:SendLimitApproaching,
|
|
87
|
-
ArkEmail::WebhookTestParams::Event::TaggedSymbol
|
|
88
|
-
)
|
|
89
|
-
SEND_LIMIT_EXCEEDED =
|
|
90
|
-
T.let(
|
|
91
|
-
:SendLimitExceeded,
|
|
92
|
-
ArkEmail::WebhookTestParams::Event::TaggedSymbol
|
|
93
|
-
)
|
|
94
84
|
|
|
95
85
|
sig do
|
|
96
86
|
override.returns(
|
|
@@ -200,16 +200,6 @@ module ArkEmail
|
|
|
200
200
|
:DomainDNSError,
|
|
201
201
|
ArkEmail::Models::WebhookUpdateResponse::Data::Event::TaggedSymbol
|
|
202
202
|
)
|
|
203
|
-
SEND_LIMIT_APPROACHING =
|
|
204
|
-
T.let(
|
|
205
|
-
:SendLimitApproaching,
|
|
206
|
-
ArkEmail::Models::WebhookUpdateResponse::Data::Event::TaggedSymbol
|
|
207
|
-
)
|
|
208
|
-
SEND_LIMIT_EXCEEDED =
|
|
209
|
-
T.let(
|
|
210
|
-
:SendLimitExceeded,
|
|
211
|
-
ArkEmail::Models::WebhookUpdateResponse::Data::Event::TaggedSymbol
|
|
212
|
-
)
|
|
213
203
|
|
|
214
204
|
sig do
|
|
215
205
|
override.returns(
|
data/rbi/ark_email/models.rbi
CHANGED
|
@@ -62,6 +62,8 @@ module ArkEmail
|
|
|
62
62
|
|
|
63
63
|
TrackingVerifyParams = ArkEmail::Models::TrackingVerifyParams
|
|
64
64
|
|
|
65
|
+
UsageRetrieveParams = ArkEmail::Models::UsageRetrieveParams
|
|
66
|
+
|
|
65
67
|
WebhookCreateParams = ArkEmail::Models::WebhookCreateParams
|
|
66
68
|
|
|
67
69
|
WebhookDeleteParams = ArkEmail::Models::WebhookDeleteParams
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
# typed: strong
|
|
2
|
+
|
|
3
|
+
module ArkEmail
|
|
4
|
+
module Resources
|
|
5
|
+
class Usage
|
|
6
|
+
# Returns current usage and limit information for your account.
|
|
7
|
+
#
|
|
8
|
+
# This endpoint is designed for:
|
|
9
|
+
#
|
|
10
|
+
# - **AI agents/MCP servers:** Check constraints before planning batch operations
|
|
11
|
+
# - **Monitoring dashboards:** Display current usage status
|
|
12
|
+
# - **Rate limit awareness:** Know remaining capacity before making requests
|
|
13
|
+
#
|
|
14
|
+
# **Response includes:**
|
|
15
|
+
#
|
|
16
|
+
# - `rateLimit` - API request rate limit (requests per second)
|
|
17
|
+
# - `sendLimit` - Email sending limit (emails per hour)
|
|
18
|
+
# - `billing` - Credit balance and auto-recharge configuration
|
|
19
|
+
#
|
|
20
|
+
# **Notes:**
|
|
21
|
+
#
|
|
22
|
+
# - This request counts against your rate limit
|
|
23
|
+
# - `sendLimit` may be null if Postal is temporarily unavailable
|
|
24
|
+
# - `billing` is null if billing is not configured
|
|
25
|
+
# - Send limit resets at the top of each hour
|
|
26
|
+
sig do
|
|
27
|
+
params(request_options: ArkEmail::RequestOptions::OrHash).returns(
|
|
28
|
+
ArkEmail::Models::UsageRetrieveResponse
|
|
29
|
+
)
|
|
30
|
+
end
|
|
31
|
+
def retrieve(request_options: {})
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
# @api private
|
|
35
|
+
sig { params(client: ArkEmail::Client).returns(T.attached_class) }
|
|
36
|
+
def self.new(client:)
|
|
37
|
+
end
|
|
38
|
+
end
|
|
39
|
+
end
|
|
40
|
+
end
|