mirror of
https://github.com/MHSanaei/3x-ui.git
synced 2026-07-26 09:52:14 +03:00
fix(api): preserve 64-bit integer schema formats (#5908)
Co-authored-by: sanmaxdev <sanmaxdev@users.noreply.github.com>
This commit is contained in:
committed by
GitHub
parent
814cda3fb4
commit
2c95e29297
@@ -881,6 +881,7 @@
|
|||||||
"ApiToken": {
|
"ApiToken": {
|
||||||
"properties": {
|
"properties": {
|
||||||
"createdAt": {
|
"createdAt": {
|
||||||
|
"format": "int64",
|
||||||
"type": "integer"
|
"type": "integer"
|
||||||
},
|
},
|
||||||
"enabled": {
|
"enabled": {
|
||||||
@@ -910,6 +911,7 @@
|
|||||||
"properties": {
|
"properties": {
|
||||||
"createdAt": {
|
"createdAt": {
|
||||||
"example": 1736000000,
|
"example": 1736000000,
|
||||||
|
"format": "int64",
|
||||||
"type": "integer"
|
"type": "integer"
|
||||||
},
|
},
|
||||||
"enabled": {
|
"enabled": {
|
||||||
@@ -960,6 +962,7 @@
|
|||||||
},
|
},
|
||||||
"created_at": {
|
"created_at": {
|
||||||
"description": "Creation timestamp",
|
"description": "Creation timestamp",
|
||||||
|
"format": "int64",
|
||||||
"type": "integer"
|
"type": "integer"
|
||||||
},
|
},
|
||||||
"email": {
|
"email": {
|
||||||
@@ -972,6 +975,7 @@
|
|||||||
},
|
},
|
||||||
"expiryTime": {
|
"expiryTime": {
|
||||||
"description": "Expiration timestamp",
|
"description": "Expiration timestamp",
|
||||||
|
"format": "int64",
|
||||||
"type": "integer"
|
"type": "integer"
|
||||||
},
|
},
|
||||||
"flow": {
|
"flow": {
|
||||||
@@ -1033,14 +1037,17 @@
|
|||||||
},
|
},
|
||||||
"tgId": {
|
"tgId": {
|
||||||
"description": "Telegram user ID for notifications",
|
"description": "Telegram user ID for notifications",
|
||||||
|
"format": "int64",
|
||||||
"type": "integer"
|
"type": "integer"
|
||||||
},
|
},
|
||||||
"totalGB": {
|
"totalGB": {
|
||||||
"description": "Total traffic limit in GB",
|
"description": "Total traffic limit in GB",
|
||||||
|
"format": "int64",
|
||||||
"type": "integer"
|
"type": "integer"
|
||||||
},
|
},
|
||||||
"updated_at": {
|
"updated_at": {
|
||||||
"description": "Last update timestamp",
|
"description": "Last update timestamp",
|
||||||
|
"format": "int64",
|
||||||
"type": "integer"
|
"type": "integer"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@@ -1064,6 +1071,7 @@
|
|||||||
"type": "integer"
|
"type": "integer"
|
||||||
},
|
},
|
||||||
"createdAt": {
|
"createdAt": {
|
||||||
|
"format": "int64",
|
||||||
"type": "integer"
|
"type": "integer"
|
||||||
},
|
},
|
||||||
"flowOverride": {
|
"flowOverride": {
|
||||||
@@ -1096,6 +1104,7 @@
|
|||||||
"type": "string"
|
"type": "string"
|
||||||
},
|
},
|
||||||
"createdAt": {
|
"createdAt": {
|
||||||
|
"format": "int64",
|
||||||
"type": "integer"
|
"type": "integer"
|
||||||
},
|
},
|
||||||
"email": {
|
"email": {
|
||||||
@@ -1105,6 +1114,7 @@
|
|||||||
"type": "boolean"
|
"type": "boolean"
|
||||||
},
|
},
|
||||||
"expiryTime": {
|
"expiryTime": {
|
||||||
|
"format": "int64",
|
||||||
"type": "integer"
|
"type": "integer"
|
||||||
},
|
},
|
||||||
"flow": {
|
"flow": {
|
||||||
@@ -1148,12 +1158,15 @@
|
|||||||
"type": "string"
|
"type": "string"
|
||||||
},
|
},
|
||||||
"tgId": {
|
"tgId": {
|
||||||
|
"format": "int64",
|
||||||
"type": "integer"
|
"type": "integer"
|
||||||
},
|
},
|
||||||
"totalGB": {
|
"totalGB": {
|
||||||
|
"format": "int64",
|
||||||
"type": "integer"
|
"type": "integer"
|
||||||
},
|
},
|
||||||
"updatedAt": {
|
"updatedAt": {
|
||||||
|
"format": "int64",
|
||||||
"type": "integer"
|
"type": "integer"
|
||||||
},
|
},
|
||||||
"uuid": {
|
"uuid": {
|
||||||
@@ -1206,6 +1219,7 @@
|
|||||||
"properties": {
|
"properties": {
|
||||||
"down": {
|
"down": {
|
||||||
"example": 2097152,
|
"example": 2097152,
|
||||||
|
"format": "int64",
|
||||||
"type": "integer"
|
"type": "integer"
|
||||||
},
|
},
|
||||||
"email": {
|
"email": {
|
||||||
@@ -1218,6 +1232,7 @@
|
|||||||
},
|
},
|
||||||
"expiryTime": {
|
"expiryTime": {
|
||||||
"example": 1735689600000,
|
"example": 1735689600000,
|
||||||
|
"format": "int64",
|
||||||
"type": "integer"
|
"type": "integer"
|
||||||
},
|
},
|
||||||
"id": {
|
"id": {
|
||||||
@@ -1230,6 +1245,7 @@
|
|||||||
},
|
},
|
||||||
"lastOnline": {
|
"lastOnline": {
|
||||||
"example": 1735680000000,
|
"example": 1735680000000,
|
||||||
|
"format": "int64",
|
||||||
"type": "integer"
|
"type": "integer"
|
||||||
},
|
},
|
||||||
"reset": {
|
"reset": {
|
||||||
@@ -1242,10 +1258,12 @@
|
|||||||
},
|
},
|
||||||
"total": {
|
"total": {
|
||||||
"example": 10737418240,
|
"example": 10737418240,
|
||||||
|
"format": "int64",
|
||||||
"type": "integer"
|
"type": "integer"
|
||||||
},
|
},
|
||||||
"up": {
|
"up": {
|
||||||
"example": 1048576,
|
"example": 1048576,
|
||||||
|
"format": "int64",
|
||||||
"type": "integer"
|
"type": "integer"
|
||||||
},
|
},
|
||||||
"uuid": {
|
"uuid": {
|
||||||
@@ -1316,6 +1334,7 @@
|
|||||||
"type": "array"
|
"type": "array"
|
||||||
},
|
},
|
||||||
"createdAt": {
|
"createdAt": {
|
||||||
|
"format": "int64",
|
||||||
"type": "integer"
|
"type": "integer"
|
||||||
},
|
},
|
||||||
"echConfigList": {
|
"echConfigList": {
|
||||||
@@ -1431,6 +1450,7 @@
|
|||||||
"type": "array"
|
"type": "array"
|
||||||
},
|
},
|
||||||
"updatedAt": {
|
"updatedAt": {
|
||||||
|
"format": "int64",
|
||||||
"type": "integer"
|
"type": "integer"
|
||||||
},
|
},
|
||||||
"verifyPeerCertByName": {
|
"verifyPeerCertByName": {
|
||||||
@@ -1660,6 +1680,7 @@
|
|||||||
},
|
},
|
||||||
"down": {
|
"down": {
|
||||||
"description": "Download traffic in bytes",
|
"description": "Download traffic in bytes",
|
||||||
|
"format": "int64",
|
||||||
"type": "integer"
|
"type": "integer"
|
||||||
},
|
},
|
||||||
"enable": {
|
"enable": {
|
||||||
@@ -1669,6 +1690,7 @@
|
|||||||
},
|
},
|
||||||
"expiryTime": {
|
"expiryTime": {
|
||||||
"description": "Expiration timestamp",
|
"description": "Expiration timestamp",
|
||||||
|
"format": "int64",
|
||||||
"type": "integer"
|
"type": "integer"
|
||||||
},
|
},
|
||||||
"fallbackParent": {
|
"fallbackParent": {
|
||||||
@@ -1687,6 +1709,7 @@
|
|||||||
},
|
},
|
||||||
"lastTrafficResetTime": {
|
"lastTrafficResetTime": {
|
||||||
"description": "Last traffic reset timestamp",
|
"description": "Last traffic reset timestamp",
|
||||||
|
"format": "int64",
|
||||||
"type": "integer"
|
"type": "integer"
|
||||||
},
|
},
|
||||||
"listen": {
|
"listen": {
|
||||||
@@ -1755,6 +1778,7 @@
|
|||||||
},
|
},
|
||||||
"total": {
|
"total": {
|
||||||
"description": "Total traffic limit in bytes",
|
"description": "Total traffic limit in bytes",
|
||||||
|
"format": "int64",
|
||||||
"type": "integer"
|
"type": "integer"
|
||||||
},
|
},
|
||||||
"trafficReset": {
|
"trafficReset": {
|
||||||
@@ -1770,6 +1794,7 @@
|
|||||||
},
|
},
|
||||||
"up": {
|
"up": {
|
||||||
"description": "Upload traffic in bytes",
|
"description": "Upload traffic in bytes",
|
||||||
|
"format": "int64",
|
||||||
"type": "integer"
|
"type": "integer"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@@ -1981,6 +2006,7 @@
|
|||||||
"type": "boolean"
|
"type": "boolean"
|
||||||
},
|
},
|
||||||
"configDirtyAt": {
|
"configDirtyAt": {
|
||||||
|
"format": "int64",
|
||||||
"type": "integer"
|
"type": "integer"
|
||||||
},
|
},
|
||||||
"cpuPct": {
|
"cpuPct": {
|
||||||
@@ -1989,6 +2015,7 @@
|
|||||||
},
|
},
|
||||||
"createdAt": {
|
"createdAt": {
|
||||||
"example": 1700000000,
|
"example": 1700000000,
|
||||||
|
"format": "int64",
|
||||||
"type": "integer"
|
"type": "integer"
|
||||||
},
|
},
|
||||||
"depletedCount": {
|
"depletedCount": {
|
||||||
@@ -2034,6 +2061,7 @@
|
|||||||
"lastHeartbeat": {
|
"lastHeartbeat": {
|
||||||
"description": "unix seconds, 0 = never",
|
"description": "unix seconds, 0 = never",
|
||||||
"example": 1700000000,
|
"example": 1700000000,
|
||||||
|
"format": "int64",
|
||||||
"type": "integer"
|
"type": "integer"
|
||||||
},
|
},
|
||||||
"latencyMs": {
|
"latencyMs": {
|
||||||
@@ -2050,10 +2078,12 @@
|
|||||||
},
|
},
|
||||||
"netDown": {
|
"netDown": {
|
||||||
"example": 2097152,
|
"example": 2097152,
|
||||||
|
"format": "int64",
|
||||||
"type": "integer"
|
"type": "integer"
|
||||||
},
|
},
|
||||||
"netUp": {
|
"netUp": {
|
||||||
"example": 1048576,
|
"example": 1048576,
|
||||||
|
"format": "int64",
|
||||||
"type": "integer"
|
"type": "integer"
|
||||||
},
|
},
|
||||||
"onlineCount": {
|
"onlineCount": {
|
||||||
@@ -2110,10 +2140,12 @@
|
|||||||
},
|
},
|
||||||
"updatedAt": {
|
"updatedAt": {
|
||||||
"example": 1700000000,
|
"example": 1700000000,
|
||||||
|
"format": "int64",
|
||||||
"type": "integer"
|
"type": "integer"
|
||||||
},
|
},
|
||||||
"uptimeSecs": {
|
"uptimeSecs": {
|
||||||
"example": 86400,
|
"example": 86400,
|
||||||
|
"format": "int64",
|
||||||
"type": "integer"
|
"type": "integer"
|
||||||
},
|
},
|
||||||
"xrayError": {
|
"xrayError": {
|
||||||
@@ -2175,6 +2207,7 @@
|
|||||||
"description": "OutboundTraffics tracks traffic statistics for Xray outbound connections.",
|
"description": "OutboundTraffics tracks traffic statistics for Xray outbound connections.",
|
||||||
"properties": {
|
"properties": {
|
||||||
"down": {
|
"down": {
|
||||||
|
"format": "int64",
|
||||||
"type": "integer"
|
"type": "integer"
|
||||||
},
|
},
|
||||||
"id": {
|
"id": {
|
||||||
@@ -2184,9 +2217,11 @@
|
|||||||
"type": "string"
|
"type": "string"
|
||||||
},
|
},
|
||||||
"total": {
|
"total": {
|
||||||
|
"format": "int64",
|
||||||
"type": "integer"
|
"type": "integer"
|
||||||
},
|
},
|
||||||
"up": {
|
"up": {
|
||||||
|
"format": "int64",
|
||||||
"type": "integer"
|
"type": "integer"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@@ -2208,6 +2243,7 @@
|
|||||||
},
|
},
|
||||||
"finishedAt": {
|
"finishedAt": {
|
||||||
"example": 1735689612,
|
"example": 1735689612,
|
||||||
|
"format": "int64",
|
||||||
"type": "integer"
|
"type": "integer"
|
||||||
},
|
},
|
||||||
"runId": {
|
"runId": {
|
||||||
@@ -2254,6 +2290,7 @@
|
|||||||
},
|
},
|
||||||
"uptimeSecs": {
|
"uptimeSecs": {
|
||||||
"example": 86400,
|
"example": 86400,
|
||||||
|
"format": "int64",
|
||||||
"type": "integer"
|
"type": "integer"
|
||||||
},
|
},
|
||||||
"xrayError": {
|
"xrayError": {
|
||||||
|
|||||||
@@ -855,6 +855,7 @@ export const SCHEMAS: Record<string, unknown> = {
|
|||||||
"ApiToken": {
|
"ApiToken": {
|
||||||
"properties": {
|
"properties": {
|
||||||
"createdAt": {
|
"createdAt": {
|
||||||
|
"format": "int64",
|
||||||
"type": "integer"
|
"type": "integer"
|
||||||
},
|
},
|
||||||
"enabled": {
|
"enabled": {
|
||||||
@@ -884,6 +885,7 @@ export const SCHEMAS: Record<string, unknown> = {
|
|||||||
"properties": {
|
"properties": {
|
||||||
"createdAt": {
|
"createdAt": {
|
||||||
"example": 1736000000,
|
"example": 1736000000,
|
||||||
|
"format": "int64",
|
||||||
"type": "integer"
|
"type": "integer"
|
||||||
},
|
},
|
||||||
"enabled": {
|
"enabled": {
|
||||||
@@ -934,6 +936,7 @@ export const SCHEMAS: Record<string, unknown> = {
|
|||||||
},
|
},
|
||||||
"created_at": {
|
"created_at": {
|
||||||
"description": "Creation timestamp",
|
"description": "Creation timestamp",
|
||||||
|
"format": "int64",
|
||||||
"type": "integer"
|
"type": "integer"
|
||||||
},
|
},
|
||||||
"email": {
|
"email": {
|
||||||
@@ -946,6 +949,7 @@ export const SCHEMAS: Record<string, unknown> = {
|
|||||||
},
|
},
|
||||||
"expiryTime": {
|
"expiryTime": {
|
||||||
"description": "Expiration timestamp",
|
"description": "Expiration timestamp",
|
||||||
|
"format": "int64",
|
||||||
"type": "integer"
|
"type": "integer"
|
||||||
},
|
},
|
||||||
"flow": {
|
"flow": {
|
||||||
@@ -1007,14 +1011,17 @@ export const SCHEMAS: Record<string, unknown> = {
|
|||||||
},
|
},
|
||||||
"tgId": {
|
"tgId": {
|
||||||
"description": "Telegram user ID for notifications",
|
"description": "Telegram user ID for notifications",
|
||||||
|
"format": "int64",
|
||||||
"type": "integer"
|
"type": "integer"
|
||||||
},
|
},
|
||||||
"totalGB": {
|
"totalGB": {
|
||||||
"description": "Total traffic limit in GB",
|
"description": "Total traffic limit in GB",
|
||||||
|
"format": "int64",
|
||||||
"type": "integer"
|
"type": "integer"
|
||||||
},
|
},
|
||||||
"updated_at": {
|
"updated_at": {
|
||||||
"description": "Last update timestamp",
|
"description": "Last update timestamp",
|
||||||
|
"format": "int64",
|
||||||
"type": "integer"
|
"type": "integer"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@@ -1038,6 +1045,7 @@ export const SCHEMAS: Record<string, unknown> = {
|
|||||||
"type": "integer"
|
"type": "integer"
|
||||||
},
|
},
|
||||||
"createdAt": {
|
"createdAt": {
|
||||||
|
"format": "int64",
|
||||||
"type": "integer"
|
"type": "integer"
|
||||||
},
|
},
|
||||||
"flowOverride": {
|
"flowOverride": {
|
||||||
@@ -1070,6 +1078,7 @@ export const SCHEMAS: Record<string, unknown> = {
|
|||||||
"type": "string"
|
"type": "string"
|
||||||
},
|
},
|
||||||
"createdAt": {
|
"createdAt": {
|
||||||
|
"format": "int64",
|
||||||
"type": "integer"
|
"type": "integer"
|
||||||
},
|
},
|
||||||
"email": {
|
"email": {
|
||||||
@@ -1079,6 +1088,7 @@ export const SCHEMAS: Record<string, unknown> = {
|
|||||||
"type": "boolean"
|
"type": "boolean"
|
||||||
},
|
},
|
||||||
"expiryTime": {
|
"expiryTime": {
|
||||||
|
"format": "int64",
|
||||||
"type": "integer"
|
"type": "integer"
|
||||||
},
|
},
|
||||||
"flow": {
|
"flow": {
|
||||||
@@ -1122,12 +1132,15 @@ export const SCHEMAS: Record<string, unknown> = {
|
|||||||
"type": "string"
|
"type": "string"
|
||||||
},
|
},
|
||||||
"tgId": {
|
"tgId": {
|
||||||
|
"format": "int64",
|
||||||
"type": "integer"
|
"type": "integer"
|
||||||
},
|
},
|
||||||
"totalGB": {
|
"totalGB": {
|
||||||
|
"format": "int64",
|
||||||
"type": "integer"
|
"type": "integer"
|
||||||
},
|
},
|
||||||
"updatedAt": {
|
"updatedAt": {
|
||||||
|
"format": "int64",
|
||||||
"type": "integer"
|
"type": "integer"
|
||||||
},
|
},
|
||||||
"uuid": {
|
"uuid": {
|
||||||
@@ -1180,6 +1193,7 @@ export const SCHEMAS: Record<string, unknown> = {
|
|||||||
"properties": {
|
"properties": {
|
||||||
"down": {
|
"down": {
|
||||||
"example": 2097152,
|
"example": 2097152,
|
||||||
|
"format": "int64",
|
||||||
"type": "integer"
|
"type": "integer"
|
||||||
},
|
},
|
||||||
"email": {
|
"email": {
|
||||||
@@ -1192,6 +1206,7 @@ export const SCHEMAS: Record<string, unknown> = {
|
|||||||
},
|
},
|
||||||
"expiryTime": {
|
"expiryTime": {
|
||||||
"example": 1735689600000,
|
"example": 1735689600000,
|
||||||
|
"format": "int64",
|
||||||
"type": "integer"
|
"type": "integer"
|
||||||
},
|
},
|
||||||
"id": {
|
"id": {
|
||||||
@@ -1204,6 +1219,7 @@ export const SCHEMAS: Record<string, unknown> = {
|
|||||||
},
|
},
|
||||||
"lastOnline": {
|
"lastOnline": {
|
||||||
"example": 1735680000000,
|
"example": 1735680000000,
|
||||||
|
"format": "int64",
|
||||||
"type": "integer"
|
"type": "integer"
|
||||||
},
|
},
|
||||||
"reset": {
|
"reset": {
|
||||||
@@ -1216,10 +1232,12 @@ export const SCHEMAS: Record<string, unknown> = {
|
|||||||
},
|
},
|
||||||
"total": {
|
"total": {
|
||||||
"example": 10737418240,
|
"example": 10737418240,
|
||||||
|
"format": "int64",
|
||||||
"type": "integer"
|
"type": "integer"
|
||||||
},
|
},
|
||||||
"up": {
|
"up": {
|
||||||
"example": 1048576,
|
"example": 1048576,
|
||||||
|
"format": "int64",
|
||||||
"type": "integer"
|
"type": "integer"
|
||||||
},
|
},
|
||||||
"uuid": {
|
"uuid": {
|
||||||
@@ -1290,6 +1308,7 @@ export const SCHEMAS: Record<string, unknown> = {
|
|||||||
"type": "array"
|
"type": "array"
|
||||||
},
|
},
|
||||||
"createdAt": {
|
"createdAt": {
|
||||||
|
"format": "int64",
|
||||||
"type": "integer"
|
"type": "integer"
|
||||||
},
|
},
|
||||||
"echConfigList": {
|
"echConfigList": {
|
||||||
@@ -1405,6 +1424,7 @@ export const SCHEMAS: Record<string, unknown> = {
|
|||||||
"type": "array"
|
"type": "array"
|
||||||
},
|
},
|
||||||
"updatedAt": {
|
"updatedAt": {
|
||||||
|
"format": "int64",
|
||||||
"type": "integer"
|
"type": "integer"
|
||||||
},
|
},
|
||||||
"verifyPeerCertByName": {
|
"verifyPeerCertByName": {
|
||||||
@@ -1634,6 +1654,7 @@ export const SCHEMAS: Record<string, unknown> = {
|
|||||||
},
|
},
|
||||||
"down": {
|
"down": {
|
||||||
"description": "Download traffic in bytes",
|
"description": "Download traffic in bytes",
|
||||||
|
"format": "int64",
|
||||||
"type": "integer"
|
"type": "integer"
|
||||||
},
|
},
|
||||||
"enable": {
|
"enable": {
|
||||||
@@ -1643,6 +1664,7 @@ export const SCHEMAS: Record<string, unknown> = {
|
|||||||
},
|
},
|
||||||
"expiryTime": {
|
"expiryTime": {
|
||||||
"description": "Expiration timestamp",
|
"description": "Expiration timestamp",
|
||||||
|
"format": "int64",
|
||||||
"type": "integer"
|
"type": "integer"
|
||||||
},
|
},
|
||||||
"fallbackParent": {
|
"fallbackParent": {
|
||||||
@@ -1661,6 +1683,7 @@ export const SCHEMAS: Record<string, unknown> = {
|
|||||||
},
|
},
|
||||||
"lastTrafficResetTime": {
|
"lastTrafficResetTime": {
|
||||||
"description": "Last traffic reset timestamp",
|
"description": "Last traffic reset timestamp",
|
||||||
|
"format": "int64",
|
||||||
"type": "integer"
|
"type": "integer"
|
||||||
},
|
},
|
||||||
"listen": {
|
"listen": {
|
||||||
@@ -1729,6 +1752,7 @@ export const SCHEMAS: Record<string, unknown> = {
|
|||||||
},
|
},
|
||||||
"total": {
|
"total": {
|
||||||
"description": "Total traffic limit in bytes",
|
"description": "Total traffic limit in bytes",
|
||||||
|
"format": "int64",
|
||||||
"type": "integer"
|
"type": "integer"
|
||||||
},
|
},
|
||||||
"trafficReset": {
|
"trafficReset": {
|
||||||
@@ -1744,6 +1768,7 @@ export const SCHEMAS: Record<string, unknown> = {
|
|||||||
},
|
},
|
||||||
"up": {
|
"up": {
|
||||||
"description": "Upload traffic in bytes",
|
"description": "Upload traffic in bytes",
|
||||||
|
"format": "int64",
|
||||||
"type": "integer"
|
"type": "integer"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@@ -1955,6 +1980,7 @@ export const SCHEMAS: Record<string, unknown> = {
|
|||||||
"type": "boolean"
|
"type": "boolean"
|
||||||
},
|
},
|
||||||
"configDirtyAt": {
|
"configDirtyAt": {
|
||||||
|
"format": "int64",
|
||||||
"type": "integer"
|
"type": "integer"
|
||||||
},
|
},
|
||||||
"cpuPct": {
|
"cpuPct": {
|
||||||
@@ -1963,6 +1989,7 @@ export const SCHEMAS: Record<string, unknown> = {
|
|||||||
},
|
},
|
||||||
"createdAt": {
|
"createdAt": {
|
||||||
"example": 1700000000,
|
"example": 1700000000,
|
||||||
|
"format": "int64",
|
||||||
"type": "integer"
|
"type": "integer"
|
||||||
},
|
},
|
||||||
"depletedCount": {
|
"depletedCount": {
|
||||||
@@ -2008,6 +2035,7 @@ export const SCHEMAS: Record<string, unknown> = {
|
|||||||
"lastHeartbeat": {
|
"lastHeartbeat": {
|
||||||
"description": "unix seconds, 0 = never",
|
"description": "unix seconds, 0 = never",
|
||||||
"example": 1700000000,
|
"example": 1700000000,
|
||||||
|
"format": "int64",
|
||||||
"type": "integer"
|
"type": "integer"
|
||||||
},
|
},
|
||||||
"latencyMs": {
|
"latencyMs": {
|
||||||
@@ -2024,10 +2052,12 @@ export const SCHEMAS: Record<string, unknown> = {
|
|||||||
},
|
},
|
||||||
"netDown": {
|
"netDown": {
|
||||||
"example": 2097152,
|
"example": 2097152,
|
||||||
|
"format": "int64",
|
||||||
"type": "integer"
|
"type": "integer"
|
||||||
},
|
},
|
||||||
"netUp": {
|
"netUp": {
|
||||||
"example": 1048576,
|
"example": 1048576,
|
||||||
|
"format": "int64",
|
||||||
"type": "integer"
|
"type": "integer"
|
||||||
},
|
},
|
||||||
"onlineCount": {
|
"onlineCount": {
|
||||||
@@ -2084,10 +2114,12 @@ export const SCHEMAS: Record<string, unknown> = {
|
|||||||
},
|
},
|
||||||
"updatedAt": {
|
"updatedAt": {
|
||||||
"example": 1700000000,
|
"example": 1700000000,
|
||||||
|
"format": "int64",
|
||||||
"type": "integer"
|
"type": "integer"
|
||||||
},
|
},
|
||||||
"uptimeSecs": {
|
"uptimeSecs": {
|
||||||
"example": 86400,
|
"example": 86400,
|
||||||
|
"format": "int64",
|
||||||
"type": "integer"
|
"type": "integer"
|
||||||
},
|
},
|
||||||
"xrayError": {
|
"xrayError": {
|
||||||
@@ -2149,6 +2181,7 @@ export const SCHEMAS: Record<string, unknown> = {
|
|||||||
"description": "OutboundTraffics tracks traffic statistics for Xray outbound connections.",
|
"description": "OutboundTraffics tracks traffic statistics for Xray outbound connections.",
|
||||||
"properties": {
|
"properties": {
|
||||||
"down": {
|
"down": {
|
||||||
|
"format": "int64",
|
||||||
"type": "integer"
|
"type": "integer"
|
||||||
},
|
},
|
||||||
"id": {
|
"id": {
|
||||||
@@ -2158,9 +2191,11 @@ export const SCHEMAS: Record<string, unknown> = {
|
|||||||
"type": "string"
|
"type": "string"
|
||||||
},
|
},
|
||||||
"total": {
|
"total": {
|
||||||
|
"format": "int64",
|
||||||
"type": "integer"
|
"type": "integer"
|
||||||
},
|
},
|
||||||
"up": {
|
"up": {
|
||||||
|
"format": "int64",
|
||||||
"type": "integer"
|
"type": "integer"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@@ -2182,6 +2217,7 @@ export const SCHEMAS: Record<string, unknown> = {
|
|||||||
},
|
},
|
||||||
"finishedAt": {
|
"finishedAt": {
|
||||||
"example": 1735689612,
|
"example": 1735689612,
|
||||||
|
"format": "int64",
|
||||||
"type": "integer"
|
"type": "integer"
|
||||||
},
|
},
|
||||||
"runId": {
|
"runId": {
|
||||||
@@ -2228,6 +2264,7 @@ export const SCHEMAS: Record<string, unknown> = {
|
|||||||
},
|
},
|
||||||
"uptimeSecs": {
|
"uptimeSecs": {
|
||||||
"example": 86400,
|
"example": 86400,
|
||||||
|
"format": "int64",
|
||||||
"type": "integer"
|
"type": "integer"
|
||||||
},
|
},
|
||||||
"xrayError": {
|
"xrayError": {
|
||||||
|
|||||||
@@ -97,7 +97,11 @@ func (g *schemaGen) typeSchema(t TypeRef) map[string]any {
|
|||||||
}
|
}
|
||||||
return map[string]any{"type": "string"}
|
return map[string]any{"type": "string"}
|
||||||
case KindInt:
|
case KindInt:
|
||||||
return map[string]any{"type": "integer"}
|
sch := map[string]any{"type": "integer"}
|
||||||
|
if t.Name == "int64" {
|
||||||
|
sch["format"] = "int64"
|
||||||
|
}
|
||||||
|
return sch
|
||||||
case KindNumber:
|
case KindNumber:
|
||||||
return map[string]any{"type": "number"}
|
return map[string]any{"type": "number"}
|
||||||
case KindBool:
|
case KindBool:
|
||||||
|
|||||||
30
tools/openapigen/emit_jsonschema_test.go
Normal file
30
tools/openapigen/emit_jsonschema_test.go
Normal file
@@ -0,0 +1,30 @@
|
|||||||
|
package main
|
||||||
|
|
||||||
|
import "testing"
|
||||||
|
|
||||||
|
func TestIntegerSchemaFormats(t *testing.T) {
|
||||||
|
tests := []struct {
|
||||||
|
name string
|
||||||
|
goType string
|
||||||
|
wantFormat string
|
||||||
|
}{
|
||||||
|
{name: "int", goType: "int"},
|
||||||
|
{name: "int32", goType: "int32"},
|
||||||
|
{name: "int64", goType: "int64", wantFormat: "int64"},
|
||||||
|
{name: "uint64", goType: "uint64", wantFormat: "int64"},
|
||||||
|
}
|
||||||
|
|
||||||
|
gen := &schemaGen{}
|
||||||
|
for _, tt := range tests {
|
||||||
|
t.Run(tt.name, func(t *testing.T) {
|
||||||
|
schema := gen.typeSchema(identType(tt.goType))
|
||||||
|
if got := schema["type"]; got != "integer" {
|
||||||
|
t.Fatalf("type = %v, want integer", got)
|
||||||
|
}
|
||||||
|
got, _ := schema["format"].(string)
|
||||||
|
if got != tt.wantFormat {
|
||||||
|
t.Fatalf("format = %q, want %q", got, tt.wantFormat)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -197,8 +197,10 @@ func identType(name string) TypeRef {
|
|||||||
return TypeRef{Kind: KindString}
|
return TypeRef{Kind: KindString}
|
||||||
case "bool":
|
case "bool":
|
||||||
return TypeRef{Kind: KindBool}
|
return TypeRef{Kind: KindBool}
|
||||||
case "int", "int8", "int16", "int32", "int64",
|
case "int64", "uint64":
|
||||||
"uint", "uint8", "uint16", "uint32", "uint64":
|
return TypeRef{Kind: KindInt, Name: "int64"}
|
||||||
|
case "int", "int8", "int16", "int32",
|
||||||
|
"uint", "uint8", "uint16", "uint32":
|
||||||
return TypeRef{Kind: KindInt}
|
return TypeRef{Kind: KindInt}
|
||||||
case "float32", "float64":
|
case "float32", "float64":
|
||||||
return TypeRef{Kind: KindNumber}
|
return TypeRef{Kind: KindNumber}
|
||||||
|
|||||||
Reference in New Issue
Block a user