ark-email 0.5.2 → 0.6.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 (44) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +9 -0
  3. data/README.md +3 -3
  4. data/lib/ark_email/models/email_send_batch_params.rb +6 -6
  5. data/lib/ark_email/models/email_send_params.rb +28 -26
  6. data/lib/ark_email/models/email_send_raw_params.rb +9 -1
  7. data/lib/ark_email/models/suppression_bulk_create_params.rb +4 -2
  8. data/lib/ark_email/models/suppression_create_params.rb +3 -3
  9. data/lib/ark_email/models/tracking_create_params.rb +12 -12
  10. data/lib/ark_email/models/tracking_update_params.rb +12 -12
  11. data/lib/ark_email/models/webhook_create_params.rb +26 -23
  12. data/lib/ark_email/models/webhook_update_params.rb +10 -10
  13. data/lib/ark_email/resources/emails.rb +11 -9
  14. data/lib/ark_email/resources/suppressions.rb +1 -1
  15. data/lib/ark_email/resources/tracking.rb +8 -8
  16. data/lib/ark_email/resources/webhooks.rb +10 -10
  17. data/lib/ark_email/version.rb +1 -1
  18. data/rbi/ark_email/models/email_send_batch_params.rbi +9 -18
  19. data/rbi/ark_email/models/email_send_params.rbi +46 -72
  20. data/rbi/ark_email/models/email_send_raw_params.rbi +8 -0
  21. data/rbi/ark_email/models/suppression_bulk_create_params.rbi +11 -7
  22. data/rbi/ark_email/models/suppression_create_params.rbi +5 -8
  23. data/rbi/ark_email/models/tracking_create_params.rbi +18 -27
  24. data/rbi/ark_email/models/tracking_update_params.rbi +20 -32
  25. data/rbi/ark_email/models/webhook_create_params.rbi +40 -36
  26. data/rbi/ark_email/models/webhook_update_params.rbi +15 -30
  27. data/rbi/ark_email/resources/emails.rbi +22 -18
  28. data/rbi/ark_email/resources/suppressions.rbi +2 -2
  29. data/rbi/ark_email/resources/tracking.rbi +15 -15
  30. data/rbi/ark_email/resources/webhooks.rbi +19 -17
  31. data/sig/ark_email/models/email_send_batch_params.rbs +12 -18
  32. data/sig/ark_email/models/email_send_params.rbs +32 -50
  33. data/sig/ark_email/models/email_send_raw_params.rbs +10 -1
  34. data/sig/ark_email/models/suppression_bulk_create_params.rbs +4 -6
  35. data/sig/ark_email/models/suppression_create_params.rbs +4 -6
  36. data/sig/ark_email/models/tracking_create_params.rbs +16 -22
  37. data/sig/ark_email/models/tracking_update_params.rbs +16 -24
  38. data/sig/ark_email/models/webhook_create_params.rbs +12 -16
  39. data/sig/ark_email/models/webhook_update_params.rbs +20 -30
  40. data/sig/ark_email/resources/emails.rbs +9 -8
  41. data/sig/ark_email/resources/suppressions.rbs +1 -1
  42. data/sig/ark_email/resources/tracking.rbs +8 -8
  43. data/sig/ark_email/resources/webhooks.rbs +8 -8
  44. metadata +1 -1
@@ -70,30 +70,21 @@ module ArkEmail
70
70
  attr_accessor :to
71
71
 
72
72
  sig { returns(T.nilable(String)) }
73
- attr_reader :html
74
-
75
- sig { params(html: String).void }
76
- attr_writer :html
73
+ attr_accessor :html
77
74
 
78
75
  sig { returns(T.nilable(String)) }
79
- attr_reader :tag
80
-
81
- sig { params(tag: String).void }
82
- attr_writer :tag
76
+ attr_accessor :tag
83
77
 
84
78
  sig { returns(T.nilable(String)) }
85
- attr_reader :text
86
-
87
- sig { params(text: String).void }
88
- attr_writer :text
79
+ attr_accessor :text
89
80
 
90
81
  sig do
91
82
  params(
92
83
  subject: String,
93
84
  to: T::Array[String],
94
- html: String,
95
- tag: String,
96
- text: String
85
+ html: T.nilable(String),
86
+ tag: T.nilable(String),
87
+ text: T.nilable(String)
97
88
  ).returns(T.attached_class)
