ark-email 0.8.0 → 0.9.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 5b28db2b8003c270a67cebc743ea403628c8a13a8d0cff4b4e357704aae84c55
4
- data.tar.gz: 8ccf63ab298517800021888ab0e2041d4eb5b66c27735d16e3ed2c630fb3eab7
3
+ metadata.gz: ee70352e87d7586234884d318276da0a01b94c7a8cc47e795d37fa77571a0d17
4
+ data.tar.gz: f469a30b7c8ed720169c6b6c613eb8279789e82505581d1584d930c67d678784
5
5
  SHA512:
6
- metadata.gz: ebe864f749bc491e0d8d190661a3c265050b59d7a21e7e8bf97b4fb52c148040a02b42f51d03e7f5b2e19119c75abf1581ab78835d66529632453b4a206a7064
7
- data.tar.gz: 0bd1b269b07c48c3514ec03cb0a7372c980f8f4ee48687b06c8bb7593cd2ea0303d6b22aa7bbc8300462294bd2132cf0232e87b585376a0f96470040941591c9
6
+ metadata.gz: 176ab6feb912821c518e32aea92ff9c3b7acf82e25ef4382aca2a9101bc1f5339c2bd9e76f89c9cf6e0feb0313a635101ddb5169b70232f2fa68a046f279cdf2
7
+ data.tar.gz: 9244988b7e44d174dd35d7b0f005574b37acd10aae831db4170c15725d00d7c22d37ab705f5f7cfbfe49e199f2f74b40680e055c3f52edf7ebd9b92832b71396
data/CHANGELOG.md CHANGED
@@ -1,5 +1,13 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.9.0 (2026-01-21)
4
+
5
+ Full Changelog: [v0.8.0...v0.9.0](https://github.com/ArkHQ-io/ark-ruby/compare/v0.8.0...v0.9.0)
6
+
7
+ ### Features
8
+
9
+ * **api:** add sandbox domain ([d61ffa2](https://github.com/ArkHQ-io/ark-ruby/commit/d61ffa220016820c5620ba168461e82fab223ed4))
10
+
3
11
  ## 0.8.0 (2026-01-20)
4
12
 
5
13
  Full Changelog: [v0.7.0...v0.8.0](https://github.com/ArkHQ-io/ark-ruby/compare/v0.7.0...v0.8.0)
data/README.md CHANGED
@@ -26,7 +26,7 @@ To use this gem, install via Bundler by adding the following to your application
26
26
  <!-- x-release-please-start-version -->
27
27
 
28
28
  ```ruby
29
- gem "ark-email", "~> 0.8.0"
29
+ gem "ark-email", "~> 0.9.0"
30
30
  ```
31
31
 
32
32
  <!-- x-release-please-end -->
@@ -51,7 +51,17 @@ module ArkEmail
51
51
  # @return [Integer]
52
52
  required :total, Integer
53
53
 
54
- # @!method initialize(accepted:, failed:, messages:, total:)
54
+ # @!attribute sandbox
55
+ # Whether this batch was sent in sandbox mode. Only present (and true) for sandbox
56
+ # emails sent from @arkhq.io addresses.
57
+ #
58
+ # @return [Boolean, nil]
59
+ optional :sandbox, ArkEmail::Internal::Type::Boolean
60
+
61
+ # @!method initialize(accepted:, failed:, messages:, total:, sandbox: nil)
62
+ # Some parameter documentations has been truncated, see
63
+ # {ArkEmail::Models::EmailSendBatchResponse::Data} for more details.
64
+ #
55
65
  # @param accepted [Integer] Successfully accepted emails
56
66
  #
57
67
  # @param failed [Integer] Failed emails
@@ -59,6 +69,8 @@ module ArkEmail
59
69
  # @param messages [Hash{Symbol=>ArkEmail::Models::EmailSendBatchResponse::Data::Message}] Map of recipient email to message info
60
70
  #
61
71
  # @param total [Integer] Total emails in the batch
72
+ #
73
+ # @param sandbox [Boolean] Whether this batch was sent in sandbox mode.
62
74
 
63
75
  class Message < ArkEmail::Internal::Type::BaseModel
64
76
  # @!attribute id
@@ -8,7 +8,7 @@ module ArkEmail
8
8
  include ArkEmail::Internal::Type::RequestParameters
9
9
 
10
10
  # @!attribute from
11
- # Sender email address. Must be from a verified domain.
11
+ # Sender email address. Must be from a verified domain OR use sandbox mode.
12
12
  #
13
13
  # **Supported formats:**
14
14
  #
@@ -18,6 +18,10 @@ module ArkEmail
18
18
  #
19
19
  # The domain portion must match a verified sending domain in your account.
20
20
  #
21
+ # **Sandbox mode:** Use `sandbox@arkhq.io` to send test emails without domain
22
+ # verification. Sandbox emails can only be sent to organization members and are
23
+ # limited to 10 per day.
24
+ #
21
25
  # @return [String]
22
26
  required :from, String
23
27
 
@@ -117,7 +121,7 @@ module ArkEmail
117
121
  # Some parameter documentations has been truncated, see
118
122
  # {ArkEmail::Models::EmailSendParams} for more details.
119
123
  #
120
- # @param from [String] Sender email address. Must be from a verified domain.
124
+ # @param from [String] Sender email address. Must be from a verified domain OR use sandbox mode.
121
125
  #
122
126
  # @param subject [String] Email subject line
123
127
  #
@@ -50,7 +50,17 @@ module ArkEmail
50
50
  # @return [String, nil]
51
51
  optional :message_id, String, api_name: :messageId
52
52
 
53
- # @!method initialize(id:, status:, to:, message_id: nil)
53
+ # @!attribute sandbox
54
+ # Whether this email was sent in sandbox mode. Only present (and true) for sandbox
55
+ # emails sent from @arkhq.io addresses.
56
+ #
57
+ # @return [Boolean, nil]
58
+ optional :sandbox, ArkEmail::Internal::Type::Boolean
59
+
60
+ # @!method initialize(id:, status:, to:, message_id: nil, sandbox: nil)
61
+ # Some parameter documentations has been truncated, see
62
+ # {ArkEmail::Models::EmailSendRawResponse::Data} for more details.
63
+ #
54
64
  # @param id [String] Unique message ID (format: msg*{id}*{token})
55
65
  #
56
66
  # @param status [Symbol, ArkEmail::Models::EmailSendRawResponse::Data::Status] Current delivery status
@@ -58,6 +68,8 @@ module ArkEmail
58
68
  # @param to [Array<String>] List of recipient addresses
59
69
  #
60
70
  # @param message_id [String] SMTP Message-ID header value
71
+ #
72
+ # @param sandbox [Boolean] Whether this email was sent in sandbox mode.
61
73
 
62
74
  # Current delivery status
63
75
  #
@@ -50,7 +50,17 @@ module ArkEmail
50
50
  # @return [String, nil]
51
51
  optional :message_id, String, api_name: :messageId
52
52
 
53
- # @!method initialize(id:, status:, to:, message_id: nil)
53
+ # @!attribute sandbox
54
+ # Whether this email was sent in sandbox mode. Only present (and true) for sandbox
55
+ # emails sent from @arkhq.io addresses.
56
+ #
57
+ # @return [Boolean, nil]
58
+ optional :sandbox, ArkEmail::Internal::Type::Boolean
59
+
60
+ # @!method initialize(id:, status:, to:, message_id: nil, sandbox: nil)
61
+ # Some parameter documentations has been truncated, see
62
+ # {ArkEmail::Models::EmailSendResponse::Data} for more details.
63
+ #
54
64
  # @param id [String] Unique message ID (format: msg*{id}*{token})
55
65
  #
56
66
  # @param status [Symbol, ArkEmail::Models::EmailSendResponse::Data::Status] Current delivery status
@@ -58,6 +68,8 @@ module ArkEmail
58
68
  # @param to [Array<String>] List of recipient addresses
59
69
  #
60
70
  # @param message_id [String] SMTP Message-ID header value
71
+ #
72
+ # @param sandbox [Boolean] Whether this email was sent in sandbox mode.
61
73
 
62
74
  # Current delivery status
63
75
  #
@@ -144,7 +144,7 @@ module ArkEmail
144
144
  #
145
145
  # @overload send_(from:, subject:, to:, attachments: nil, bcc: nil, cc: nil, headers: nil, html: nil, metadata: nil, reply_to: nil, tag: nil, text: nil, idempotency_key: nil, request_options: {})
146
146
  #
147
- # @param from [String] Body param: Sender email address. Must be from a verified domain.
147
+ # @param from [String] Body param: Sender email address. Must be from a verified domain OR use sandbox
148
148
  #
149
149
  # @param subject [String] Body param: Email subject line
150
150
  #
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module ArkEmail
4
- VERSION = "0.8.0"
4
+ VERSION = "0.9.0"
5
5
  end
@@ -84,6 +84,14 @@ module ArkEmail
84
84
  sig { returns(Integer) }
85
85
  attr_accessor :total
86
86
 
87
+ # Whether this batch was sent in sandbox mode. Only present (and true) for sandbox
88
+ # emails sent from @arkhq.io addresses.
89
+ sig { returns(T.nilable(T::Boolean)) }
90
+ attr_reader :sandbox
91
+
92
+ sig { params(sandbox: T::Boolean).void }
93
+ attr_writer :sandbox
94
+
87
95
  sig do
88
96
  params(
89
97
  accepted: Integer,
@@ -93,7 +101,8 @@ module ArkEmail
93
101
  Symbol,
94
102
  ArkEmail::Models::EmailSendBatchResponse::Data::Message::OrHash
95
103
  ],
96
- total: Integer
104
+ total: Integer,
105
+ sandbox: T::Boolean
97
106
  ).returns(T.attached_class)
98
107
  end
99
108
  def self.new(
@@ -104,7 +113,10 @@ module ArkEmail
104
113
  # Map of recipient email to message info
105
114
  messages:,
106
115
  # Total emails in the batch
107
- total:
116
+ total:,
117
+ # Whether this batch was sent in sandbox mode. Only present (and true) for sandbox
118
+ # emails sent from @arkhq.io addresses.
119
+ sandbox: nil
108
120
  )
109
121
  end
110
122
 
@@ -118,7 +130,8 @@ module ArkEmail
118
130
  Symbol,
119
131
  ArkEmail::Models::EmailSendBatchResponse::Data::Message
120
132
  ],
121
- total: Integer
133
+ total: Integer,
134
+ sandbox: T::Boolean
122
135
  }
123
136
  )
