diff --git a/resend/__init__.py b/resend/__init__.py index 912067e..0a9e082 100644 --- a/resend/__init__.py +++ b/resend/__init__.py @@ -85,6 +85,9 @@ EmailReceivedEvent, EmailScheduledEvent, EmailSentEvent, EmailSuppressedEvent, ReceivedEmailEventData, + SuppressionAddedEvent, + SuppressionEventData, + SuppressionRemovedEvent, WebhookEventPayload) from .webhooks._webhooks import Webhooks @@ -205,6 +208,9 @@ "DomainCreatedEvent", "DomainUpdatedEvent", "DomainDeletedEvent", + "SuppressionEventData", + "SuppressionAddedEvent", + "SuppressionRemovedEvent", "Topic", "OAuthGrant", "OAuthGrantClient", diff --git a/resend/version.py b/resend/version.py index f03beee..affdb22 100644 --- a/resend/version.py +++ b/resend/version.py @@ -1,4 +1,4 @@ -__version__ = "2.46.0" +__version__ = "2.47.0" def get_version() -> str: diff --git a/resend/webhooks/_webhook.py b/resend/webhooks/_webhook.py index caf0aa5..0f82eac 100644 --- a/resend/webhooks/_webhook.py +++ b/resend/webhooks/_webhook.py @@ -25,6 +25,9 @@ "domain.created", "domain.updated", "domain.deleted", + # Suppression events + "suppression.added", + "suppression.removed", ] diff --git a/resend/webhooks/_webhook_event.py b/resend/webhooks/_webhook_event.py index 34c8b1b..65c4902 100644 --- a/resend/webhooks/_webhook_event.py +++ b/resend/webhooks/_webhook_event.py @@ -2,6 +2,8 @@ from typing_extensions import Literal, NotRequired, TypedDict +from resend.suppressions._suppression import SuppressionListItem + # Functional syntax required because ``from`` is a reserved keyword. _FromField = TypedDict( "_FromField", @@ -353,6 +355,15 @@ class DomainEventData(TypedDict): """ +class SuppressionEventData(SuppressionListItem): + """ + ``data`` payload for suppression webhook events. + + Same shape as ``SuppressionListItem``: ``id``, ``email``, ``origin``, + ``source_id``, ``created_at``. + """ + + class EmailSentEvent(TypedDict): """Webhook payload for ``email.sent``.""" @@ -489,6 +500,22 @@ class DomainDeletedEvent(TypedDict): data: DomainEventData +class SuppressionAddedEvent(TypedDict): + """Webhook payload for ``suppression.added``.""" + + type: Literal["suppression.added"] + created_at: str + data: SuppressionEventData + + +class SuppressionRemovedEvent(TypedDict): + """Webhook payload for ``suppression.removed``.""" + + type: Literal["suppression.removed"] + created_at: str + data: SuppressionEventData + + WebhookEventPayload = Union[ EmailSentEvent, EmailScheduledEvent, @@ -507,6 +534,8 @@ class DomainDeletedEvent(TypedDict): DomainCreatedEvent, DomainUpdatedEvent, DomainDeletedEvent, + SuppressionAddedEvent, + SuppressionRemovedEvent, ] """ Union of all Resend webhook event payload shapes returned by ``Webhooks.verify``.