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

Каталог доменных событий

Файл сгенерирован из bot.infra.event_payloads; не редактируйте его вручную. Для обновления выполните PYTHONPATH=backend python -m bot.infra.event_catalog.

Подписчики по-прежнему получают данные в формате (event_name, dict). Модели ниже описывают плоский, совместимый с JSON словарь, который публикует код Core.

Модель данных события: AccountEmailLinkedPayload

Источники события: backend/bot/app/web/webapp/account.py

Реакции Core: CoreEventReactions.on_account_email_linked

Поле Тип Значение по умолчанию
user_id int обязательно
email str обязательно
first_link bool обязательно
telegram_id `int None`
username `str None`
first_name `str None`

Модель данных события: AccountExternalIdentityLinkedPayload

Источники события: backend/bot/app/web/webapp/external_oauth.py

Реакции Core: CoreEventReactions.on_account_external_identity_linked

Поле Тип Значение по умолчанию
user_id int обязательно
provider `‘discord’ ‘google’
link_source `‘settings’ ‘email_confirmation’
email `str None`
telegram_id `int None`
username `str None`
first_name `str None`

Модель данных события: AccountMergedPayload

Источники события: backend/db/dal/user_merge_dal.py

Реакции Core: CoreEventReactions.on_account_merged

Поле Тип Значение по умолчанию
source_user_id int обязательно
target_user_id int обязательно
reason str обязательно
send_user_email bool обязательно
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`

Модель данных события: AccountTelegramLinkedPayload

Источники события: backend/bot/app/web/webapp/account.py

Реакции Core: CoreEventReactions.on_account_telegram_linked

Поле Тип Значение по умолчанию
user_id int обязательно
telegram_id `int None`
first_link bool обязательно
email `str None`
username `str None`
first_name `str None`

Модель данных события: BotStartedPayload

Источники события: backend/bot/services/behavior_events.py

Реакции Core: нет

Поле Тип Значение по умолчанию
user_id int обязательно
returning bool обязательно
source `‘direct’ ‘referral’
start_param `str None`

Модель данных события: DeviceConnectedPayload

Источники события: backend/bot/services/hwid_device_notifications.py

Реакции Core: нет

Поле Тип Значение по умолчанию
user_id int обязательно
subscription_id int обязательно
panel_user_uuid `str None`
device_label str обязательно
platform `str None`
os_version `str None`
current_devices `int None`
device_limit `int None`
occurred_at datetime обязательно

Модель данных события: DeviceLimitReachedPayload

Источники события: backend/bot/services/hwid_device_notifications.py

Реакции Core: нет

Поле Тип Значение по умолчанию
user_id int обязательно
subscription_id int обязательно
tariff_key `str None`
current_devices int обязательно
device_limit int обязательно
device_topup_available bool обязательно
occurred_at datetime обязательно

Модель данных события: PanelWebhookReceivedPayload

Источники события: backend/bot/services/panel_webhook_service.py

Реакции Core: нет

