ark-email 0.13.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.
Files changed (86) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +24 -0
  3. data/README.md +3 -3
  4. data/lib/ark_email/client.rb +8 -0
  5. data/lib/ark_email/models/dns_record.rb +49 -19
  6. data/lib/ark_email/models/domain_create_response.rb +117 -25
  7. data/lib/ark_email/models/domain_list_response.rb +12 -13
  8. data/lib/ark_email/models/domain_retrieve_response.rb +117 -25
  9. data/lib/ark_email/models/domain_verify_response.rb +117 -25
  10. data/lib/ark_email/models/email_retrieve_params.rb +4 -1
  11. data/lib/ark_email/models/email_retrieve_response.rb +177 -1
  12. data/lib/ark_email/models/log_entry.rb +298 -0
  13. data/lib/ark_email/models/log_entry_detail.rb +102 -0
  14. data/lib/ark_email/models/log_list_params.rb +106 -0
  15. data/lib/ark_email/models/log_retrieve_params.rb +14 -0
  16. data/lib/ark_email/models/log_retrieve_response.rb +33 -0
  17. data/lib/ark_email/models/track_domain.rb +6 -2
  18. data/lib/ark_email/models/usage_retrieve_params.rb +14 -0
  19. data/lib/ark_email/models/usage_retrieve_response.rb +270 -0
  20. data/lib/ark_email/models/webhook_create_params.rb +0 -2
  21. data/lib/ark_email/models/webhook_create_response.rb +0 -2
  22. data/lib/ark_email/models/webhook_list_deliveries_params.rb +0 -2
  23. data/lib/ark_email/models/webhook_list_deliveries_response.rb +0 -2
  24. data/lib/ark_email/models/webhook_retrieve_delivery_response.rb +0 -2
  25. data/lib/ark_email/models/webhook_retrieve_response.rb +0 -2
  26. data/lib/ark_email/models/webhook_test_params.rb +0 -2
  27. data/lib/ark_email/models/webhook_update_response.rb +0 -2
  28. data/lib/ark_email/models.rb +10 -0
  29. data/lib/ark_email/resources/logs.rb +120 -0
  30. data/lib/ark_email/resources/usage.rb +51 -0
  31. data/lib/ark_email/version.rb +1 -1
  32. data/lib/ark_email.rb +9 -0
  33. data/rbi/ark_email/client.rbi +6 -0
  34. data/rbi/ark_email/models/dns_record.rbi +57 -22
  35. data/rbi/ark_email/models/domain_create_response.rbi +189 -28
  36. data/rbi/ark_email/models/domain_list_response.rbi +13 -19
  37. data/rbi/ark_email/models/domain_retrieve_response.rbi +191 -28
  38. data/rbi/ark_email/models/domain_verify_response.rbi +189 -28
  39. data/rbi/ark_email/models/email_retrieve_params.rbi +8 -2
  40. data/rbi/ark_email/models/email_retrieve_response.rbi +379 -0
  41. data/rbi/ark_email/models/log_entry.rbi +431 -0
  42. data/rbi/ark_email/models/log_entry_detail.rbi +192 -0
  43. data/rbi/ark_email/models/log_list_params.rbi +163 -0
  44. data/rbi/ark_email/models/log_retrieve_params.rbi +27 -0
  45. data/rbi/ark_email/models/log_retrieve_response.rbi +59 -0
  46. data/rbi/ark_email/models/track_domain.rbi +4 -2
  47. data/rbi/ark_email/models/usage_retrieve_params.rbi +27 -0
  48. data/rbi/ark_email/models/usage_retrieve_response.rbi +511 -0
  49. data/rbi/ark_email/models/webhook_create_params.rbi +0 -10
  50. data/rbi/ark_email/models/webhook_create_response.rbi +0 -10
  51. data/rbi/ark_email/models/webhook_list_deliveries_params.rbi +0 -10
  52. data/rbi/ark_email/models/webhook_list_deliveries_response.rbi +0 -10
  53. data/rbi/ark_email/models/webhook_retrieve_delivery_response.rbi +0 -10
  54. data/rbi/ark_email/models/webhook_retrieve_response.rbi +0 -10
  55. data/rbi/ark_email/models/webhook_test_params.rbi +0 -10
  56. data/rbi/ark_email/models/webhook_update_response.rbi +0 -10
  57. data/rbi/ark_email/models.rbi +10 -0
  58. data/rbi/ark_email/resources/emails.rbi +4 -1
  59. data/rbi/ark_email/resources/logs.rbi +104 -0
  60. data/rbi/ark_email/resources/usage.rbi +40 -0
  61. data/sig/ark_email/client.rbs +4 -0
  62. data/sig/ark_email/models/dns_record.rbs +5 -0
  63. data/sig/ark_email/models/domain_create_response.rbs +27 -20
  64. data/sig/ark_email/models/domain_list_response.rbs +4 -16
  65. data/sig/ark_email/models/domain_retrieve_response.rbs +27 -20
  66. data/sig/ark_email/models/domain_verify_response.rbs +27 -20
  67. data/sig/ark_email/models/email_retrieve_response.rbs +179 -0
  68. data/sig/ark_email/models/log_entry.rbs +209 -0
  69. data/sig/ark_email/models/log_entry_detail.rbs +97 -0
  70. data/sig/ark_email/models/log_list_params.rbs +97 -0
  71. data/sig/ark_email/models/log_retrieve_params.rbs +15 -0
  72. data/sig/ark_email/models/log_retrieve_response.rbs +26 -0
  73. data/sig/ark_email/models/usage_retrieve_params.rbs +15 -0
  74. data/sig/ark_email/models/usage_retrieve_response.rbs +212 -0
  75. data/sig/ark_email/models/webhook_create_params.rbs +0 -4
  76. data/sig/ark_email/models/webhook_create_response.rbs +0 -4
  77. data/sig/ark_email/models/webhook_list_deliveries_params.rbs +0 -4
  78. data/sig/ark_email/models/webhook_list_deliveries_response.rbs +0 -4
  79. data/sig/ark_email/models/webhook_retrieve_delivery_response.rbs +0 -4
  80. data/sig/ark_email/models/webhook_retrieve_response.rbs +0 -4
  81. data/sig/ark_email/models/webhook_test_params.rbs +0 -4
  82. data/sig/ark_email/models/webhook_update_response.rbs +0 -4
  83. data/sig/ark_email/models.rbs +10 -0
  84. data/sig/ark_email/resources/logs.rbs +25 -0
  85. data/sig/ark_email/resources/usage.rbs +11 -0
  86. metadata +29 -2
