ark-email 0.16.0 → 0.18.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 +26 -0
- data/README.md +1 -1
- data/lib/ark_email/client.rb +4 -0
- data/lib/ark_email/internal/transport/pooled_net_requester.rb +1 -1
- data/lib/ark_email/models/email_retrieve_deliveries_response.rb +80 -5
- data/lib/ark_email/models/email_retrieve_response.rb +79 -5
- data/lib/ark_email/models/tenant.rb +95 -0
- data/lib/ark_email/models/tenant_create_params.rb +57 -0
- data/lib/ark_email/models/tenant_create_response.rb +28 -0
- data/lib/ark_email/models/tenant_delete_params.rb +14 -0
- data/lib/ark_email/models/tenant_delete_response.rb +39 -0
- data/lib/ark_email/models/tenant_list_params.rb +50 -0
- data/lib/ark_email/models/tenant_retrieve_params.rb +14 -0
- data/lib/ark_email/models/tenant_retrieve_response.rb +28 -0
- data/lib/ark_email/models/tenant_update_params.rb +77 -0
- data/lib/ark_email/models/tenant_update_response.rb +28 -0
- data/lib/ark_email/models.rb +12 -0
- data/lib/ark_email/resources/tenants.rb +144 -0
- data/lib/ark_email/version.rb +1 -1
- data/lib/ark_email.rb +11 -0
- data/rbi/ark_email/client.rbi +3 -0
- data/rbi/ark_email/models/email_retrieve_deliveries_response.rbi +166 -7
- data/rbi/ark_email/models/email_retrieve_response.rbi +166 -7
- data/rbi/ark_email/models/tenant.rbi +121 -0
- data/rbi/ark_email/models/tenant_create_params.rbi +100 -0
- data/rbi/ark_email/models/tenant_create_response.rbi +52 -0
- data/rbi/ark_email/models/tenant_delete_params.rbi +27 -0
- data/rbi/ark_email/models/tenant_delete_response.rbi +75 -0
- data/rbi/ark_email/models/tenant_list_params.rbi +92 -0
- data/rbi/ark_email/models/tenant_retrieve_params.rbi +27 -0
- data/rbi/ark_email/models/tenant_retrieve_response.rbi +52 -0
- data/rbi/ark_email/models/tenant_update_params.rbi +140 -0
- data/rbi/ark_email/models/tenant_update_response.rbi +52 -0
- data/rbi/ark_email/models.rbi +12 -0
- data/rbi/ark_email/resources/tenants.rbi +131 -0
- data/sig/ark_email/client.rbs +2 -0
- data/sig/ark_email/models/email_retrieve_deliveries_response.rbs +58 -3
- data/sig/ark_email/models/email_retrieve_response.rbs +58 -3
- data/sig/ark_email/models/tenant.rbs +65 -0
- data/sig/ark_email/models/tenant_create_params.rbs +39 -0
- data/sig/ark_email/models/tenant_create_response.rbs +26 -0
- data/sig/ark_email/models/tenant_delete_params.rbs +15 -0
- data/sig/ark_email/models/tenant_delete_response.rbs +40 -0
- data/sig/ark_email/models/tenant_list_params.rbs +56 -0
- data/sig/ark_email/models/tenant_retrieve_params.rbs +15 -0
- data/sig/ark_email/models/tenant_retrieve_response.rbs +26 -0
- data/sig/ark_email/models/tenant_update_params.rbs +62 -0
- data/sig/ark_email/models/tenant_update_response.rbs +26 -0
- data/sig/ark_email/models.rbs +12 -0
- data/sig/ark_email/resources/tenants.rbs +38 -0
- metadata +35 -2
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module ArkEmail
|
|
4
|
+
module Models
|
|
5
|
+
# @see ArkEmail::Resources::Tenants#update
|
|
6
|
+
class TenantUpdateParams < ArkEmail::Internal::Type::BaseModel
|
|
7
|
+
extend ArkEmail::Internal::Type::RequestParameters::Converter
|
|
8
|
+
include ArkEmail::Internal::Type::RequestParameters
|
|
9
|
+
|
|
10
|
+
# @!attribute metadata
|
|
11
|
+
# Custom key-value pairs. Useful for storing references to your internal systems.
|
|
12
|
+
#
|
|
13
|
+
# **Limits:**
|
|
14
|
+
#
|
|
15
|
+
# - Max 50 keys
|
|
16
|
+
# - Key names max 40 characters
|
|
17
|
+
# - String values max 500 characters
|
|
18
|
+
# - Total size max 8KB
|
|
19
|
+
#
|
|
20
|
+
# @return [Hash{Symbol=>String, Float, Boolean, nil}, nil]
|
|
21
|
+
optional :metadata,
|
|
22
|
+
-> {
|
|
23
|
+
ArkEmail::Internal::Type::HashOf[union: ArkEmail::TenantUpdateParams::Metadata, nil?: true]
|
|
24
|
+
},
|
|
25
|
+
nil?: true
|
|
26
|
+
|
|
27
|
+
# @!attribute name
|
|
28
|
+
# Display name for the tenant
|
|
29
|
+
#
|
|
30
|
+
# @return [String, nil]
|
|
31
|
+
optional :name, String
|
|
32
|
+
|
|
33
|
+
# @!attribute status
|
|
34
|
+
# Tenant status
|
|
35
|
+
#
|
|
36
|
+
# @return [Symbol, ArkEmail::Models::TenantUpdateParams::Status, nil]
|
|
37
|
+
optional :status, enum: -> { ArkEmail::TenantUpdateParams::Status }
|
|
38
|
+
|
|
39
|
+
# @!method initialize(metadata: nil, name: nil, status: nil, request_options: {})
|
|
40
|
+
# Some parameter documentations has been truncated, see
|
|
41
|
+
# {ArkEmail::Models::TenantUpdateParams} for more details.
|
|
42
|
+
#
|
|
43
|
+
# @param metadata [Hash{Symbol=>String, Float, Boolean, nil}, nil] Custom key-value pairs. Useful for storing references to your internal systems.
|
|
44
|
+
#
|
|
45
|
+
# @param name [String] Display name for the tenant
|
|
46
|
+
#
|
|
47
|
+
# @param status [Symbol, ArkEmail::Models::TenantUpdateParams::Status] Tenant status
|
|
48
|
+
#
|
|
49
|
+
# @param request_options [ArkEmail::RequestOptions, Hash{Symbol=>Object}]
|
|
50
|
+
|
|
51
|
+
module Metadata
|
|
52
|
+
extend ArkEmail::Internal::Type::Union
|
|
53
|
+
|
|
54
|
+
variant String
|
|
55
|
+
|
|
56
|
+
variant Float
|
|
57
|
+
|
|
58
|
+
variant ArkEmail::Internal::Type::Boolean
|
|
59
|
+
|
|
60
|
+
# @!method self.variants
|
|
61
|
+
# @return [Array(String, Float, Boolean)]
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
# Tenant status
|
|
65
|
+
module Status
|
|
66
|
+
extend ArkEmail::Internal::Type::Enum
|
|
67
|
+
|
|
68
|
+
ACTIVE = :active
|
|
69
|
+
SUSPENDED = :suspended
|
|
70
|
+
ARCHIVED = :archived
|
|
71
|
+
|
|
72
|
+
# @!method self.values
|
|
73
|
+
# @return [Array<Symbol>]
|
|
74
|
+
end
|
|
75
|
+
end
|
|
76
|
+
end
|
|
77
|
+
end
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module ArkEmail
|
|
4
|
+
module Models
|
|
5
|
+
# @see ArkEmail::Resources::Tenants#update
|
|
6
|
+
class TenantUpdateResponse < ArkEmail::Internal::Type::BaseModel
|
|
7
|
+
# @!attribute data
|
|
8
|
+
#
|
|
9
|
+
# @return [ArkEmail::Models::Tenant]
|
|
10
|
+
required :data, -> { ArkEmail::Tenant }
|
|
11
|
+
|
|
12
|
+
# @!attribute meta
|
|
13
|
+
#
|
|
14
|
+
# @return [ArkEmail::Models::APIMeta]
|
|
15
|
+
required :meta, -> { ArkEmail::APIMeta }
|
|
16
|
+
|
|
17
|
+
# @!attribute success
|
|
18
|
+
#
|
|
19
|
+
# @return [Boolean, true]
|
|
20
|
+
required :success, const: true
|
|
21
|
+
|
|
22
|
+
# @!method initialize(data:, meta:, success: true)
|
|
23
|
+
# @param data [ArkEmail::Models::Tenant]
|
|
24
|
+
# @param meta [ArkEmail::Models::APIMeta]
|
|
25
|
+
# @param success [Boolean, true]
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
end
|
data/lib/ark_email/models.rb
CHANGED
|
@@ -85,6 +85,18 @@ module ArkEmail
|
|
|
85
85
|
|
|
86
86
|
SuppressionRetrieveParams = ArkEmail::Models::SuppressionRetrieveParams
|
|
87
87
|
|
|
88
|
+
Tenant = ArkEmail::Models::Tenant
|
|
89
|
+
|
|
90
|
+
TenantCreateParams = ArkEmail::Models::TenantCreateParams
|
|
91
|
+
|
|
92
|
+
TenantDeleteParams = ArkEmail::Models::TenantDeleteParams
|
|
93
|
+
|
|
94
|
+
TenantListParams = ArkEmail::Models::TenantListParams
|
|
95
|
+
|
|
96
|
+
TenantRetrieveParams = ArkEmail::Models::TenantRetrieveParams
|
|
97
|
+
|
|
98
|
+
TenantUpdateParams = ArkEmail::Models::TenantUpdateParams
|
|
99
|
+
|
|
88
100
|
TrackDomain = ArkEmail::Models::TrackDomain
|
|
89
101
|
|
|
90
102
|
TrackingCreateParams = ArkEmail::Models::TrackingCreateParams
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module ArkEmail
|
|
4
|
+
module Resources
|
|
5
|
+
class Tenants
|
|
6
|
+
# Some parameter documentations has been truncated, see
|
|
7
|
+
# {ArkEmail::Models::TenantCreateParams} for more details.
|
|
8
|
+
#
|
|
9
|
+
# Create a new tenant.
|
|
10
|
+
#
|
|
11
|
+
# Returns the created tenant with a unique `id`. Store this ID in your database to
|
|
12
|
+
# reference this tenant later.
|
|
13
|
+
#
|
|
14
|
+
# @overload create(name:, metadata: nil, request_options: {})
|
|
15
|
+
#
|
|
16
|
+
# @param name [String] Display name for the tenant (e.g., your customer's company name)
|
|
17
|
+
#
|
|
18
|
+
# @param metadata [Hash{Symbol=>String, Float, Boolean, nil}, nil] Custom key-value pairs. Useful for storing references to your internal systems.
|
|
19
|
+
#
|
|
20
|
+
# @param request_options [ArkEmail::RequestOptions, Hash{Symbol=>Object}, nil]
|
|
21
|
+
#
|
|
22
|
+
# @return [ArkEmail::Models::TenantCreateResponse]
|
|
23
|
+
#
|
|
24
|
+
# @see ArkEmail::Models::TenantCreateParams
|
|
25
|
+
def create(params)
|
|
26
|
+
parsed, options = ArkEmail::TenantCreateParams.dump_request(params)
|
|
27
|
+
@client.request(
|
|
28
|
+
method: :post,
|
|
29
|
+
path: "tenants",
|
|
30
|
+
body: parsed,
|
|
31
|
+
model: ArkEmail::Models::TenantCreateResponse,
|
|
32
|
+
options: options
|
|
33
|
+
)
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
# Get a tenant by ID.
|
|
37
|
+
#
|
|
38
|
+
# @overload retrieve(tenant_id, request_options: {})
|
|
39
|
+
#
|
|
40
|
+
# @param tenant_id [String] The tenant ID
|
|
41
|
+
#
|
|
42
|
+
# @param request_options [ArkEmail::RequestOptions, Hash{Symbol=>Object}, nil]
|
|
43
|
+
#
|
|
44
|
+
# @return [ArkEmail::Models::TenantRetrieveResponse]
|
|
45
|
+
#
|
|
46
|
+
# @see ArkEmail::Models::TenantRetrieveParams
|
|
47
|
+
def retrieve(tenant_id, params = {})
|
|
48
|
+
@client.request(
|
|
49
|
+
method: :get,
|
|
50
|
+
path: ["tenants/%1$s", tenant_id],
|
|
51
|
+
model: ArkEmail::Models::TenantRetrieveResponse,
|
|
52
|
+
options: params[:request_options]
|
|
53
|
+
)
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
# Some parameter documentations has been truncated, see
|
|
57
|
+
# {ArkEmail::Models::TenantUpdateParams} for more details.
|
|
58
|
+
#
|
|
59
|
+
# Update a tenant's name, metadata, or status. At least one field is required.
|
|
60
|
+
#
|
|
61
|
+
# Metadata is replaced entirely—include all keys you want to keep.
|
|
62
|
+
#
|
|
63
|
+
# @overload update(tenant_id, metadata: nil, name: nil, status: nil, request_options: {})
|
|
64
|
+
#
|
|
65
|
+
# @param tenant_id [String] The tenant ID
|
|
66
|
+
#
|
|
67
|
+
# @param metadata [Hash{Symbol=>String, Float, Boolean, nil}, nil] Custom key-value pairs. Useful for storing references to your internal systems.
|
|
68
|
+
#
|
|
69
|
+
# @param name [String] Display name for the tenant
|
|
70
|
+
#
|
|
71
|
+
# @param status [Symbol, ArkEmail::Models::TenantUpdateParams::Status] Tenant status
|
|
72
|
+
#
|
|
73
|
+
# @param request_options [ArkEmail::RequestOptions, Hash{Symbol=>Object}, nil]
|
|
74
|
+
#
|
|
75
|
+
# @return [ArkEmail::Models::TenantUpdateResponse]
|
|
76
|
+
#
|
|
77
|
+
# @see ArkEmail::Models::TenantUpdateParams
|
|
78
|
+
def update(tenant_id, params = {})
|
|
79
|
+
parsed, options = ArkEmail::TenantUpdateParams.dump_request(params)
|
|
80
|
+
@client.request(
|
|
81
|
+
method: :patch,
|
|
82
|
+
path: ["tenants/%1$s", tenant_id],
|
|
83
|
+
body: parsed,
|
|
84
|
+
model: ArkEmail::Models::TenantUpdateResponse,
|
|
85
|
+
options: options
|
|
86
|
+
)
|
|
87
|
+
end
|
|
88
|
+
|
|
89
|
+
# List all tenants with pagination. Filter by `status` if needed.
|
|
90
|
+
#
|
|
91
|
+
# @overload list(page: nil, per_page: nil, status: nil, request_options: {})
|
|
92
|
+
#
|
|
93
|
+
# @param page [Integer] Page number (1-indexed)
|
|
94
|
+
#
|
|
95
|
+
# @param per_page [Integer] Number of items per page (max 100)
|
|
96
|
+
#
|
|
97
|
+
# @param status [Symbol, ArkEmail::Models::TenantListParams::Status] Filter by tenant status
|
|
98
|
+
#
|
|
99
|
+
# @param request_options [ArkEmail::RequestOptions, Hash{Symbol=>Object}, nil]
|
|
100
|
+
#
|
|
101
|
+
# @return [ArkEmail::Internal::PageNumberPagination<ArkEmail::Models::Tenant>]
|
|
102
|
+
#
|
|
103
|
+
# @see ArkEmail::Models::TenantListParams
|
|
104
|
+
def list(params = {})
|
|
105
|
+
parsed, options = ArkEmail::TenantListParams.dump_request(params)
|
|
106
|
+
@client.request(
|
|
107
|
+
method: :get,
|
|
108
|
+
path: "tenants",
|
|
109
|
+
query: parsed.transform_keys(per_page: "perPage"),
|
|
110
|
+
page: ArkEmail::Internal::PageNumberPagination,
|
|
111
|
+
model: ArkEmail::Tenant,
|
|
112
|
+
options: options
|
|
113
|
+
)
|
|
114
|
+
end
|
|
115
|
+
|
|
116
|
+
# Permanently delete a tenant. This cannot be undone.
|
|
117
|
+
#
|
|
118
|
+
# @overload delete(tenant_id, request_options: {})
|
|
119
|
+
#
|
|
120
|
+
# @param tenant_id [String] The tenant ID
|
|
121
|
+
#
|
|
122
|
+
# @param request_options [ArkEmail::RequestOptions, Hash{Symbol=>Object}, nil]
|
|
123
|
+
#
|
|
124
|
+
# @return [ArkEmail::Models::TenantDeleteResponse]
|
|
125
|
+
#
|
|
126
|
+
# @see ArkEmail::Models::TenantDeleteParams
|
|
127
|
+
def delete(tenant_id, params = {})
|
|
128
|
+
@client.request(
|
|
129
|
+
method: :delete,
|
|
130
|
+
path: ["tenants/%1$s", tenant_id],
|
|
131
|
+
model: ArkEmail::Models::TenantDeleteResponse,
|
|
132
|
+
options: params[:request_options]
|
|
133
|
+
)
|
|
134
|
+
end
|
|
135
|
+
|
|
136
|
+
# @api private
|
|
137
|
+
#
|
|
138
|
+
# @param client [ArkEmail::Client]
|
|
139
|
+
def initialize(client:)
|
|
140
|
+
@client = client
|
|
141
|
+
end
|
|
142
|
+
end
|
|
143
|
+
end
|
|
144
|
+
end
|
data/lib/ark_email/version.rb
CHANGED
data/lib/ark_email.rb
CHANGED
|
@@ -94,6 +94,16 @@ require_relative "ark_email/models/suppression_list_params"
|
|
|
94
94
|
require_relative "ark_email/models/suppression_list_response"
|
|
95
95
|
require_relative "ark_email/models/suppression_retrieve_params"
|
|
96
96
|
require_relative "ark_email/models/suppression_retrieve_response"
|
|
97
|
+
require_relative "ark_email/models/tenant"
|
|
98
|
+
require_relative "ark_email/models/tenant_create_params"
|
|
99
|
+
require_relative "ark_email/models/tenant_create_response"
|
|
100
|
+
require_relative "ark_email/models/tenant_delete_params"
|
|
101
|
+
require_relative "ark_email/models/tenant_delete_response"
|
|
102
|
+
require_relative "ark_email/models/tenant_list_params"
|
|
103
|
+
require_relative "ark_email/models/tenant_retrieve_params"
|
|
104
|
+
require_relative "ark_email/models/tenant_retrieve_response"
|
|
105
|
+
require_relative "ark_email/models/tenant_update_params"
|
|
106
|
+
require_relative "ark_email/models/tenant_update_response"
|
|
97
107
|
require_relative "ark_email/models/track_domain"
|
|
98
108
|
require_relative "ark_email/models/tracking_create_params"
|
|
99
109
|
require_relative "ark_email/models/tracking_create_response"
|
|
@@ -132,6 +142,7 @@ require_relative "ark_email/resources/domains"
|
|
|
132
142
|
require_relative "ark_email/resources/emails"
|
|
133
143
|
require_relative "ark_email/resources/logs"
|
|
134
144
|
require_relative "ark_email/resources/suppressions"
|
|
145
|
+
require_relative "ark_email/resources/tenants"
|
|
135
146
|
require_relative "ark_email/resources/tracking"
|
|
136
147
|
require_relative "ark_email/resources/usage"
|
|
137
148
|
require_relative "ark_email/resources/webhooks"
|
data/rbi/ark_email/client.rbi
CHANGED
|
@@ -40,6 +40,9 @@ module ArkEmail
|
|
|
40
40
|
sig { returns(ArkEmail::Resources::Usage) }
|
|
41
41
|
attr_reader :usage
|
|
42
42
|
|
|
43
|
+
sig { returns(ArkEmail::Resources::Tenants) }
|
|
44
|
+
attr_reader :tenants
|
|
45
|
+
|
|
43
46
|
# @api private
|
|
44
47
|
sig { override.returns(T::Hash[String, String]) }
|
|
45
48
|
private def auth_headers
|
|
@@ -205,6 +205,25 @@ module ArkEmail
|
|
|
205
205
|
sig { returns(Time) }
|
|
206
206
|
attr_accessor :timestamp_iso
|
|
207
207
|
|
|
208
|
+
# Bounce classification category (present for failed deliveries). Helps understand
|
|
209
|
+
# why delivery failed for analytics and automated handling.
|
|
210
|
+
sig do
|
|
211
|
+
returns(
|
|
212
|
+
T.nilable(
|
|
213
|
+
ArkEmail::Models::EmailRetrieveDeliveriesResponse::Data::Delivery::Classification::TaggedSymbol
|
|
214
|
+
)
|
|
215
|
+
)
|
|
216
|
+
end
|
|
217
|
+
attr_accessor :classification
|
|
218
|
+
|
|
219
|
+
# Numeric bounce classification code for programmatic handling. Codes:
|
|
220
|
+
# 10=invalid_recipient, 11=no_mailbox, 12=not_accepting_mail, 20=mailbox_full,
|
|
221
|
+
# 21=message_too_large, 30=spam_block, 31=policy_violation, 32=tls_required,
|
|
222
|
+
# 40=connection_error, 41=dns_error, 42=temporarily_unavailable,
|
|
223
|
+
# 50=protocol_error, 99=unclassified
|
|
224
|
+
sig { returns(T.nilable(Integer)) }
|
|
225
|
+
attr_accessor :classification_code
|
|
226
|
+
|
|
208
227
|
# SMTP response code
|
|
209
228
|
sig { returns(T.nilable(Integer)) }
|
|
210
229
|
attr_reader :code
|
|
@@ -212,20 +231,29 @@ module ArkEmail
|
|
|
212
231
|
sig { params(code: Integer).void }
|
|
213
232
|
attr_writer :code
|
|
214
233
|
|
|
215
|
-
#
|
|
234
|
+
# Human-readable delivery summary. Format varies by status:
|
|
235
|
+
#
|
|
236
|
+
# - **sent**: `Message for {recipient} accepted by {ip}:{port} ({hostname})`
|
|
237
|
+
# - **softfail/hardfail**:
|
|
238
|
+
# `{code} {classification}: Delivery to {recipient} failed at {ip}:{port} ({hostname})`
|
|
216
239
|
sig { returns(T.nilable(String)) }
|
|
217
240
|
attr_reader :details
|
|
218
241
|
|
|
219
242
|
sig { params(details: String).void }
|
|
220
243
|
attr_writer :details
|
|
221
244
|
|
|
222
|
-
# SMTP
|
|
245
|
+
# Raw SMTP response from the receiving mail server
|
|
223
246
|
sig { returns(T.nilable(String)) }
|
|
224
247
|
attr_reader :output
|
|
225
248
|
|
|
226
249
|
sig { params(output: String).void }
|
|
227
250
|
attr_writer :output
|
|
228
251
|
|
|
252
|
+
# Hostname of the remote mail server that processed the delivery. Present for all
|
|
253
|
+
# delivery attempts (successful and failed).
|
|
254
|
+
sig { returns(T.nilable(String)) }
|
|
255
|
+
attr_accessor :remote_host
|
|
256
|
+
|
|
229
257
|
# Whether TLS was used
|
|
230
258
|
sig { returns(T.nilable(T::Boolean)) }
|
|
231
259
|
attr_reader :sent_with_ssl
|
|
@@ -233,16 +261,29 @@ module ArkEmail
|
|
|
233
261
|
sig { params(sent_with_ssl: T::Boolean).void }
|
|
234
262
|
attr_writer :sent_with_ssl
|
|
235
263
|
|
|
264
|
+
# RFC 3463 enhanced status code from SMTP response (e.g., "5.1.1", "4.2.2"). First
|
|
265
|
+
# digit: 2=success, 4=temporary, 5=permanent. Second digit: category (1=address,
|
|
266
|
+
# 2=mailbox, 7=security, etc.).
|
|
267
|
+
sig { returns(T.nilable(String)) }
|
|
268
|
+
attr_accessor :smtp_enhanced_code
|
|
269
|
+
|
|
236
270
|
sig do
|
|
237
271
|
params(
|
|
238
272
|
id: String,
|
|
239
273
|
status: String,
|
|
240
274
|
timestamp: Float,
|
|
241
275
|
timestamp_iso: Time,
|
|
276
|
+
classification:
|
|
277
|
+
T.nilable(
|
|
278
|
+
ArkEmail::Models::EmailRetrieveDeliveriesResponse::Data::Delivery::Classification::OrSymbol
|
|
279
|
+
),
|
|
280
|
+
classification_code: T.nilable(Integer),
|
|
242
281
|
code: Integer,
|
|
243
282
|
details: String,
|
|
244
283
|
output: String,
|
|
245
|
-
|
|
284
|
+
remote_host: T.nilable(String),
|
|
285
|
+
sent_with_ssl: T::Boolean,
|
|
286
|
+
smtp_enhanced_code: T.nilable(String)
|
|
246
287
|
).returns(T.attached_class)
|
|
247
288
|
end
|
|
248
289
|
def self.new(
|
|
@@ -254,14 +295,34 @@ module ArkEmail
|
|
|
254
295
|
timestamp:,
|
|
255
296
|
# ISO 8601 timestamp
|
|
256
297
|
timestamp_iso:,
|
|
298
|
+
# Bounce classification category (present for failed deliveries). Helps understand
|
|
299
|
+
# why delivery failed for analytics and automated handling.
|
|
300
|
+
classification: nil,
|
|
301
|
+
# Numeric bounce classification code for programmatic handling. Codes:
|
|
302
|
+
# 10=invalid_recipient, 11=no_mailbox, 12=not_accepting_mail, 20=mailbox_full,
|
|
303
|
+
# 21=message_too_large, 30=spam_block, 31=policy_violation, 32=tls_required,
|
|
304
|
+
# 40=connection_error, 41=dns_error, 42=temporarily_unavailable,
|
|
305
|
+
# 50=protocol_error, 99=unclassified
|
|
306
|
+
classification_code: nil,
|
|
257
307
|
# SMTP response code
|
|
258
308
|
code: nil,
|
|
259
|
-
#
|
|
309
|
+
# Human-readable delivery summary. Format varies by status:
|
|
310
|
+
#
|
|
311
|
+
# - **sent**: `Message for {recipient} accepted by {ip}:{port} ({hostname})`
|
|
312
|
+
# - **softfail/hardfail**:
|
|
313
|
+
# `{code} {classification}: Delivery to {recipient} failed at {ip}:{port} ({hostname})`
|
|
260
314
|
details: nil,
|
|
261
|
-
# SMTP
|
|
315
|
+
# Raw SMTP response from the receiving mail server
|
|
262
316
|
output: nil,
|
|
317
|
+
# Hostname of the remote mail server that processed the delivery. Present for all
|
|
318
|
+
# delivery attempts (successful and failed).
|
|
319
|
+
remote_host: nil,
|
|
263
320
|
# Whether TLS was used
|
|
264
|
-
sent_with_ssl: nil
|
|
321
|
+
sent_with_ssl: nil,
|
|
322
|
+
# RFC 3463 enhanced status code from SMTP response (e.g., "5.1.1", "4.2.2"). First
|
|
323
|
+
# digit: 2=success, 4=temporary, 5=permanent. Second digit: category (1=address,
|
|
324
|
+
# 2=mailbox, 7=security, etc.).
|
|
325
|
+
smtp_enhanced_code: nil
|
|
265
326
|
)
|
|
266
327
|
end
|
|
267
328
|
|
|
@@ -272,15 +333,113 @@ module ArkEmail
|
|
|
272
333
|
status: String,
|
|
273
334
|
timestamp: Float,
|
|
274
335
|
timestamp_iso: Time,
|
|
336
|
+
classification:
|
|
337
|
+
T.nilable(
|
|
338
|
+
ArkEmail::Models::EmailRetrieveDeliveriesResponse::Data::Delivery::Classification::TaggedSymbol
|
|
339
|
+
),
|
|
340
|
+
classification_code: T.nilable(Integer),
|
|
275
341
|
code: Integer,
|
|
276
342
|
details: String,
|
|
277
343
|
output: String,
|
|
278
|
-
|
|
344
|
+
remote_host: T.nilable(String),
|
|
345
|
+
sent_with_ssl: T::Boolean,
|
|
346
|
+
smtp_enhanced_code: T.nilable(String)
|
|
279
347
|
}
|
|
280
348
|
)
|
|
281
349
|
end
|
|
282
350
|
def to_hash
|
|
283
351
|
end
|
|
352
|
+
|
|
353
|
+
# Bounce classification category (present for failed deliveries). Helps understand
|
|
354
|
+
# why delivery failed for analytics and automated handling.
|
|
355
|
+
module Classification
|
|
356
|
+
extend ArkEmail::Internal::Type::Enum
|
|
357
|
+
|
|
358
|
+
TaggedSymbol =
|
|
359
|
+
T.type_alias do
|
|
360
|
+
T.all(
|
|
361
|
+
Symbol,
|
|
362
|
+
ArkEmail::Models::EmailRetrieveDeliveriesResponse::Data::Delivery::Classification
|
|
363
|
+
)
|
|
364
|
+
end
|
|
365
|
+
OrSymbol = T.type_alias { T.any(Symbol, String) }
|
|
366
|
+
|
|
367
|
+
INVALID_RECIPIENT =
|
|
368
|
+
T.let(
|
|
369
|
+
:invalid_recipient,
|
|
370
|
+
ArkEmail::Models::EmailRetrieveDeliveriesResponse::Data::Delivery::Classification::TaggedSymbol
|
|
371
|
+
)
|
|
372
|
+
MAILBOX_FULL =
|
|
373
|
+
T.let(
|
|
374
|
+
:mailbox_full,
|
|
375
|
+
ArkEmail::Models::EmailRetrieveDeliveriesResponse::Data::Delivery::Classification::TaggedSymbol
|
|
376
|
+
)
|
|
377
|
+
MESSAGE_TOO_LARGE =
|
|
378
|
+
T.let(
|
|
379
|
+
:message_too_large,
|
|
380
|
+
ArkEmail::Models::EmailRetrieveDeliveriesResponse::Data::Delivery::Classification::TaggedSymbol
|
|
381
|
+
)
|
|
382
|
+
SPAM_BLOCK =
|
|
383
|
+
T.let(
|
|
384
|
+
:spam_block,
|
|
385
|
+
ArkEmail::Models::EmailRetrieveDeliveriesResponse::Data::Delivery::Classification::TaggedSymbol
|
|
386
|
+
)
|
|
387
|
+
POLICY_VIOLATION =
|
|
388
|
+
T.let(
|
|
389
|
+
:policy_violation,
|
|
390
|
+
ArkEmail::Models::EmailRetrieveDeliveriesResponse::Data::Delivery::Classification::TaggedSymbol
|
|
391
|
+
)
|
|
392
|
+
NO_MAILBOX =
|
|
393
|
+
T.let(
|
|
394
|
+
:no_mailbox,
|
|
395
|
+
ArkEmail::Models::EmailRetrieveDeliveriesResponse::Data::Delivery::Classification::TaggedSymbol
|
|
396
|
+
)
|
|
397
|
+
NOT_ACCEPTING_MAIL =
|
|
398
|
+
T.let(
|
|
399
|
+
:not_accepting_mail,
|
|
400
|
+
ArkEmail::Models::EmailRetrieveDeliveriesResponse::Data::Delivery::Classification::TaggedSymbol
|
|
401
|
+
)
|
|
402
|
+
TEMPORARILY_UNAVAILABLE =
|
|
403
|
+
T.let(
|
|
404
|
+
:temporarily_unavailable,
|
|
405
|
+
ArkEmail::Models::EmailRetrieveDeliveriesResponse::Data::Delivery::Classification::TaggedSymbol
|
|
406
|
+
)
|
|
407
|
+
PROTOCOL_ERROR =
|
|
408
|
+
T.let(
|
|
409
|
+
:protocol_error,
|
|
410
|
+
ArkEmail::Models::EmailRetrieveDeliveriesResponse::Data::Delivery::Classification::TaggedSymbol
|
|
411
|
+
)
|
|
412
|
+
TLS_REQUIRED =
|
|
413
|
+
T.let(
|
|
414
|
+
:tls_required,
|
|
415
|
+
ArkEmail::Models::EmailRetrieveDeliveriesResponse::Data::Delivery::Classification::TaggedSymbol
|
|
416
|
+
)
|
|
417
|
+
CONNECTION_ERROR =
|
|
418
|
+
T.let(
|
|
419
|
+
:connection_error,
|
|
420
|
+
ArkEmail::Models::EmailRetrieveDeliveriesResponse::Data::Delivery::Classification::TaggedSymbol
|
|
421
|
+
)
|
|
422
|
+
DNS_ERROR =
|
|
423
|
+
T.let(
|
|
424
|
+
:dns_error,
|
|
425
|
+
ArkEmail::Models::EmailRetrieveDeliveriesResponse::Data::Delivery::Classification::TaggedSymbol
|
|
426
|
+
)
|
|
427
|
+
UNCLASSIFIED =
|
|
428
|
+
T.let(
|
|
429
|
+
:unclassified,
|
|
430
|
+
ArkEmail::Models::EmailRetrieveDeliveriesResponse::Data::Delivery::Classification::TaggedSymbol
|
|
431
|
+
)
|
|
432
|
+
|
|
433
|
+
sig do
|
|
434
|
+
override.returns(
|
|
435
|
+
T::Array[
|
|
436
|
+
ArkEmail::Models::EmailRetrieveDeliveriesResponse::Data::Delivery::Classification::TaggedSymbol
|
|
437
|
+
]
|
|
438
|
+
)
|
|
439
|
+
end
|
|
440
|
+
def self.values
|
|
441
|
+
end
|
|
442
|
+
end
|
|
284
443
|
end
|
|
285
444
|
|
|
286
445
|
class RetryState < ArkEmail::Internal::Type::BaseModel
|