Каталог доменных событий
Файл сгенерирован из bot.infra.event_payloads; не редактируйте его вручную.
Для обновления выполните PYTHONPATH=backend python -m bot.infra.event_catalog.
Подписчики по-прежнему получают данные в формате (event_name, dict). Модели ниже описывают плоский, совместимый с JSON словарь, который публикует код Core.
На этой странице
Заголовок раздела «На этой странице»- account.email_linked
- account.external_identity_linked
- account.merged
- account.telegram_linked
- bot.started
- device.connected
- device.limit_reached
- panel.webhook_received
- partner.application_decided
- partner.application_submitted
- partner.balance_adjusted
- partner.balance_spent
- partner.client_attributed
- partner.commission_available
- partner.commission_recorded
- partner.commission_reversed
- partner.status_changed
- partner.withdrawal_requested
- partner.withdrawal_status_changed
- payment.canceled
- payment.succeeded
- plans.viewed
- promo_code.applied
- referral.bonus_granted
- subscription.auto_renew_failed
- subscription.created
- subscription.expired
- subscription.extended
- subscription.lapsed
- support.ticket_created
- trial.activated
- user.registered
account.email_linked
Заголовок раздела «account.email_linked»Модель данных события: 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` |
account.external_identity_linked
Заголовок раздела «account.external_identity_linked»Модель данных события: 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` |
account.merged
Заголовок раздела «account.merged»Модель данных события: 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` |
account.telegram_linked
Заголовок раздела «account.telegram_linked»Модель данных события: 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` |
bot.started
Заголовок раздела «bot.started»Модель данных события: BotStartedPayload
Источники события: backend/bot/services/behavior_events.py
Реакции Core: нет
| Поле | Тип | Значение по умолчанию |
|---|---|---|
user_id |
int |
обязательно |
returning |
bool |
обязательно |
source |
`‘direct’ | ‘referral’ |
start_param |
`str | None` |
device.connected
Заголовок раздела «device.connected»Модель данных события: 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 |
обязательно |
device.limit_reached
Заголовок раздела «device.limit_reached»Модель данных события: 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 |
обязательно |
panel.webhook_received
Заголовок раздела «panel.webhook_received»Модель данных события: PanelWebhookReceivedPayload
Источники события: backend/bot/services/panel_webhook_service.py
Реакции Core: нет
| Поле | Тип | Значение по умолчанию |
|---|---|---|
event |
str |
обязательно |
panel_user_uuid |
`str | None` |
telegram_id |
`int | str |
partner.application_decided
Заголовок раздела «partner.application_decided»Модель данных события: 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 |
обязательно |
partner.application_submitted
Заголовок раздела «partner.application_submitted»Модель данных события: 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 |
обязательно |
partner.balance_adjusted
Заголовок раздела «partner.balance_adjusted»Модель данных события: PartnerBalanceAdjustedPayload
Источники события: backend/bot/services/partner_commission_service.py
Реакции Core: нет
| Поле | Тип | Значение по умолчанию |
|---|---|---|
partner_id |
int |
обязательно |
currency |
str |
обязательно |
amount_minor |
int |
обязательно |
balance_minor |
int |
обязательно |
adjusted_at |
datetime |
обязательно |
partner.balance_spent
Заголовок раздела «partner.balance_spent»Модель данных события: 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 |
обязательно |
partner.client_attributed
Заголовок раздела «partner.client_attributed»Модель данных события: 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 |
обязательно |
partner.commission_available
Заголовок раздела «partner.commission_available»Модель данных события: PartnerCommissionAvailablePayload
Источники события: backend/bot/services/partner_commission_service.py
Реакции Core: нет
| Поле | Тип | Значение по умолчанию |
|---|---|---|
partner_id |
int |
обязательно |
commission_id |
int |
обязательно |
currency |
str |
обязательно |
commission_amount_minor |
int |
обязательно |
available_at |
datetime |
обязательно |
partner.commission_recorded
Заголовок раздела «partner.commission_recorded»Модель данных события: 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 |
обязательно |
partner.commission_reversed
Заголовок раздела «partner.commission_reversed»Модель данных события: 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 |
обязательно |
partner.status_changed
Заголовок раздела «partner.status_changed»Модель данных события: 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 |
обязательно |
partner.withdrawal_requested
Заголовок раздела «partner.withdrawal_requested»Модель данных события: 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 |
обязательно |
partner.withdrawal_status_changed
Заголовок раздела «partner.withdrawal_status_changed»Модель данных события: 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 |
обязательно |
payment.canceled
Заголовок раздела «payment.canceled»Модель данных события: 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` |
payment.succeeded
Заголовок раздела «payment.succeeded»Модель данных события: 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` |
plans.viewed
Заголовок раздела «plans.viewed»Модель данных события: 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` |
promo_code.applied
Заголовок раздела «promo_code.applied»Модель данных события: 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` |
referral.bonus_granted
Заголовок раздела «referral.bonus_granted»Модель данных события: 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’` |
subscription.auto_renew_failed
Заголовок раздела «subscription.auto_renew_failed»Модель данных события: 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 |
обязательно |
subscription.created
Заголовок раздела «subscription.created»Модель данных события: 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` |
subscription.expired
Заголовок раздела «subscription.expired»Модель данных события: SubscriptionExpiredPayload
Источники события: backend/bot/services/subscription_notification_worker.py
Реакции Core: нет
| Поле | Тип | Значение по умолчанию |
|---|---|---|
user_id |
int |
обязательно |
subscription_id |
`int | None` |
tariff_key |
`str | None` |
end_date |
`datetime | None` |
subscription.extended
Заголовок раздела «subscription.extended»Модель данных события: 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` |
subscription.lapsed
Заголовок раздела «subscription.lapsed»Модель данных события: SubscriptionLapsedPayload
Источники события: backend/bot/services/subscription_notification_worker.py
Реакции Core: нет
| Поле | Тип | Значение по умолчанию |
|---|---|---|
user_id |
int |
обязательно |
subscription_id |
`int | None` |
tariff_key |
`str | None` |
end_date |
`datetime | None` |
support.ticket_created
Заголовок раздела «support.ticket_created»Модель данных события: SupportTicketCreatedPayload
Источники события: backend/bot/services/support_service.py
Реакции Core: нет
| Поле | Тип | Значение по умолчанию |
|---|---|---|
user_id |
int |
обязательно |
ticket_id |
int |
обязательно |
category |
str |
обязательно |
priority |
str |
обязательно |
trial.activated
Заголовок раздела «trial.activated»Модель данных события: 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` |
user.registered
Заголовок раздела «user.registered»Модель данных события: 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’ |