@@ -0,0 +1,270 @@
1
+ # frozen_string_literal: true
2
+
3
+ module ArkEmail
4
+ module Models
5
+ # @see ArkEmail::Resources::Usage#retrieve
6
+ class UsageRetrieveResponse < ArkEmail::Internal::Type::BaseModel
7
+ # @!attribute data
8
+ # Current usage and limit information
9
+ #
10
+ # @return [ArkEmail::Models::UsageRetrieveResponse::Data]
11
+ required :data, -> { ArkEmail::Models::UsageRetrieveResponse::Data }
12
+
13
+ # @!attribute meta
14
+ #
15
+ # @return [ArkEmail::Models::APIMeta]
16
+ required :meta, -> { ArkEmail::APIMeta }
17
+
18
+ # @!attribute success
19
+ #
20
+ # @return [Boolean, true]
21
+ required :success, const: true
22
+
23
+ # @!method initialize(data:, meta:, success: true)
24
+ # Account usage and limits response
25
+ #
26
+ # @param data [ArkEmail::Models::UsageRetrieveResponse::Data] Current usage and limit information
27
+ #
28
+ # @param meta [ArkEmail::Models::APIMeta]
29
+ #
30
+ # @param success [Boolean, true]
31
+
32
+ # @see ArkEmail::Models::UsageRetrieveResponse#data
33
+ class Data < ArkEmail::Internal::Type::BaseModel
34
+ # @!attribute billing
35
+ # Billing and credit information
36
+ #
37
+ # @return [ArkEmail::Models::UsageRetrieveResponse::Data::Billing, nil]
38
+ required :billing, -> { ArkEmail::Models::UsageRetrieveResponse::Data::Billing }, nil?: true
39
+
40
+ # @!attribute rate_limit
41
+ # API rate limit status
42
+ #
43
+ # @return [ArkEmail::Models::UsageRetrieveResponse::Data::RateLimit]
44
+ required :rate_limit,
45
+ -> { ArkEmail::Models::UsageRetrieveResponse::Data::RateLimit },
46
+ api_name: :rateLimit
47
+
48
+ # @!attribute send_limit
49
+ # Email send limit status (hourly cap)
50
+ #
51
+ # @return [ArkEmail::Models::UsageRetrieveResponse::Data::SendLimit, nil]
52
+ required :send_limit,
53
+ -> { ArkEmail::Models::UsageRetrieveResponse::Data::SendLimit },
54
+ api_name: :sendLimit,
55
+ nil?: true
56
+
57
+ # @!method initialize(billing:, rate_limit:, send_limit:)
58
+ # Current usage and limit information
59
+ #
60
+ # @param billing [ArkEmail::Models::UsageRetrieveResponse::Data::Billing, nil] Billing and credit information
61
+ #
62
+ # @param rate_limit [ArkEmail::Models::UsageRetrieveResponse::Data::RateLimit] API rate limit status
63
+ #
64
+ # @param send_limit [ArkEmail::Models::UsageRetrieveResponse::Data::SendLimit, nil] Email send limit status (hourly cap)
65
+
66
+ # @see ArkEmail::Models::UsageRetrieveResponse::Data#billing
67
+ class Billing < ArkEmail::Internal::Type::BaseModel
68
+ # @!attribute auto_recharge
69
+ # Auto-recharge configuration
70
+ #
71
+ # @return [ArkEmail::Models::UsageRetrieveResponse::Data::Billing::AutoRecharge]
72
+ required :auto_recharge,
73
+ -> { ArkEmail::Models::UsageRetrieveResponse::Data::Billing::AutoRecharge },
74
+ api_name: :autoRecharge
75
+
76
+ # @!attribute credit_balance
77
+ # Current credit balance as formatted string (e.g., "25.50")
78
+ #
79
+ # @return [String]
80
+ required :credit_balance, String, api_name: :creditBalance
81
+
82
+ # @!attribute credit_balance_cents
83
+ # Current credit balance in cents for precise calculations
84
+ #
85
+ # @return [Integer]
86
+ required :credit_balance_cents, Integer, api_name: :creditBalanceCents
87
+
88
+ # @!attribute has_payment_method
89
+ # Whether a payment method is configured
90
+ #
91
+ # @return [Boolean]
92
+ required :has_payment_method, ArkEmail::Internal::Type::Boolean, api_name: :hasPaymentMethod
93
+
94
+ # @!method initialize(auto_recharge:, credit_balance:, credit_balance_cents:, has_payment_method:)
95
+ # Billing and credit information
96
+ #
97
+ # @param auto_recharge [ArkEmail::Models::UsageRetrieveResponse::Data::Billing::AutoRecharge] Auto-recharge configuration
98
+ #
99
+ # @param credit_balance [String] Current credit balance as formatted string (e.g., "25.50")
100
+ #
101
+ # @param credit_balance_cents [Integer] Current credit balance in cents for precise calculations
102
+ #
103
+ # @param has_payment_method [Boolean] Whether a payment method is configured
104
+
105
+ # @see ArkEmail::Models::UsageRetrieveResponse::Data::Billing#auto_recharge
106
+ class AutoRecharge < ArkEmail::Internal::Type::BaseModel
107
+ # @!attribute amount
108
+ # Amount to recharge when triggered
109
+ #
110
+ # @return [String]
111
+ required :amount, String
112
+
113
+ # @!attribute enabled
114
+ # Whether auto-recharge is enabled
115
+ #
116
+ # @return [Boolean]
117
+ required :enabled, ArkEmail::Internal::Type::Boolean
118
+
119
+ # @!attribute threshold
120
+ # Balance threshold that triggers recharge
121
+ #
122
+ # @return [String]
123
+ required :threshold, String
124
+
125
+ # @!method initialize(amount:, enabled:, threshold:)
126
+ # Auto-recharge configuration
127
+ #
128
+ # @param amount [String] Amount to recharge when triggered
129
+ #
130
+ # @param enabled [Boolean] Whether auto-recharge is enabled
131
+ #
132
+ # @param threshold [String] Balance threshold that triggers recharge
133
+ end
134
+ end
135
+
136
+ # @see ArkEmail::Models::UsageRetrieveResponse::Data#rate_limit
137
+ class RateLimit < ArkEmail::Internal::Type::BaseModel
138
+ # @!attribute limit
139
+ # Maximum requests allowed per period
140
+ #
141
+ # @return [Integer]
142
+ required :limit, Integer
143
+
144
+ # @!attribute period
145
+ # Time period for the limit
146
+ #
147
+ # @return [Symbol, ArkEmail::Models::UsageRetrieveResponse::Data::RateLimit::Period]
148
+ required :period, enum: -> { ArkEmail::Models::UsageRetrieveResponse::Data::RateLimit::Period }
149
+
150
+ # @!attribute remaining
151
+ # Requests remaining in current window
152
+ #
153
+ # @return [Integer]
154
+ required :remaining, Integer
155
+
156
+ # @!attribute reset
157
+ # Unix timestamp when the limit resets
158
+ #
159
+ # @return [Integer]
160
+ required :reset, Integer
161
+
162
+ # @!method initialize(limit:, period:, remaining:, reset:)
163
+ # API rate limit status
164
+ #
165
+ # @param limit [Integer] Maximum requests allowed per period
166
+ #
167
+ # @param period [Symbol, ArkEmail::Models::UsageRetrieveResponse::Data::RateLimit::Period] Time period for the limit
168
+ #
169
+ # @param remaining [Integer] Requests remaining in current window
170
+ #
171
+ # @param reset [Integer] Unix timestamp when the limit resets
172
+
173
+ # Time period for the limit
174
+ #
175
+ # @see ArkEmail::Models::UsageRetrieveResponse::Data::RateLimit#period
176
+ module Period
177
+ extend ArkEmail::Internal::Type::Enum
178
+
179
+ SECOND = :second
180
+
181
+ # @!method self.values
182
+ # @return [Array<Symbol>]
183
+ end
184
+ end
185
+
186
+ # @see ArkEmail::Models::UsageRetrieveResponse::Data#send_limit
187
+ class SendLimit < ArkEmail::Internal::Type::BaseModel
188
+ # @!attribute approaching
189
+ # Whether approaching the limit (>90%)
190
+ #
191
+ # @return [Boolean]
192
+ required :approaching, ArkEmail::Internal::Type::Boolean
193
+
194
+ # @!attribute exceeded
195
+ # Whether the limit has been exceeded
196
+ #
197
+ # @return [Boolean]
198
+ required :exceeded, ArkEmail::Internal::Type::Boolean
199
+
200
+ # @!attribute limit
201
+ # Maximum emails allowed per hour (null = unlimited)
202
+ #
203
+ # @return [Integer, nil]
204
+ required :limit, Integer, nil?: true
205
+
206
+ # @!attribute period
207
+ # Time period for the limit
208
+ #
209
+ # @return [Symbol, ArkEmail::Models::UsageRetrieveResponse::Data::SendLimit::Period]
210
+ required :period, enum: -> { ArkEmail::Models::UsageRetrieveResponse::Data::SendLimit::Period }
211
+
212
+ # @!attribute remaining
213
+ # Emails remaining in current period (null if unlimited)
214
+ #
215
+ # @return [Integer, nil]
216
+ required :remaining, Integer, nil?: true
217
+
218
+ # @!attribute resets_at
219
+ # ISO timestamp when the limit window resets (top of next hour)
220
+ #
221
+ # @return [Time]
222
+ required :resets_at, Time, api_name: :resetsAt
223
+
224
+ # @!attribute usage_percent
225
+ # Usage as a percentage (null if unlimited)
226
+ #
227
+ # @return [Float, nil]
228
+ required :usage_percent, Float, api_name: :usagePercent, nil?: true
229
+
230
+ # @!attribute used
231
+ # Emails sent in current period
232
+ #
233
+ # @return [Integer]
234
+ required :used, Integer
235
+
236
+ # @!method initialize(approaching:, exceeded:, limit:, period:, remaining:, resets_at:, usage_percent:, used:)
237
+ # Email send limit status (hourly cap)
238
+ #
239
+ # @param approaching [Boolean] Whether approaching the limit (>90%)
240
+ #
241
+ # @param exceeded [Boolean] Whether the limit has been exceeded
242
+ #
243
+ # @param limit [Integer, nil] Maximum emails allowed per hour (null = unlimited)
244
+ #
245
+ # @param period [Symbol, ArkEmail::Models::UsageRetrieveResponse::Data::SendLimit::Period] Time period for the limit
246
+ #
247
+ # @param remaining [Integer, nil] Emails remaining in current period (null if unlimited)
248
+ #
249
+ # @param resets_at [Time] ISO timestamp when the limit window resets (top of next hour)
250
+ #
251
+ # @param usage_percent [Float, nil] Usage as a percentage (null if unlimited)
252
+ #
253
+ # @param used [Integer] Emails sent in current period
254
+
255
+ # Time period for the limit
256
+ #
257
+ # @see ArkEmail::Models::UsageRetrieveResponse::Data::SendLimit#period
258
+ module Period
259
+ extend ArkEmail::Internal::Type::Enum
260
+
261
+ HOUR = :hour
262
+
263
+ # @!method self.values
264
+ # @return [Array<Symbol>]
265
+ end
266
+ end
267
+ end
268
+ end
269
+ end
270
+ end
@@ -75,8 +75,6 @@ module ArkEmail
75
75
  MESSAGE_LINK_CLICKED = :MessageLinkClicked
