diff --git a/.env.example b/.env.example index 7399d34c..2975b672 100644 --- a/.env.example +++ b/.env.example @@ -2,3 +2,9 @@ PANEL_URL=https://your-panel.com PANEL_TOKEN=your_node_key NODE_ID=1 NODE_TYPE=v2ray + +# Separate URLs/IDs (Optional) +# CONFIG_PANEL_URL=https://config-panel.com +# CONFIG_NODE_ID=151 +# USER_PANEL_URL=https://user-panel.com +# USER_NODE_ID=140 diff --git a/api.md b/api.md new file mode 100644 index 00000000..50167aaa --- /dev/null +++ b/api.md @@ -0,0 +1,955 @@ +I made it with AI, but it seems great so far +# Xboard API Documentation + +This document provides a comprehensive overview of all API endpoints available in the Xboard system, organized by access level. + +## API Base URLs + +- **V1 API**: `/api/v1/` +- **V2 API**: `/api/v2/` + +## Authentication + +- **Guest**: No authentication required +- **User**: Requires user authentication (`user` middleware) +- **Staff**: Requires staff privileges (`staff` middleware) +- **Admin**: Requires admin privileges (`admin` middleware) +- **Client**: Requires client authentication (`client` middleware) +- **Server**: Requires server authentication (`server` middleware) + +--- + +## 🌐 Guest APIs (Public - No Authentication Required) + +### Plans +- **GET** `/api/v1/guest/plan/fetch` + - **Purpose**: Get all available subscription plans for public viewing + - **Returns**: List of available plans with pricing, features, and limits + - **Data**: Plan ID, name, prices (monthly/quarterly/yearly), transfer limits, speed limits, device limits, capacity info + +### Configuration +- **GET** `/api/v1/guest/comm/config` + - **Purpose**: Get public configuration settings + - **Returns**: Public app configuration + - **Data**: ToS URL, email verification settings, invite requirements, reCAPTCHA settings, app description, app URL, logo + +### Payment Webhooks +- **GET/POST** `/api/v1/guest/payment/notify/{method}/{uuid}` + - **Purpose**: Handle payment notifications from payment providers + - **Returns**: Payment processing status + - **Data**: Payment confirmation and processing results + +### Telegram Webhooks +- **POST** `/api/v1/guest/telegram/webhook` + - **Purpose**: Handle Telegram bot webhook events + - **Returns**: Webhook processing status + - **Data**: Telegram bot event processing results + +--- + +## 🔐 Authentication APIs (Passport) + +### V1 Authentication +- **POST** `/api/v1/passport/auth/register` + - **Purpose**: User registration + - **Returns**: Registration success/failure + - **Data**: User account creation status + +- **POST** `/api/v1/passport/auth/login` + - **Purpose**: User login + - **Returns**: Authentication token and user info + - **Data**: JWT token, user details, session info + +- **GET** `/api/v1/passport/auth/token2Login` + - **Purpose**: Token-based login + - **Returns**: Login status + - **Data**: Authentication status + +- **POST** `/api/v1/passport/auth/forget` + - **Purpose**: Password reset request + - **Returns**: Reset email status + - **Data**: Password reset confirmation + +- **POST** `/api/v1/passport/auth/getQuickLoginUrl` + - **Purpose**: Generate quick login URL + - **Returns**: Quick login URL + - **Data**: Temporary login URL + +- **POST** `/api/v1/passport/auth/loginWithMailLink` + - **Purpose**: Login via email link + - **Returns**: Login status + - **Data**: Authentication confirmation + +### Communication +- **POST** `/api/v1/passport/comm/sendEmailVerify` + - **Purpose**: Send email verification + - **Returns**: Email sending status + - **Data**: Verification email delivery confirmation + +- **POST** `/api/v1/passport/comm/pv` + - **Purpose**: Page view tracking + - **Returns**: Tracking status + - **Data**: Analytics tracking confirmation + +### V2 Authentication +Same endpoints as V1 but under `/api/v2/passport/` prefix. + +--- + +## 👤 User APIs (Authenticated Users) + +### User Management +- **GET** `/api/v1/user/info` + - **Purpose**: Get current user information + - **Returns**: User profile data + - **Data**: Email, transfer limits, login history, subscription status, balance, commission info, telegram ID, avatar URL + +- **POST** `/api/v1/user/update` + - **Purpose**: Update user preferences + - **Returns**: Update status + - **Data**: Updated user preferences (reminders, etc.) + +- **POST** `/api/v1/user/changePassword` + - **Purpose**: Change user password + - **Returns**: Password change status + - **Data**: Password update confirmation + +- **GET** `/api/v1/user/resetSecurity` + - **Purpose**: Reset security credentials (UUID, token) + - **Returns**: New subscribe URL + - **Data**: New subscription URL with updated token + +- **GET** `/api/v1/user/checkLogin` + - **Purpose**: Check login status + - **Returns**: Login status and permissions + - **Data**: Login status, admin privileges + +- **GET** `/api/v1/user/getStat` + - **Purpose**: Get user statistics + - **Returns**: User statistics summary + - **Data**: Pending orders count, open tickets count, invited users count + +- **GET** `/api/v1/user/getSubscribe` + - **Purpose**: Get subscription information + - **Returns**: Subscription details and URL + - **Data**: Plan details, subscription URL, usage stats, reset schedule + +- **POST** `/api/v1/user/transfer` + - **Purpose**: Transfer commission to balance + - **Returns**: Transfer status + - **Data**: Transfer confirmation and updated balances + +- **POST** `/api/v1/user/getQuickLoginUrl` + - **Purpose**: Generate quick login URL + - **Returns**: Quick login URL + - **Data**: Temporary login URL + +### Session Management +- **GET** `/api/v1/user/getActiveSession` + - **Purpose**: Get active sessions + - **Returns**: List of active sessions + - **Data**: Session details, login times, IP addresses + +- **POST** `/api/v1/user/removeActiveSession` + - **Purpose**: Remove specific session + - **Returns**: Session removal status + - **Data**: Session termination confirmation + +### Orders & Billing +- **POST** `/api/v1/user/order/save` + - **Purpose**: Create new order + - **Returns**: Order creation status + - **Data**: Order details, payment information + +- **POST** `/api/v1/user/order/checkout` + - **Purpose**: Checkout order + - **Returns**: Payment processing info + - **Data**: Payment URL, order status + +- **GET** `/api/v1/user/order/check` + - **Purpose**: Check order status + - **Returns**: Order status + - **Data**: Order processing status + +- **GET** `/api/v1/user/order/detail` + - **Purpose**: Get order details + - **Returns**: Detailed order information + - **Data**: Order items, pricing, status, payment info + +- **GET** `/api/v1/user/order/fetch` + - **Purpose**: Get user's orders + - **Returns**: List of user orders + - **Data**: Order history with status and details + +- **GET** `/api/v1/user/order/getPaymentMethod` + - **Purpose**: Get available payment methods + - **Returns**: List of payment options + - **Data**: Payment providers, fees, availability + +- **POST** `/api/v1/user/order/cancel` + - **Purpose**: Cancel order + - **Returns**: Cancellation status + - **Data**: Order cancellation confirmation + +### Plans +- **GET** `/api/v1/user/plan/fetch` + - **Purpose**: Get available plans for authenticated user + - **Returns**: List of plans with user-specific availability + - **Data**: Plans with pricing, user eligibility, renewal options + +### Invitations +- **GET** `/api/v1/user/invite/save` + - **Purpose**: Generate invitation code + - **Returns**: Invitation code + - **Data**: Invitation code and sharing info + +- **GET** `/api/v1/user/invite/fetch` + - **Purpose**: Get invitation statistics + - **Returns**: Invitation data + - **Data**: Invitation codes, usage stats, commissions + +- **GET** `/api/v1/user/invite/details` + - **Purpose**: Get detailed invitation information + - **Returns**: Invitation details + - **Data**: Detailed invitation statistics and earnings + +### Support & Communication +- **GET** `/api/v1/user/notice/fetch` + - **Purpose**: Get user notices + - **Returns**: List of notices + - **Data**: System announcements, updates, alerts + +- **POST** `/api/v1/user/ticket/save` + - **Purpose**: Create support ticket + - **Returns**: Ticket creation status + - **Data**: Ticket ID and details + +- **GET** `/api/v1/user/ticket/fetch` + - **Purpose**: Get user's tickets + - **Returns**: List of support tickets + - **Data**: Ticket history, status, responses + +- **POST** `/api/v1/user/ticket/reply` + - **Purpose**: Reply to ticket + - **Returns**: Reply status + - **Data**: Reply confirmation + +- **POST** `/api/v1/user/ticket/close` + - **Purpose**: Close ticket + - **Returns**: Closure status + - **Data**: Ticket closure confirmation + +- **POST** `/api/v1/user/ticket/withdraw` + - **Purpose**: Withdraw ticket + - **Returns**: Withdrawal status + - **Data**: Ticket withdrawal confirmation + +### Servers +- **GET** `/api/v1/user/server/fetch` + - **Purpose**: Get available servers + - **Returns**: List of servers user can access + - **Data**: Server details, locations, status, protocols + +### Coupons +- **POST** `/api/v1/user/coupon/check` + - **Purpose**: Validate coupon code + - **Returns**: Coupon validity and discount info + - **Data**: Coupon details, discount amount, validity + +### Telegram Integration +- **GET** `/api/v1/user/telegram/getBotInfo` + - **Purpose**: Get Telegram bot information + - **Returns**: Bot connection info + - **Data**: Bot details, connection status + +### Configuration +- **GET** `/api/v1/user/comm/config` + - **Purpose**: Get user-specific configuration + - **Returns**: User configuration settings + - **Data**: User preferences, feature availability + +- **POST** `/api/v1/user/comm/getStripePublicKey` + - **Purpose**: Get Stripe public key for payments + - **Returns**: Stripe configuration + - **Data**: Stripe public key for payment processing + +### Knowledge Base +- **GET** `/api/v1/user/knowledge/fetch` + - **Purpose**: Get knowledge base articles + - **Returns**: List of help articles + - **Data**: Articles, categories, content + +- **GET** `/api/v1/user/knowledge/getCategory` + - **Purpose**: Get knowledge base categories + - **Returns**: List of categories + - **Data**: Category structure and organization + +### Statistics +- **GET** `/api/v1/user/stat/getTrafficLog` + - **Purpose**: Get traffic usage logs + - **Returns**: Traffic usage history + - **Data**: Traffic logs, usage patterns, timestamps + +### V2 User APIs +- **GET** `/api/v2/user/resetSecurity` + - **Purpose**: Reset security credentials + - **Returns**: New security credentials + - **Data**: Updated security tokens + +- **GET** `/api/v2/user/info` + - **Purpose**: Get user information (V2) + - **Returns**: User profile data + - **Data**: Enhanced user profile information + +--- + +## 📱 Client APIs (Client Authentication) + +### Subscription +- **GET** `/api/v1/client/subscribe` + - **Purpose**: Get subscription configuration + - **Returns**: Client configuration for VPN apps + - **Data**: Server configurations, protocols, connection details + +### App Configuration +- **GET** `/api/v1/client/app/getConfig` + - **Purpose**: Get app configuration + - **Returns**: App configuration settings + - **Data**: App settings, features, URLs + +- **GET** `/api/v1/client/app/getVersion` + - **Purpose**: Get app version information + - **Returns**: Version details + - **Data**: Current version, update availability + +--- + +## 🖥️ Server APIs (Server Authentication) + +### UniProxy +- **GET** `/api/v1/server/UniProxy/config` + - **Purpose**: Get server configuration + - **Returns**: Server configuration + - **Data**: Server settings and parameters + +- **GET** `/api/v1/server/UniProxy/user` + - **Purpose**: Get user data for server + - **Returns**: User information for server + - **Data**: User access rights, quotas, settings + +- **POST** `/api/v1/server/UniProxy/push` + - **Purpose**: Push data to server + - **Returns**: Push status + - **Data**: Data synchronization confirmation + +- **POST** `/api/v1/server/UniProxy/alive` + - **Purpose**: Server heartbeat + - **Returns**: Alive status + - **Data**: Server health status + +- **GET** `/api/v1/server/UniProxy/alivelist` + - **Purpose**: Get alive servers list + - **Returns**: List of active servers + - **Data**: Server status and availability + +- **POST** `/api/v1/server/UniProxy/status` + - **Purpose**: Update server status + - **Returns**: Status update confirmation + - **Data**: Server status update + +### Shadowsocks Tidalab +- **GET** `/api/v1/server/ShadowsocksTidalab/user` + - **Purpose**: Get user data for Shadowsocks + - **Returns**: Shadowsocks user configuration + - **Data**: Shadowsocks-specific user settings + +- **POST** `/api/v1/server/ShadowsocksTidalab/submit` + - **Purpose**: Submit Shadowsocks data + - **Returns**: Submission status + - **Data**: Data submission confirmation + +### Trojan Tidalab +- **GET** `/api/v1/server/TrojanTidalab/config` + - **Purpose**: Get Trojan server configuration + - **Returns**: Trojan configuration + - **Data**: Trojan server settings + +- **GET** `/api/v1/server/TrojanTidalab/user` + - **Purpose**: Get user data for Trojan + - **Returns**: Trojan user configuration + - **Data**: Trojan-specific user settings + +- **POST** `/api/v1/server/TrojanTidalab/submit` + - **Purpose**: Submit Trojan data + - **Returns**: Submission status + - **Data**: Data submission confirmation + +--- + +## 👨‍💼 Staff APIs (Staff Authentication) + +**Note**: Staff functionality exists but appears to be integrated into admin routes rather than having dedicated staff routes. Staff users have `is_staff` flag and can access certain admin functions with limited permissions. + +### User Management (Staff Level) +- Staff can manage non-admin, non-staff users +- Limited user update capabilities +- Send emails to users +- Ban users +- Access user information + +--- + +## 🔧 Admin APIs (Administrator Authentication) + +### Configuration Management +- **GET** `/api/v2/{admin_path}/config/fetch` + - **Purpose**: Get system configuration + - **Returns**: Complete system settings + - **Data**: All configuration parameters + +- **POST** `/api/v2/{admin_path}/config/save` + - **Purpose**: Save system configuration + - **Returns**: Save status + - **Data**: Configuration update confirmation + +- **GET** `/api/v2/{admin_path}/config/getEmailTemplate` + - **Purpose**: Get email templates + - **Returns**: Email template configurations + - **Data**: Email templates and settings + +- **GET** `/api/v2/{admin_path}/config/getThemeTemplate` + - **Purpose**: Get theme templates + - **Returns**: Theme configurations + - **Data**: Available themes and settings + +- **POST** `/api/v2/{admin_path}/config/setTelegramWebhook` + - **Purpose**: Configure Telegram webhook + - **Returns**: Webhook setup status + - **Data**: Telegram integration status + +- **POST** `/api/v2/{admin_path}/config/testSendMail` + - **Purpose**: Test email configuration + - **Returns**: Email test results + - **Data**: Email sending test status + +### Plan Management +- **GET** `/api/v2/{admin_path}/plan/fetch` + - **Purpose**: Get all plans (admin view) + - **Returns**: Complete plan list with admin details + - **Data**: All plans with user counts, revenue, admin settings + +- **POST** `/api/v2/{admin_path}/plan/save` + - **Purpose**: Create/update plan + - **Returns**: Plan save status + - **Data**: Plan creation/update confirmation + +- **POST** `/api/v2/{admin_path}/plan/drop` + - **Purpose**: Delete plan + - **Returns**: Deletion status + - **Data**: Plan deletion confirmation + +- **POST** `/api/v2/{admin_path}/plan/update` + - **Purpose**: Update plan details + - **Returns**: Update status + - **Data**: Plan update confirmation + +- **POST** `/api/v2/{admin_path}/plan/sort` + - **Purpose**: Reorder plans + - **Returns**: Sort status + - **Data**: Plan ordering confirmation + +### Server Management +#### Server Groups +- **GET** `/api/v2/{admin_path}/server/group/fetch` + - **Purpose**: Get server groups + - **Returns**: List of server groups + - **Data**: Group configurations and permissions + +- **POST** `/api/v2/{admin_path}/server/group/save` + - **Purpose**: Create/update server group + - **Returns**: Group save status + - **Data**: Group creation/update confirmation + +- **POST** `/api/v2/{admin_path}/server/group/drop` + - **Purpose**: Delete server group + - **Returns**: Deletion status + - **Data**: Group deletion confirmation + +#### Server Routes +- **GET** `/api/v2/{admin_path}/server/route/fetch` + - **Purpose**: Get server routes + - **Returns**: List of server routes + - **Data**: Route configurations and rules + +- **POST** `/api/v2/{admin_path}/server/route/save` + - **Purpose**: Create/update server route + - **Returns**: Route save status + - **Data**: Route creation/update confirmation + +- **POST** `/api/v2/{admin_path}/server/route/drop` + - **Purpose**: Delete server route + - **Returns**: Deletion status + - **Data**: Route deletion confirmation + +#### Server Management +- **GET** `/api/v2/{admin_path}/server/manage/getNodes` + - **Purpose**: Get server nodes + - **Returns**: List of server nodes + - **Data**: Node details, status, configuration + +- **POST** `/api/v2/{admin_path}/server/manage/update` + - **Purpose**: Update server + - **Returns**: Update status + - **Data**: Server update confirmation + +- **POST** `/api/v2/{admin_path}/server/manage/save` + - **Purpose**: Create server + - **Returns**: Creation status + - **Data**: Server creation confirmation + +- **POST** `/api/v2/{admin_path}/server/manage/drop` + - **Purpose**: Delete server + - **Returns**: Deletion status + - **Data**: Server deletion confirmation + +- **POST** `/api/v2/{admin_path}/server/manage/copy` + - **Purpose**: Copy server configuration + - **Returns**: Copy status + - **Data**: Server copy confirmation + +- **POST** `/api/v2/{admin_path}/server/manage/sort` + - **Purpose**: Reorder servers + - **Returns**: Sort status + - **Data**: Server ordering confirmation + +### Order Management +- **GET/POST** `/api/v2/{admin_path}/order/fetch` + - **Purpose**: Get orders with filtering + - **Returns**: Paginated order list + - **Data**: Order details, user info, payment status + +- **POST** `/api/v2/{admin_path}/order/update` + - **Purpose**: Update order + - **Returns**: Update status + - **Data**: Order update confirmation + +- **POST** `/api/v2/{admin_path}/order/assign` + - **Purpose**: Assign order to plan + - **Returns**: Assignment status + - **Data**: Order assignment confirmation + +- **POST** `/api/v2/{admin_path}/order/paid` + - **Purpose**: Mark order as paid + - **Returns**: Payment status + - **Data**: Payment confirmation + +- **POST** `/api/v2/{admin_path}/order/cancel` + - **Purpose**: Cancel order + - **Returns**: Cancellation status + - **Data**: Order cancellation confirmation + +- **POST** `/api/v2/{admin_path}/order/detail` + - **Purpose**: Get order details + - **Returns**: Detailed order information + - **Data**: Complete order information + +### User Management +- **GET/POST** `/api/v2/{admin_path}/user/fetch` + - **Purpose**: Get users with filtering and pagination + - **Returns**: Paginated user list + - **Data**: User details, subscription info, usage stats + +- **POST** `/api/v2/{admin_path}/user/update` + - **Purpose**: Update user + - **Returns**: Update status + - **Data**: User update confirmation + +- **GET** `/api/v2/{admin_path}/user/getUserInfoById` + - **Purpose**: Get specific user info + - **Returns**: User details + - **Data**: Complete user information + +- **POST** `/api/v2/{admin_path}/user/generate` + - **Purpose**: Generate user account + - **Returns**: Generation status + - **Data**: New user account details + +- **POST** `/api/v2/{admin_path}/user/dumpCSV` + - **Purpose**: Export users to CSV + - **Returns**: CSV export + - **Data**: User data in CSV format + +- **POST** `/api/v2/{admin_path}/user/sendMail` + - **Purpose**: Send email to users + - **Returns**: Email sending status + - **Data**: Email delivery confirmation + +- **POST** `/api/v2/{admin_path}/user/ban` + - **Purpose**: Ban users + - **Returns**: Ban status + - **Data**: User ban confirmation + +- **POST** `/api/v2/{admin_path}/user/resetSecret` + - **Purpose**: Reset user secrets + - **Returns**: Reset status + - **Data**: Secret reset confirmation + +- **POST** `/api/v2/{admin_path}/user/setInviteUser` + - **Purpose**: Set invite relationships + - **Returns**: Setting status + - **Data**: Invite relationship confirmation + +- **POST** `/api/v2/{admin_path}/user/destroy` + - **Purpose**: Delete user + - **Returns**: Deletion status + - **Data**: User deletion confirmation + +### Statistics & Analytics +- **GET** `/api/v2/{admin_path}/stat/getOverride` + - **Purpose**: Get system overview + - **Returns**: System statistics overview + - **Data**: Key metrics, revenue, user counts + +- **GET** `/api/v2/{admin_path}/stat/getStats` + - **Purpose**: Get detailed statistics + - **Returns**: Comprehensive statistics + - **Data**: Revenue, usage, growth metrics + +- **GET** `/api/v2/{admin_path}/stat/getServerLastRank` + - **Purpose**: Get server performance ranking + - **Returns**: Server ranking data + - **Data**: Server performance metrics + +- **GET** `/api/v2/{admin_path}/stat/getServerYesterdayRank` + - **Purpose**: Get yesterday's server ranking + - **Returns**: Historical server data + - **Data**: Previous day server metrics + +- **GET** `/api/v2/{admin_path}/stat/getOrder` + - **Purpose**: Get order statistics + - **Returns**: Order analytics + - **Data**: Order trends, revenue data + +- **GET/POST** `/api/v2/{admin_path}/stat/getStatUser` + - **Purpose**: Get user statistics + - **Returns**: User analytics + - **Data**: User growth, activity metrics + +- **GET** `/api/v2/{admin_path}/stat/getRanking` + - **Purpose**: Get ranking data + - **Returns**: Various rankings + - **Data**: User, server, revenue rankings + +- **GET** `/api/v2/{admin_path}/stat/getStatRecord` + - **Purpose**: Get statistical records + - **Returns**: Historical statistics + - **Data**: Historical data records + +- **GET** `/api/v2/{admin_path}/stat/getTrafficRank` + - **Purpose**: Get traffic ranking + - **Returns**: Traffic usage rankings + - **Data**: Traffic usage by users/servers + +### Notice Management +- **GET** `/api/v2/{admin_path}/notice/fetch` + - **Purpose**: Get system notices + - **Returns**: List of notices + - **Data**: Notice content, visibility, scheduling + +- **POST** `/api/v2/{admin_path}/notice/save` + - **Purpose**: Create notice + - **Returns**: Creation status + - **Data**: Notice creation confirmation + +- **POST** `/api/v2/{admin_path}/notice/update` + - **Purpose**: Update notice + - **Returns**: Update status + - **Data**: Notice update confirmation + +- **POST** `/api/v2/{admin_path}/notice/drop` + - **Purpose**: Delete notice + - **Returns**: Deletion status + - **Data**: Notice deletion confirmation + +- **POST** `/api/v2/{admin_path}/notice/show` + - **Purpose**: Toggle notice visibility + - **Returns**: Visibility status + - **Data**: Notice visibility confirmation + +- **POST** `/api/v2/{admin_path}/notice/sort` + - **Purpose**: Reorder notices + - **Returns**: Sort status + - **Data**: Notice ordering confirmation + +### Ticket Management +- **GET/POST** `/api/v2/{admin_path}/ticket/fetch` + - **Purpose**: Get support tickets + - **Returns**: Paginated ticket list + - **Data**: Ticket details, user info, status + +- **POST** `/api/v2/{admin_path}/ticket/reply` + - **Purpose**: Reply to ticket + - **Returns**: Reply status + - **Data**: Ticket reply confirmation + +- **POST** `/api/v2/{admin_path}/ticket/close` + - **Purpose**: Close ticket + - **Returns**: Closure status + - **Data**: Ticket closure confirmation + +### Coupon Management +- **GET/POST** `/api/v2/{admin_path}/coupon/fetch` + - **Purpose**: Get coupons + - **Returns**: List of coupons + - **Data**: Coupon details, usage statistics + +- **POST** `/api/v2/{admin_path}/coupon/generate` + - **Purpose**: Generate coupons + - **Returns**: Generation status + - **Data**: New coupon codes + +- **POST** `/api/v2/{admin_path}/coupon/drop` + - **Purpose**: Delete coupon + - **Returns**: Deletion status + - **Data**: Coupon deletion confirmation + +- **POST** `/api/v2/{admin_path}/coupon/show` + - **Purpose**: Toggle coupon visibility + - **Returns**: Visibility status + - **Data**: Coupon visibility confirmation + +- **POST** `/api/v2/{admin_path}/coupon/update` + - **Purpose**: Update coupon + - **Returns**: Update status + - **Data**: Coupon update confirmation + +### Knowledge Base Management +- **GET** `/api/v2/{admin_path}/knowledge/fetch` + - **Purpose**: Get knowledge articles + - **Returns**: List of articles + - **Data**: Article content, categories, visibility + +- **GET** `/api/v2/{admin_path}/knowledge/getCategory` + - **Purpose**: Get knowledge categories + - **Returns**: Category structure + - **Data**: Category hierarchy and organization + +- **POST** `/api/v2/{admin_path}/knowledge/save` + - **Purpose**: Create/update article + - **Returns**: Save status + - **Data**: Article save confirmation + +- **POST** `/api/v2/{admin_path}/knowledge/show` + - **Purpose**: Toggle article visibility + - **Returns**: Visibility status + - **Data**: Article visibility confirmation + +- **POST** `/api/v2/{admin_path}/knowledge/drop` + - **Purpose**: Delete article + - **Returns**: Deletion status + - **Data**: Article deletion confirmation + +- **POST** `/api/v2/{admin_path}/knowledge/sort` + - **Purpose**: Reorder articles + - **Returns**: Sort status + - **Data**: Article ordering confirmation + +### Payment Management +- **GET** `/api/v2/{admin_path}/payment/fetch` + - **Purpose**: Get payment methods + - **Returns**: List of payment providers + - **Data**: Payment method configurations + +- **GET** `/api/v2/{admin_path}/payment/getPaymentMethods` + - **Purpose**: Get available payment methods + - **Returns**: Payment method list + - **Data**: Available payment options + +- **POST** `/api/v2/{admin_path}/payment/getPaymentForm` + - **Purpose**: Get payment form configuration + - **Returns**: Form configuration + - **Data**: Payment form settings + +- **POST** `/api/v2/{admin_path}/payment/save` + - **Purpose**: Save payment method + - **Returns**: Save status + - **Data**: Payment method save confirmation + +- **POST** `/api/v2/{admin_path}/payment/drop` + - **Purpose**: Delete payment method + - **Returns**: Deletion status + - **Data**: Payment method deletion confirmation + +- **POST** `/api/v2/{admin_path}/payment/show` + - **Purpose**: Toggle payment method visibility + - **Returns**: Visibility status + - **Data**: Payment method visibility confirmation + +- **POST** `/api/v2/{admin_path}/payment/sort` + - **Purpose**: Reorder payment methods + - **Returns**: Sort status + - **Data**: Payment method ordering confirmation + +### System Management +- **GET** `/api/v2/{admin_path}/system/getSystemStatus` + - **Purpose**: Get system status + - **Returns**: System health information + - **Data**: Server status, performance metrics + +- **GET** `/api/v2/{admin_path}/system/getQueueStats` + - **Purpose**: Get queue statistics + - **Returns**: Queue performance data + - **Data**: Queue metrics, job statistics + +- **GET** `/api/v2/{admin_path}/system/getQueueWorkload` + - **Purpose**: Get queue workload + - **Returns**: Current queue workload + - **Data**: Queue load and processing times + +- **GET** `/api/v2/{admin_path}/system/getQueueMasters` + - **Purpose**: Get queue masters (Horizon) + - **Returns**: Queue master status + - **Data**: Horizon supervisor information + +- **GET** `/api/v2/{admin_path}/system/getSystemLog` + - **Purpose**: Get system logs + - **Returns**: System log entries + - **Data**: Application logs, errors, events + +- **GET** `/api/v2/{admin_path}/system/getHorizonFailedJobs` + - **Purpose**: Get failed jobs + - **Returns**: Failed job list + - **Data**: Failed job details and errors + +- **POST** `/api/v2/{admin_path}/system/clearSystemLog` + - **Purpose**: Clear system logs + - **Returns**: Clear status + - **Data**: Log clearing confirmation + +- **GET** `/api/v2/{admin_path}/system/getLogClearStats` + - **Purpose**: Get log clearing statistics + - **Returns**: Log management stats + - **Data**: Log storage and clearing metrics + +### Theme Management +- **GET** `/api/v2/{admin_path}/theme/getThemes` + - **Purpose**: Get available themes + - **Returns**: Theme list + - **Data**: Theme details, configurations + +- **POST** `/api/v2/{admin_path}/theme/upload` + - **Purpose**: Upload theme + - **Returns**: Upload status + - **Data**: Theme upload confirmation + +- **POST** `/api/v2/{admin_path}/theme/delete` + - **Purpose**: Delete theme + - **Returns**: Deletion status + - **Data**: Theme deletion confirmation + +- **POST** `/api/v2/{admin_path}/theme/saveThemeConfig` + - **Purpose**: Save theme configuration + - **Returns**: Save status + - **Data**: Theme configuration save confirmation + +- **POST** `/api/v2/{admin_path}/theme/getThemeConfig` + - **Purpose**: Get theme configuration + - **Returns**: Theme configuration + - **Data**: Current theme settings + +### Plugin Management +- **GET** `/api/v2/{admin_path}/plugin/getPlugins` + - **Purpose**: Get installed plugins + - **Returns**: Plugin list + - **Data**: Plugin details, status, configuration + +- **POST** `/api/v2/{admin_path}/plugin/upload` + - **Purpose**: Upload plugin + - **Returns**: Upload status + - **Data**: Plugin upload confirmation + +- **POST** `/api/v2/{admin_path}/plugin/delete` + - **Purpose**: Delete plugin + - **Returns**: Deletion status + - **Data**: Plugin deletion confirmation + +- **POST** `/api/v2/{admin_path}/plugin/install` + - **Purpose**: Install plugin + - **Returns**: Installation status + - **Data**: Plugin installation confirmation + +- **POST** `/api/v2/{admin_path}/plugin/uninstall` + - **Purpose**: Uninstall plugin + - **Returns**: Uninstallation status + - **Data**: Plugin uninstallation confirmation + +- **POST** `/api/v2/{admin_path}/plugin/enable` + - **Purpose**: Enable plugin + - **Returns**: Enable status + - **Data**: Plugin enable confirmation + +- **POST** `/api/v2/{admin_path}/plugin/disable` + - **Purpose**: Disable plugin + - **Returns**: Disable status + - **Data**: Plugin disable confirmation + +- **GET** `/api/v2/{admin_path}/plugin/config` + - **Purpose**: Get plugin configuration + - **Returns**: Plugin configuration + - **Data**: Plugin settings + +- **POST** `/api/v2/{admin_path}/plugin/config` + - **Purpose**: Update plugin configuration + - **Returns**: Update status + - **Data**: Plugin configuration update confirmation + +### Traffic Reset Management +- **GET** `/api/v2/{admin_path}/traffic-reset/logs` + - **Purpose**: Get traffic reset logs + - **Returns**: Reset log entries + - **Data**: Traffic reset history and details + +- **GET** `/api/v2/{admin_path}/traffic-reset/stats` + - **Purpose**: Get traffic reset statistics + - **Returns**: Reset statistics + - **Data**: Traffic reset metrics and trends + +- **GET** `/api/v2/{admin_path}/traffic-reset/user/{userId}/history` + - **Purpose**: Get user traffic reset history + - **Returns**: User-specific reset history + - **Data**: Individual user reset records + +- **POST** `/api/v2/{admin_path}/traffic-reset/reset-user` + - **Purpose**: Reset user traffic + - **Returns**: Reset status + - **Data**: User traffic reset confirmation + +--- + +## 📝 Notes + +1. **Admin Path**: The `{admin_path}` in V2 admin routes is dynamically generated based on the `secure_path` or `frontend_admin_path` configuration setting. + +2. **Authentication Middleware**: + - `user`: Requires valid user authentication + - `admin`: Requires admin privileges + - `staff`: Requires staff privileges + - `client`: Requires client token authentication + - `server`: Requires server authentication + +3. **Response Format**: Most endpoints return data in a standardized format: + ```json + { + "data": [...], // Actual response data + "message": "Success message", + "status": true/false + } + ``` + +4. **Error Handling**: Failed requests return appropriate HTTP status codes with error messages. + +5. **Pagination**: Many list endpoints support pagination with `current` and `pageSize` parameters. + +6. **Filtering**: Admin endpoints often support filtering and sorting parameters. + +This documentation provides a comprehensive overview of all available API endpoints in the Xboard system. Each endpoint serves specific functionality within the VPN service management platform. \ No newline at end of file diff --git a/install.sh b/install.sh index aadb1fe8..b3537eed 100644 --- a/install.sh +++ b/install.sh @@ -132,6 +132,25 @@ NODE_TYPE=${INPUT_TYPE:-${NODE_TYPE:-v2ray}} read -p "Enter Panel Token (Node Key) [${PANEL_TOKEN}]: " INPUT_TOKEN PANEL_TOKEN=${INPUT_TOKEN:-$PANEL_TOKEN} +# Optional Separate Config/User IDs and URLs +read -p "Use separate URL/ID for Config? (y/N): " USE_SEP_CONFIG +if [[ "$USE_SEP_CONFIG" =~ ^[Yy]$ ]]; then + read -p " Enter Config Panel URL [${CONFIG_PANEL_URL:-$PANEL_URL}]: " INPUT_CURL + CONFIG_PANEL_URL=${INPUT_CURL:-$PANEL_URL} + CONFIG_PANEL_URL="${CONFIG_PANEL_URL%/}" + read -p " Enter Config Node ID [${CONFIG_NODE_ID:-$NODE_ID}]: " INPUT_CID + CONFIG_NODE_ID=${INPUT_CID:-$NODE_ID} +fi + +read -p "Use separate URL/ID for Users? (y/N): " USE_SEP_USER +if [[ "$USE_SEP_USER" =~ ^[Yy]$ ]]; then + read -p " Enter User Panel URL [${USER_PANEL_URL:-$PANEL_URL}]: " INPUT_UURL + USER_PANEL_URL=${INPUT_UURL:-$PANEL_URL} + USER_PANEL_URL="${USER_PANEL_URL%/}" + read -p " Enter User Node ID [${USER_NODE_ID:-$NODE_ID}]: " INPUT_UID + USER_NODE_ID=${INPUT_UID:-$NODE_ID} +fi + if [[ -z "$PANEL_URL" || -z "$NODE_ID" || -z "$PANEL_TOKEN" ]]; then echo -e "${RED}All fields are required!${NC}" exit 1 @@ -168,9 +187,13 @@ cat > "$CONFIG_FILE" <