124
137
  end
@@ -11,7 +11,7 @@ module ArkEmail
11
11
  T.any(ArkEmail::EmailSendParams, ArkEmail::Internal::AnyHash)
12
12
  end
13
13
 
14
- # Sender email address. Must be from a verified domain.
14
+ # Sender email address. Must be from a verified domain OR use sandbox mode.
15
15
  #
16
16
  # **Supported formats:**
17
17
  #
@@ -20,6 +20,10 @@ module ArkEmail
20
20
  # - With quoted name: `"Acme Support" <support@yourdomain.com>`
21
21
  #
22
22
  # The domain portion must match a verified sending domain in your account.
23
+ #
24
+ # **Sandbox mode:** Use `sandbox@arkhq.io` to send test emails without domain
25
+ # verification. Sandbox emails can only be sent to organization members and are
26
+ # limited to 10 per day.
23
27
  sig { returns(String) }
24
28
  attr_accessor :from
25
29
 
@@ -114,7 +118,7 @@ module ArkEmail
114
118
  ).returns(T.attached_class)
115
119
  end
116
120
  def self.new(
117
- # Sender email address. Must be from a verified domain.
121
+ # Sender email address. Must be from a verified domain OR use sandbox mode.
118
122
  #
119
123
  # **Supported formats:**
120
124
  #
@@ -123,6 +127,10 @@ module ArkEmail
123
127
  # - With quoted name: `"Acme Support" <support@yourdomain.com>`
124
128
  #
125
129
  # The domain portion must match a verified sending domain in your account.
130
+ #
131
+ # **Sandbox mode:** Use `sandbox@arkhq.io` to send test emails without domain
132
+ # verification. Sandbox emails can only be sent to organization members and are
133
+ # limited to 10 per day.
126
134
  from:,
127
135
  # Email subject line
128
136
  subject:,
@@ -82,13 +82,22 @@ module ArkEmail
82
82
  sig { params(message_id: String).void }
83
83
  attr_writer :message_id
84
84
 
85
+ # Whether this email was sent in sandbox mode. Only present (and true) for sandbox
86
+ # emails sent from @arkhq.io addresses.
87
+ sig { returns(T.nilable(T::Boolean)) }
88
+ attr_reader :sandbox
89
+
90
+ sig { params(sandbox: T::Boolean).void }
91
+ attr_writer :sandbox
92
+
85
93
  sig do
86
94
  params(
87
95
  id: String,
88
96
  status:
89
97
  ArkEmail::Models::EmailSendRawResponse::Data::Status::OrSymbol,
90
98
  to: T::Array[String],
91
- message_id: String
99
+ message_id: String,
100
+ sandbox: T::Boolean
92
101
  ).returns(T.attached_class)
93
102
  end
94
103
  def self.new(
@@ -99,7 +108,10 @@ module ArkEmail
99
108
  # List of recipient addresses
100
109
  to:,
101
110
  # SMTP Message-ID header value
102
- message_id: nil
111
+ message_id: nil,
112
+ # Whether this email was sent in sandbox mode. Only present (and true) for sandbox
113
+ # emails sent from @arkhq.io addresses.
114
+ sandbox: nil
103
115
  )
104
116
  end
105
117
 
@@ -110,7 +122,8 @@ module ArkEmail
110
122
  status:
111
123
  ArkEmail::Models::EmailSendRawResponse::Data::Status::TaggedSymbol,
112
124
  to: T::Array[String],
113
- message_id: String
125
+ message_id: String,
126
+ sandbox: T::Boolean
114
127
  }