76
76
  MESSAGE_LOADED = :MessageLoaded
77
77
  DOMAIN_DNS_ERROR = :DomainDNSError
78
- SEND_LIMIT_APPROACHING = :SendLimitApproaching
79
- SEND_LIMIT_EXCEEDED = :SendLimitExceeded
80
78
 
81
79
  # @!method self.values
82
80
  # @return [Array<Symbol>]
@@ -101,8 +101,6 @@ module ArkEmail
101
101
  MESSAGE_LINK_CLICKED = :MessageLinkClicked
102
102
  MESSAGE_LOADED = :MessageLoaded
103
103
  DOMAIN_DNS_ERROR = :DomainDNSError
104
- SEND_LIMIT_APPROACHING = :SendLimitApproaching
105
- SEND_LIMIT_EXCEEDED = :SendLimitExceeded
106
104
 
107
105
  # @!method self.values
108
106
  # @return [Array<Symbol>]
@@ -70,8 +70,6 @@ module ArkEmail
70
70
  MESSAGE_LINK_CLICKED = :MessageLinkClicked
71
71
  MESSAGE_LOADED = :MessageLoaded
72
72
  DOMAIN_DNS_ERROR = :DomainDNSError
73
- SEND_LIMIT_APPROACHING = :SendLimitApproaching
74
- SEND_LIMIT_EXCEEDED = :SendLimitExceeded
75
73
 