Поле Тип Значение по умолчанию
event str обязательно
panel_user_uuid `str None`
telegram_id `int str

Модель данных события: PartnerApplicationDecidedPayload

Источники события: backend/bot/services/partner_program_service.py

Реакции Core: CoreEventReactions.on_partner_application_decided

Поле Тип Значение по умолчанию
application_id int обязательно
partner_id `int None`
user_id `int None`
status str обязательно
decided_at datetime обязательно

Модель данных события: PartnerApplicationSubmittedPayload

Источники события: backend/bot/services/partner_program_service.py

Реакции Core: CoreEventReactions.on_partner_application_submitted

Поле Тип Значение по умолчанию
application_id int обязательно
user_id int обязательно
status str обязательно
submitted_at datetime обязательно

Модель данных события: PartnerBalanceAdjustedPayload

Источники события: backend/bot/services/partner_commission_service.py

Реакции Core: нет

Поле Тип Значение по умолчанию
partner_id int обязательно
currency str обязательно
amount_minor int обязательно
balance_minor int обязательно
adjusted_at datetime обязательно

Модель данных события: PartnerBalanceSpentPayload

Источники события: backend/bot/services/partner_checkout_balance.py, backend/bot/services/partner_commission_service.py

Реакции Core: нет

Поле Тип Значение по умолчанию
partner_id int обязательно
payment_db_id int обязательно
currency str обязательно
amount_minor int обязательно
spent_at datetime обязательно

Модель данных события: PartnerClientAttributedPayload

Источники события: backend/bot/services/partner_program_service.py

Реакции Core: нет

Поле Тип Значение по умолчанию
partner_id int обязательно
partner_client_id int обязательно
client_user_id int обязательно
source str обязательно
attributed_at datetime обязательно

Модель данных события: PartnerCommissionAvailablePayload

Источники события: backend/bot/services/partner_commission_service.py

Реакции Core: нет

Поле Тип Значение по умолчанию
partner_id int обязательно
commission_id int обязательно
currency str обязательно
commission_amount_minor int обязательно
available_at datetime обязательно

Модель данных события: PartnerCommissionRecordedPayload

Источники события: backend/bot/services/partner_commission_service.py

Реакции Core: нет

Поле Тип Значение по умолчанию
partner_id int обязательно
commission_id int обязательно
payment_db_id int обязательно
status str обязательно
currency str обязательно
gross_amount_minor int обязательно
commission_amount_minor int обязательно
available_at datetime обязательно

Модель данных события: PartnerCommissionReversedPayload

Источники события: backend/bot/services/partner_commission_service.py

Реакции Core: нет

Поле Тип Значение по умолчанию
partner_id int обязательно
commission_id int обязательно
payment_db_id `int None`
currency str обязательно
commission_amount_minor int обязательно
reversed_at datetime обязательно

Модель данных события: PartnerStatusChangedPayload

Источники события: backend/bot/services/partner_program_service.py

Реакции Core: CoreEventReactions.on_partner_status_changed

Поле Тип Значение по умолчанию
partner_id int обязательно
user_id `int None`
old_status str обязательно
status str обязательно
changed_at datetime обязательно

Модель данных события: PartnerWithdrawalRequestedPayload

Источники события: backend/bot/services/partner_withdrawal_service.py

Реакции Core: CoreEventReactions.on_partner_withdrawal_requested

Поле Тип Значение по умолчанию
partner_id int обязательно
user_id int обязательно
withdrawal_id int обязательно
status str обязательно
currency str обязательно
currency_scale int обязательно
amount_minor int обязательно
requested_at datetime обязательно

Модель данных события: PartnerWithdrawalStatusChangedPayload

Источники события: backend/bot/services/partner_withdrawal_service.py

Реакции Core: CoreEventReactions.on_partner_withdrawal_status_changed

Поле Тип Значение по умолчанию
partner_id int обязательно
user_id `int None`
withdrawal_id int обязательно
old_status str обязательно
status str обязательно
status_version int обязательно
currency str обязательно
currency_scale int обязательно
amount_minor int обязательно
settlement_amount `str None`
external_reference `str None`
changed_at datetime обязательно

Модель данных события: PaymentCanceledPayload

Источники события: 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: CoreEventReactions.on_payment_canceled

Поле Тип Значение по умолчанию
user_id int обязательно
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`

Модель данных события: PaymentSucceededPayload

Источники события: backend/bot/app/web/admin_api_impl/gift_creation.py, backend/bot/infra/payment_events.py, backend/bot/payment_providers/shared/gift_success.py, backend/bot/payment_providers/shared/success.py, backend/bot/payment_providers/yookassa.py

Реакции Core: CoreEventReactions.on_payment_succeeded

