From c6f2e73434e7c8488ef12ca5c31229520d993b32 Mon Sep 17 00:00:00 2001 From: Peter Ocansey Date: Mon, 30 Mar 2026 17:59:22 +0000 Subject: [PATCH] Add missing webhook events --- mailersend/builders/webhooks.py | 16 ++++++++++++++++ tests/unit/test_webhooks_builder.py | 20 +++++++++++++++++++- 2 files changed, 35 insertions(+), 1 deletion(-) diff --git a/mailersend/builders/webhooks.py b/mailersend/builders/webhooks.py index 2c7e596..f352500 100644 --- a/mailersend/builders/webhooks.py +++ b/mailersend/builders/webhooks.py @@ -122,6 +122,7 @@ def activity_events(self) -> "WebhooksBuilder": "activity.delivered", "activity.soft_bounced", "activity.hard_bounced", + "activity.deferred", "activity.opened", "activity.opened_unique", "activity.clicked", @@ -154,6 +155,20 @@ def system_events(self) -> "WebhooksBuilder": self.add_event(event) return self + def recipient_events(self) -> "WebhooksBuilder": + """Add all recipient events to the webhook. + + Returns: + WebhooksBuilder: Self for method chaining + """ + recipient_events = [ + "recipient.on_hold_added", + "recipient.on_hold_removed", + ] + for event in recipient_events: + self.add_event(event) + return self + def all_events(self) -> "WebhooksBuilder": """Add all available events to the webhook. @@ -162,6 +177,7 @@ def all_events(self) -> "WebhooksBuilder": """ self.activity_events() self.system_events() + self.recipient_events() return self def build_webhooks_list_request(self) -> WebhooksListRequest: diff --git a/tests/unit/test_webhooks_builder.py b/tests/unit/test_webhooks_builder.py index 12076db..a0dcf61 100644 --- a/tests/unit/test_webhooks_builder.py +++ b/tests/unit/test_webhooks_builder.py @@ -100,6 +100,7 @@ def test_activity_events(self): "activity.delivered", "activity.soft_bounced", "activity.hard_bounced", + "activity.deferred", "activity.opened", "activity.opened_unique", "activity.clicked", @@ -128,6 +129,18 @@ def test_system_events(self): ] assert builder._events == expected_events + def test_recipient_events(self): + """Test adding all recipient events.""" + builder = WebhooksBuilder() + result = builder.recipient_events() + assert result is builder # Fluent interface + + expected_events = [ + "recipient.on_hold_added", + "recipient.on_hold_removed", + ] + assert builder._events == expected_events + def test_all_events(self): """Test adding all available events.""" builder = WebhooksBuilder() @@ -139,6 +152,7 @@ def test_all_events(self): "activity.delivered", "activity.soft_bounced", "activity.hard_bounced", + "activity.deferred", "activity.opened", "activity.opened_unique", "activity.clicked", @@ -157,7 +171,11 @@ def test_all_events(self): "email_list.verified", "bulk_email.completed", ] - expected_all_events = expected_activity_events + expected_system_events + expected_recipient_events = [ + "recipient.on_hold_added", + "recipient.on_hold_removed", + ] + expected_all_events = expected_activity_events + expected_system_events + expected_recipient_events assert builder._events == expected_all_events def test_method_chaining(self):