// Code generated by tools/openapigen. DO NOT EDIT. export const SCHEMAS: Record = { "AllSetting": { "properties": { "datepicker": { "type": "string" }, "expireDiff": { "minimum": 0, "type": "integer" }, "externalTrafficInformEnable": { "type": "boolean" }, "externalTrafficInformURI": { "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": { "type": "boolean" }, "ldapFlagField": { "type": "string" }, "ldapHost": { "type": "string" }, "ldapInboundTags": { "type": "string" }, "ldapInsecureSkipVerify": { "type": "boolean" }, "ldapInvertFlag": { "type": "boolean" }, "ldapPassword": { "type": "string" }, "ldapPort": { "maximum": 65535, "minimum": 0, "type": "integer" }, "ldapSyncCron": { "type": "string" }, "ldapTruthyValues": { "type": "string" }, "ldapUseTLS": { "type": "boolean" }, "ldapUserAttr": { "type": "string" }, "ldapUserFilter": { "type": "string" }, "ldapVlessField": { "type": "string" }, "pageSize": { "maximum": 1000, "minimum": 0, "type": "integer" }, "panelOutbound": { "type": "string" }, "remarkTemplate": { "type": "string" }, "restartXrayOnClientDisable": { "type": "boolean" }, "sessionMaxAge": { "maximum": 525600, "minimum": 1, "type": "integer" }, "smtpCpu": { "maximum": 100, "minimum": 0, "type": "integer" }, "smtpEnable": { "type": "boolean" }, "smtpEnabledEvents": { "type": "string" }, "smtpEncryptionType": { "type": "string" }, "smtpHost": { "type": "string" }, "smtpMemory": { "maximum": 100, "minimum": 0, "type": "integer" }, "smtpPassword": { "type": "string" }, "smtpPort": { "maximum": 65535, "minimum": 1, "type": "integer" }, "smtpTo": { "type": "string" }, "smtpUsername": { "type": "string" }, "subAnnounce": { "type": "string" }, "subCertFile": { "type": "string" }, "subClashEnable": { "type": "boolean" }, "subClashEnableRouting": { "type": "boolean" }, "subClashPath": { "type": "string" }, "subClashRules": { "type": "string" }, "subClashURI": { "type": "string" }, "subDomain": { "type": "string" }, "subEnable": { "type": "boolean" }, "subEnableRouting": { "type": "boolean" }, "subEncrypt": { "type": "boolean" }, "subHideSettings": { "type": "boolean" }, "subIncyEnableRouting": { "type": "boolean" }, "subIncyRoutingRules": { "type": "string" }, "subJsonEnable": { "type": "boolean" }, "subJsonFinalMask": { "type": "string" }, "subJsonMux": { "type": "string" }, "subJsonPath": { "type": "string" }, "subJsonRules": { "type": "string" }, "subJsonURI": { "type": "string" }, "subKeyFile": { "type": "string" }, "subListen": { "type": "string" }, "subPath": { "type": "string" }, "subPort": { "maximum": 65535, "minimum": 1, "type": "integer" }, "subProfileUrl": { "type": "string" }, "subRoutingRules": { "type": "string" }, "subSupportUrl": { "type": "string" }, "subThemeDir": { "type": "string" }, "subTitle": { "type": "string" }, "subURI": { "type": "string" }, "subUpdates": { "maximum": 525600, "minimum": 0, "type": "integer" }, "tgBotAPIServer": { "type": "string" }, "tgBotBackup": { "type": "boolean" }, "tgBotChatId": { "type": "string" }, "tgBotEnable": { "type": "boolean" }, "tgBotProxy": { "type": "string" }, "tgBotToken": { "type": "string" }, "tgCpu": { "maximum": 100, "minimum": 0, "type": "integer" }, "tgEnabledEvents": { "type": "string" }, "tgLang": { "type": "string" }, "tgMemory": { "maximum": 100, "minimum": 0, "type": "integer" }, "tgRunTime": { "type": "string" }, "timeLocation": { "type": "string" }, "trafficDiff": { "maximum": 100, "minimum": 0, "type": "integer" }, "trustedProxyCIDRs": { "type": "string" }, "twoFactorEnable": { "type": "boolean" }, "twoFactorToken": { "type": "string" }, "warpUpdateInterval": { "minimum": 0, "type": "integer" }, "webBasePath": { "type": "string" }, "webCertFile": { "type": "string" }, "webDomain": { "type": "string" }, "webKeyFile": { "type": "string" }, "webListen": { "type": "string" }, "webPort": { "maximum": 65535, "minimum": 1, "type": "integer" } }, "required": [ "datepicker", "expireDiff", "externalTrafficInformEnable", "externalTrafficInformURI", "ldapAutoCreate", "ldapAutoDelete", "ldapBaseDN", "ldapBindDN", "ldapDefaultExpiryDays", "ldapDefaultLimitIP", "ldapDefaultTotalGB", "ldapEnable", "ldapFlagField", "ldapHost", "ldapInboundTags", "ldapInsecureSkipVerify", "ldapInvertFlag", "ldapPassword", "ldapPort", "ldapSyncCron", "ldapTruthyValues", "ldapUseTLS", "ldapUserAttr", "ldapUserFilter", "ldapVlessField", "pageSize", "panelOutbound", "remarkTemplate", "restartXrayOnClientDisable", "sessionMaxAge", "smtpCpu", "smtpEnable", "smtpEnabledEvents", "smtpEncryptionType", "smtpHost", "smtpMemory", "smtpPassword", "smtpPort", "smtpTo", "smtpUsername", "subAnnounce", "subCertFile", "subClashEnable", "subClashEnableRouting", "subClashPath", "subClashRules", "subClashURI", "subDomain", "subEnable", "subEnableRouting", "subEncrypt", "subHideSettings", "subIncyEnableRouting", "subIncyRoutingRules", "subJsonEnable", "subJsonFinalMask", "subJsonMux", "subJsonPath", "subJsonRules", "subJsonURI", "subKeyFile", "subListen", "subPath", "subPort", "subProfileUrl", "subRoutingRules", "subSupportUrl", "subThemeDir", "subTitle", "subURI", "subUpdates", "tgBotAPIServer", "tgBotBackup", "tgBotChatId", "tgBotEnable", "tgBotProxy", "tgBotToken", "tgCpu", "tgEnabledEvents", "tgLang", "tgMemory", "tgRunTime", "timeLocation", "trafficDiff", "trustedProxyCIDRs", "twoFactorEnable", "twoFactorToken", "warpUpdateInterval", "webBasePath", "webCertFile", "webDomain", "webKeyFile", "webListen", "webPort" ], "type": "object" }, "AllSettingView": { "properties": { "datepicker": { "type": "string" }, "expireDiff": { "minimum": 0, "type": "integer" }, "externalTrafficInformEnable": { "type": "boolean" }, "externalTrafficInformURI": { "type": "string" }, "hasApiToken": { "type": "boolean" }, "hasLdapPassword": { "type": "boolean" }, "hasNordSecret": { "type": "boolean" }, "hasSmtpPassword": { "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": { "type": "boolean" }, "ldapFlagField": { "type": "string" }, "ldapHost": { "type": "string" }, "ldapInboundTags": { "type": "string" }, "ldapInsecureSkipVerify": { "type": "boolean" }, "ldapInvertFlag": { "type": "boolean" }, "ldapPassword": { "type": "string" }, "ldapPort": { "maximum": 65535, "minimum": 0, "type": "integer" }, "ldapSyncCron": { "type": "string" }, "ldapTruthyValues": { "type": "string" }, "ldapUseTLS": { "type": "boolean" }, "ldapUserAttr": { "type": "string" }, "ldapUserFilter": { "type": "string" }, "ldapVlessField": { "type": "string" }, "pageSize": { "maximum": 1000, "minimum": 0, "type": "integer" }, "panelOutbound": { "type": "string" }, "remarkTemplate": { "type": "string" }, "restartXrayOnClientDisable": { "type": "boolean" }, "sessionMaxAge": { "maximum": 525600, "minimum": 1, "type": "integer" }, "smtpCpu": { "maximum": 100, "minimum": 0, "type": "integer" }, "smtpEnable": { "type": "boolean" }, "smtpEnabledEvents": { "type": "string" }, "smtpEncryptionType": { "type": "string" }, "smtpHost": { "type": "string" }, "smtpMemory": { "maximum": 100, "minimum": 0, "type": "integer" }, "smtpPassword": { "type": "string" }, "smtpPort": { "maximum": 65535, "minimum": 1, "type": "integer" }, "smtpTo": { "type": "string" }, "smtpUsername": { "type": "string" }, "subAnnounce": { "type": "string" }, "subCertFile": { "type": "string" }, "subClashEnable": { "type": "boolean" }, "subClashEnableRouting": { "type": "boolean" }, "subClashPath": { "type": "string" }, "subClashRules": { "type": "string" }, "subClashURI": { "type": "string" }, "subDomain": { "type": "string" }, "subEnable": { "type": "boolean" }, "subEnableRouting": { "type": "boolean" }, "subEncrypt": { "type": "boolean" }, "subHideSettings": { "type": "boolean" }, "subIncyEnableRouting": { "type": "boolean" }, "subIncyRoutingRules": { "type": "string" }, "subJsonEnable": { "type": "boolean" }, "subJsonFinalMask": { "type": "string" }, "subJsonMux": { "type": "string" }, "subJsonPath": { "type": "string" }, "subJsonRules": { "type": "string" }, "subJsonURI": { "type": "string" }, "subKeyFile": { "type": "string" }, "subListen": { "type": "string" }, "subPath": { "type": "string" }, "subPort": { "maximum": 65535, "minimum": 1, "type": "integer" }, "subProfileUrl": { "type": "string" }, "subRoutingRules": { "type": "string" }, "subSupportUrl": { "type": "string" }, "subThemeDir": { "type": "string" }, "subTitle": { "type": "string" }, "subURI": { "type": "string" }, "subUpdates": { "maximum": 525600, "minimum": 0, "type": "integer" }, "tgBotAPIServer": { "type": "string" }, "tgBotBackup": { "type": "boolean" }, "tgBotChatId": { "type": "string" }, "tgBotEnable": { "type": "boolean" }, "tgBotProxy": { "type": "string" }, "tgBotToken": { "type": "string" }, "tgCpu": { "maximum": 100, "minimum": 0, "type": "integer" }, "tgEnabledEvents": { "type": "string" }, "tgLang": { "type": "string" }, "tgMemory": { "maximum": 100, "minimum": 0, "type": "integer" }, "tgRunTime": { "type": "string" }, "timeLocation": { "type": "string" }, "trafficDiff": { "maximum": 100, "minimum": 0, "type": "integer" }, "trustedProxyCIDRs": { "type": "string" }, "twoFactorEnable": { "type": "boolean" }, "twoFactorToken": { "type": "string" }, "warpUpdateInterval": { "minimum": 0, "type": "integer" }, "webBasePath": { "type": "string" }, "webCertFile": { "type": "string" }, "webDomain": { "type": "string" }, "webKeyFile": { "type": "string" }, "webListen": { "type": "string" }, "webPort": { "maximum": 65535, "minimum": 1, "type": "integer" } }, "required": [ "datepicker", "expireDiff", "externalTrafficInformEnable", "externalTrafficInformURI", "hasApiToken", "hasLdapPassword", "hasNordSecret", "hasSmtpPassword", "hasTgBotToken", "hasTwoFactorToken", "hasWarpSecret", "ldapAutoCreate", "ldapAutoDelete", "ldapBaseDN", "ldapBindDN", "ldapDefaultExpiryDays", "ldapDefaultLimitIP", "ldapDefaultTotalGB", "ldapEnable", "ldapFlagField", "ldapHost", "ldapInboundTags", "ldapInsecureSkipVerify", "ldapInvertFlag", "ldapPassword", "ldapPort", "ldapSyncCron", "ldapTruthyValues", "ldapUseTLS", "ldapUserAttr", "ldapUserFilter", "ldapVlessField", "pageSize", "panelOutbound", "remarkTemplate", "restartXrayOnClientDisable", "sessionMaxAge", "smtpCpu", "smtpEnable", "smtpEnabledEvents", "smtpEncryptionType", "smtpHost", "smtpMemory", "smtpPassword", "smtpPort", "smtpTo", "smtpUsername", "subAnnounce", "subCertFile", "subClashEnable", "subClashEnableRouting", "subClashPath", "subClashRules", "subClashURI", "subDomain", "subEnable", "subEnableRouting", "subEncrypt", "subHideSettings", "subIncyEnableRouting", "subIncyRoutingRules", "subJsonEnable", "subJsonFinalMask", "subJsonMux", "subJsonPath", "subJsonRules", "subJsonURI", "subKeyFile", "subListen", "subPath", "subPort", "subProfileUrl", "subRoutingRules", "subSupportUrl", "subThemeDir", "subTitle", "subURI", "subUpdates", "tgBotAPIServer", "tgBotBackup", "tgBotChatId", "tgBotEnable", "tgBotProxy", "tgBotToken", "tgCpu", "tgEnabledEvents", "tgLang", "tgMemory", "tgRunTime", "timeLocation", "trafficDiff", "trustedProxyCIDRs", "twoFactorEnable", "twoFactorToken", "warpUpdateInterval", "webBasePath", "webCertFile", "webDomain", "webKeyFile", "webListen", "webPort" ], "type": "object" }, "ApiToken": { "properties": { "createdAt": { "format": "int64", "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, "format": "int64", "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": { "adTag": { "example": "0123456789abcdef0123456789abcdef", "type": "string" }, "allowedIPs": { "items": { "type": "string" }, "type": "array" }, "auth": { "description": "Auth password (Hysteria)", "type": "string" }, "comment": { "description": "Client comment", "type": "string" }, "created_at": { "description": "Creation timestamp", "format": "int64", "type": "integer" }, "email": { "description": "Client email identifier", "type": "string" }, "enable": { "description": "Whether the client is enabled", "type": "boolean" }, "expiryTime": { "description": "Expiration timestamp", "format": "int64", "type": "integer" }, "flow": { "description": "Flow control (XTLS)", "type": "string" }, "group": { "description": "Logical grouping label", "type": "string" }, "id": { "description": "Unique client identifier", "type": "string" }, "keepAlive": { "type": "integer" }, "limitIp": { "description": "IP limit for this client", "type": "integer" }, "password": { "description": "Client password", "type": "string" }, "preSharedKey": { "type": "string" }, "privateKey": { "type": "string" }, "publicKey": { "type": "string" }, "reset": { "description": "Reset period in days", "type": "integer" }, "reverse": { "allOf": [ { "$ref": "#/components/schemas/ClientReverse" } ], "description": "VLESS simple reverse proxy settings", "nullable": true }, "secret": { "example": "ee1234567890abcdef1234567890abcd7777772e636c6f7564666c6172652e636f6d", "type": "string" }, "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", "format": "int64", "type": "integer" }, "totalGB": { "description": "Total traffic limit in GB", "format": "int64", "type": "integer" }, "updated_at": { "description": "Last update timestamp", "format": "int64", "type": "integer" } }, "required": [ "comment", "email", "enable", "expiryTime", "limitIp", "reset", "security", "subId", "tgId", "totalGB" ], "type": "object" }, "ClientInbound": { "properties": { "clientId": { "type": "integer" }, "createdAt": { "format": "int64", "type": "integer" }, "flowOverride": { "type": "string" }, "inboundId": { "type": "integer" } }, "required": [ "clientId", "createdAt", "flowOverride", "inboundId" ], "type": "object" }, "ClientRecord": { "properties": { "adTag": { "type": "string" }, "allowedIPs": { "type": "string" }, "auth": { "type": "string" }, "comment": { "type": "string" }, "createdAt": { "format": "int64", "type": "integer" }, "email": { "type": "string" }, "enable": { "type": "boolean" }, "expiryTime": { "format": "int64", "type": "integer" }, "flow": { "type": "string" }, "group": { "type": "string" }, "id": { "type": "integer" }, "keepAlive": { "type": "integer" }, "limitIp": { "type": "integer" }, "password": { "type": "string" }, "preSharedKey": { "type": "string" }, "privateKey": { "type": "string" }, "publicKey": { "type": "string" }, "reset": { "type": "integer" }, "reverse": {}, "secret": { "type": "string" }, "security": { "type": "string" }, "subId": { "type": "string" }, "tgId": { "format": "int64", "type": "integer" }, "totalGB": { "format": "int64", "type": "integer" }, "updatedAt": { "format": "int64", "type": "integer" }, "uuid": { "type": "string" } }, "required": [ "adTag", "allowedIPs", "auth", "comment", "createdAt", "email", "enable", "expiryTime", "flow", "group", "id", "keepAlive", "limitIp", "password", "preSharedKey", "privateKey", "publicKey", "reset", "reverse", "secret", "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, "format": "int64", "type": "integer" }, "email": { "example": "user1", "type": "string" }, "enable": { "example": true, "type": "boolean" }, "expiryTime": { "example": 1735689600000, "format": "int64", "type": "integer" }, "id": { "example": 14825, "type": "integer" }, "inboundId": { "example": 1, "type": "integer" }, "lastOnline": { "example": 1735680000000, "format": "int64", "type": "integer" }, "reset": { "example": 0, "type": "integer" }, "subId": { "example": "i7tvdpeffi0hvvf1", "type": "string" }, "total": { "example": 10737418240, "format": "int64", "type": "integer" }, "up": { "example": 1048576, "format": "int64", "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" }, "Host": { "properties": { "address": { "example": "cdn.example.com", "type": "string" }, "allowInsecure": { "type": "boolean" }, "alpn": { "items": { "type": "string" }, "type": "array" }, "createdAt": { "format": "int64", "type": "integer" }, "echConfigList": { "type": "string" }, "excludeFromSubTypes": { "items": { "type": "string" }, "type": "array" }, "finalMask": { "description": "FinalMask is a JSON object of xray finalmask masks (tcp/udp/quicParams),\nmerged into this host's JSON-subscription stream. Empty = no override.", "type": "string" }, "fingerprint": { "type": "string" }, "groupId": { "type": "string" }, "hostHeader": { "type": "string" }, "id": { "example": 1, "type": "integer" }, "inboundId": { "example": 1, "type": "integer" }, "isDisabled": { "type": "boolean" }, "isHidden": { "type": "boolean" }, "keepSniBlank": { "type": "boolean" }, "mihomoIpVersion": { "enum": [ "dual", "ipv4", "ipv6", "ipv4-prefer", "ipv6-prefer" ], "type": "string" }, "mihomoX25519": { "type": "boolean" }, "muxParams": {}, "nodeGuids": { "items": { "type": "string" }, "type": "array" }, "overrideSniFromAddress": { "type": "boolean" }, "path": { "type": "string" }, "pinnedPeerCertSha256": { "items": { "type": "string" }, "type": "array" }, "port": { "example": 8443, "maximum": 65535, "minimum": 0, "type": "integer" }, "remark": { "example": "cdn-front", "maxLength": 256, "type": "string" }, "security": { "enum": [ "same", "tls", "none", "reality" ], "example": "same", "type": "string" }, "serverDescription": { "maxLength": 64, "type": "string" }, "shuffleHost": { "type": "boolean" }, "sni": { "type": "string" }, "sockoptParams": {}, "sortOrder": { "type": "integer" }, "tags": { "items": { "type": "string" }, "type": "array" }, "updatedAt": { "format": "int64", "type": "integer" }, "verifyPeerCertByName": { "type": "string" }, "vlessRoute": { "description": "Single VLESS route value (0-65535) baked into the subscription UUID's 3rd\ngroup (bytes 6-7), which xray reads via net.PortFromBytes(id[6:8]). Empty = none.", "example": "443", "type": "string" } }, "required": [ "address", "allowInsecure", "alpn", "createdAt", "echConfigList", "excludeFromSubTypes", "finalMask", "fingerprint", "groupId", "hostHeader", "id", "inboundId", "isDisabled", "isHidden", "keepSniBlank", "mihomoIpVersion", "mihomoX25519", "muxParams", "overrideSniFromAddress", "path", "pinnedPeerCertSha256", "port", "remark", "security", "serverDescription", "shuffleHost", "sni", "sockoptParams", "sortOrder", "tags", "updatedAt", "verifyPeerCertByName", "vlessRoute" ], "type": "object" }, "HostGroup": { "properties": { "allowInsecure": { "type": "boolean" }, "alpn": { "items": { "type": "string" }, "type": "array" }, "echConfigList": { "type": "string" }, "excludeFromSubTypes": { "items": { "type": "string" }, "type": "array" }, "finalMask": { "type": "string" }, "fingerprint": { "type": "string" }, "groupId": { "type": "string" }, "hostHeader": { "type": "string" }, "hosts": { "items": { "type": "string" }, "type": "array" }, "inboundIds": { "items": { "type": "integer" }, "type": "array" }, "isDisabled": { "type": "boolean" }, "isHidden": { "type": "boolean" }, "keepSniBlank": { "type": "boolean" }, "mihomoIpVersion": { "enum": [ "dual", "ipv4", "ipv6", "ipv4-prefer", "ipv6-prefer" ], "type": "string" }, "mihomoX25519": { "type": "boolean" }, "muxParams": { "type": "string" }, "nodeGuids": { "items": { "type": "string" }, "type": "array" }, "overrideSniFromAddress": { "type": "boolean" }, "path": { "type": "string" }, "pinnedPeerCertSha256": { "items": { "type": "string" }, "type": "array" }, "port": { "maximum": 65535, "minimum": 0, "type": "integer" }, "remark": { "maxLength": 256, "type": "string" }, "security": { "enum": [ "same", "tls", "none", "reality" ], "type": "string" }, "serverDescription": { "maxLength": 64, "type": "string" }, "shuffleHost": { "type": "boolean" }, "sni": { "type": "string" }, "sockoptParams": { "type": "string" }, "sortOrder": { "type": "integer" }, "tags": { "items": { "type": "string" }, "type": "array" }, "verifyPeerCertByName": { "type": "string" }, "vlessRoute": { "type": "string" } }, "required": [ "allowInsecure", "alpn", "echConfigList", "excludeFromSubTypes", "finalMask", "fingerprint", "groupId", "hostHeader", "hosts", "inboundIds", "isDisabled", "isHidden", "keepSniBlank", "mihomoIpVersion", "mihomoX25519", "muxParams", "nodeGuids", "overrideSniFromAddress", "path", "pinnedPeerCertSha256", "port", "remark", "security", "serverDescription", "shuffleHost", "sni", "sockoptParams", "sortOrder", "tags", "verifyPeerCertByName", "vlessRoute" ], "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", "format": "int64", "type": "integer" }, "enable": { "description": "Whether the inbound is enabled", "example": true, "type": "boolean" }, "expiryTime": { "description": "Expiration timestamp", "format": "int64", "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", "format": "int64", "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": {}, "subSortIndex": { "description": "1-based sort order of this inbound's links in subscription output only (lower first; ties by id)", "example": 1, "minimum": 1, "type": "integer" }, "tag": { "example": "in-443-tcp", "type": "string" }, "total": { "description": "Total traffic limit in bytes", "format": "int64", "type": "integer" }, "trafficReset": { "description": "Traffic reset schedule", "enum": [ "never", "hourly", "daily", "weekly", "monthly" ], "type": "string" }, "up": { "description": "Upload traffic in bytes", "format": "int64", "type": "integer" } }, "required": [ "clientStats", "down", "enable", "expiryTime", "id", "lastTrafficResetTime", "listen", "port", "protocol", "remark", "settings", "shareAddr", "shareAddrStrategy", "sniffing", "streamSettings", "subSortIndex", "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": { "enable": { "example": true, "type": "boolean" }, "id": { "example": 1, "type": "integer" }, "listen": { "type": "string" }, "mtprotoDomain": { "type": "string" }, "nodeAddress": { "description": "Share-host resolution inputs, mirroring the subscription's\nresolveInboundAddress so the clients page renders a node-managed WireGuard\nEndpoint that points at the node, not the master panel. NodeAddress is the\nhosting node's externally reachable address (empty for this panel's own\ninbounds); Listen and ShareAddrStrategy/ShareAddr feed the same\nnode→listen→custom fallback the share/QR links already use.", "type": "string" }, "nodeId": { "description": "Hosting node; nil for this panel's own inbounds. Lets the clients\npage map a node filter onto inbound IDs (#4997).", "nullable": true, "type": "integer" }, "port": { "example": 443, "type": "integer" }, "protocol": { "example": "vless", "type": "string" }, "remark": { "example": "VLESS-443", "type": "string" }, "shareAddr": { "type": "string" }, "shareAddrStrategy": { "type": "string" }, "ssMethod": { "type": "string" }, "tag": { "example": "in-443-tcp", "type": "string" }, "tlsFlowCapable": { "example": true, "type": "boolean" }, "wgDns": { "type": "string" }, "wgMtu": { "type": "integer" }, "wgPublicKey": { "type": "string" } }, "required": [ "enable", "id", "port", "protocol", "remark", "ssMethod", "tag", "tlsFlowCapable" ], "type": "object" }, "Msg": { "properties": { "msg": { "type": "string" }, "obj": {}, "success": { "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": { "activeCount": { "example": 23, "type": "integer" }, "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": { "format": "int64", "type": "integer" }, "cpuPct": { "example": 23.5, "type": "number" }, "createdAt": { "example": 1700000000, "format": "int64", "type": "integer" }, "depletedCount": { "example": 1, "type": "integer" }, "disabledCount": { "example": 3, "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" }, "inboundSyncMode": { "enum": [ "all", "selected" ], "type": "string" }, "inboundTags": { "items": { "type": "string" }, "type": "array" }, "lastError": { "type": "string" }, "lastHeartbeat": { "description": "unix seconds, 0 = never", "example": 1700000000, "format": "int64", "type": "integer" }, "latencyMs": { "example": 42, "type": "integer" }, "memPct": { "example": 45.1, "type": "number" }, "name": { "example": "de-fra-1", "type": "string" }, "netDown": { "example": 2097152, "format": "int64", "type": "integer" }, "netUp": { "example": 1048576, "format": "int64", "type": "integer" }, "onlineCount": { "example": 3, "type": "integer" }, "outboundTag": { "type": "string" }, "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", "mtls" ], "type": "string" }, "transitive": { "type": "boolean" }, "updatedAt": { "example": 1700000000, "format": "int64", "type": "integer" }, "uptimeSecs": { "example": 86400, "format": "int64", "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": [ "activeCount", "address", "allowPrivateAddress", "apiToken", "basePath", "clientCount", "configDirty", "configDirtyAt", "cpuPct", "createdAt", "depletedCount", "disabledCount", "enable", "guid", "id", "inboundCount", "inboundSyncMode", "inboundTags", "lastError", "lastHeartbeat", "latencyMs", "memPct", "name", "netDown", "netUp", "onlineCount", "outboundTag", "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": { "format": "int64", "type": "integer" }, "id": { "type": "integer" }, "tag": { "type": "string" }, "total": { "format": "int64", "type": "integer" }, "up": { "format": "int64", "type": "integer" } }, "required": [ "down", "id", "tag", "total", "up" ], "type": "object" }, "PanelUpdateStatus": { "description": "PanelUpdateStatus reports the outcome of the most recently launched panel\nself-update. RunID lets the caller confirm this status belongs to the\nupdate it started rather than a stale result left over from an earlier\nrun; State is one of \"pending\", \"success\", or \"failed\". RunID is a decimal\nstring, not a JSON number: it's a formatted UnixNano timestamp, and\nJavaScript's number type can't represent that precisely (it exceeds\nNumber.MAX_SAFE_INTEGER), which would let two different runs round to the\nsame value on the wire and defeat the whole point of this field.", "properties": { "exitCode": { "example": 0, "type": "integer" }, "finishedAt": { "example": 1735689612, "format": "int64", "type": "integer" }, "runId": { "example": "1735689600123456789", "type": "string" }, "state": { "example": "success", "type": "string" } }, "required": [ "exitCode", "finishedAt", "runId", "state" ], "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, "format": "int64", "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" }, "RealityScanResult": { "properties": { "alpn": { "example": "h2", "type": "string" }, "certIssuer": { "example": "Google Trust Services", "type": "string" }, "certSubject": { "example": "cloudflare.com", "type": "string" }, "certValid": { "example": true, "type": "boolean" }, "curveID": { "example": "X25519", "type": "string" }, "feasible": { "example": true, "type": "boolean" }, "h2": { "example": true, "type": "boolean" }, "host": { "example": "www.cloudflare.com", "type": "string" }, "ip": { "example": "104.16.124.96", "type": "string" }, "latencyMs": { "example": 180, "type": "integer" }, "notAfter": { "example": "2026-08-01T00:00:00Z", "type": "string" }, "port": { "example": 443, "type": "integer" }, "reason": { "type": "string" }, "serverNames": { "items": { "type": "string" }, "type": "array" }, "target": { "example": "www.cloudflare.com:443", "type": "string" }, "tls13": { "example": true, "type": "boolean" }, "tlsVersion": { "example": "1.3", "type": "string" }, "x25519": { "example": true, "type": "boolean" } }, "required": [ "alpn", "certIssuer", "certSubject", "certValid", "curveID", "feasible", "h2", "host", "ip", "latencyMs", "notAfter", "port", "reason", "serverNames", "target", "tls13", "tlsVersion", "x25519" ], "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" } };