115
128
  )
116
129
  end
@@ -82,12 +82,21 @@ module ArkEmail
82
82
  sig { params(message_id: String).void }
83
83
  attr_writer :message_id
84
84
 
85
+ # Whether this email was sent in sandbox mode. Only present (and true) for sandbox
86
+ # emails sent from @arkhq.io addresses.
87
+ sig { returns(T.nilable(T::Boolean)) }
88
+ attr_reader :sandbox
89
+
90
+ sig { params(sandbox: T::Boolean).void }
91
+ attr_writer :sandbox
92
+
85
93
  sig do
86
94
  params(
87
95
  id: String,
88
96
  status: ArkEmail::Models::EmailSendResponse::Data::Status::OrSymbol,
89
97
  to: T::Array[String],
90
- message_id: String
98
+ message_id: String,
99
+ sandbox: T::Boolean
91
100
  ).returns(T.attached_class)
92
101
  end
93
102
  def self.new(
@@ -98,7 +107,10 @@ module ArkEmail
98
107
  # List of recipient addresses
99
108
  to:,
100
109
  # SMTP Message-ID header value
101
- message_id: nil
110
+ message_id: nil,
111
+ # Whether this email was sent in sandbox mode. Only present (and true) for sandbox
112
+ # emails sent from @arkhq.io addresses.
113
+ sandbox: nil
102
114
  )