98
89
  end
99
90
  def self.new(subject:, to:, html: nil, tag: nil, text: nil)
@@ -104,9 +95,9 @@ module ArkEmail
104
95
  {
105
96
  subject: String,
106
97
  to: T::Array[String],
107
- html: String,
108
- tag: String,
109
- text: String
98
+ html: T.nilable(String),
99
+ tag: T.nilable(String),
100
+ text: T.nilable(String)
110
101
  }
111
102
  )
112
103
  end
@@ -31,69 +31,41 @@ module ArkEmail
31
31
  sig { returns(T::Array[String]) }
32
32
  attr_accessor :to
33
33
 
34
- # File attachments
34
+ # File attachments (accepts null)
35
35
  sig do
36
36
  returns(T.nilable(T::Array[ArkEmail::EmailSendParams::Attachment]))
37
37
  end
38
- attr_reader :attachments
38
+ attr_accessor :attachments
39
39
 
40
- sig do
41
- params(
42
- attachments: T::Array[ArkEmail::EmailSendParams::Attachment::OrHash]
43
- ).void
44
- end
45
- attr_writer :attachments
46
-
47
- # BCC recipients
40
+ # BCC recipients (accepts null)
48
41
  sig { returns(T.nilable(T::Array[String])) }
49
- attr_reader :bcc
50
-
51
- sig { params(bcc: T::Array[String]).void }
52
- attr_writer :bcc
42
+ attr_accessor :bcc
53
43
 
54
- # CC recipients
44
+ # CC recipients (accepts null)
55
45
  sig { returns(T.nilable(T::Array[String])) }
56
- attr_reader :cc
57
-
58
- sig { params(cc: T::Array[String]).void }
59
- attr_writer :cc
46
+ attr_accessor :cc
60
47
 
61
- # Custom email headers
48
+ # Custom email headers (accepts null)
62
49
  sig { returns(T.nilable(T::Hash[Symbol, String])) }
63
- attr_reader :headers
50
+ attr_accessor :headers
64
51
 
65
- sig { params(headers: T::Hash[Symbol, String]).void }
66
- attr_writer :headers
67
-
68
- # HTML body content. Maximum 5MB (5,242,880 characters). Combined with
69
- # attachments, the total message must not exceed 14MB.
52
+ # HTML body content (accepts null). Maximum 5MB (5,242,880 characters). Combined
53
+ # with attachments, the total message must not exceed 14MB.
70
54
  sig { returns(T.nilable(String)) }
71
- attr_reader :html
72
-
73
- sig { params(html: String).void }
74
- attr_writer :html
55
+ attr_accessor :html
75
56
 
76
- # Reply-to address
57
+ # Reply-to address (accepts null)
77
58
  sig { returns(T.nilable(String)) }
78
- attr_reader :reply_to
79
-
80
- sig { params(reply_to: String).void }
81
- attr_writer :reply_to
59
+ attr_accessor :reply_to
82
60
 
83
- # Tag for categorization and filtering
61
+ # Tag for categorization and filtering (accepts null)
84
62
  sig { returns(T.nilable(String)) }
85
- attr_reader :tag
63
+ attr_accessor :tag
86
64
 
87
- sig { params(tag: String).void }
88
- attr_writer :tag
89
-
90
- # Plain text body (auto-generated from HTML if not provided). Maximum 5MB
91
- # (5,242,880 characters).
65
+ # Plain text body (accepts null, auto-generated from HTML if not provided).
66
+ # Maximum 5MB (5,242,880 characters).
92
67
  sig { returns(T.nilable(String)) }
93
- attr_reader :text
94
-
95
- sig { params(text: String).void }
96
- attr_writer :text
68
+ attr_accessor :text
97
69
 
98
70
  sig { returns(T.nilable(String)) }
99
71
  attr_reader :idempotency_key
@@ -106,14 +78,15 @@ module ArkEmail
106
78
  from: String,
107
79
  subject: String,
108
80
  to: T::Array[String],