76
74
  # @!method self.values
77
75
  # @return [Array<Symbol>]
@@ -144,8 +144,6 @@ module ArkEmail
144
144
  MESSAGE_LINK_CLICKED = :MessageLinkClicked
145
145
  MESSAGE_LOADED = :MessageLoaded
146
146
  DOMAIN_DNS_ERROR = :DomainDNSError
147
- SEND_LIMIT_APPROACHING = :SendLimitApproaching
148
- SEND_LIMIT_EXCEEDED = :SendLimitExceeded
149
147
 
150
148
  # @!method self.values
151
149
  # @return [Array<Symbol>]
@@ -144,8 +144,6 @@ module ArkEmail
144
144
  MESSAGE_LINK_CLICKED = :MessageLinkClicked
145
145
  MESSAGE_LOADED = :MessageLoaded
146
146
  DOMAIN_DNS_ERROR = :DomainDNSError
147
- SEND_LIMIT_APPROACHING = :SendLimitApproaching
148
- SEND_LIMIT_EXCEEDED = :SendLimitExceeded
149
147
 
150
148
  # @!method self.values
151
149
  # @return [Array<Symbol>]
@@ -101,8 +101,6 @@ module ArkEmail
101
101
  MESSAGE_LINK_CLICKED = :MessageLinkClicked