103
115
  end
104
116
 
@@ -109,7 +121,8 @@ module ArkEmail
109
121
  status:
110
122
  ArkEmail::Models::EmailSendResponse::Data::Status::TaggedSymbol,
111
123
  to: T::Array[String],
112
- message_id: String
124
+ message_id: String,
125
+ sandbox: T::Boolean
113
126
  }
114
127
  )
115
128
  end
@@ -141,7 +141,8 @@ module ArkEmail
141
141
  ).returns(ArkEmail::Models::EmailSendResponse)
142
142
  end
143
143
  def send_(
144
- # Body param: Sender email address. Must be from a verified domain.
144
+ # Body param: Sender email address. Must be from a verified domain OR use sandbox
145
+ # mode.
145
146
  #
146
147
  # **Supported formats:**
147
148
  #
@@ -150,6 +151,10 @@ module ArkEmail
150
151
  # - With quoted name: `"Acme Support" <support@yourdomain.com>`
151
152
  #
152
153
  # The domain portion must match a verified sending domain in your account.
154
+ #
155
+ # **Sandbox mode:** Use `sandbox@arkhq.io` to send test emails without domain
156
+ # verification. Sandbox emails can only be sent to organization members and are
157
+ # limited to 10 per day.
153
158
  from:,
154
159
  # Body param: Email subject line
155
160
  subject:,
@@ -31,7 +31,8 @@ module ArkEmail
31
31
  accepted: Integer,
32
32
  failed: Integer,
33
33
  messages: ::Hash[Symbol, ArkEmail::Models::EmailSendBatchResponse::Data::Message],
34
- total: Integer
34
+ total: Integer,
35
+ sandbox: bool
35
36
  }