Поле Тип Значение по умолчанию
user_id int обязательно
payment_db_id int обязательно
provider str обязательно
notification_provider str обязательно
amount float обязательно
currency str обязательно
sale_mode str обязательно
tariff_key `str None`
months `int None`
duration_days `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 обязательно
renewal_subscription_id `int None`

Модель данных события: PlansViewedPayload

Источники события: 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: нет

Поле Тип Значение по умолчанию
user_id int обязательно
source `‘webapp’ ‘bot’`
plans_count int обязательно
tariff_key `str None`

Модель данных события: PromoCodeAppliedPayload

Источники события: backend/bot/services/promo_code_service.py

Реакции Core: CoreEventReactions.on_promo_code_applied

Поле Тип Значение по умолчанию
user_id int обязательно
code str обязательно
bonus_days int обязательно
regular_traffic_gb float 0
premium_traffic_gb float 0
new_end_date `datetime None`

Модель данных события: ReferralBonusGrantedPayload

Источники события: 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: CoreEventReactions.on_referral_bonus_granted

Поле Тип Значение по умолчанию
referee_user_id int обязательно
referee_bonus_days `int None`
referee_new_end_date `datetime None`
inviter_bonus_applied bool обязательно
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`
purchased_subscription_days `int None`
tariff_key `str None`
one_bonus_per_referee `bool None`
reason `‘payment’ ‘welcome’`

Модель данных события: SubscriptionAutoRenewFailedPayload

Источники события: backend/bot/payment_providers/shared/webhooks.py, backend/bot/services/subscription_service_impl/renewal.py

Реакции Core: нет

Поле Тип Значение по умолчанию
user_id int обязательно
subscription_id int обязательно
provider str обязательно
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 обязательно
occurred_at datetime обязательно

Модель данных события: SubscriptionCreatedPayload

Источники события: backend/bot/payment_providers/shared/success.py, backend/bot/payment_providers/yookassa.py

Реакции Core: нет

Поле Тип Значение по умолчанию
user_id int обязательно
subscription_id `int None`
tariff_key `str None`
end_date `datetime None`
provider `str None`
months `int None`
duration_days `int None`
payment_db_id `int None`

Модель данных события: SubscriptionExpiredPayload

Источники события: backend/bot/services/subscription_notification_worker.py

Реакции Core: нет

Поле Тип Значение по умолчанию
user_id int обязательно
subscription_id `int None`
tariff_key `str None`
end_date `datetime None`

Модель данных события: SubscriptionExtendedPayload

Источники события: backend/bot/payment_providers/shared/success.py, backend/bot/payment_providers/yookassa.py

Реакции Core: нет

Поле Тип Значение по умолчанию
user_id int обязательно
subscription_id `int None`
tariff_key `str None`
end_date `datetime None`
provider `str None`
months `int None`
duration_days `int None`
payment_db_id `int None`

Модель данных события: SubscriptionLapsedPayload

Источники события: backend/bot/services/subscription_notification_worker.py

Реакции Core: нет

Поле Тип Значение по умолчанию
user_id int обязательно
subscription_id `int None`
tariff_key `str None`
end_date `datetime None`

Модель данных события: SupportTicketCreatedPayload

Источники события: backend/bot/services/support_service.py

Реакции Core: нет

Поле Тип Значение по умолчанию
user_id int обязательно
ticket_id int обязательно
category str обязательно
priority str обязательно

Модель данных события: TrialActivatedPayload

Источники события: backend/bot/payment_providers/shared/success.py, backend/bot/services/subscription_service_impl/trial.py

Реакции Core: CoreEventReactions.on_trial_activated

Поле Тип Значение по умолчанию
user_id int обязательно
end_date `datetime None`
days int обязательно
traffic_gb `float None`

Модель данных события: UserRegisteredPayload

Источники события: backend/bot/app/web/webapp/external_oauth.py, backend/db/dal/user_dal.py

Реакции Core: CoreEventReactions.on_user_registered

Поле Тип Значение по умолчанию
user_id int обязательно
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’