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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 220ac15046c5251babbf87e974fcb0a8d4ffa32e430440ef58b60343991afed4
4
- data.tar.gz: 4a1b38866fb884d5cab6605a246b5d03a5c14d567f8b31f7adbc3af08ceb3d22
3
+ metadata.gz: 57d92c55df6dfd3169184f30d30e138f219b3a1dfcc09112c74dbf8feace6e02
4
+ data.tar.gz: 23aa7e7378b49654acb55de515bf564c7a62f6a7a0f42c2ed86e5572f82fe1eb
5
5
  SHA512:
6
- metadata.gz: 78af5ceefe5c149349e013665a154d91468e9d70c53b87e0093be6db28806b5ed54fca03a402d7a17833dceb0f60443699f304989ee8cbf0b19eed65fd243c5b
7
- data.tar.gz: 4d0e8b00282a1bc180899971b4e86ca8b162cf6d36d00415bc6a9eed1d913669b9727adc81a78ebb698994b15473e05af0c25f90cffc8197a4021d67941d6b5c
6
+ metadata.gz: 72c1406b92cd01afc3593c8138a8473f63f94a0772cae2ef840a3f798ab97344ade7b977d3f8110909301d0ef2cf6a21a49f6062a83ad32ae1284f73cc3ab7ff
7
+ data.tar.gz: 06635e1a0bbaf9f1fde03f7f3147f200f9cd7325bf2e3d1bb95ff472dd8cc234865bd6131f711fcc05db6b24b6d03e03c0aca9fdf89504ce9a293121c0909ba0
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- sendly (3.0.0)
4
+ sendly (3.1.0)
5
5
  faraday (~> 2.0)
6
6
  faraday-retry (~> 2.0)
7
7
 
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
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Sendly
4
- VERSION = "3.0.0"
4
+ VERSION = "3.1.0"
5
5
  end
@@ -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)
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sendly
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.0.0
4
+ version: 3.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sendly