102
102
  MESSAGE_LOADED = :MessageLoaded
103
103
  DOMAIN_DNS_ERROR = :DomainDNSError
104
- SEND_LIMIT_APPROACHING = :SendLimitApproaching
105
- SEND_LIMIT_EXCEEDED = :SendLimitExceeded
106
104
 
107
105
  # @!method self.values
108
106
  # @return [Array<Symbol>]
@@ -30,8 +30,6 @@ module ArkEmail
30
30
  MESSAGE_LINK_CLICKED = :MessageLinkClicked
31
31
  MESSAGE_LOADED = :MessageLoaded
32
32
  DOMAIN_DNS_ERROR = :DomainDNSError
33
- SEND_LIMIT_APPROACHING = :SendLimitApproaching
34
- SEND_LIMIT_EXCEEDED = :SendLimitExceeded
35
33
 
36
34
  # @!method self.values
37
35
  # @return [Array<Symbol>]
@@ -101,8 +101,6 @@ module ArkEmail
101
101
  MESSAGE_LINK_CLICKED = :MessageLinkClicked
102
102
  MESSAGE_LOADED = :MessageLoaded
103
103
  DOMAIN_DNS_ERROR = :DomainDNSError
104
- SEND_LIMIT_APPROACHING = :SendLimitApproaching
105
- SEND_LIMIT_EXCEEDED = :SendLimitExceeded
106
104
 