109
- attachments: T::Array[ArkEmail::EmailSendParams::Attachment::OrHash],
110
- bcc: T::Array[String],
111
- cc: T::Array[String],
112
- headers: T::Hash[Symbol, String],
113
- html: String,
114
- reply_to: String,
115
- tag: String,
116
- text: String,
81
+ attachments:
82
+ T.nilable(T::Array[ArkEmail::EmailSendParams::Attachment::OrHash]),
83
+ bcc: T.nilable(T::Array[String]),
84
+ cc: T.nilable(T::Array[String]),
85
+ headers: T.nilable(T::Hash[Symbol, String]),
86
+ html: T.nilable(String),
87
+ reply_to: T.nilable(String),
88
+ tag: T.nilable(String),
89
+ text: T.nilable(String),
117
90
  idempotency_key: String,
118
91
  request_options: ArkEmail::RequestOptions::OrHash
119
92
  ).returns(T.attached_class)
@@ -133,23 +106,23 @@ module ArkEmail
133
106
  subject:,
134
107
  # Recipient email addresses (max 50)
135
108
  to:,
136
- # File attachments
109
+ # File attachments (accepts null)
137
110
  attachments: nil,
138
- # BCC recipients
111
+ # BCC recipients (accepts null)
139
112
  bcc: nil,
140
- # CC recipients
113
+ # CC recipients (accepts null)
141
114
  cc: nil,
142
- # Custom email headers
115
+ # Custom email headers (accepts null)
143
116
  headers: nil,
144
- # HTML body content. Maximum 5MB (5,242,880 characters). Combined with
145
- # attachments, the total message must not exceed 14MB.
117
+ # HTML body content (accepts null). Maximum 5MB (5,242,880 characters). Combined
118
+ # with attachments, the total message must not exceed 14MB.
146
119
  html: nil,
147
- # Reply-to address
120
+ # Reply-to address (accepts null)
148
121
  reply_to: nil,
149
- # Tag for categorization and filtering
122
+ # Tag for categorization and filtering (accepts null)
150
123
  tag: nil,
151
- # Plain text body (auto-generated from HTML if not provided). Maximum 5MB
152
- # (5,242,880 characters).
124
+ # Plain text body (accepts null, auto-generated from HTML if not provided).
125
+ # Maximum 5MB (5,242,880 characters).
153
126
  text: nil,
154
127
  idempotency_key: nil,
155
128
  request_options: {}
@@ -162,14 +135,15 @@ module ArkEmail
162
135
  from: String,
163
136
  subject: String,
164
137
  to: T::Array[String],
165
- attachments: T::Array[ArkEmail::EmailSendParams::Attachment],
166
- bcc: T::Array[String],
167
- cc: T::Array[String],
168
- headers: T::Hash[Symbol, String],
169
- html: String,
170
- reply_to: String,
171
- tag: String,
172
- text: String,
138
+ attachments:
139
+ T.nilable(T::Array[ArkEmail::EmailSendParams::Attachment]),
140
+ bcc: T.nilable(T::Array[String]),
141
+ cc: T.nilable(T::Array[String]),
142
+ headers: T.nilable(T::Hash[Symbol, String]),
143
+ html: T.nilable(String),
144
+ reply_to: T.nilable(String),
145
+ tag: T.nilable(String),
146
+ text: T.nilable(String),
173
147
  idempotency_key: String,
174
148
  request_options: ArkEmail::RequestOptions
175
149
  }
@@ -23,11 +23,16 @@ module ArkEmail
23
23
  sig { returns(T::Array[String]) }
24
24
  attr_accessor :rcpt_to
25
25
 
26
+ # Whether this is a bounce message (accepts null)
27
+ sig { returns(T.nilable(T::Boolean)) }
28
+ attr_accessor :bounce
29
+
26
30
  sig do
27
31
  params(
28
32
  data: String,
29
33
  mail_from: String,
30
34
  rcpt_to: T::Array[String],
35
+ bounce: T.nilable(T::Boolean),
31
36
  request_options: ArkEmail::RequestOptions::OrHash
32
37
  ).returns(T.attached_class)
33
38
  end
@@ -38,6 +43,8 @@ module ArkEmail
38
43
  mail_from:,
39
44
  # Envelope recipient addresses
40
45
  rcpt_to:,
46
+ # Whether this is a bounce message (accepts null)
47
+ bounce: nil,
41
48
  request_options: {}
42
49
  )
43
50
  end
@@ -48,6 +55,7 @@ module ArkEmail
48
55
  data: String,
49
56
  mail_from: String,
50
57
  rcpt_to: T::Array[String],
