Domain Event Catalog
Generated from bot.infra.event_payloads; do not edit this file by hand.
Regenerate with PYTHONPATH=backend python -m bot.infra.event_catalog.
Subscribers continue to receive (event_name, dict) payloads. The models below define the flat JSON-compatible dict emitted by core code.
account.email_linked
Заголовок раздела «account.email_linked»Payload model: AccountEmailLinkedPayload
Emitters: backend/bot/app/web/webapp/account.py
Core reactions: CoreEventReactions.on_account_email_linked
| Field | Type | Default |
|---|---|---|
user_id |
int |
required |
email |
str |
required |
first_link |
bool |
required |
telegram_id |
`int | None` |
username |
`str | None` |
first_name |
`str | None` |
account.merged
Заголовок раздела «account.merged»Payload model: AccountMergedPayload
Emitters: backend/db/dal/user_merge_dal.py
Core reactions: CoreEventReactions.on_account_merged
| Field | Type | Default |
|---|---|---|
source_user_id |
int |
required |
target_user_id |
int |
required |
reason |
str |
required |
send_user_email |
bool |
required |
source_panel_user_uuid |
`str | None` |
target_panel_user_uuid |
`str | None` |
email |
`str | None` |
telegram_id |
`int | None` |
username |
`str | None` |
first_name |
`str | None` |
language |
`str | None` |
final_end_date |
`datetime | None` |
account.telegram_linked
Заголовок раздела «account.telegram_linked»Payload model: AccountTelegramLinkedPayload
Emitters: backend/bot/app/web/webapp/account.py
Core reactions: CoreEventReactions.on_account_telegram_linked
| Field | Type | Default |
|---|---|---|
user_id |
int |
required |
telegram_id |
`int | None` |
first_link |
bool |
required |
email |
`str | None` |
username |
`str | None` |
first_name |
`str | None` |
bot.started
Заголовок раздела «bot.started»Payload model: BotStartedPayload
Emitters: backend/bot/services/behavior_events.py
Core reactions: none
| Field | Type | Default |
|---|---|---|
user_id |
int |
required |
returning |
bool |
required |
source |
`‘direct’ | ‘referral’ |
start_param |
`str | None` |
panel.webhook_received
Заголовок раздела «panel.webhook_received»Payload model: PanelWebhookReceivedPayload
Emitters: backend/bot/services/panel_webhook_service.py
Core reactions: none
| Field | Type | Default |
|---|---|---|
event |
str |
required |
panel_user_uuid |
`str | None` |
telegram_id |
`int | str |
partner.application_decided
Заголовок раздела «partner.application_decided»Payload model: PartnerApplicationDecidedPayload
Emitters: backend/bot/services/partner_program_service.py
Core reactions: CoreEventReactions.on_partner_application_decided
| Field | Type | Default |
|---|---|---|
application_id |
int |
required |
partner_id |
`int | None` |
user_id |
`int | None` |
status |
str |
required |
decided_at |
datetime |
required |
partner.application_submitted
Заголовок раздела «partner.application_submitted»Payload model: PartnerApplicationSubmittedPayload
Emitters: backend/bot/services/partner_program_service.py
Core reactions: CoreEventReactions.on_partner_application_submitted
| Field | Type | Default |
|---|---|---|
application_id |
int |
required |
user_id |
int |
required |
status |
str |
required |
submitted_at |
datetime |
required |
partner.balance_adjusted
Заголовок раздела «partner.balance_adjusted»Payload model: PartnerBalanceAdjustedPayload
Emitters: backend/bot/services/partner_commission_service.py
Core reactions: none
| Field | Type | Default |
|---|---|---|
partner_id |
int |
required |
currency |
str |
required |
amount_minor |
int |
required |
balance_minor |
int |
required |
adjusted_at |
datetime |
required |
partner.balance_spent
Заголовок раздела «partner.balance_spent»Payload model: PartnerBalanceSpentPayload
Emitters: backend/bot/services/partner_checkout_balance.py, backend/bot/services/partner_commission_service.py
Core reactions: none
| Field | Type | Default |
|---|---|---|
partner_id |
int |
required |
payment_db_id |
int |
required |
currency |
str |
required |
amount_minor |
int |
required |
spent_at |
datetime |
required |
partner.client_attributed
Заголовок раздела «partner.client_attributed»Payload model: PartnerClientAttributedPayload
Emitters: backend/bot/services/partner_program_service.py
Core reactions: none
| Field | Type | Default |
|---|---|---|
partner_id |
int |
required |
partner_client_id |
int |
required |
client_user_id |
int |
required |
source |
str |
required |
attributed_at |
datetime |
required |
partner.commission_available
Заголовок раздела «partner.commission_available»Payload model: PartnerCommissionAvailablePayload
Emitters: backend/bot/services/partner_commission_service.py
Core reactions: none
| Field | Type | Default |
|---|---|---|
partner_id |
int |
required |
commission_id |
int |
required |
currency |
str |
required |
commission_amount_minor |
int |
required |
available_at |
datetime |
required |
partner.commission_recorded
Заголовок раздела «partner.commission_recorded»Payload model: PartnerCommissionRecordedPayload
Emitters: backend/bot/services/partner_commission_service.py
Core reactions: none
| Field | Type | Default |
|---|---|---|
partner_id |
int |
required |
commission_id |
int |
required |
payment_db_id |
int |
required |
status |
str |
required |
currency |
str |
required |
gross_amount_minor |
int |
required |
commission_amount_minor |
int |
required |
available_at |
datetime |
required |
partner.commission_reversed
Заголовок раздела «partner.commission_reversed»Payload model: PartnerCommissionReversedPayload
Emitters: backend/bot/services/partner_commission_service.py
Core reactions: none
| Field | Type | Default |
|---|---|---|
partner_id |
int |
required |
commission_id |
int |
required |
payment_db_id |
`int | None` |
currency |
str |
required |
commission_amount_minor |
int |
required |
reversed_at |
datetime |
required |
partner.status_changed
Заголовок раздела «partner.status_changed»Payload model: PartnerStatusChangedPayload
Emitters: backend/bot/services/partner_program_service.py
Core reactions: CoreEventReactions.on_partner_status_changed
| Field | Type | Default |
|---|---|---|
partner_id |
int |
required |
user_id |
`int | None` |
old_status |
str |
required |
status |
str |
required |
changed_at |
datetime |
required |
partner.withdrawal_requested
Заголовок раздела «partner.withdrawal_requested»Payload model: PartnerWithdrawalRequestedPayload
Emitters: backend/bot/services/partner_withdrawal_service.py
Core reactions: CoreEventReactions.on_partner_withdrawal_requested
| Field | Type | Default |
|---|---|---|
partner_id |
int |
required |
user_id |
int |
required |
withdrawal_id |
int |
required |
status |
str |
required |
currency |
str |
required |
currency_scale |
int |
required |
amount_minor |
int |
required |
requested_at |
datetime |
required |
partner.withdrawal_status_changed
Заголовок раздела «partner.withdrawal_status_changed»Payload model: PartnerWithdrawalStatusChangedPayload
Emitters: backend/bot/services/partner_withdrawal_service.py
Core reactions: CoreEventReactions.on_partner_withdrawal_status_changed
| Field | Type | Default |
|---|---|---|
partner_id |
int |
required |
user_id |
`int | None` |
withdrawal_id |
int |
required |
old_status |
str |
required |
status |
str |
required |
status_version |
int |
required |
currency |
str |
required |
currency_scale |
int |
required |
amount_minor |
int |
required |
settlement_amount |
`str | None` |
external_reference |
`str | None` |
changed_at |
datetime |
required |
payment.canceled
Заголовок раздела «payment.canceled»Payload model: PaymentCanceledPayload
Emitters: backend/bot/app/web/webapp/billing.py, backend/bot/payment_providers/shared/webhooks.py, backend/bot/payment_providers/yookassa.py, backend/bot/services/yookassa_reconciliation_worker.py, backend/main_worker.py
Core reactions: CoreEventReactions.on_payment_canceled
| Field | Type | Default |
|---|---|---|
user_id |
int |
required |
payment_db_id |
`int | None` |
provider |
`str | None` |
provider_payment_id |
`str | None` |
status |
`str | None` |
message_key |
`str | None` |
cancellation_party |
`str | None` |
cancellation_reason |
`str | None` |
auto_renew_cycle_id |
`int | None` |
auto_renew_retry_scheduled |
bool |
False |
retry_at |
`datetime | None` |
payment.succeeded
Заголовок раздела «payment.succeeded»Payload model: PaymentSucceededPayload
Emitters: backend/bot/infra/payment_events.py, backend/bot/payment_providers/shared/success.py, backend/bot/payment_providers/yookassa.py
Core reactions: CoreEventReactions.on_payment_succeeded
| Field | Type | Default |
|---|---|---|
user_id |
int |
required |
payment_db_id |
int |
required |
provider |
str |
required |
notification_provider |
str |
required |
amount |
float |
required |
currency |
str |
required |
sale_mode |
str |
required |
tariff_key |
`str | None` |
months |
`int | None` |
traffic_gb |
`float | None` |
purchased_hwid_devices |
`int | None` |
promo_code_id |
`int | None` |
base_amount |
`float | None` |
discount_amount |
`float | None` |
end_date |
`datetime | None` |
is_auto_renew |
bool |
required |
renewal_subscription_id |
`int | None` |
plans.viewed
Заголовок раздела «plans.viewed»Payload model: PlansViewedPayload
Emitters: backend/bot/app/web/webapp/billing_contracts.py, backend/bot/app/web/webapp/billing_options.py, backend/bot/app/web/webapp/payloads.py, backend/bot/services/behavior_events.py
Core reactions: none
| Field | Type | Default |
|---|---|---|
user_id |
int |
required |
source |
`‘webapp’ | ‘bot’` |
plans_count |
int |
required |
tariff_key |
`str | None` |
promo_code.applied
Заголовок раздела «promo_code.applied»Payload model: PromoCodeAppliedPayload
Emitters: backend/bot/services/promo_code_service.py
Core reactions: CoreEventReactions.on_promo_code_applied
| Field | Type | Default |
|---|---|---|
user_id |
int |
required |
code |
str |
required |
bonus_days |
int |
required |
regular_traffic_gb |
float |
0 |
premium_traffic_gb |
float |
0 |
new_end_date |
`datetime | None` |
referral.bonus_granted
Заголовок раздела «referral.bonus_granted»Payload model: ReferralBonusGrantedPayload
Emitters: backend/bot/app/web/webapp/auth.py, backend/bot/handlers/user/start.py, backend/bot/payment_providers/shared/success.py, backend/bot/payment_providers/yookassa.py, backend/bot/services/referral_service.py
Core reactions: CoreEventReactions.on_referral_bonus_granted
| Field | Type | Default |
|---|---|---|
referee_user_id |
int |
required |
referee_bonus_days |
`int | None` |
referee_new_end_date |
`datetime | None` |
inviter_bonus_applied |
bool |
required |
inviter_user_id |
`int | None` |
inviter_bonus_days |
`int | None` |
inviter_bonus_end_date |
`datetime | None` |
inviter_bonus_kind |
`‘extended’ | ‘new_sub’ |
referee_name |
`str | None` |
payment_db_id |
`int | None` |
purchased_subscription_months |
`int | None` |
tariff_key |
`str | None` |
one_bonus_per_referee |
`bool | None` |
reason |
`‘payment’ | ‘welcome’` |
subscription.auto_renew_failed
Заголовок раздела «subscription.auto_renew_failed»Payload model: SubscriptionAutoRenewFailedPayload
Emitters: backend/bot/payment_providers/shared/webhooks.py, backend/bot/services/subscription_service_impl/renewal.py
Core reactions: none
| Field | Type | Default |
|---|---|---|
user_id |
int |
required |
subscription_id |
int |
required |
provider |
str |
required |
reason_code |
`‘provider_unavailable’ | ‘saved_payment_method_missing’ |
payment_db_id |
`int | None` |
provider_payment_id |
`str | None` |
renewal_cycle_end |
`datetime | None` |
retryable |
bool |
required |
occurred_at |
datetime |
required |
subscription.created
Заголовок раздела «subscription.created»Payload model: SubscriptionCreatedPayload
Emitters: backend/bot/payment_providers/shared/success.py, backend/bot/payment_providers/yookassa.py
Core reactions: none
| Field | Type | Default |
|---|---|---|
user_id |
int |
required |
subscription_id |
`int | None` |
tariff_key |
`str | None` |
end_date |
`datetime | None` |
provider |
`str | None` |
months |
`int | None` |
payment_db_id |
`int | None` |
subscription.expired
Заголовок раздела «subscription.expired»Payload model: SubscriptionExpiredPayload
Emitters: backend/bot/services/subscription_notification_worker.py
Core reactions: none
| Field | Type | Default |
|---|---|---|
user_id |
int |
required |
subscription_id |
`int | None` |
tariff_key |
`str | None` |
end_date |
`datetime | None` |
subscription.extended
Заголовок раздела «subscription.extended»Payload model: SubscriptionExtendedPayload
Emitters: backend/bot/payment_providers/shared/success.py, backend/bot/payment_providers/yookassa.py
Core reactions: none
| Field | Type | Default |
|---|---|---|
user_id |
int |
required |
subscription_id |
`int | None` |
tariff_key |
`str | None` |
end_date |
`datetime | None` |
provider |
`str | None` |
months |
`int | None` |
payment_db_id |
`int | None` |
subscription.lapsed
Заголовок раздела «subscription.lapsed»Payload model: SubscriptionLapsedPayload
Emitters: backend/bot/services/subscription_notification_worker.py
Core reactions: none
| Field | Type | Default |
|---|---|---|
user_id |
int |
required |
subscription_id |
`int | None` |
tariff_key |
`str | None` |
end_date |
`datetime | None` |
support.ticket_created
Заголовок раздела «support.ticket_created»Payload model: SupportTicketCreatedPayload
Emitters: backend/bot/services/support_service.py
Core reactions: none
| Field | Type | Default |
|---|---|---|
user_id |
int |
required |
ticket_id |
int |
required |
category |
str |
required |
priority |
str |
required |
trial.activated
Заголовок раздела «trial.activated»Payload model: TrialActivatedPayload
Emitters: backend/bot/services/subscription_service_impl/trial.py
Core reactions: CoreEventReactions.on_trial_activated
| Field | Type | Default |
|---|---|---|
user_id |
int |
required |
end_date |
`datetime | None` |
days |
int |
required |
traffic_gb |
`float | None` |
user.registered
Заголовок раздела «user.registered»Payload model: UserRegisteredPayload
Emitters: backend/db/dal/user_dal.py
Core reactions: CoreEventReactions.on_user_registered
| Field | Type | Default |
|---|---|---|
user_id |
int |
required |
telegram_id |
`int | None` |
username |
`str | None` |
first_name |
`str | None` |
email |
`str | None` |
language |
`str | None` |
referred_by_id |
`int | None` |
registered_via |
`‘telegram’ | ‘email’ |