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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +9 -0
- data/README.md +1 -1
- data/lib/ark_email/client.rb +4 -0
- data/lib/ark_email/models/email_retrieve_params.rb +4 -1
- data/lib/ark_email/models/email_retrieve_response.rb +177 -1
- data/lib/ark_email/models/log_entry.rb +298 -0
- data/lib/ark_email/models/log_entry_detail.rb +102 -0
- data/lib/ark_email/models/log_list_params.rb +106 -0
- data/lib/ark_email/models/log_retrieve_params.rb +14 -0
- data/lib/ark_email/models/log_retrieve_response.rb +33 -0
- data/lib/ark_email/models.rb +8 -0
- data/lib/ark_email/resources/logs.rb +120 -0
- data/lib/ark_email/version.rb +1 -1
- data/lib/ark_email.rb +6 -0
- data/rbi/ark_email/client.rbi +3 -0
- data/rbi/ark_email/models/email_retrieve_params.rbi +8 -2
- data/rbi/ark_email/models/email_retrieve_response.rbi +379 -0
- data/rbi/ark_email/models/log_entry.rbi +431 -0
- data/rbi/ark_email/models/log_entry_detail.rbi +192 -0
- data/rbi/ark_email/models/log_list_params.rbi +163 -0
- data/rbi/ark_email/models/log_retrieve_params.rbi +27 -0
- data/rbi/ark_email/models/log_retrieve_response.rbi +59 -0
- data/rbi/ark_email/models.rbi +8 -0
- data/rbi/ark_email/resources/emails.rbi +4 -1
- data/rbi/ark_email/resources/logs.rbi +104 -0
- data/sig/ark_email/client.rbs +2 -0
- data/sig/ark_email/models/email_retrieve_response.rbs +179 -0
- data/sig/ark_email/models/log_entry.rbs +209 -0
- data/sig/ark_email/models/log_entry_detail.rbs +97 -0
- data/sig/ark_email/models/log_list_params.rbs +97 -0
- data/sig/ark_email/models/log_retrieve_params.rbs +15 -0
- data/sig/ark_email/models/log_retrieve_response.rbs +26 -0
- data/sig/ark_email/models.rbs +8 -0
- data/sig/ark_email/resources/logs.rbs +25 -0
- metadata +20 -2
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module ArkEmail
|
|
4
|
+
module Models
|
|
5
|
+
# @see ArkEmail::Resources::Logs#list
|
|
6
|
+
class LogListParams < ArkEmail::Internal::Type::BaseModel
|
|
7
|
+
extend ArkEmail::Internal::Type::RequestParameters::Converter
|
|
8
|
+
include ArkEmail::Internal::Type::RequestParameters
|
|
9
|
+
|
|
10
|
+
# @!attribute credential_id
|
|
11
|
+
# Filter by API credential ID
|
|
12
|
+
#
|
|
13
|
+
# @return [String, nil]
|
|
14
|
+
optional :credential_id, String
|
|
15
|
+
|
|
16
|
+
# @!attribute end_date
|
|
17
|
+
# Filter logs before this date (ISO 8601 format)
|
|
18
|
+
#
|
|
19
|
+
# @return [Time, nil]
|
|
20
|
+
optional :end_date, Time
|
|
21
|
+
|
|
22
|
+
# @!attribute endpoint
|
|
23
|
+
# Filter by endpoint name
|
|
24
|
+
#
|
|
25
|
+
# @return [String, nil]
|
|
26
|
+
optional :endpoint, String
|
|
27
|
+
|
|
28
|
+
# @!attribute page
|
|
29
|
+
# Page number
|
|
30
|
+
#
|
|
31
|
+
# @return [Integer, nil]
|
|
32
|
+
optional :page, Integer
|
|
33
|
+
|
|
34
|
+
# @!attribute per_page
|
|
35
|
+
# Results per page (max 100)
|
|
36
|
+
#
|
|
37
|
+
# @return [Integer, nil]
|
|
38
|
+
optional :per_page, Integer
|
|
39
|
+
|
|
40
|
+
# @!attribute request_id
|
|
41
|
+
# Filter by request ID (partial match)
|
|
42
|
+
#
|
|
43
|
+
# @return [String, nil]
|
|
44
|
+
optional :request_id, String
|
|
45
|
+
|
|
46
|
+
# @!attribute start_date
|
|
47
|
+
# Filter logs after this date (ISO 8601 format)
|
|
48
|
+
#
|
|
49
|
+
# @return [Time, nil]
|
|
50
|
+
optional :start_date, Time
|
|
51
|
+
|
|
52
|
+
# @!attribute status
|
|
53
|
+
# Filter by status category:
|
|
54
|
+
#
|
|
55
|
+
# - `success` - Status codes < 400
|
|
56
|
+
# - `error` - Status codes >= 400
|
|
57
|
+
#
|
|
58
|
+
# @return [Symbol, ArkEmail::Models::LogListParams::Status, nil]
|
|
59
|
+
optional :status, enum: -> { ArkEmail::LogListParams::Status }
|
|
60
|
+
|
|
61
|
+
# @!attribute status_code
|
|
62
|
+
# Filter by exact HTTP status code (100-599)
|
|
63
|
+
#
|
|
64
|
+
# @return [Integer, nil]
|
|
65
|
+
optional :status_code, Integer
|
|
66
|
+
|
|
67
|
+
# @!method initialize(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: {})
|
|
68
|
+
# Some parameter documentations has been truncated, see
|
|
69
|
+
# {ArkEmail::Models::LogListParams} for more details.
|
|
70
|
+
#
|
|
71
|
+
# @param credential_id [String] Filter by API credential ID
|
|
72
|
+
#
|
|
73
|
+
# @param end_date [Time] Filter logs before this date (ISO 8601 format)
|
|
74
|
+
#
|
|
75
|
+
# @param endpoint [String] Filter by endpoint name
|
|
76
|
+
#
|
|
77
|
+
# @param page [Integer] Page number
|
|
78
|
+
#
|
|
79
|
+
# @param per_page [Integer] Results per page (max 100)
|
|
80
|
+
#
|
|
81
|
+
# @param request_id [String] Filter by request ID (partial match)
|
|
82
|
+
#
|
|
83
|
+
# @param start_date [Time] Filter logs after this date (ISO 8601 format)
|
|
84
|
+
#
|
|
85
|
+
# @param status [Symbol, ArkEmail::Models::LogListParams::Status] Filter by status category:
|
|
86
|
+
#
|
|
87
|
+
# @param status_code [Integer] Filter by exact HTTP status code (100-599)
|
|
88
|
+
#
|
|
89
|
+
# @param request_options [ArkEmail::RequestOptions, Hash{Symbol=>Object}]
|
|
90
|
+
|
|
91
|
+
# Filter by status category:
|
|
92
|
+
#
|
|
93
|
+
# - `success` - Status codes < 400
|
|
94
|
+
# - `error` - Status codes >= 400
|
|
95
|
+
module Status
|
|
96
|
+
extend ArkEmail::Internal::Type::Enum
|
|
97
|
+
|
|
98
|
+
SUCCESS = :success
|
|
99
|
+
ERROR = :error
|
|
100
|
+
|
|
101
|
+
# @!method self.values
|
|
102
|
+
# @return [Array<Symbol>]
|
|
103
|
+
end
|
|
104
|
+
end
|
|
105
|
+
end
|
|
106
|
+
end
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module ArkEmail
|
|
4
|
+
module Models
|
|
5
|
+
# @see ArkEmail::Resources::Logs#retrieve
|
|
6
|
+
class LogRetrieveParams < ArkEmail::Internal::Type::BaseModel
|
|
7
|
+
extend ArkEmail::Internal::Type::RequestParameters::Converter
|
|
8
|
+
include ArkEmail::Internal::Type::RequestParameters
|
|
9
|
+
|
|
10
|
+
# @!method initialize(request_options: {})
|
|
11
|
+
# @param request_options [ArkEmail::RequestOptions, Hash{Symbol=>Object}]
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
end
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module ArkEmail
|
|
4
|
+
module Models
|
|
5
|
+
# @see ArkEmail::Resources::Logs#retrieve
|
|
6
|
+
class LogRetrieveResponse < ArkEmail::Internal::Type::BaseModel
|
|
7
|
+
# @!attribute data
|
|
8
|
+
# Full API request log entry with bodies
|
|
9
|
+
#
|
|
10
|
+
# @return [ArkEmail::Models::LogEntryDetail]
|
|
11
|
+
required :data, -> { ArkEmail::LogEntryDetail }
|
|
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
|
+
# Detailed API request log with request/response bodies
|
|
25
|
+
#
|
|
26
|
+
# @param data [ArkEmail::Models::LogEntryDetail] Full API request log entry with bodies
|
|
27
|
+
#
|
|
28
|
+
# @param meta [ArkEmail::Models::APIMeta]
|
|
29
|
+
#
|
|
30
|
+
# @param success [Boolean, true]
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
end
|
data/lib/ark_email/models.rb
CHANGED
|
@@ -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
|
|
@@ -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
|
data/lib/ark_email/version.rb
CHANGED
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"
|
|
@@ -123,6 +128,7 @@ require_relative "ark_email/models/webhook_update_response"
|
|
|
123
128
|
require_relative "ark_email/models"
|
|
124
129
|
require_relative "ark_email/resources/domains"
|
|
125
130
|
require_relative "ark_email/resources/emails"
|
|
131
|
+
require_relative "ark_email/resources/logs"
|
|
126
132
|
require_relative "ark_email/resources/suppressions"
|
|
127
133
|
require_relative "ark_email/resources/tracking"
|
|
128
134
|
require_relative "ark_email/resources/webhooks"
|
data/rbi/ark_email/client.rbi
CHANGED
|
@@ -34,6 +34,9 @@ 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
|
+
|
|
37
40
|
# @api private
|
|
38
41
|
sig { override.returns(T::Hash[String, String]) }
|
|
39
42
|
private def auth_headers
|
|
@@ -13,10 +13,13 @@ module ArkEmail
|
|
|
13
13
|
|
|
14
14
|
# Comma-separated list of fields to include:
|
|
15
15
|
#
|
|
16
|
+
# - `full` - Include all expanded fields in a single request
|
|
16
17
|
# - `content` - HTML and plain text body
|
|
17
18
|
# - `headers` - Email headers
|
|
18
19
|
# - `deliveries` - Delivery attempt history
|
|
19
|
-
# - `activity` - Opens and clicks
|
|
20
|
+
# - `activity` - Opens and clicks tracking data
|
|
21
|
+
# - `attachments` - File attachments with content (base64 encoded)
|
|
22
|
+
# - `raw` - Complete raw MIME message (base64 encoded)
|
|
20
23
|
sig { returns(T.nilable(String)) }
|
|
21
24
|
attr_reader :expand
|
|
22
25
|
|
|
@@ -32,10 +35,13 @@ module ArkEmail
|
|
|
32
35
|
def self.new(
|
|
33
36
|
# Comma-separated list of fields to include:
|
|
34
37
|
#
|
|
38
|
+
# - `full` - Include all expanded fields in a single request
|
|
35
39
|
# - `content` - HTML and plain text body
|
|
36
40
|
# - `headers` - Email headers
|
|
37
41
|
# - `deliveries` - Delivery attempt history
|
|
38
|
-
# - `activity` - Opens and clicks
|
|
42
|
+
# - `activity` - Opens and clicks tracking data
|
|
43
|
+
# - `attachments` - File attachments with content (base64 encoded)
|
|
44
|
+
# - `raw` - Complete raw MIME message (base64 encoded)
|
|
39
45
|
expand: nil,
|
|
40
46
|
request_options: {}
|
|
41
47
|
)
|