ark-email 0.13.0 → 0.14.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 (36) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +9 -0
  3. data/README.md +1 -1
  4. data/lib/ark_email/client.rb +4 -0
  5. data/lib/ark_email/models/email_retrieve_params.rb +4 -1
  6. data/lib/ark_email/models/email_retrieve_response.rb +177 -1
  7. data/lib/ark_email/models/log_entry.rb +298 -0
  8. data/lib/ark_email/models/log_entry_detail.rb +102 -0
  9. data/lib/ark_email/models/log_list_params.rb +106 -0
  10. data/lib/ark_email/models/log_retrieve_params.rb +14 -0
  11. data/lib/ark_email/models/log_retrieve_response.rb +33 -0
  12. data/lib/ark_email/models.rb +8 -0
  13. data/lib/ark_email/resources/logs.rb +120 -0
  14. data/lib/ark_email/version.rb +1 -1
  15. data/lib/ark_email.rb +6 -0
  16. data/rbi/ark_email/client.rbi +3 -0
  17. data/rbi/ark_email/models/email_retrieve_params.rbi +8 -2
  18. data/rbi/ark_email/models/email_retrieve_response.rbi +379 -0
  19. data/rbi/ark_email/models/log_entry.rbi +431 -0
  20. data/rbi/ark_email/models/log_entry_detail.rbi +192 -0
  21. data/rbi/ark_email/models/log_list_params.rbi +163 -0
  22. data/rbi/ark_email/models/log_retrieve_params.rbi +27 -0
  23. data/rbi/ark_email/models/log_retrieve_response.rbi +59 -0
  24. data/rbi/ark_email/models.rbi +8 -0
  25. data/rbi/ark_email/resources/emails.rbi +4 -1
  26. data/rbi/ark_email/resources/logs.rbi +104 -0
  27. data/sig/ark_email/client.rbs +2 -0
  28. data/sig/ark_email/models/email_retrieve_response.rbs +179 -0
  29. data/sig/ark_email/models/log_entry.rbs +209 -0
  30. data/sig/ark_email/models/log_entry_detail.rbs +97 -0
  31. data/sig/ark_email/models/log_list_params.rbs +97 -0
  32. data/sig/ark_email/models/log_retrieve_params.rbs +15 -0
  33. data/sig/ark_email/models/log_retrieve_response.rbs +26 -0
  34. data/sig/ark_email/models.rbs +8 -0
  35. data/sig/ark_email/resources/logs.rbs +25 -0
  36. metadata +20 -2