107
105
  # @!method self.values
108
106
  # @return [Array<Symbol>]
@@ -67,6 +67,14 @@ module ArkEmail
67
67
 
68
68
  EmailSendRawParams = ArkEmail::Models::EmailSendRawParams
69
69
 
70
+ LogEntry = ArkEmail::Models::LogEntry
71
+
72
+ LogEntryDetail = ArkEmail::Models::LogEntryDetail
73
+
74
+ LogListParams = ArkEmail::Models::LogListParams
75
+
76
+ LogRetrieveParams = ArkEmail::Models::LogRetrieveParams
77
+
70
78
  SuppressionBulkCreateParams = ArkEmail::Models::SuppressionBulkCreateParams
71
79
 
72
80
  SuppressionCreateParams = ArkEmail::Models::SuppressionCreateParams
@@ -91,6 +99,8 @@ module ArkEmail
91
99
 
92
100
  TrackingVerifyParams = ArkEmail::Models::TrackingVerifyParams
93
101
 
102
+ UsageRetrieveParams = ArkEmail::Models::UsageRetrieveParams
103
+
94
104
  WebhookCreateParams = ArkEmail::Models::WebhookCreateParams
95
105
 
96
106
  WebhookDeleteParams = ArkEmail::Models::WebhookDeleteParams