58
+ bounce: T.nilable(T::Boolean),
51
59
  request_options: ArkEmail::RequestOptions
52
60
  }
53
61
  )
@@ -55,19 +55,23 @@ module ArkEmail
55
55
  sig { returns(String) }
56
56
  attr_accessor :address
57
57
 
58
+ # Reason for suppression (accepts null)
58
59
  sig { returns(T.nilable(String)) }
59
- attr_reader :reason
60
-
61
- sig { params(reason: String).void }
62
- attr_writer :reason
60
+ attr_accessor :reason
63
61
 
64
62
  sig do
65
- params(address: String, reason: String).returns(T.attached_class)
63
+ params(address: String, reason: T.nilable(String)).returns(
64
+ T.attached_class
65
+ )
66
66
  end
67
- def self.new(address:, reason: nil)
67
+ def self.new(
68
+ address:,
69
+ # Reason for suppression (accepts null)
70
+ reason: nil
71
+ )
68
72
  end
69
73
 
70
- sig { override.returns({ address: String, reason: String }) }
74
+ sig { override.returns({ address: String, reason: T.nilable(String) }) }
71
75
  def to_hash
72
76
  end
73
77
  end
@@ -15,24 +15,21 @@ module ArkEmail
15
15
  sig { returns(String) }
16
16
  attr_accessor :address
17
17
 
18
- # Reason for suppression
18
+ # Reason for suppression (accepts null)
19
19
  sig { returns(T.nilable(String)) }
20
- attr_reader :reason
21
-
22
- sig { params(reason: String).void }
23
- attr_writer :reason
20
+ attr_accessor :reason
24
21
 
25
22
  sig do
26
23
  params(
27
24
  address: String,
28
- reason: String,
25
+ reason: T.nilable(String),
29
26
  request_options: ArkEmail::RequestOptions::OrHash
30
27
  ).returns(T.attached_class)
31
28
  end
32
29
  def self.new(
33
30
  # Email address to suppress
34
31
  address:,
35
- # Reason for suppression
32
+ # Reason for suppression (accepts null)
36
33
  reason: nil,
37
34
  request_options: {}
38
35
  )
@@ -42,7 +39,7 @@ module ArkEmail
42
39
  override.returns(
43
40
  {
44
41
  address: String,
45
- reason: String,
42
+ reason: T.nilable(String),
46
43
  request_options: ArkEmail::RequestOptions
47
44
  }
48
45
  )
@@ -12,41 +12,32 @@ module ArkEmail
12
12
  end
13
13
 
14
14
  # ID of the sending domain to attach this track domain to
15
- sig { returns(String) }
15
+ sig { returns(Integer) }
16
16
  attr_accessor :domain_id
17
17
 
18
18
  # Subdomain name (e.g., 'track' for track.yourdomain.com)
19
19
  sig { returns(String) }
20
20
  attr_accessor :name
21
21
 
22
- # Enable SSL for tracking URLs (recommended)
22
+ # Enable SSL for tracking URLs (accepts null, defaults to true)
23
23
  sig { returns(T.nilable(T::Boolean)) }
24
- attr_reader :ssl_enabled
25
-
26
- sig { params(ssl_enabled: T::Boolean).void }
27
- attr_writer :ssl_enabled
24
+ attr_accessor :ssl_enabled
28
25
 
29
- # Enable click tracking
26
+ # Enable click tracking (accepts null, defaults to true)
30
27
  sig { returns(T.nilable(T::Boolean)) }
31
- attr_reader :track_clicks
28
+ attr_accessor :track_clicks
32
29
 
33
- sig { params(track_clicks: T::Boolean).void }
34
- attr_writer :track_clicks
35
-
36
- # Enable open tracking (tracking pixel)
30
+ # Enable open tracking (tracking pixel, accepts null, defaults to true)
37
31
  sig { returns(T.nilable(T::Boolean)) }
38
- attr_reader :track_opens
39
-
40
- sig { params(track_opens: T::Boolean).void }
41
- attr_writer :track_opens
32
+ attr_accessor :track_opens
42
33
 
43
34
  sig do
44
35
  params(
45
- domain_id: String,
36
+ domain_id: Integer,
46
37
  name: String,
47
- ssl_enabled: T::Boolean,
48
- track_clicks: T::Boolean,
49
- track_opens: T::Boolean,
38
+ ssl_enabled: T.nilable(T::Boolean),
39
+ track_clicks: T.nilable(T::Boolean),
40
+ track_opens: T.nilable(T::Boolean),
50
41
  request_options: ArkEmail::RequestOptions::OrHash
51
42
  ).returns(T.attached_class)
