Перейти к содержимому

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.

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`

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`

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`

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`

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

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`

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

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`

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
new_end_date `datetime None`

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’`

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`

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`

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`

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`

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

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`

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’