@@ -0,0 +1,120 @@
1
+ # frozen_string_literal: true
2
+
3
+ module ArkEmail
4
+ module Resources
5
+ class Logs
6
+ # Retrieve detailed information about a specific API request log, including the
7
+ # full request and response bodies.
8
+ #
9
+ # **Body decryption:** Request and response bodies are stored encrypted and
10
+ # automatically decrypted when retrieved. Bodies larger than 25KB are truncated at
11
+ # storage time with a `... [truncated]` marker.
12
+ #
13
+ # **Use cases:**
14
+ #
15
+ # - Debug a specific failed request
16
+ # - Review the exact payload sent/received
17
+ # - Share request details with support
18
+ #
19
+ # **Related endpoints:**
20
+ #
21
+ # - `GET /logs` - List logs with filters
22
+ #
23
+ # @overload retrieve(request_id, request_options: {})
24
+ #
25
+ # @param request_id [String] The request ID (format `req_*`)
26
+ #
27
+ # @param request_options [ArkEmail::RequestOptions, Hash{Symbol=>Object}, nil]
28
+ #
29
+ # @return [ArkEmail::Models::LogRetrieveResponse]
30
+ #
31
+ # @see ArkEmail::Models::LogRetrieveParams
32
+ def retrieve(request_id, params = {})
33
+ @client.request(
34
+ method: :get,
35
+ path: ["logs/%1$s", request_id],
36
+ model: ArkEmail::Models::LogRetrieveResponse,
37
+ options: params[:request_options]
38
+ )
39
+ end
40
+
41
+ # Some parameter documentations has been truncated, see
42
+ # {ArkEmail::Models::LogListParams} for more details.
43
+ #
44
+ # Retrieve a paginated list of API request logs for debugging and monitoring.
45
+ # Results are ordered by timestamp, newest first.
46
+ #
47
+ # **Use cases:**
48
+ #
49
+ # - Debug integration issues by reviewing recent requests
50
+ # - Monitor error rates and response times
51
+ # - Audit API usage patterns
52
+ #
53
+ # **Filters:**
54
+ #
55
+ # - `status` - Filter by success or error category
56
+ # - `statusCode` - Filter by exact HTTP status code
57
+ # - `endpoint` - Filter by endpoint name (e.g., `emails.send`)
58
+ # - `credentialId` - Filter by API key
59
+ # - `startDate`/`endDate` - Filter by date range
60
+ #
61
+ # **Note:** Request and response bodies are only included when retrieving a single
62
+ # log entry with `GET /logs/{requestId}`.
63
+ #
64
+ # **Related endpoints:**
65
+ #
66
+ # - `GET /logs/{requestId}` - Get full log details with request/response bodies
67
+ #
68
+ # @overload list(credential_id: nil, end_date: nil, endpoint: nil, page: nil, per_page: nil, request_id: nil, start_date: nil, status: nil, status_code: nil, request_options: {})
69
+ #
70
+ # @param credential_id [String] Filter by API credential ID
71
+ #
72
+ # @param end_date [Time] Filter logs before this date (ISO 8601 format)
73
+ #
74
+ # @param endpoint [String] Filter by endpoint name
75
+ #
76
+ # @param page [Integer] Page number
77
+ #
78
+ # @param per_page [Integer] Results per page (max 100)
79
+ #
80
+ # @param request_id [String] Filter by request ID (partial match)
81
+ #
82
+ # @param start_date [Time] Filter logs after this date (ISO 8601 format)
83
+ #
84
+ # @param status [Symbol, ArkEmail::Models::LogListParams::Status] Filter by status category:
85
+ #
86
+ # @param status_code [Integer] Filter by exact HTTP status code (100-599)
87
+ #
88
+ # @param request_options [ArkEmail::RequestOptions, Hash{Symbol=>Object}, nil]
89
+ #
90
+ # @return [ArkEmail::Internal::PageNumberPagination<ArkEmail::Models::LogEntry>]
91
+ #
92
+ # @see ArkEmail::Models::LogListParams
93
+ def list(params = {})
94
+ parsed, options = ArkEmail::LogListParams.dump_request(params)
95
+ @client.request(
96
+ method: :get,
97
+ path: "logs",
98
+ query: parsed.transform_keys(
99
+ credential_id: "credentialId",
100
+ end_date: "endDate",
101
+ per_page: "perPage",
102
+ request_id: "requestId",
103
+ start_date: "startDate",
104
+ status_code: "statusCode"
105
+ ),
106
+ page: ArkEmail::Internal::PageNumberPagination,
107
+ model: ArkEmail::LogEntry,
108
+ options: options
109
+ )
110
+ end
111
+
112
+ # @api private
113
+ #
114
+ # @param client [ArkEmail::Client]
115
+ def initialize(client:)
116
+ @client = client
117
+ end
118
+ end
119
+ end
120
+ end
@@ -0,0 +1,51 @@
1
+ # frozen_string_literal: true
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
+ #
27
+ # @overload retrieve(request_options: {})
28
+ #
29
+ # @param request_options [ArkEmail::RequestOptions, Hash{Symbol=>Object}, nil]
30
+ #
31
+ # @return [ArkEmail::Models::UsageRetrieveResponse]
32
+ #
33
+ # @see ArkEmail::Models::UsageRetrieveParams
34
+ def retrieve(params = {})
35
+ @client.request(
36
+ method: :get,
37
+ path: "usage",
38
+ model: ArkEmail::Models::UsageRetrieveResponse,
39
+ options: params[:request_options]
40
+ )
41
+ end
42
+
43
+ # @api private
44
+ #
45
+ # @param client [ArkEmail::Client]
46
+ def initialize(client:)
47
+ @client = client
48
+ end
49
+ end
50
+ end
51
+ end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module ArkEmail
4
- VERSION = "0.13.0"
4
+ VERSION = "0.15.0"
5
5
  end