52
43
  end
@@ -55,11 +46,11 @@ module ArkEmail
55
46
  domain_id:,
56
47
  # Subdomain name (e.g., 'track' for track.yourdomain.com)
57
48
  name:,
58
- # Enable SSL for tracking URLs (recommended)
49
+ # Enable SSL for tracking URLs (accepts null, defaults to true)
59
50
  ssl_enabled: nil,
60
- # Enable click tracking
51
+ # Enable click tracking (accepts null, defaults to true)
61
52
  track_clicks: nil,
62
- # Enable open tracking (tracking pixel)
53
+ # Enable open tracking (tracking pixel, accepts null, defaults to true)
63
54
  track_opens: nil,
64
55
  request_options: {}
65
56
  )
@@ -68,11 +59,11 @@ module ArkEmail
68
59
  sig do
69
60
  override.returns(
70
61
  {
71
- domain_id: String,
62
+ domain_id: Integer,
72
63
  name: String,
73
- ssl_enabled: T::Boolean,
74
- track_clicks: T::Boolean,
75
- track_opens: T::Boolean,
64
+ ssl_enabled: T.nilable(T::Boolean),
65
+ track_clicks: T.nilable(T::Boolean),
66
+ track_opens: T.nilable(T::Boolean),
76
67
  request_options: ArkEmail::RequestOptions
77
68
  }
78
69
  )
@@ -11,51 +11,39 @@ module ArkEmail
11
11
  T.any(ArkEmail::TrackingUpdateParams, ArkEmail::Internal::AnyHash)
12
12
  end
13
13
 
14
- # Comma-separated list of domains to exclude from click tracking
14
+ # Comma-separated list of domains to exclude from click tracking (accepts null)
15
15
  sig { returns(T.nilable(String)) }
16
- attr_reader :excluded_click_domains
16
+ attr_accessor :excluded_click_domains
17
17
 
18
- sig { params(excluded_click_domains: String).void }
19
- attr_writer :excluded_click_domains
20
-
21
- # Enable or disable SSL for tracking URLs
18
+ # Enable or disable SSL for tracking URLs (accepts null)
22
19
  sig { returns(T.nilable(T::Boolean)) }
23
- attr_reader :ssl_enabled
24
-
25
- sig { params(ssl_enabled: T::Boolean).void }
26
- attr_writer :ssl_enabled
20
+ attr_accessor :ssl_enabled
27
21
 
28
- # Enable or disable click tracking
22
+ # Enable or disable click tracking (accepts null)
29
23
  sig { returns(T.nilable(T::Boolean)) }
30
- attr_reader :track_clicks
24
+ attr_accessor :track_clicks
31
25
 
32
- sig { params(track_clicks: T::Boolean).void }
33
- attr_writer :track_clicks
34
-
35
- # Enable or disable open tracking
26
+ # Enable or disable open tracking (accepts null)
36
27
  sig { returns(T.nilable(T::Boolean)) }
37
- attr_reader :track_opens
38
-
39
- sig { params(track_opens: T::Boolean).void }
40
- attr_writer :track_opens
28
+ attr_accessor :track_opens
41
29
 
42
30
  sig do
43
31
  params(
44
- excluded_click_domains: String,
45
- ssl_enabled: T::Boolean,
46
- track_clicks: T::Boolean,
47
- track_opens: T::Boolean,
32
+ excluded_click_domains: T.nilable(String),
33
+ ssl_enabled: T.nilable(T::Boolean),
34
+ track_clicks: T.nilable(T::Boolean),
35
+ track_opens: T.nilable(T::Boolean),
48
36
  request_options: ArkEmail::RequestOptions::OrHash
49
37
  ).returns(T.attached_class)
50
38
  end
51
39
  def self.new(
52
- # Comma-separated list of domains to exclude from click tracking
40
+ # Comma-separated list of domains to exclude from click tracking (accepts null)
53
41
  excluded_click_domains: nil,
54
- # Enable or disable SSL for tracking URLs
42
+ # Enable or disable SSL for tracking URLs (accepts null)
55
43
  ssl_enabled: nil,
56
- # Enable or disable click tracking
44
+ # Enable or disable click tracking (accepts null)
57
45
  track_clicks: nil,
58
- # Enable or disable open tracking
46
+ # Enable or disable open tracking (accepts null)
59
47
  track_opens: nil,
60
48
  request_options: {}
61
49
  )
