// Code generated by tools/openapigen. DO NOT EDIT. export const SCHEMAS: Record = { "AllSetting": { "description": "AllSetting contains all configuration settings for the 3x-ui panel including web server, Telegram bot, and subscription settings.", "properties": { "datepicker": { "description": "Date picker format", "type": "string" }, "expireDiff": { "description": "Expiration warning threshold in days", "minimum": 0, "type": "integer" }, "externalTrafficInformEnable": { "description": "Enable external traffic reporting", "type": "boolean" }, "externalTrafficInformURI": { "description": "URI for external traffic reporting", "type": "string" }, "ldapAutoCreate": { "type": "boolean" }, "ldapAutoDelete": { "type": "boolean" }, "ldapBaseDN": { "type": "string" }, "ldapBindDN": { "type": "string" }, "ldapDefaultExpiryDays": { "minimum": 0, "type": "integer" }, "ldapDefaultLimitIP": { "minimum": 0, "type": "integer" }, "ldapDefaultTotalGB": { "minimum": 0, "type": "integer" }, "ldapEnable": { "description": "LDAP settings", "type": "boolean" }, "ldapFlagField": { "description": "Generic flag configuration", "type": "string" }, "ldapHost": { "type": "string" }, "ldapInboundTags": { "type": "string" }, "ldapInvertFlag": { "type": "boolean" }, "ldapPassword": { "type": "string" }, "ldapPort": { "maximum": 65535, "minimum": 0, "type": "integer" }, "ldapSyncCron": { "type": "string" }, "ldapTruthyValues": { "type": "string" }, "ldapUseTLS": { "type": "boolean" }, "ldapUserAttr": { "description": "e.g., mail or uid", "type": "string" }, "ldapUserFilter": { "type": "string" }, "ldapVlessField": { "type": "string" }, "pageSize": { "description": "UI settings\nNumber of items per page in lists (0 disables pagination)", "maximum": 1000, "minimum": 0, "type": "integer" }, "panelOutbound": { "description": "Xray outbound tag for the panel's own outbound HTTP (update checks/downloads, Telegram, geo updates, outbound-subscription fetches)", "type": "string" }, "remarkModel": { "description": "Remark model pattern for inbounds", "type": "string" }, "restartXrayOnClientDisable": { "description": "Restart Xray when clients are auto-disabled by expiry/traffic limit", "type": "boolean" }, "sessionMaxAge": { "description": "Session maximum age in minutes (cap at one year)", "maximum": 525600, "minimum": 1, "type": "integer" }, "subAnnounce": { "description": "Subscription announce", "type": "string" }, "subCertFile": { "description": "SSL certificate file for subscription server", "type": "string" }, "subClashEnable": { "description": "Enable Clash/Mihomo subscription endpoint", "type": "boolean" }, "subClashEnableRouting": { "description": "Enable global routing rules for Clash/Mihomo", "type": "boolean" }, "subClashPath": { "description": "Path for Clash/Mihomo subscription endpoint", "type": "string" }, "subClashRules": { "description": "Clash/Mihomo global routing rules", "type": "string" }, "subClashURI": { "description": "Clash/Mihomo subscription server URI", "type": "string" }, "subDomain": { "description": "Domain for subscription server validation", "type": "string" }, "subEmailInRemark": { "description": "Include email in subscription remark/name", "type": "boolean" }, "subEnable": { "description": "Subscription server settings\nEnable subscription server", "type": "boolean" }, "subEnableRouting": { "description": "Enable routing for subscription", "type": "boolean" }, "subEncrypt": { "description": "Encrypt subscription responses", "type": "boolean" }, "subJsonEnable": { "description": "Enable JSON subscription endpoint", "type": "boolean" }, "subJsonFinalMask": { "description": "JSON subscription global finalmask (tcp/udp masks + quicParams)", "type": "string" }, "subJsonMux": { "description": "JSON subscription mux configuration", "type": "string" }, "subJsonPath": { "description": "Path for JSON subscription endpoint", "type": "string" }, "subJsonRules": { "type": "string" }, "subJsonURI": { "description": "JSON subscription server URI", "type": "string" }, "subKeyFile": { "description": "SSL private key file for subscription server", "type": "string" }, "subListen": { "description": "Subscription server listen IP", "type": "string" }, "subPath": { "description": "Base path for subscription URLs", "type": "string" }, "subPort": { "description": "Subscription server port", "maximum": 65535, "minimum": 1, "type": "integer" }, "subProfileUrl": { "description": "Subscription profile URL", "type": "string" }, "subRoutingRules": { "description": "Subscription global routing rules (Only for Happ)", "type": "string" }, "subShowInfo": { "description": "Show client information in subscriptions", "type": "boolean" }, "subSupportUrl": { "description": "Subscription support URL", "type": "string" }, "subThemeDir": { "description": "Absolute path to a folder containing a custom subscription page template", "type": "string" }, "subTitle": { "description": "Subscription title", "type": "string" }, "subURI": { "description": "Subscription server URI", "type": "string" }, "subUpdates": { "description": "Subscription update interval in minutes", "maximum": 525600, "minimum": 0, "type": "integer" }, "tgBotAPIServer": { "description": "Custom API server for Telegram bot", "type": "string" }, "tgBotBackup": { "description": "Enable database backup via Telegram", "type": "boolean" }, "tgBotChatId": { "description": "Telegram chat ID for notifications", "type": "string" }, "tgBotEnable": { "description": "Telegram bot settings\nEnable Telegram bot notifications", "type": "boolean" }, "tgBotLoginNotify": { "description": "Send login notifications", "type": "boolean" }, "tgBotProxy": { "description": "Proxy URL for Telegram bot", "type": "string" }, "tgBotToken": { "description": "Telegram bot token", "type": "string" }, "tgCpu": { "description": "CPU usage threshold for alerts (percent)", "maximum": 100, "minimum": 0, "type": "integer" }, "tgLang": { "description": "Telegram bot language", "type": "string" }, "tgRunTime": { "description": "Cron schedule for Telegram notifications", "type": "string" }, "timeLocation": { "description": "Security settings\nTime zone location", "type": "string" }, "trafficDiff": { "description": "Traffic warning threshold percentage", "maximum": 100, "minimum": 0, "type": "integer" }, "trustedProxyCIDRs": { "description": "Trusted reverse proxy IPs/CIDRs for forwarded headers", "type": "string" }, "twoFactorEnable": { "description": "Enable two-factor authentication", "type": "boolean" }, "twoFactorToken": { "description": "Two-factor authentication token", "type": "string" }, "warpUpdateInterval": { "description": "WARP", "minimum": 0, "type": "integer" }, "webBasePath": { "description": "Base path for web panel URLs", "type": "string" }, "webCertFile": { "description": "Path to SSL certificate file for web server", "type": "string" }, "webDomain": { "description": "Web server domain for domain validation", "type": "string" }, "webKeyFile": { "description": "Path to SSL private key file for web server", "type": "string" }, "webListen": { "description": "Web server settings\nWeb server listen IP address", "type": "string" }, "webPort": { "description": "Web server port number", "maximum": 65535, "minimum": 1, "type": "integer" } }, "required": [ "datepicker", "expireDiff", "externalTrafficInformEnable", "externalTrafficInformURI", "ldapAutoCreate", "ldapAutoDelete", "ldapBaseDN", "ldapBindDN", "ldapDefaultExpiryDays", "ldapDefaultLimitIP", "ldapDefaultTotalGB", "ldapEnable", "ldapFlagField", "ldapHost", "ldapInboundTags", "ldapInvertFlag", "ldapPassword", "ldapPort", "ldapSyncCron", "ldapTruthyValues", "ldapUseTLS", "ldapUserAttr", "ldapUserFilter", "ldapVlessField", "pageSize", "panelOutbound", "remarkModel", "restartXrayOnClientDisable", "sessionMaxAge", "subAnnounce", "subCertFile", "subClashEnable", "subClashEnableRouting", "subClashPath", "subClashRules", "subClashURI", "subDomain", "subEmailInRemark", "subEnable", "subEnableRouting", "subEncrypt", "subJsonEnable", "subJsonFinalMask", "subJsonMux", "subJsonPath", "subJsonRules", "subJsonURI", "subKeyFile", "subListen", "subPath", "subPort", "subProfileUrl", "subRoutingRules", "subShowInfo", "subSupportUrl", "subThemeDir", "subTitle", "subURI", "subUpdates", "tgBotAPIServer", "tgBotBackup", "tgBotChatId", "tgBotEnable", "tgBotLoginNotify", "tgBotProxy", "tgBotToken", "tgCpu", "tgLang", "tgRunTime", "timeLocation", "trafficDiff", "trustedProxyCIDRs", "twoFactorEnable", "twoFactorToken", "warpUpdateInterval", "webBasePath", "webCertFile", "webDomain", "webKeyFile", "webListen", "webPort" ], "type": "object" }, "AllSettingView": { "description": "AllSettingView is the browser-safe settings read model. Secret values\nare redacted from the embedded write model and represented by presence\nflags so the UI can show configured/not configured state.", "properties": { "datepicker": { "description": "Date picker format", "type": "string" }, "expireDiff": { "description": "Expiration warning threshold in days", "minimum": 0, "type": "integer" }, "externalTrafficInformEnable": { "description": "Enable external traffic reporting", "type": "boolean" }, "externalTrafficInformURI": { "description": "URI for external traffic reporting", "type": "string" }, "hasApiToken": { "type": "boolean" }, "hasLdapPassword": { "type": "boolean" }, "hasNordSecret": { "type": "boolean" }, "hasTgBotToken": { "type": "boolean" }, "hasTwoFactorToken": { "type": "boolean" }, "hasWarpSecret": { "type": "boolean" }, "ldapAutoCreate": { "type": "boolean" }, "ldapAutoDelete": { "type": "boolean" }, "ldapBaseDN": { "type": "string" }, "ldapBindDN": { "type": "string" }, "ldapDefaultExpiryDays": { "minimum": 0, "type": "integer" }, "ldapDefaultLimitIP": { "minimum": 0, "type": "integer" }, "ldapDefaultTotalGB": { "minimum": 0, "type": "integer" }, "ldapEnable": { "description": "LDAP settings", "type": "boolean" }, "ldapFlagField": { "description": "Generic flag configuration", "type": "string" }, "ldapHost": { "type": "string" }, "ldapInboundTags": { "type": "string" }, "ldapInvertFlag": { "type": "boolean" }, "ldapPassword": { "type": "string" }, "ldapPort": { "maximum": 65535, "minimum": 0, "type": "integer" }, "ldapSyncCron": { "type": "string" }, "ldapTruthyValues": { "type": "string" }, "ldapUseTLS": { "type": "boolean" }, "ldapUserAttr": { "description": "e.g., mail or uid", "type": "string" }, "ldapUserFilter": { "type": "string" }, "ldapVlessField": { "type": "string" }, "pageSize": { "description": "UI settings\nNumber of items per page in lists (0 disables pagination)", "maximum": 1000, "minimum": 0, "type": "integer" }, "panelOutbound": { "description": "Xray outbound tag for the panel's own outbound HTTP (update checks/downloads, Telegram, geo updates, outbound-subscription fetches)", "type": "string" }, "remarkModel": { "description": "Remark model pattern for inbounds", "type": "string" }, "restartXrayOnClientDisable": { "description": "Restart Xray when clients are auto-disabled by expiry/traffic limit", "type": "boolean" }, "sessionMaxAge": { "description": "Session maximum age in minutes (cap at one year)", "maximum": 525600, "minimum": 1, "type": "integer" }, "subAnnounce": { "description": "Subscription announce", "type": "string" }, "subCertFile": { "description": "SSL certificate file for subscription server", "type": "string" }, "subClashEnable": { "description": "Enable Clash/Mihomo subscription endpoint", "type": "boolean" }, "subClashEnableRouting": { "description": "Enable global routing rules for Clash/Mihomo", "type": "boolean" }, "subClashPath": { "description": "Path for Clash/Mihomo subscription endpoint", "type": "string" }, "subClashRules": { "description": "Clash/Mihomo global routing rules", "type": "string" }, "subClashURI": { "description": "Clash/Mihomo subscription server URI", "type": "string" }, "subDomain": { "description": "Domain for subscription server validation", "type": "string" }, "subEmailInRemark": { "description": "Include email in subscription remark/name", "type": "boolean" }, "subEnable": { "description": "Subscription server settings\nEnable subscription server", "type": "boolean" }, "subEnableRouting": { "description": "Enable routing for subscription", "type": "boolean" }, "subEncrypt": { "description": "Encrypt subscription responses", "type": "boolean" }, "subJsonEnable": { "description": "Enable JSON subscription endpoint", "type": "boolean" }, "subJsonFinalMask": { "description": "JSON subscription global finalmask (tcp/udp masks + quicParams)", "type": "string" }, "subJsonMux": { "description": "JSON subscription mux configuration", "type": "string" }, "subJsonPath": { "description": "Path for JSON subscription endpoint", "type": "string" }, "subJsonRules": { "type": "string" }, "subJsonURI": { "description": "JSON subscription server URI", "type": "string" }, "subKeyFile": { "description": "SSL private key file for subscription server", "type": "string" }, "subListen": { "description": "Subscription server listen IP", "type": "string" }, "subPath": { "description": "Base path for subscription URLs", "type": "string" }, "subPort": { "description": "Subscription server port", "maximum": 65535, "minimum": 1, "type": "integer" }, "subProfileUrl": { "description": "Subscription profile URL", "type": "string" }, "subRoutingRules": { "description": "Subscription global routing rules (Only for Happ)", "type": "string" }, "subShowInfo": { "description": "Show client information in subscriptions", "type": "boolean" }, "subSupportUrl": { "description": "Subscription support URL", "type": "string" }, "subThemeDir": { "description": "Absolute path to a folder containing a custom subscription page template", "type": "string" }, "subTitle": { "description": "Subscription title", "type": "string" }, "subURI": { "description": "Subscription server URI", "type": "string" }, "subUpdates": { "description": "Subscription update interval in minutes", "maximum": 525600, "minimum": 0, "type": "integer" }, "tgBotAPIServer": { "description": "Custom API server for Telegram bot", "type": "string" }, "tgBotBackup": { "description": "Enable database backup via Telegram", "type": "boolean" }, "tgBotChatId": { "description": "Telegram chat ID for notifications", "type": "string" }, "tgBotEnable": { "description": "Telegram bot settings\nEnable Telegram bot notifications", "type": "boolean" }, "tgBotLoginNotify": { "description": "Send login notifications", "type": "boolean" }, "tgBotProxy": { "description": "Proxy URL for Telegram bot", "type": "string" }, "tgBotToken": { "description": "Telegram bot token", "type": "string" }, "tgCpu": { "description": "CPU usage threshold for alerts (percent)", "maximum": 100, "minimum": 0, "type": "integer" }, "tgLang": { "description": "Telegram bot language", "type": "string" }, "tgRunTime": { "description": "Cron schedule for Telegram notifications", "type": "string" }, "timeLocation": { "description": "Security settings\nTime zone location", "type": "string" }, "trafficDiff": { "description": "Traffic warning threshold percentage", "maximum": 100, "minimum": 0, "type": "integer" }, "trustedProxyCIDRs": { "description": "Trusted reverse proxy IPs/CIDRs for forwarded headers", "type": "string" }, "twoFactorEnable": { "description": "Enable two-factor authentication", "type": "boolean" }, "twoFactorToken": { "description": "Two-factor authentication token", "type": "string" }, "warpUpdateInterval": { "description": "WARP", "minimum": 0, "type": "integer" }, "webBasePath": { "description": "Base path for web panel URLs", "type": "string" }, "webCertFile": { "description": "Path to SSL certificate file for web server", "type": "string" }, "webDomain": { "description": "Web server domain for domain validation", "type": "string" }, "webKeyFile": { "description": "Path to SSL private key file for web server", "type": "string" }, "webListen": { "description": "Web server settings\nWeb server listen IP address", "type": "string" }, "webPort": { "description": "Web server port number", "maximum": 65535, "minimum": 1, "type": "integer" } }, "required": [ "datepicker", "expireDiff", "externalTrafficInformEnable", "externalTrafficInformURI", "hasApiToken", "hasLdapPassword", "hasNordSecret", "hasTgBotToken", "hasTwoFactorToken", "hasWarpSecret", "ldapAutoCreate", "ldapAutoDelete", "ldapBaseDN", "ldapBindDN", "ldapDefaultExpiryDays", "ldapDefaultLimitIP", "ldapDefaultTotalGB", "ldapEnable", "ldapFlagField", "ldapHost", "ldapInboundTags", "ldapInvertFlag", "ldapPassword", "ldapPort", "ldapSyncCron", "ldapTruthyValues", "ldapUseTLS", "ldapUserAttr", "ldapUserFilter", "ldapVlessField", "pageSize", "panelOutbound", "remarkModel", "restartXrayOnClientDisable", "sessionMaxAge", "subAnnounce", "subCertFile", "subClashEnable", "subClashEnableRouting", "subClashPath", "subClashRules", "subClashURI", "subDomain", "subEmailInRemark", "subEnable", "subEnableRouting", "subEncrypt", "subJsonEnable", "subJsonFinalMask", "subJsonMux", "subJsonPath", "subJsonRules", "subJsonURI", "subKeyFile", "subListen", "subPath", "subPort", "subProfileUrl", "subRoutingRules", "subShowInfo", "subSupportUrl", "subThemeDir", "subTitle", "subURI", "subUpdates", "tgBotAPIServer", "tgBotBackup", "tgBotChatId", "tgBotEnable", "tgBotLoginNotify", "tgBotProxy", "tgBotToken", "tgCpu", "tgLang", "tgRunTime", "timeLocation", "trafficDiff", "trustedProxyCIDRs", "twoFactorEnable", "twoFactorToken", "warpUpdateInterval", "webBasePath", "webCertFile", "webDomain", "webKeyFile", "webListen", "webPort" ], "type": "object" }, "ApiToken": { "properties": { "createdAt": { "type": "integer" }, "enabled": { "type": "boolean" }, "id": { "type": "integer" }, "name": { "type": "string" }, "token": { "description": "SHA-256 hash; the plaintext is shown only once at creation", "type": "string" } }, "required": [ "createdAt", "enabled", "id", "name", "token" ], "type": "object" }, "ApiTokenView": { "properties": { "createdAt": { "example": 1736000000, "type": "integer" }, "enabled": { "example": true, "type": "boolean" }, "id": { "example": 2, "type": "integer" }, "name": { "example": "central-panel-a", "type": "string" }, "token": { "example": "new-token-string", "type": "string" } }, "required": [ "createdAt", "enabled", "id", "name" ], "type": "object" }, "Client": { "description": "Client represents a client configuration for Xray inbounds with traffic limits and settings.", "properties": { "auth": { "description": "Auth password (Hysteria)", "type": "string" }, "comment": { "description": "Client comment", "type": "string" }, "created_at": { "description": "Creation timestamp", "type": "integer" }, "email": { "description": "Client email identifier", "type": "string" }, "enable": { "description": "Whether the client is enabled", "type": "boolean" }, "expiryTime": { "description": "Expiration timestamp", "type": "integer" }, "flow": { "description": "Flow control (XTLS)", "type": "string" }, "group": { "description": "Logical grouping label", "type": "string" }, "id": { "description": "Unique client identifier", "type": "string" }, "limitIp": { "description": "IP limit for this client", "type": "integer" }, "password": { "description": "Client password", "type": "string" }, "reset": { "description": "Reset period in days", "type": "integer" }, "reverse": { "allOf": [ { "$ref": "#/components/schemas/ClientReverse" } ], "description": "VLESS simple reverse proxy settings", "nullable": true }, "security": { "description": "Security method (e.g., \"auto\", \"aes-128-gcm\")", "type": "string" }, "subId": { "description": "Subscription identifier", "type": "string" }, "tgId": { "description": "Telegram user ID for notifications", "type": "integer" }, "totalGB": { "description": "Total traffic limit in GB", "type": "integer" }, "updated_at": { "description": "Last update timestamp", "type": "integer" } }, "required": [ "comment", "email", "enable", "expiryTime", "limitIp", "reset", "security", "subId", "tgId", "totalGB" ], "type": "object" }, "ClientInbound": { "properties": { "clientId": { "type": "integer" }, "createdAt": { "type": "integer" }, "flowOverride": { "type": "string" }, "inboundId": { "type": "integer" } }, "required": [ "clientId", "createdAt", "flowOverride", "inboundId" ], "type": "object" }, "ClientRecord": { "properties": { "auth": { "type": "string" }, "comment": { "type": "string" }, "createdAt": { "type": "integer" }, "email": { "type": "string" }, "enable": { "type": "boolean" }, "expiryTime": { "type": "integer" }, "flow": { "type": "string" }, "group": { "type": "string" }, "id": { "type": "integer" }, "limitIp": { "type": "integer" }, "password": { "type": "string" }, "reset": { "type": "integer" }, "reverse": {}, "security": { "type": "string" }, "subId": { "type": "string" }, "tgId": { "type": "integer" }, "totalGB": { "type": "integer" }, "updatedAt": { "type": "integer" }, "uuid": { "type": "string" } }, "required": [ "auth", "comment", "createdAt", "email", "enable", "expiryTime", "flow", "group", "id", "limitIp", "password", "reset", "reverse", "security", "subId", "tgId", "totalGB", "updatedAt", "uuid" ], "type": "object" }, "ClientReverse": { "properties": { "tag": { "type": "string" } }, "required": [ "tag" ], "type": "object" }, "ClientTraffic": { "description": "ClientTraffic represents traffic statistics and limits for a specific client.\nIt tracks upload/download usage, expiry times, and online status for inbound clients.", "properties": { "down": { "example": 2097152, "type": "integer" }, "email": { "example": "user1", "type": "string" }, "enable": { "example": true, "type": "boolean" }, "expiryTime": { "example": 1735689600000, "type": "integer" }, "id": { "example": 14825, "type": "integer" }, "inboundId": { "example": 1, "type": "integer" }, "lastOnline": { "example": 1735680000000, "type": "integer" }, "reset": { "example": 0, "type": "integer" }, "subId": { "example": "i7tvdpeffi0hvvf1", "type": "string" }, "total": { "example": 10737418240, "type": "integer" }, "up": { "example": 1048576, "type": "integer" }, "uuid": { "example": "e18c9a96-71bf-48d4-933f-8b9a46d4290c", "type": "string" } }, "required": [ "down", "email", "enable", "expiryTime", "id", "inboundId", "lastOnline", "reset", "subId", "total", "up", "uuid" ], "type": "object" }, "FallbackParentInfo": { "description": "FallbackParentInfo carries everything the frontend needs to rewrite a\nchild inbound's client link: where to connect (the master's address\nand port) and which path matched on the master's fallbacks array.\nThe frontend already has the master inbound in its dbInbounds list,\nso we only ship identifiers + the match path here.", "properties": { "masterId": { "type": "integer" }, "path": { "type": "string" } }, "required": [ "masterId" ], "type": "object" }, "HistoryOfSeeders": { "description": "HistoryOfSeeders tracks which database seeders have been executed to prevent re-running.", "properties": { "id": { "type": "integer" }, "seederName": { "type": "string" } }, "required": [ "id", "seederName" ], "type": "object" }, "Inbound": { "description": "Inbound represents an Xray inbound configuration with traffic statistics and settings.", "properties": { "clientStats": { "description": "Client traffic statistics", "items": { "$ref": "#/components/schemas/ClientTraffic" }, "type": "array" }, "down": { "description": "Download traffic in bytes", "type": "integer" }, "enable": { "description": "Whether the inbound is enabled", "example": true, "type": "boolean" }, "expiryTime": { "description": "Expiration timestamp", "type": "integer" }, "fallbackParent": { "allOf": [ { "$ref": "#/components/schemas/FallbackParentInfo" } ], "description": "FallbackParent is populated by the API layer when this inbound is\nattached as a fallback child of a VLESS/Trojan TCP-TLS master.\nThe frontend uses it to rewrite client-share links so they advertise\nthe master's externally reachable endpoint instead of the child's\nloopback listen. Not persisted.", "nullable": true }, "id": { "description": "Unique identifier", "example": 1, "type": "integer" }, "lastTrafficResetTime": { "description": "Last traffic reset timestamp", "type": "integer" }, "listen": { "description": "Xray configuration fields", "type": "string" }, "nodeId": { "nullable": true, "type": "integer" }, "originNodeGuid": { "description": "OriginNodeGuid is the panelGuid of the node that physically hosts this\ninbound, propagated up across hops (#4983). Empty for an inbound that\nlives on this panel's own xray; set to the originating node's GUID when\nthe inbound was synced from a node (kept as-is across further hops). Lets\nthe master attribute a deeply nested inbound to the real node instead of\nthe intermediate one it was fetched through.", "type": "string" }, "port": { "example": 443, "maximum": 65535, "minimum": 0, "type": "integer" }, "protocol": { "enum": [ "vmess", "vless", "trojan", "shadowsocks", "wireguard", "hysteria", "http", "mixed", "tunnel", "tun", "mtproto" ], "example": "vless", "type": "string" }, "remark": { "description": "Human-readable remark", "example": "VLESS-443", "type": "string" }, "settings": {}, "shareAddr": { "type": "string" }, "shareAddrStrategy": { "enum": [ "node", "listen", "custom" ], "type": "string" }, "sniffing": {}, "streamSettings": {}, "tag": { "example": "in-443-tcp", "type": "string" }, "total": { "description": "Total traffic limit in bytes", "type": "integer" }, "trafficReset": { "description": "Traffic reset schedule", "enum": [ "never", "hourly", "daily", "weekly", "monthly" ], "type": "string" }, "up": { "description": "Upload traffic in bytes", "type": "integer" } }, "required": [ "clientStats", "down", "enable", "expiryTime", "id", "lastTrafficResetTime", "listen", "port", "protocol", "remark", "settings", "shareAddr", "shareAddrStrategy", "sniffing", "streamSettings", "tag", "total", "trafficReset", "up" ], "type": "object" }, "InboundClientIps": { "description": "InboundClientIps stores IP addresses associated with inbound clients for access control.", "properties": { "clientEmail": { "type": "string" }, "id": { "type": "integer" }, "ips": {} }, "required": [ "clientEmail", "id", "ips" ], "type": "object" }, "InboundFallback": { "properties": { "alpn": { "type": "string" }, "childId": { "type": "integer" }, "dest": { "type": "string" }, "id": { "type": "integer" }, "masterId": { "type": "integer" }, "name": { "type": "string" }, "path": { "type": "string" }, "sortOrder": { "type": "integer" }, "xver": { "type": "integer" } }, "required": [ "alpn", "childId", "dest", "id", "masterId", "name", "path", "sortOrder", "xver" ], "type": "object" }, "InboundOption": { "properties": { "id": { "example": 1, "type": "integer" }, "port": { "example": 443, "type": "integer" }, "protocol": { "example": "vless", "type": "string" }, "remark": { "example": "VLESS-443", "type": "string" }, "ssMethod": { "type": "string" }, "tag": { "example": "in-443-tcp", "type": "string" }, "tlsFlowCapable": { "example": true, "type": "boolean" } }, "required": [ "id", "port", "protocol", "remark", "ssMethod", "tag", "tlsFlowCapable" ], "type": "object" }, "Msg": { "description": "Msg represents a standard API response message with success status, message text, and optional data object.", "properties": { "msg": { "description": "Response message text", "type": "string" }, "obj": { "description": "Optional data object" }, "success": { "description": "Indicates if the operation was successful", "type": "boolean" } }, "required": [ "msg", "obj", "success" ], "type": "object" }, "Node": { "description": "Node represents a remote 3x-ui panel registered with the central panel.\nThe central panel polls each node's existing /panel/api/server/status\nendpoint over HTTP using the per-node ApiToken to populate the runtime\nstatus fields below.", "properties": { "address": { "example": "node1.example.com", "type": "string" }, "allowPrivateAddress": { "type": "boolean" }, "apiToken": { "example": "abcdef0123456789", "type": "string" }, "basePath": { "example": "/", "type": "string" }, "clientCount": { "example": 27, "type": "integer" }, "configDirty": { "type": "boolean" }, "configDirtyAt": { "type": "integer" }, "cpuPct": { "example": 23.5, "type": "number" }, "createdAt": { "example": 1700000000, "type": "integer" }, "depletedCount": { "example": 1, "type": "integer" }, "enable": { "example": true, "type": "boolean" }, "guid": { "description": "Guid is the remote panel's stable self-identifier (its panelGuid),\nlearned from each heartbeat. It is the globally stable node identity used\nto attribute online clients/inbounds to the physical node across a chain\nof nodes (#4983); panel-local autoincrement ids don't survive a hop.\nObserved-state only — never user-edited.", "type": "string" }, "id": { "example": 1, "type": "integer" }, "inboundCount": { "example": 5, "type": "integer" }, "lastError": { "type": "string" }, "lastHeartbeat": { "description": "unix seconds, 0 = never", "example": 1700000000, "type": "integer" }, "latencyMs": { "example": 42, "type": "integer" }, "memPct": { "example": 45.1, "type": "number" }, "name": { "example": "de-fra-1", "type": "string" }, "onlineCount": { "example": 3, "type": "integer" }, "panelVersion": { "example": "v3.x.x", "type": "string" }, "parentGuid": { "description": "ParentGuid + Transitive are set only when a node is surfaced as part of a\nnode tree (#4983): direct nodes carry the master panel's own GUID, a\ntransitive sub-node carries its parent node's GUID. Transitive nodes are\nread-only projections (Id == 0, not persisted) — never edited or deployed.", "type": "string" }, "pinnedCertSha256": { "type": "string" }, "port": { "example": 2053, "maximum": 65535, "minimum": 1, "type": "integer" }, "remark": { "type": "string" }, "scheme": { "enum": [ "http", "https" ], "example": "https", "type": "string" }, "status": { "description": "Heartbeat-updated fields. UpdatedAt advances on every probe even when\nthe row is otherwise unchanged so the UI's \"last seen\" tooltip is\ntruthful without us having to read LastHeartbeat separately.\nonline|offline|unknown", "example": "online", "type": "string" }, "tlsVerifyMode": { "enum": [ "verify", "skip", "pin" ], "type": "string" }, "transitive": { "type": "boolean" }, "updatedAt": { "example": 1700000000, "type": "integer" }, "uptimeSecs": { "example": 86400, "type": "integer" }, "xrayError": { "type": "string" }, "xrayState": { "description": "XrayState and XrayError are captured from the remote node's /panel/api/server/status\nduring heartbeats. They let the central panel distinguish \"panel API reachable\"\n(status=online) from \"Xray core itself has failed on the node\" for monitoring.", "type": "string" }, "xrayVersion": { "example": "25.10.31", "type": "string" } }, "required": [ "address", "allowPrivateAddress", "apiToken", "basePath", "clientCount", "configDirty", "configDirtyAt", "cpuPct", "createdAt", "depletedCount", "enable", "guid", "id", "inboundCount", "lastError", "lastHeartbeat", "latencyMs", "memPct", "name", "onlineCount", "panelVersion", "pinnedCertSha256", "port", "remark", "scheme", "status", "tlsVerifyMode", "updatedAt", "uptimeSecs", "xrayError", "xrayState", "xrayVersion" ], "type": "object" }, "OutboundTraffics": { "description": "OutboundTraffics tracks traffic statistics for Xray outbound connections.", "properties": { "down": { "type": "integer" }, "id": { "type": "integer" }, "tag": { "type": "string" }, "total": { "type": "integer" }, "up": { "type": "integer" } }, "required": [ "down", "id", "tag", "total", "up" ], "type": "object" }, "ProbeResultUI": { "properties": { "cpuPct": { "example": 12.5, "type": "number" }, "error": { "type": "string" }, "latencyMs": { "example": 42, "type": "integer" }, "memPct": { "example": 45.2, "type": "number" }, "panelVersion": { "example": "v3.x.x", "type": "string" }, "status": { "example": "online", "type": "string" }, "uptimeSecs": { "example": 86400, "type": "integer" }, "xrayError": { "type": "string" }, "xrayState": { "description": "XrayState/XrayError are populated on successful probes even when the node's\nXray core is not healthy. The UI uses them for a distinct \"panel ok, xray failed\" indicator.", "type": "string" }, "xrayVersion": { "example": "25.10.31", "type": "string" } }, "required": [ "cpuPct", "error", "latencyMs", "memPct", "panelVersion", "status", "uptimeSecs", "xrayError", "xrayState", "xrayVersion" ], "type": "object" }, "Setting": { "description": "Setting stores key-value configuration settings for the 3x-ui panel.", "properties": { "id": { "type": "integer" }, "key": { "type": "string" }, "value": { "type": "string" } }, "required": [ "id", "key", "value" ], "type": "object" }, "User": { "description": "User represents a user account in the 3x-ui panel.", "properties": { "id": { "type": "integer" }, "password": { "type": "string" }, "username": { "type": "string" } }, "required": [ "id", "password", "username" ], "type": "object" } };