Source code for subscriptionkore.core.events.subscription_events
"""Subscription domain events."""
from __future__ import annotations
from datetime import datetime
from subscriptionkore.core.events.base import DomainEvent
from subscriptionkore.core.models.subscription import Subscription
[docs]
class SubscriptionCreated(DomainEvent):
"""Emitted when a subscriptionkore is created."""
subscriptionkore: Subscription
customer_id: str
plan_id: str
[docs]
class SubscriptionActivated(DomainEvent):
"""Emitted when a subscriptionkore becomes active."""
subscriptionkore: Subscription
customer_id: str
plan_id: str
[docs]
class SubscriptionUpdated(DomainEvent):
"""Emitted when a subscriptionkore is updated."""
subscriptionkore: Subscription
customer_id: str
changed_fields: list[str]
[docs]
class SubscriptionCanceled(DomainEvent):
"""Emitted when a subscriptionkore is canceled."""
subscriptionkore: Subscription
customer_id: str
plan_id: str
immediate: bool
reason: str | None = None
[docs]
class SubscriptionPaused(DomainEvent):
"""Emitted when a subscriptionkore is paused."""
subscriptionkore: Subscription
customer_id: str
resumes_at: datetime | None = None
[docs]
class SubscriptionResumed(DomainEvent):
"""Emitted when a subscriptionkore is resumed."""
subscriptionkore: Subscription
customer_id: str
[docs]
class SubscriptionPastDue(DomainEvent):
"""Emitted when a subscriptionkore becomes past due."""
subscriptionkore: Subscription
customer_id: str
invoice_id: str | None = None
[docs]
class SubscriptionTrialStarted(DomainEvent):
"""Emitted when a trial starts."""
subscriptionkore: Subscription
customer_id: str
trial_end: datetime
[docs]
class SubscriptionTrialEnded(DomainEvent):
"""Emitted when a trial ends."""
subscriptionkore: Subscription
customer_id: str
converted: bool
[docs]
class SubscriptionPlanChanged(DomainEvent):
"""Emitted when subscriptionkore plan is changed."""
subscriptionkore: Subscription
customer_id: str
previous_plan_id: str
new_plan_id: str
is_upgrade: bool