@@ -64,10 +52,10 @@ module ArkEmail
64
52
  sig do
65
53
  override.returns(
66
54
  {
67
- excluded_click_domains: String,
68
- ssl_enabled: T::Boolean,
69
- track_clicks: T::Boolean,
70
- track_opens: T::Boolean,
55
+ excluded_click_domains: T.nilable(String),
56
+ ssl_enabled: T.nilable(T::Boolean),
57
+ track_clicks: T.nilable(T::Boolean),
58
+ track_opens: T.nilable(T::Boolean),
71
59
  request_options: ArkEmail::RequestOptions
72
60
  }
73
61
  )
@@ -11,19 +11,6 @@ module ArkEmail
11
11
  T.any(ArkEmail::WebhookCreateParams, ArkEmail::Internal::AnyHash)
12
12
  end
13
13
 
14
- # Events to subscribe to:
15
- #
16
- # - `MessageSent` - Email successfully delivered to recipient's server
17
- # - `MessageDelayed` - Temporary delivery failure, will retry
18
- # - `MessageDeliveryFailed` - Permanent delivery failure
19
- # - `MessageHeld` - Email held for manual review
20
- # - `MessageBounced` - Email bounced back
21
- # - `MessageLinkClicked` - Recipient clicked a tracked link
22
- # - `MessageLoaded` - Recipient opened the email (tracking pixel loaded)
23
- # - `DomainDNSError` - DNS configuration issue detected
24
- sig { returns(T::Array[ArkEmail::WebhookCreateParams::Event::OrSymbol]) }
25
- attr_accessor :events
26
-
27
14
  # Webhook name for identification
28
15
  sig { returns(String) }
29
16
  attr_accessor :name
@@ -32,31 +19,52 @@ module ArkEmail
32
19
  sig { returns(String) }
33
20
  attr_accessor :url
34
21
 
35
- # Subscribe to all events (ignores events array)
22
+ # Subscribe to all events (ignores events array, accepts null)
36
23
  sig { returns(T.nilable(T::Boolean)) }
37
- attr_reader :all_events
38
-
39
- sig { params(all_events: T::Boolean).void }
40
- attr_writer :all_events
24
+ attr_accessor :all_events
41
25
 
26
+ # Whether the webhook is enabled (accepts null)
42
27
  sig { returns(T.nilable(T::Boolean)) }
43
- attr_reader :enabled
28
+ attr_accessor :enabled
44
29
 
45
- sig { params(enabled: T::Boolean).void }
46
- attr_writer :enabled
30
+ # Events to subscribe to (accepts null):
31
+ #
32
+ # - `MessageSent` - Email successfully delivered to recipient's server
33
+ # - `MessageDelayed` - Temporary delivery failure, will retry
34
+ # - `MessageDeliveryFailed` - Permanent delivery failure
35
+ # - `MessageHeld` - Email held for manual review
36
+ # - `MessageBounced` - Email bounced back
37
+ # - `MessageLinkClicked` - Recipient clicked a tracked link
38
+ # - `MessageLoaded` - Recipient opened the email (tracking pixel loaded)
39
+ # - `DomainDNSError` - DNS configuration issue detected
40
+ sig do
41
+ returns(
42
+ T.nilable(T::Array[ArkEmail::WebhookCreateParams::Event::OrSymbol])
43
+ )
44
+ end
45
+ attr_accessor :events
47
46
 
48
47
  sig do
49
48
  params(
50
- events: T::Array[ArkEmail::WebhookCreateParams::Event::OrSymbol],
51
49
  name: String,
52
50
  url: String,
53
- all_events: T::Boolean,
54
- enabled: T::Boolean,
51
+ all_events: T.nilable(T::Boolean),
52
+ enabled: T.nilable(T::Boolean),
53
+ events:
54
+ T.nilable(T::Array[ArkEmail::WebhookCreateParams::Event::OrSymbol]),
55
55
  request_options: ArkEmail::RequestOptions::OrHash
56
56
  ).returns(T.attached_class)
57
57
  end
