sendly 3.0.0 → 3.1.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/Gemfile.lock +1 -1
- data/lib/sendly/types.rb +5 -1
- data/lib/sendly/version.rb +1 -1
- data/lib/sendly/webhooks_resource.rb +8 -3
- metadata +1 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 57d92c55df6dfd3169184f30d30e138f219b3a1dfcc09112c74dbf8feace6e02
|
|
4
|
+
data.tar.gz: 23aa7e7378b49654acb55de515bf564c7a62f6a7a0f42c2ed86e5572f82fe1eb
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 72c1406b92cd01afc3593c8138a8473f63f94a0772cae2ef840a3f798ab97344ade7b977d3f8110909301d0ef2cf6a21a49f6062a83ad32ae1284f73cc3ab7ff
|
|
7
|
+
data.tar.gz: 06635e1a0bbaf9f1fde03f7f3147f200f9cd7325bf2e3d1bb95ff472dd8cc234865bd6131f711fcc05db6b24b6d03e03c0aca9fdf89504ce9a293121c0909ba0
|
data/Gemfile.lock
CHANGED
data/lib/sendly/types.rb
CHANGED
|
@@ -194,7 +194,7 @@ module Sendly
|
|
|
194
194
|
|
|
195
195
|
# Represents a configured webhook endpoint
|
|
196
196
|
class Webhook
|
|
197
|
-
attr_reader :id, :url, :events, :description, :is_active, :failure_count,
|
|
197
|
+
attr_reader :id, :url, :events, :description, :mode, :is_active, :failure_count,
|
|
198
198
|
:last_failure_at, :circuit_state, :circuit_opened_at, :api_version,
|
|
199
199
|
:metadata, :created_at, :updated_at, :total_deliveries,
|
|
200
200
|
:successful_deliveries, :success_rate, :last_delivery_at
|
|
@@ -202,11 +202,15 @@ module Sendly
|
|
|
202
202
|
# Circuit state constants
|
|
203
203
|
CIRCUIT_STATES = %w[closed open half_open].freeze
|
|
204
204
|
|
|
205
|
+
# Webhook mode constants
|
|
206
|
+
MODES = %w[all test live].freeze
|
|
207
|
+
|
|
205
208
|
def initialize(data)
|
|
206
209
|
@id = data["id"]
|
|
207
210
|
@url = data["url"]
|
|
208
211
|
@events = data["events"] || []
|
|
209
212
|
@description = data["description"]
|
|
213
|
+
@mode = data["mode"] || "all"
|
|
210
214
|
# Handle both snake_case API response and camelCase
|
|
211
215
|
@is_active = data["is_active"] || data["isActive"] || false
|
|
212
216
|
@failure_count = data["failure_count"] || data["failureCount"] || 0
|
data/lib/sendly/version.rb
CHANGED
|
@@ -13,21 +13,24 @@ module Sendly
|
|
|
13
13
|
# @param url [String] HTTPS endpoint URL
|
|
14
14
|
# @param events [Array<String>] Event types to subscribe to
|
|
15
15
|
# @param description [String, nil] Optional description
|
|
16
|
+
# @param mode [String, nil] Event mode filter: "all", "test", or "live" (live requires verification)
|
|
16
17
|
# @param metadata [Hash, nil] Custom metadata
|
|
17
18
|
# @return [Sendly::WebhookCreatedResponse]
|
|
18
19
|
#
|
|
19
20
|
# @example
|
|
20
21
|
# webhook = client.webhooks.create(
|
|
21
22
|
# url: "https://example.com/webhooks",
|
|
22
|
-
# events: ["message.delivered", "message.failed"]
|
|
23
|
+
# events: ["message.delivered", "message.failed"],
|
|
24
|
+
# mode: "all"
|
|
23
25
|
# )
|
|
24
26
|
# puts "Secret: #{webhook.secret}" # Save this - only shown once!
|
|
25
|
-
def create(url:, events:, description: nil, metadata: nil)
|
|
27
|
+
def create(url:, events:, description: nil, mode: nil, metadata: nil)
|
|
26
28
|
raise ArgumentError, "Webhook URL must be HTTPS" unless url&.start_with?("https://")
|
|
27
29
|
raise ArgumentError, "At least one event type is required" if events.nil? || events.empty?
|
|
28
30
|
|
|
29
31
|
body = { url: url, events: events }
|
|
30
32
|
body[:description] = description if description
|
|
33
|
+
body[:mode] = mode if mode
|
|
31
34
|
body[:metadata] = metadata if metadata
|
|
32
35
|
|
|
33
36
|
response = @client.post("/webhooks", body)
|
|
@@ -59,9 +62,10 @@ module Sendly
|
|
|
59
62
|
# @param events [Array<String>, nil] New event subscriptions
|
|
60
63
|
# @param description [String, nil] New description
|
|
61
64
|
# @param is_active [Boolean, nil] Enable/disable webhook
|
|
65
|
+
# @param mode [String, nil] Event mode filter: "all", "test", or "live"
|
|
62
66
|
# @param metadata [Hash, nil] Custom metadata
|
|
63
67
|
# @return [Sendly::Webhook]
|
|
64
|
-
def update(webhook_id, url: nil, events: nil, description: nil, is_active: nil, metadata: nil)
|
|
68
|
+
def update(webhook_id, url: nil, events: nil, description: nil, is_active: nil, mode: nil, metadata: nil)
|
|
65
69
|
validate_webhook_id!(webhook_id)
|
|
66
70
|
raise ArgumentError, "Webhook URL must be HTTPS" if url && !url.start_with?("https://")
|
|
67
71
|
|
|
@@ -70,6 +74,7 @@ module Sendly
|
|
|
70
74
|
body[:events] = events unless events.nil?
|
|
71
75
|
body[:description] = description unless description.nil?
|
|
72
76
|
body[:is_active] = is_active unless is_active.nil?
|
|
77
|
+
body[:mode] = mode unless mode.nil?
|
|
73
78
|
body[:metadata] = metadata unless metadata.nil?
|
|
74
79
|
|
|
75
80
|
response = @client.patch("/webhooks/#{webhook_id}", body)
|