36
37
 
37
38
  class Data < ArkEmail::Internal::Type::BaseModel
@@ -43,18 +44,24 @@ module ArkEmail
43
44
 
44
45
  attr_accessor total: Integer
45
46
 
47
+ attr_reader sandbox: bool?
48
+
49
+ def sandbox=: (bool) -> bool
50
+
46
51
  def initialize: (
47
52
  accepted: Integer,
48
53
  failed: Integer,
49
54
  messages: ::Hash[Symbol, ArkEmail::Models::EmailSendBatchResponse::Data::Message],
50
- total: Integer
55
+ total: Integer,
56
+ ?sandbox: bool
51
57
  ) -> void
52
58
 
53
59
  def to_hash: -> {
54
60
  accepted: Integer,
55
61
  failed: Integer,
56
62
  messages: ::Hash[Symbol, ArkEmail::Models::EmailSendBatchResponse::Data::Message],
57
- total: Integer
63
+ total: Integer,
64
+ sandbox: bool
58
65
  }
59
66
 
60
67
  type message = { id: String, token: String }
@@ -31,7 +31,8 @@ module ArkEmail
31
31
  id: String,
32
32
  status: ArkEmail::Models::EmailSendRawResponse::Data::status,
33
33
  to: ::Array[String],
34
- message_id: String
34
+ message_id: String,
35
+ sandbox: bool
35
36
  }
36
37
 
37
38
  class Data < ArkEmail::Internal::Type::BaseModel
@@ -45,18 +46,24 @@ module ArkEmail
45
46
 
46
47
  def message_id=: (String) -> String
47
48
 
49
+ attr_reader sandbox: bool?
50
+
51
+ def sandbox=: (bool) -> bool
52
+
48
53
  def initialize: (
49
54
  id: String,
50
55
  status: ArkEmail::Models::EmailSendRawResponse::Data::status,
51
56
  to: ::Array[String],
52
- ?message_id: String
57
+ ?message_id: String,
58
+ ?sandbox: bool
53
59
  ) -> void
54
60
 
55
61
  def to_hash: -> {
56
62
  id: String,
57
63
  status: ArkEmail::Models::EmailSendRawResponse::Data::status,
58
64
  to: ::Array[String],
59
- message_id: String
65
+ message_id: String,
66
+ sandbox: bool
60
67
  }
61
68
 
62
69
  type status = :pending | :sent
@@ -31,7 +31,8 @@ module ArkEmail
31
31
  id: String,
32
32
  status: ArkEmail::Models::EmailSendResponse::Data::status,
33
33
  to: ::Array[String],
34
- message_id: String
34
+ message_id: String,
35
+ sandbox: bool
35
36
  }
36
37
 
37
38
  class Data < ArkEmail::Internal::Type::BaseModel
@@ -45,18 +46,24 @@ module ArkEmail
45
46
 
46
47
  def message_id=: (String) -> String
47
48
 
49
+ attr_reader sandbox: bool?
50
+
51
+ def sandbox=: (bool) -> bool
52
+
48
53
  def initialize: (
49
54
  id: String,
50
55
  status: ArkEmail::Models::EmailSendResponse::Data::status,
51
56
  to: ::Array[String],
52
- ?message_id: String
57
+ ?message_id: String,
58
+ ?sandbox: bool
53
59
  ) -> void
54
60
 
55
61
  def to_hash: -> {
56
62
  id: String,
57
63
  status: ArkEmail::Models::EmailSendResponse::Data::status,
58
64
  to: ::Array[String],
59
- message_id: String
65
+ message_id: String,
66
+ sandbox: bool
60
67
  }
61
68
 
62
69
  type status = :pending | :sent
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ark-email
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.8.0
4
+ version: 0.9.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ark
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2026-01-20 00:00:00.000000000 Z
11
+ date: 2026-01-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: cgi