syntax = "v1" info ( title: "User API" desc: "API for ppanel" author: "Tension" email: "tension@ppanel.com" version: "0.0.1" ) import "../types.api" type ( UpdateUserNotifyRequest { EnableBalanceNotify *bool `json:"enable_balance_notify"` EnableLoginNotify *bool `json:"enable_login_notify"` EnableSubscribeNotify *bool `json:"enable_subscribe_notify"` EnableTradeNotify *bool `json:"enable_trade_notify"` } UpdateUserPasswordRequest { Password string `json:"password" validate:"required"` } QueryUserSubscribeListResponse { List []UserSubscribe `json:"list"` Total int64 `json:"total"` } QueryUserBalanceLogListResponse { List []BalanceLog `json:"list"` Total int64 `json:"total"` } QueryUserCommissionLogListRequest { Page int `form:"page"` Size int `form:"size"` } QueryUserCommissionLogListResponse { List []CommissionLog `json:"list"` Total int64 `json:"total"` } BindTelegramResponse { Url string `json:"url"` ExpiredAt int64 `json:"expired_at"` } PreUnsubscribeRequest { Id int64 `json:"id"` } PreUnsubscribeResponse { DeductionAmount int64 `json:"deduction_amount"` } UnsubscribeRequest { Id int64 `json:"id"` } BindOAuthRequest { Method string `json:"method"` Redirect string `json:"redirect"` } BindOAuthResponse { Redirect string `json:"redirect"` } BindOAuthCallbackRequest { Method string `json:"method"` Callback interface{} `json:"callback"` } GetOAuthMethodsResponse { Methods []UserAuthMethod `json:"methods"` } UnbindOAuthRequest { Method string `json:"method"` } ResetUserSubscribeTokenRequest { UserSubscribeId int64 `json:"user_subscribe_id"` } GetLoginLogRequest { Page int `form:"page"` Size int `form:"size"` } GetLoginLogResponse { List []UserLoginLog `json:"list"` Total int64 `json:"total"` } GetSubscribeLogRequest { Page int `form:"page"` Size int `form:"size"` } GetSubscribeLogResponse { List []UserSubscribeLog `json:"list"` Total int64 `json:"total"` } UpdateBindMobileRequest { AreaCode string `json:"area_code" validate:"required"` Mobile string `json:"mobile" validate:"required"` Code string `json:"code" validate:"required"` } UpdateBindEmailRequest { Email string `json:"email" validate:"required"` } VerifyEmailRequest { Email string `json:"email" validate:"required"` Code string `json:"code" validate:"required"` } BindEmailWithVerificationRequest { Email string `json:"email" validate:"required"` Code string `json:"code" validate:"required"` } BindEmailWithVerificationResponse { Success bool `json:"success"` Message string `json:"message,omitempty"` Token string `json:"token,omitempty"` // 设备关联后的新Token UserId int64 `json:"user_id,omitempty"` // 目标用户ID } GetDeviceListResponse { List []UserDevice `json:"list"` Total int64 `json:"total"` } UnbindDeviceRequest { Id int64 `json:"id" validate:"required"` } GetSubscribeStatusResponse { DeviceStatus bool `json:"device_status"` EmailStatus bool `json:"email_status"` } // GetAgentRealtimeRequest - 获取代理链接实时数据 GetAgentRealtimeRequest {} // GetAgentRealtimeResponse - 代理链接实时数据响应 GetAgentRealtimeResponse { Total int64 `json:"total"` // 访问总人数 Clicks int64 `json:"clicks"` // 点击量 Views int64 `json:"views"` // 浏览量 PaidCount int64 `json:"paid_count"` // 付费数量 GrowthRate string `json:"growth_rate"` // 访问量环比增长率(例如:"+10.5%"、"-5.2%"、"0%") PaidGrowthRate string `json:"paid_growth_rate"` // 付费用户环比增长率(例如:"+20.0%"、"-10.0%"、"0%") } // GetUserInviteStatsRequest - 获取用户邀请统计 GetUserInviteStatsRequest {} // GetUserInviteStatsResponse - 用户邀请统计响应 GetUserInviteStatsResponse { FriendlyCount int64 `json:"friendly_count"` // 有效邀请数(有订单的用户) HistoryCount int64 `json:"history_count"` // 历史邀请总数 } // GetInviteSalesRequest - 获取最近销售数据 GetInviteSalesRequest { Page int `form:"page" validate:"required"` Size int `form:"size" validate:"required"` } // GetInviteSalesResponse - 最近销售数据响应 GetInviteSalesResponse { Total int64 `json:"total"` // 销售记录总数 List []InvitedUserSale `json:"list"` // 销售数据列表(分页) } // InvitedUserSale - 被邀请用户的销售记录 InvitedUserSale { Amount float64 `json:"amount"` CreatedAt int64 `json:"created_at"` UserHash string `json:"user_hash"` ProductName string `json:"product_name"` } // GetAgentDownloadsRequest - 获取各端下载量 GetAgentDownloadsRequest {} // GetAgentDownloadsResponse - 各端下载量响应 GetAgentDownloadsResponse { List []AgentDownloadStats `json:"list"` } // AgentDownloadStats - 各端下载量统计 AgentDownloadStats { Platform string `json:"platform"` Clicks int64 `json:"clicks"` Visits int64 `json:"visits"` } ) @server ( prefix: v1/public/user group: public/user middleware: AuthMiddleware,DeviceMiddleware ) service ppanel { @doc "Query User Info" @handler QueryUserInfo get /info returns (User) @doc "Update User Notify" @handler UpdateUserNotify put /notify (UpdateUserNotifyRequest) @doc "Update User Password" @handler UpdateUserPassword put /password (UpdateUserPasswordRequest) @doc "Query User Subscribe" @handler QueryUserSubscribe get /subscribe returns (QueryUserSubscribeListResponse) @doc "Pre Unsubscribe" @handler PreUnsubscribe post /unsubscribe/pre (PreUnsubscribeRequest) returns (PreUnsubscribeResponse) @doc "Unsubscribe" @handler Unsubscribe post /unsubscribe (UnsubscribeRequest) @doc "Query User Balance Log" @handler QueryUserBalanceLog get /balance_log returns (QueryUserBalanceLogListResponse) @doc "Query User Affiliate Count" @handler QueryUserAffiliate get /affiliate/count returns (QueryUserAffiliateCountResponse) @doc "Query User Affiliate List" @handler QueryUserAffiliateList get /affiliate/list (QueryUserAffiliateListRequest) returns (QueryUserAffiliateListResponse) @doc "Bind Telegram" @handler BindTelegram get /bind_telegram returns (BindTelegramResponse) @doc "Unbind Telegram" @handler UnbindTelegram post /unbind_telegram @doc "Query User Commission Log" @handler QueryUserCommissionLog get /commission_log (QueryUserCommissionLogListRequest) returns (QueryUserCommissionLogListResponse) @doc "Bind OAuth" @handler BindOAuth post /bind_oauth (BindOAuthRequest) returns (BindOAuthResponse) @doc "Bind OAuth Callback" @handler BindOAuthCallback post /bind_oauth/callback (BindOAuthCallbackRequest) @doc "Get OAuth Methods" @handler GetOAuthMethods get /oauth_methods returns (GetOAuthMethodsResponse) @doc "Unbind OAuth" @handler UnbindOAuth post /unbind_oauth (UnbindOAuthRequest) @doc "Reset User Subscribe Token" @handler ResetUserSubscribeToken put /subscribe_token (ResetUserSubscribeTokenRequest) @doc "Get Login Log" @handler GetLoginLog get /login_log (GetLoginLogRequest) returns (GetLoginLogResponse) @doc "Get Subscribe Log" @handler GetSubscribeLog get /subscribe_log (GetSubscribeLogRequest) returns (GetSubscribeLogResponse) @doc "Get Subscribe Status (device/email)" @handler GetSubscribeStatus get /subscribe_status returns (GetSubscribeStatusResponse) @doc "Verify Email" @handler VerifyEmail post /verify_email (VerifyEmailRequest) @doc "Update Bind Mobile" @handler UpdateBindMobile put /bind_mobile (UpdateBindMobileRequest) @doc "Update Bind Email" @handler UpdateBindEmail put /bind_email (UpdateBindEmailRequest) @doc "Get Device List" @handler GetDeviceList get /devices returns (GetDeviceListResponse) @doc "Unbind Device" @handler UnbindDevice put /unbind_device (UnbindDeviceRequest) @doc "Get agent realtime data" @handler GetAgentRealtime get /agent/realtime (GetAgentRealtimeRequest) returns (GetAgentRealtimeResponse) @doc "Get user invite statistics" @handler GetUserInviteStats get /invite/stats (GetUserInviteStatsRequest) returns (GetUserInviteStatsResponse) @doc "Get invite sales data" @handler GetInviteSales get /invite/sales (GetInviteSalesRequest) returns (GetInviteSalesResponse) @doc "Get agent downloads data" @handler GetAgentDownloads get /agent/downloads (GetAgentDownloadsRequest) returns (GetAgentDownloadsResponse) }