58
58
  def self.new(
59
- # Events to subscribe to:
59
+ # Webhook name for identification
60
+ name:,
61
+ # HTTPS endpoint URL
62
+ url:,
63
+ # Subscribe to all events (ignores events array, accepts null)
64
+ all_events: nil,
65
+ # Whether the webhook is enabled (accepts null)
66
+ enabled: nil,
67
+ # Events to subscribe to (accepts null):
60
68
  #
61
69
  # - `MessageSent` - Email successfully delivered to recipient's server
62
70
  # - `MessageDelayed` - Temporary delivery failure, will retry
@@ -66,14 +74,7 @@ module ArkEmail
66
74
  # - `MessageLinkClicked` - Recipient clicked a tracked link
67
75
  # - `MessageLoaded` - Recipient opened the email (tracking pixel loaded)
68
76
  # - `DomainDNSError` - DNS configuration issue detected
69
- events:,
70
- # Webhook name for identification
71
- name:,
72
- # HTTPS endpoint URL
73
- url:,
74
- # Subscribe to all events (ignores events array)
75
- all_events: nil,
76
- enabled: nil,
77
+ events: nil,
77
78
  request_options: {}
78
79
  )
79
80
  end
@@ -81,11 +82,14 @@ module ArkEmail
81
82
  sig do
82
83
  override.returns(
83
84
  {
84
- events: T::Array[ArkEmail::WebhookCreateParams::Event::OrSymbol],
85
85
  name: String,
86
86
  url: String,
87
- all_events: T::Boolean,
88
- enabled: T::Boolean,
87
+ all_events: T.nilable(T::Boolean),
88
+ enabled: T.nilable(T::Boolean),
89
+ events:
90
+ T.nilable(
91
+ T::Array[ArkEmail::WebhookCreateParams::Event::OrSymbol]
92
+ ),
89
93
  request_options: ArkEmail::RequestOptions
90
94
  }
91
95
  )
@@ -12,42 +12,27 @@ module ArkEmail
12
12
  end
13
13
 
14
14
  sig { returns(T.nilable(T::Boolean)) }
15
- attr_reader :all_events
16
-
17
- sig { params(all_events: T::Boolean).void }
18
- attr_writer :all_events
15
+ attr_accessor :all_events
19
16
 
20
17
  sig { returns(T.nilable(T::Boolean)) }
21
- attr_reader :enabled
22
-
23
- sig { params(enabled: T::Boolean).void }
24
- attr_writer :enabled
18
+ attr_accessor :enabled
25
19
 
26
20
  sig { returns(T.nilable(T::Array[String])) }
27
- attr_reader :events
28
-
29
- sig { params(events: T::Array[String]).void }
30
- attr_writer :events
21
+ attr_accessor :events
31
22
 
32
23
  sig { returns(T.nilable(String)) }
33
- attr_reader :name
34
-
35
- sig { params(name: String).void }
36
- attr_writer :name
24
+ attr_accessor :name
37
25
 
38
26
  sig { returns(T.nilable(String)) }
39
- attr_reader :url
40
-
41
- sig { params(url: String).void }
42
- attr_writer :url
27
+ attr_accessor :url
43
28
 
44
29
  sig do
45
30
  params(
46
- all_events: T::Boolean,
47
- enabled: T::Boolean,
48
- events: T::Array[String],
49
- name: String,
50
- url: String,
31
+ all_events: T.nilable(T::Boolean),
32
+ enabled: T.nilable(T::Boolean),
33
+ events: T.nilable(T::Array[String]),
34
+ name: T.nilable(String),
35
+ url: T.nilable(String),
51
36
  request_options: ArkEmail::RequestOptions::OrHash
52
37
  ).returns(T.attached_class)
53
38
  end
@@ -64,11 +49,11 @@ module ArkEmail
64
49
  sig do
65
50
  override.returns(
66
51
  {
67
- all_events: T::Boolean,
68
- enabled: T::Boolean,
69
- events: T::Array[String],
70
- name: String,
71
- url: String,
52
+ all_events: T.nilable(T::Boolean),
53
+ enabled: T.nilable(T::Boolean),
54
+ events: T.nilable(T::Array[String]),
55
+ name: T.nilable(String),
56
+ url: T.nilable(String),
72
57
  request_options: ArkEmail::RequestOptions
73
58
  }
74
59
  )