@@ -0,0 +1,431 @@
1
+ # typed: strong
2
+
3
+ module ArkEmail
4
+ module Models
5
+ class LogEntry < ArkEmail::Internal::Type::BaseModel
6
+ OrHash =
7
+ T.type_alias { T.any(ArkEmail::LogEntry, ArkEmail::Internal::AnyHash) }
8
+
9
+ # Request context information
10
+ sig { returns(ArkEmail::LogEntry::Context) }
11
+ attr_reader :context
12
+
13
+ sig { params(context: ArkEmail::LogEntry::Context::OrHash).void }
14
+ attr_writer :context
15
+
16
+ # API credential information
17
+ sig { returns(ArkEmail::LogEntry::Credential) }
18
+ attr_reader :credential
19
+
20
+ sig { params(credential: ArkEmail::LogEntry::Credential::OrHash).void }
21
+ attr_writer :credential
22
+
23
+ # Request duration in milliseconds
24
+ sig { returns(Integer) }
25
+ attr_accessor :duration_ms
26
+
27
+ # Semantic endpoint name
28
+ sig { returns(String) }
29
+ attr_accessor :endpoint
30
+
31
+ # HTTP method
32
+ sig { returns(ArkEmail::LogEntry::Method::TaggedSymbol) }
33
+ attr_accessor :method_
34
+
35
+ # Request path
36
+ sig { returns(String) }
37
+ attr_accessor :path
38
+
39
+ # Rate limit state at time of request
40
+ sig { returns(ArkEmail::LogEntry::RateLimit) }
41
+ attr_reader :rate_limit
42
+
43
+ sig { params(rate_limit: ArkEmail::LogEntry::RateLimit::OrHash).void }
44
+ attr_writer :rate_limit
45
+
46
+ # Unique request identifier
47
+ sig { returns(String) }
48
+ attr_accessor :request_id
49
+
50
+ # HTTP response status code
51
+ sig { returns(Integer) }
52
+ attr_accessor :status_code
53
+
54
+ # When the request was made (ISO 8601)
55
+ sig { returns(Time) }
56
+ attr_accessor :timestamp
57
+
58
+ # Email-specific data (for email endpoints)
59
+ sig { returns(T.nilable(ArkEmail::LogEntry::Email)) }
60
+ attr_reader :email
61
+
62
+ sig { params(email: T.nilable(ArkEmail::LogEntry::Email::OrHash)).void }
63
+ attr_writer :email
64
+
65
+ # Error details (null if request succeeded)
66
+ sig { returns(T.nilable(ArkEmail::LogEntry::Error)) }
67
+ attr_reader :error
68
+
69
+ sig { params(error: T.nilable(ArkEmail::LogEntry::Error::OrHash)).void }
70
+ attr_writer :error
71
+
72
+ # SDK information (null if not using an SDK)
73
+ sig { returns(T.nilable(ArkEmail::LogEntry::SDK)) }
74
+ attr_reader :sdk
75
+
76
+ sig { params(sdk: T.nilable(ArkEmail::LogEntry::SDK::OrHash)).void }
77
+ attr_writer :sdk
78
+
79
+ # API request log entry (list view)
80
+ sig do
81
+ params(
82
+ context: ArkEmail::LogEntry::Context::OrHash,
83
+ credential: ArkEmail::LogEntry::Credential::OrHash,
84
+ duration_ms: Integer,
85
+ endpoint: String,
86
+ method_: ArkEmail::LogEntry::Method::OrSymbol,
87
+ path: String,
88
+ rate_limit: ArkEmail::LogEntry::RateLimit::OrHash,
89
+ request_id: String,
90
+ status_code: Integer,
91
+ timestamp: Time,
92
+ email: T.nilable(ArkEmail::LogEntry::Email::OrHash),
93
+ error: T.nilable(ArkEmail::LogEntry::Error::OrHash),
94
+ sdk: T.nilable(ArkEmail::LogEntry::SDK::OrHash)
95
+ ).returns(T.attached_class)
96
+ end
97
+ def self.new(
98
+ # Request context information
99
+ context:,
100
+ # API credential information
101
+ credential:,
102
+ # Request duration in milliseconds
103
+ duration_ms:,
104
+ # Semantic endpoint name
105
+ endpoint:,
106
+ # HTTP method
107
+ method_:,
108
+ # Request path
109
+ path:,
110
+ # Rate limit state at time of request
111
+ rate_limit:,
112
+ # Unique request identifier
113
+ request_id:,
114
+ # HTTP response status code
115
+ status_code:,
116
+ # When the request was made (ISO 8601)
117
+ timestamp:,
118
+ # Email-specific data (for email endpoints)
119
+ email: nil,
120
+ # Error details (null if request succeeded)
121
+ error: nil,
122
+ # SDK information (null if not using an SDK)
123
+ sdk: nil
124
+ )
125
+ end
126
+
127
+ sig do
128
+ override.returns(
129
+ {
130
+ context: ArkEmail::LogEntry::Context,
131
+ credential: ArkEmail::LogEntry::Credential,
132
+ duration_ms: Integer,
133
+ endpoint: String,
134
+ method_: ArkEmail::LogEntry::Method::TaggedSymbol,
135
+ path: String,
136
+ rate_limit: ArkEmail::LogEntry::RateLimit,
137
+ request_id: String,
138
+ status_code: Integer,
139
+ timestamp: Time,
140
+ email: T.nilable(ArkEmail::LogEntry::Email),
141
+ error: T.nilable(ArkEmail::LogEntry::Error),
142
+ sdk: T.nilable(ArkEmail::LogEntry::SDK)
143
+ }
144
+ )
145
+ end
146
+ def to_hash
147
+ end
148
+
149
+ class Context < ArkEmail::Internal::Type::BaseModel
150
+ OrHash =
151
+ T.type_alias do
152
+ T.any(ArkEmail::LogEntry::Context, ArkEmail::Internal::AnyHash)
153
+ end
154
+
155
+ # Idempotency key if provided
156
+ sig { returns(T.nilable(String)) }
157
+ attr_accessor :idempotency_key
158
+
159
+ # Client IP address
160
+ sig { returns(T.nilable(String)) }
161
+ attr_accessor :ip_address
162
+
163
+ # Query parameters
164
+ sig { returns(T.nilable(T::Hash[Symbol, T.anything])) }
165
+ attr_accessor :query_params
166
+
167
+ # User-Agent header
168
+ sig { returns(T.nilable(String)) }
169
+ attr_accessor :user_agent
170
+
171
+ # Request context information
172
+ sig do
173
+ params(
174
+ idempotency_key: T.nilable(String),
175
+ ip_address: T.nilable(String),
176
+ query_params: T.nilable(T::Hash[Symbol, T.anything]),
177
+ user_agent: T.nilable(String)
178
+ ).returns(T.attached_class)
179
+ end
180
+ def self.new(
181
+ # Idempotency key if provided
182
+ idempotency_key: nil,
183
+ # Client IP address
184
+ ip_address: nil,
185
+ # Query parameters
186
+ query_params: nil,
187
+ # User-Agent header
188
+ user_agent: nil
189
+ )
190
+ end
191
+
192
+ sig do
193
+ override.returns(
194
+ {
195
+ idempotency_key: T.nilable(String),
196
+ ip_address: T.nilable(String),
197
+ query_params: T.nilable(T::Hash[Symbol, T.anything]),
198
+ user_agent: T.nilable(String)
199
+ }
200
+ )
201
+ end
202
+ def to_hash
203
+ end
204
+ end
205
+
206
+ class Credential < ArkEmail::Internal::Type::BaseModel
207
+ OrHash =
208
+ T.type_alias do
209
+ T.any(ArkEmail::LogEntry::Credential, ArkEmail::Internal::AnyHash)
210
+ end
211
+
212
+ # Credential ID
213
+ sig { returns(String) }
214
+ attr_accessor :id
215
+
216
+ # API key prefix (first 8 characters)
217
+ sig { returns(T.nilable(String)) }
218
+ attr_accessor :key_prefix
219
+
220
+ # API credential information
221
+ sig do
222
+ params(id: String, key_prefix: T.nilable(String)).returns(
223
+ T.attached_class
224
+ )
225
+ end
226
+ def self.new(
227
+ # Credential ID
228
+ id:,
229
+ # API key prefix (first 8 characters)
230
+ key_prefix: nil
231
+ )
232
+ end
233
+
234
+ sig { override.returns({ id: String, key_prefix: T.nilable(String) }) }
235
+ def to_hash
236
+ end
237
+ end
238
+
239
+ # HTTP method
240
+ module Method
241
+ extend ArkEmail::Internal::Type::Enum
242
+
243
+ TaggedSymbol =
244
+ T.type_alias { T.all(Symbol, ArkEmail::LogEntry::Method) }
245
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
246
+
247
+ GET = T.let(:GET, ArkEmail::LogEntry::Method::TaggedSymbol)
248
+ POST = T.let(:POST, ArkEmail::LogEntry::Method::TaggedSymbol)
249
+ PUT = T.let(:PUT, ArkEmail::LogEntry::Method::TaggedSymbol)
250
+ PATCH = T.let(:PATCH, ArkEmail::LogEntry::Method::TaggedSymbol)
251
+ DELETE = T.let(:DELETE, ArkEmail::LogEntry::Method::TaggedSymbol)
252
+
253
+ sig do
254
+ override.returns(T::Array[ArkEmail::LogEntry::Method::TaggedSymbol])
255
+ end
256
+ def self.values
257
+ end
258
+ end
259
+
260
+ class RateLimit < ArkEmail::Internal::Type::BaseModel
261
+ OrHash =
262
+ T.type_alias do
263
+ T.any(ArkEmail::LogEntry::RateLimit, ArkEmail::Internal::AnyHash)
264
+ end
265
+
266
+ # Rate limit ceiling
267
+ sig { returns(T.nilable(Integer)) }
268
+ attr_accessor :limit
269
+
270
+ # Whether the request was rate limited
271
+ sig { returns(T.nilable(T::Boolean)) }
272
+ attr_reader :limited
273
+
274
+ sig { params(limited: T::Boolean).void }
275
+ attr_writer :limited
276
+
277
+ # Remaining requests in window
278
+ sig { returns(T.nilable(Integer)) }
279
+ attr_accessor :remaining
280
+
281
+ # Unix timestamp when limit resets
282
+ sig { returns(T.nilable(Integer)) }
283
+ attr_accessor :reset
284
+
285
+ # Rate limit state at time of request
286
+ sig do
287
+ params(
288
+ limit: T.nilable(Integer),
289
+ limited: T::Boolean,
290
+ remaining: T.nilable(Integer),
291
+ reset: T.nilable(Integer)
292
+ ).returns(T.attached_class)
293
+ end
294
+ def self.new(
295
+ # Rate limit ceiling
296
+ limit: nil,
297
+ # Whether the request was rate limited
298
+ limited: nil,
299
+ # Remaining requests in window
300
+ remaining: nil,
301
+ # Unix timestamp when limit resets
302
+ reset: nil
303
+ )
304
+ end
305
+
306
+ sig do
307
+ override.returns(
308
+ {
309
+ limit: T.nilable(Integer),
310
+ limited: T::Boolean,
311
+ remaining: T.nilable(Integer),
312
+ reset: T.nilable(Integer)
313
+ }
314
+ )
315
+ end
316
+ def to_hash
317
+ end
318
+ end
319
+
320
+ class Email < ArkEmail::Internal::Type::BaseModel
321
+ OrHash =
322
+ T.type_alias do
323
+ T.any(ArkEmail::LogEntry::Email, ArkEmail::Internal::AnyHash)
324
+ end
325
+
326
+ # Email message ID
327
+ sig { returns(T.nilable(String)) }
328
+ attr_reader :id
329
+
330
+ sig { params(id: String).void }
331
+ attr_writer :id
332
+
333
+ # Number of recipients
334
+ sig { returns(T.nilable(Integer)) }
335
+ attr_accessor :recipient_count
336
+
337
+ # Email-specific data (for email endpoints)
338
+ sig do
339
+ params(id: String, recipient_count: T.nilable(Integer)).returns(
340
+ T.attached_class
341
+ )
342
+ end
343
+ def self.new(
344
+ # Email message ID
345
+ id: nil,
346
+ # Number of recipients
347
+ recipient_count: nil
348
+ )
349
+ end
350
+
351
+ sig do
352
+ override.returns({ id: String, recipient_count: T.nilable(Integer) })
353
+ end
354
+ def to_hash
355
+ end
356
+ end
357
+
358
+ class Error < ArkEmail::Internal::Type::BaseModel
359
+ OrHash =
360
+ T.type_alias do
361
+ T.any(ArkEmail::LogEntry::Error, ArkEmail::Internal::AnyHash)
362
+ end
363
+
364
+ # Error code
365
+ sig { returns(T.nilable(String)) }
366
+ attr_reader :code
367
+
368
+ sig { params(code: String).void }
369
+ attr_writer :code
370
+
371
+ # Error message
372
+ sig { returns(T.nilable(String)) }
373
+ attr_accessor :message
374
+
375
+ # Error details (null if request succeeded)
376
+ sig do
377
+ params(code: String, message: T.nilable(String)).returns(
378
+ T.attached_class
379
+ )
380
+ end
381
+ def self.new(
382
+ # Error code
383
+ code: nil,
384
+ # Error message
385
+ message: nil
386
+ )
387
+ end
388
+
389
+ sig { override.returns({ code: String, message: T.nilable(String) }) }
390
+ def to_hash
391
+ end
392
+ end
393
+
394
+ class SDK < ArkEmail::Internal::Type::BaseModel
395
+ OrHash =
396
+ T.type_alias do
397
+ T.any(ArkEmail::LogEntry::SDK, ArkEmail::Internal::AnyHash)
398
+ end
399
+
400
+ # SDK name
401
+ sig { returns(T.nilable(String)) }
402
+ attr_reader :name
403
+
404
+ sig { params(name: String).void }
405
+ attr_writer :name
406
+
407
+ # SDK version
408
+ sig { returns(T.nilable(String)) }
409
+ attr_accessor :version
410
+
411
+ # SDK information (null if not using an SDK)
412
+ sig do
413
+ params(name: String, version: T.nilable(String)).returns(
414
+ T.attached_class
415
+ )
416
+ end
417
+ def self.new(
418
+ # SDK name
419
+ name: nil,
420
+ # SDK version
421
+ version: nil
422
+ )
423
+ end
424
+
425
+ sig { override.returns({ name: String, version: T.nilable(String) }) }
426
+ def to_hash
427
+ end
428
+ end
429
+ end
430
+ end
431
+ end
@@ -0,0 +1,192 @@
1
+ # typed: strong
2
+
3
+ module ArkEmail
4
+ module Models
5
+ class LogEntryDetail < ArkEmail::Models::LogEntry
6
+ OrHash =
7
+ T.type_alias do
8
+ T.any(ArkEmail::LogEntryDetail, ArkEmail::Internal::AnyHash)
9
+ end
10
+
11
+ # Request body information
12
+ sig { returns(T.nilable(ArkEmail::LogEntryDetail::Request)) }
13
+ attr_reader :request
14
+
15
+ sig { params(request: ArkEmail::LogEntryDetail::Request::OrHash).void }
16
+ attr_writer :request
17
+
18
+ # Response body information
19
+ sig { returns(T.nilable(ArkEmail::LogEntryDetail::Response)) }
20
+ attr_reader :response
21
+
22
+ sig { params(response: ArkEmail::LogEntryDetail::Response::OrHash).void }
23
+ attr_writer :response
24
+
25
+ # Full API request log entry with bodies
26
+ sig do
27
+ params(
28
+ request: ArkEmail::LogEntryDetail::Request::OrHash,
29
+ response: ArkEmail::LogEntryDetail::Response::OrHash
30
+ ).returns(T.attached_class)
31
+ end
32
+ def self.new(
33
+ # Request body information
34
+ request: nil,
35
+ # Response body information
36
+ response: nil
37
+ )
38
+ end
39
+
40
+ sig do
41
+ override.returns(
42
+ {
43
+ request: ArkEmail::LogEntryDetail::Request,
44
+ response: ArkEmail::LogEntryDetail::Response
45
+ }
46
+ )
47
+ end
48
+ def to_hash
49
+ end
50
+
51
+ class Request < ArkEmail::Internal::Type::BaseModel
52
+ OrHash =
53
+ T.type_alias do
54
+ T.any(
55
+ ArkEmail::LogEntryDetail::Request,
56
+ ArkEmail::Internal::AnyHash
57
+ )
58
+ end
59
+
60
+ # Decrypted request body (JSON or string). Bodies over 25KB are truncated.
61
+ sig do
62
+ returns(T.nilable(ArkEmail::LogEntryDetail::Request::Body::Variants))
63
+ end
64
+ attr_accessor :body
65
+
66
+ # Original request body size in bytes
67
+ sig { returns(T.nilable(Integer)) }
68
+ attr_accessor :body_size
69
+
70
+ # Request body information
71
+ sig do
72
+ params(
73
+ body: T.nilable(ArkEmail::LogEntryDetail::Request::Body::Variants),
74
+ body_size: T.nilable(Integer)
75
+ ).returns(T.attached_class)
76
+ end
77
+ def self.new(
78
+ # Decrypted request body (JSON or string). Bodies over 25KB are truncated.
79
+ body: nil,
80
+ # Original request body size in bytes
81
+ body_size: nil
82
+ )
83
+ end
84
+
85
+ sig do
86
+ override.returns(
87
+ {
88
+ body:
89
+ T.nilable(ArkEmail::LogEntryDetail::Request::Body::Variants),
90
+ body_size: T.nilable(Integer)
91
+ }
92
+ )
93
+ end
94
+ def to_hash
95
+ end
96
+
97
+ # Decrypted request body (JSON or string). Bodies over 25KB are truncated.
98
+ module Body
99
+ extend ArkEmail::Internal::Type::Union
100
+
101
+ Variants = T.type_alias { T.any(T::Hash[Symbol, T.anything], String) }
102
+
103
+ sig do
104
+ override.returns(
105
+ T::Array[ArkEmail::LogEntryDetail::Request::Body::Variants]
106
+ )
107
+ end
108
+ def self.variants
109
+ end
110
+
111
+ UnionMember0Map =
112
+ T.let(
113
+ ArkEmail::Internal::Type::HashOf[
114
+ ArkEmail::Internal::Type::Unknown
115
+ ],
116
+ ArkEmail::Internal::Type::Converter
117
+ )
118
+ end
119
+ end
120
+
121
+ class Response < ArkEmail::Internal::Type::BaseModel
122
+ OrHash =
123
+ T.type_alias do
124
+ T.any(
125
+ ArkEmail::LogEntryDetail::Response,
126
+ ArkEmail::Internal::AnyHash
127
+ )
128
+ end
129
+
130
+ # Decrypted response body (JSON or string). Bodies over 25KB are truncated.
131
+ sig do
132
+ returns(T.nilable(ArkEmail::LogEntryDetail::Response::Body::Variants))
133
+ end
134
+ attr_accessor :body
135
+
136
+ # Response body size in bytes
137
+ sig { returns(T.nilable(Integer)) }
138
+ attr_accessor :body_size
139
+
140
+ # Response body information
141
+ sig do
142
+ params(
143
+ body: T.nilable(ArkEmail::LogEntryDetail::Response::Body::Variants),
144
+ body_size: T.nilable(Integer)
145
+ ).returns(T.attached_class)
146
+ end
147
+ def self.new(
148
+ # Decrypted response body (JSON or string). Bodies over 25KB are truncated.
149
+ body: nil,
150
+ # Response body size in bytes
151
+ body_size: nil
152
+ )
153
+ end
154
+
155
+ sig do
156
+ override.returns(
157
+ {
158
+ body:
159
+ T.nilable(ArkEmail::LogEntryDetail::Response::Body::Variants),
160
+ body_size: T.nilable(Integer)
161
+ }
162
+ )
163
+ end
164
+ def to_hash
165
+ end
166
+
167
+ # Decrypted response body (JSON or string). Bodies over 25KB are truncated.
168
+ module Body
169
+ extend ArkEmail::Internal::Type::Union
170
+
171
+ Variants = T.type_alias { T.any(T::Hash[Symbol, T.anything], String) }
172
+
173
+ sig do
174
+ override.returns(
175
+ T::Array[ArkEmail::LogEntryDetail::Response::Body::Variants]
176
+ )
177
+ end
178
+ def self.variants
179
+ end
180
+
181
+ UnionMember0Map =
182
+ T.let(
183
+ ArkEmail::Internal::Type::HashOf[
184
+ ArkEmail::Internal::Type::Unknown
185
+ ],
186
+ ArkEmail::Internal::Type::Converter
187
+ )
188
+ end
189
+ end
190
+ end
191
+ end
192
+ end