data/lib/ark_email.rb CHANGED
@@ -53,6 +53,7 @@ require_relative "ark_email/internal/transport/base_client"
53
53
  require_relative "ark_email/internal/transport/pooled_net_requester"
54
54
  require_relative "ark_email/client"
55
55
  require_relative "ark_email/internal/page_number_pagination"
56
+ require_relative "ark_email/models/log_entry"
56
57
  require_relative "ark_email/models/api_meta"
57
58
  require_relative "ark_email/models/dns_record"
58
59
  require_relative "ark_email/models/domain_create_params"
@@ -79,6 +80,10 @@ require_relative "ark_email/models/email_send_params"
79
80
  require_relative "ark_email/models/email_send_raw_params"
80
81
  require_relative "ark_email/models/email_send_raw_response"
81
82
  require_relative "ark_email/models/email_send_response"
83
+ require_relative "ark_email/models/log_entry_detail"
84
+ require_relative "ark_email/models/log_list_params"
85
+ require_relative "ark_email/models/log_retrieve_params"
86
+ require_relative "ark_email/models/log_retrieve_response"
82
87
  require_relative "ark_email/models/suppression_bulk_create_params"
83
88
  require_relative "ark_email/models/suppression_bulk_create_response"
84
89
  require_relative "ark_email/models/suppression_create_params"
@@ -102,6 +107,8 @@ require_relative "ark_email/models/tracking_update_params"
102
107
  require_relative "ark_email/models/tracking_update_response"
103
108
  require_relative "ark_email/models/tracking_verify_params"
104
109
  require_relative "ark_email/models/tracking_verify_response"
110
+ require_relative "ark_email/models/usage_retrieve_params"
111
+ require_relative "ark_email/models/usage_retrieve_response"
105
112
  require_relative "ark_email/models/webhook_create_params"
106
113
  require_relative "ark_email/models/webhook_create_response"
107
114
  require_relative "ark_email/models/webhook_delete_params"
@@ -123,6 +130,8 @@ require_relative "ark_email/models/webhook_update_response"
123
130
  require_relative "ark_email/models"
124
131
  require_relative "ark_email/resources/domains"
125
132
  require_relative "ark_email/resources/emails"
133
+ require_relative "ark_email/resources/logs"
126
134
  require_relative "ark_email/resources/suppressions"
127
135
  require_relative "ark_email/resources/tracking"
136
+ require_relative "ark_email/resources/usage"
128
137
  require_relative "ark_email/resources/webhooks"
@@ -34,6 +34,12 @@ module ArkEmail
34
34
  sig { returns(ArkEmail::Resources::Tracking) }
35
35
  attr_reader :tracking
36
36
 
37
+ sig { returns(ArkEmail::Resources::Logs) }
38
+ attr_reader :logs
39
+
40
+ sig { returns(ArkEmail::Resources::Usage) }
41
+ attr_reader :usage
42
+
37
43
  # @api private
38
44
  sig { override.returns(T::Hash[String, String]) }
39
45
  private def auth_headers