schemas.ts 53 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502
  1. // Code generated by tools/openapigen. DO NOT EDIT.
  2. export const SCHEMAS: Record<string, unknown> = {
  3. "AllSetting": {
  4. "properties": {
  5. "datepicker": {
  6. "type": "string"
  7. },
  8. "expireDiff": {
  9. "minimum": 0,
  10. "type": "integer"
  11. },
  12. "externalTrafficInformEnable": {
  13. "type": "boolean"
  14. },
  15. "externalTrafficInformURI": {
  16. "type": "string"
  17. },
  18. "ldapAutoCreate": {
  19. "type": "boolean"
  20. },
  21. "ldapAutoDelete": {
  22. "type": "boolean"
  23. },
  24. "ldapBaseDN": {
  25. "type": "string"
  26. },
  27. "ldapBindDN": {
  28. "type": "string"
  29. },
  30. "ldapDefaultExpiryDays": {
  31. "minimum": 0,
  32. "type": "integer"
  33. },
  34. "ldapDefaultLimitIP": {
  35. "minimum": 0,
  36. "type": "integer"
  37. },
  38. "ldapDefaultTotalGB": {
  39. "minimum": 0,
  40. "type": "integer"
  41. },
  42. "ldapEnable": {
  43. "type": "boolean"
  44. },
  45. "ldapFlagField": {
  46. "type": "string"
  47. },
  48. "ldapHost": {
  49. "type": "string"
  50. },
  51. "ldapInboundTags": {
  52. "type": "string"
  53. },
  54. "ldapInsecureSkipVerify": {
  55. "type": "boolean"
  56. },
  57. "ldapInvertFlag": {
  58. "type": "boolean"
  59. },
  60. "ldapPassword": {
  61. "type": "string"
  62. },
  63. "ldapPort": {
  64. "maximum": 65535,
  65. "minimum": 0,
  66. "type": "integer"
  67. },
  68. "ldapSyncCron": {
  69. "type": "string"
  70. },
  71. "ldapTruthyValues": {
  72. "type": "string"
  73. },
  74. "ldapUseTLS": {
  75. "type": "boolean"
  76. },
  77. "ldapUserAttr": {
  78. "type": "string"
  79. },
  80. "ldapUserFilter": {
  81. "type": "string"
  82. },
  83. "ldapVlessField": {
  84. "type": "string"
  85. },
  86. "outboundDownThreshold": {
  87. "maximum": 100,
  88. "minimum": 1,
  89. "type": "integer"
  90. },
  91. "pageSize": {
  92. "maximum": 1000,
  93. "minimum": 0,
  94. "type": "integer"
  95. },
  96. "panelOutbound": {
  97. "type": "string"
  98. },
  99. "remarkTemplate": {
  100. "type": "string"
  101. },
  102. "restartXrayOnClientDisable": {
  103. "type": "boolean"
  104. },
  105. "sessionMaxAge": {
  106. "maximum": 525600,
  107. "minimum": 1,
  108. "type": "integer"
  109. },
  110. "smtpCpu": {
  111. "maximum": 100,
  112. "minimum": 0,
  113. "type": "integer"
  114. },
  115. "smtpEnable": {
  116. "type": "boolean"
  117. },
  118. "smtpEnabledEvents": {
  119. "type": "string"
  120. },
  121. "smtpEncryptionType": {
  122. "type": "string"
  123. },
  124. "smtpFrom": {
  125. "type": "string"
  126. },
  127. "smtpFromName": {
  128. "type": "string"
  129. },
  130. "smtpHost": {
  131. "type": "string"
  132. },
  133. "smtpMemory": {
  134. "maximum": 100,
  135. "minimum": 0,
  136. "type": "integer"
  137. },
  138. "smtpPassword": {
  139. "type": "string"
  140. },
  141. "smtpPort": {
  142. "maximum": 65535,
  143. "minimum": 1,
  144. "type": "integer"
  145. },
  146. "smtpTo": {
  147. "type": "string"
  148. },
  149. "smtpUsername": {
  150. "type": "string"
  151. },
  152. "subAnnounce": {
  153. "type": "string"
  154. },
  155. "subCertFile": {
  156. "type": "string"
  157. },
  158. "subClashAutoDetect": {
  159. "type": "boolean"
  160. },
  161. "subClashEnable": {
  162. "type": "boolean"
  163. },
  164. "subClashEnableRouting": {
  165. "type": "boolean"
  166. },
  167. "subClashPath": {
  168. "type": "string"
  169. },
  170. "subClashRules": {
  171. "type": "string"
  172. },
  173. "subClashURI": {
  174. "type": "string"
  175. },
  176. "subClashUserAgentRegex": {
  177. "type": "string"
  178. },
  179. "subDomain": {
  180. "type": "string"
  181. },
  182. "subEnable": {
  183. "type": "boolean"
  184. },
  185. "subEnableRouting": {
  186. "type": "boolean"
  187. },
  188. "subEncrypt": {
  189. "type": "boolean"
  190. },
  191. "subHideSettings": {
  192. "type": "boolean"
  193. },
  194. "subIncyEnableRouting": {
  195. "type": "boolean"
  196. },
  197. "subIncyRoutingRules": {
  198. "type": "string"
  199. },
  200. "subJsonAlwaysArray": {
  201. "type": "boolean"
  202. },
  203. "subJsonAutoDetect": {
  204. "type": "boolean"
  205. },
  206. "subJsonEnable": {
  207. "type": "boolean"
  208. },
  209. "subJsonFinalMask": {
  210. "type": "string"
  211. },
  212. "subJsonMux": {
  213. "type": "string"
  214. },
  215. "subJsonPath": {
  216. "type": "string"
  217. },
  218. "subJsonRules": {
  219. "type": "string"
  220. },
  221. "subJsonURI": {
  222. "type": "string"
  223. },
  224. "subJsonUserAgentRegex": {
  225. "type": "string"
  226. },
  227. "subKeyFile": {
  228. "type": "string"
  229. },
  230. "subListen": {
  231. "type": "string"
  232. },
  233. "subPath": {
  234. "type": "string"
  235. },
  236. "subPort": {
  237. "maximum": 65535,
  238. "minimum": 1,
  239. "type": "integer"
  240. },
  241. "subProfileUrl": {
  242. "type": "string"
  243. },
  244. "subRoutingRules": {
  245. "type": "string"
  246. },
  247. "subSupportUrl": {
  248. "type": "string"
  249. },
  250. "subThemeDir": {
  251. "type": "string"
  252. },
  253. "subTitle": {
  254. "type": "string"
  255. },
  256. "subURI": {
  257. "type": "string"
  258. },
  259. "subUpdates": {
  260. "maximum": 525600,
  261. "minimum": 0,
  262. "type": "integer"
  263. },
  264. "tgBotAPIServer": {
  265. "type": "string"
  266. },
  267. "tgBotBackup": {
  268. "type": "boolean"
  269. },
  270. "tgBotChatId": {
  271. "type": "string"
  272. },
  273. "tgBotEnable": {
  274. "type": "boolean"
  275. },
  276. "tgBotProxy": {
  277. "type": "string"
  278. },
  279. "tgBotToken": {
  280. "type": "string"
  281. },
  282. "tgCpu": {
  283. "maximum": 100,
  284. "minimum": 0,
  285. "type": "integer"
  286. },
  287. "tgEnabledEvents": {
  288. "type": "string"
  289. },
  290. "tgLang": {
  291. "type": "string"
  292. },
  293. "tgMemory": {
  294. "maximum": 100,
  295. "minimum": 0,
  296. "type": "integer"
  297. },
  298. "tgRunTime": {
  299. "type": "string"
  300. },
  301. "timeLocation": {
  302. "type": "string"
  303. },
  304. "trafficDiff": {
  305. "maximum": 100,
  306. "minimum": 0,
  307. "type": "integer"
  308. },
  309. "trustedProxyCIDRs": {
  310. "type": "string"
  311. },
  312. "twoFactorEnable": {
  313. "type": "boolean"
  314. },
  315. "twoFactorToken": {
  316. "type": "string"
  317. },
  318. "warpUpdateInterval": {
  319. "minimum": 0,
  320. "type": "integer"
  321. },
  322. "webBasePath": {
  323. "type": "string"
  324. },
  325. "webCertFile": {
  326. "type": "string"
  327. },
  328. "webDomain": {
  329. "type": "string"
  330. },
  331. "webKeyFile": {
  332. "type": "string"
  333. },
  334. "webListen": {
  335. "type": "string"
  336. },
  337. "webPort": {
  338. "maximum": 65535,
  339. "minimum": 1,
  340. "type": "integer"
  341. }
  342. },
  343. "required": [
  344. "datepicker",
  345. "expireDiff",
  346. "externalTrafficInformEnable",
  347. "externalTrafficInformURI",
  348. "ldapAutoCreate",
  349. "ldapAutoDelete",
  350. "ldapBaseDN",
  351. "ldapBindDN",
  352. "ldapDefaultExpiryDays",
  353. "ldapDefaultLimitIP",
  354. "ldapDefaultTotalGB",
  355. "ldapEnable",
  356. "ldapFlagField",
  357. "ldapHost",
  358. "ldapInboundTags",
  359. "ldapInsecureSkipVerify",
  360. "ldapInvertFlag",
  361. "ldapPassword",
  362. "ldapPort",
  363. "ldapSyncCron",
  364. "ldapTruthyValues",
  365. "ldapUseTLS",
  366. "ldapUserAttr",
  367. "ldapUserFilter",
  368. "ldapVlessField",
  369. "outboundDownThreshold",
  370. "pageSize",
  371. "panelOutbound",
  372. "remarkTemplate",
  373. "restartXrayOnClientDisable",
  374. "sessionMaxAge",
  375. "smtpCpu",
  376. "smtpEnable",
  377. "smtpEnabledEvents",
  378. "smtpEncryptionType",
  379. "smtpFrom",
  380. "smtpFromName",
  381. "smtpHost",
  382. "smtpMemory",
  383. "smtpPassword",
  384. "smtpPort",
  385. "smtpTo",
  386. "smtpUsername",
  387. "subAnnounce",
  388. "subCertFile",
  389. "subClashAutoDetect",
  390. "subClashEnable",
  391. "subClashEnableRouting",
  392. "subClashPath",
  393. "subClashRules",
  394. "subClashURI",
  395. "subClashUserAgentRegex",
  396. "subDomain",
  397. "subEnable",
  398. "subEnableRouting",
  399. "subEncrypt",
  400. "subHideSettings",
  401. "subIncyEnableRouting",
  402. "subIncyRoutingRules",
  403. "subJsonAlwaysArray",
  404. "subJsonAutoDetect",
  405. "subJsonEnable",
  406. "subJsonFinalMask",
  407. "subJsonMux",
  408. "subJsonPath",
  409. "subJsonRules",
  410. "subJsonURI",
  411. "subJsonUserAgentRegex",
  412. "subKeyFile",
  413. "subListen",
  414. "subPath",
  415. "subPort",
  416. "subProfileUrl",
  417. "subRoutingRules",
  418. "subSupportUrl",
  419. "subThemeDir",
  420. "subTitle",
  421. "subURI",
  422. "subUpdates",
  423. "tgBotAPIServer",
  424. "tgBotBackup",
  425. "tgBotChatId",
  426. "tgBotEnable",
  427. "tgBotProxy",
  428. "tgBotToken",
  429. "tgCpu",
  430. "tgEnabledEvents",
  431. "tgLang",
  432. "tgMemory",
  433. "tgRunTime",
  434. "timeLocation",
  435. "trafficDiff",
  436. "trustedProxyCIDRs",
  437. "twoFactorEnable",
  438. "twoFactorToken",
  439. "warpUpdateInterval",
  440. "webBasePath",
  441. "webCertFile",
  442. "webDomain",
  443. "webKeyFile",
  444. "webListen",
  445. "webPort"
  446. ],
  447. "type": "object"
  448. },
  449. "AllSettingView": {
  450. "properties": {
  451. "datepicker": {
  452. "type": "string"
  453. },
  454. "expireDiff": {
  455. "minimum": 0,
  456. "type": "integer"
  457. },
  458. "externalTrafficInformEnable": {
  459. "type": "boolean"
  460. },
  461. "externalTrafficInformURI": {
  462. "type": "string"
  463. },
  464. "hasApiToken": {
  465. "type": "boolean"
  466. },
  467. "hasLdapPassword": {
  468. "type": "boolean"
  469. },
  470. "hasNordSecret": {
  471. "type": "boolean"
  472. },
  473. "hasSmtpPassword": {
  474. "type": "boolean"
  475. },
  476. "hasTgBotToken": {
  477. "type": "boolean"
  478. },
  479. "hasTwoFactorToken": {
  480. "type": "boolean"
  481. },
  482. "hasWarpSecret": {
  483. "type": "boolean"
  484. },
  485. "ldapAutoCreate": {
  486. "type": "boolean"
  487. },
  488. "ldapAutoDelete": {
  489. "type": "boolean"
  490. },
  491. "ldapBaseDN": {
  492. "type": "string"
  493. },
  494. "ldapBindDN": {
  495. "type": "string"
  496. },
  497. "ldapDefaultExpiryDays": {
  498. "minimum": 0,
  499. "type": "integer"
  500. },
  501. "ldapDefaultLimitIP": {
  502. "minimum": 0,
  503. "type": "integer"
  504. },
  505. "ldapDefaultTotalGB": {
  506. "minimum": 0,
  507. "type": "integer"
  508. },
  509. "ldapEnable": {
  510. "type": "boolean"
  511. },
  512. "ldapFlagField": {
  513. "type": "string"
  514. },
  515. "ldapHost": {
  516. "type": "string"
  517. },
  518. "ldapInboundTags": {
  519. "type": "string"
  520. },
  521. "ldapInsecureSkipVerify": {
  522. "type": "boolean"
  523. },
  524. "ldapInvertFlag": {
  525. "type": "boolean"
  526. },
  527. "ldapPassword": {
  528. "type": "string"
  529. },
  530. "ldapPort": {
  531. "maximum": 65535,
  532. "minimum": 0,
  533. "type": "integer"
  534. },
  535. "ldapSyncCron": {
  536. "type": "string"
  537. },
  538. "ldapTruthyValues": {
  539. "type": "string"
  540. },
  541. "ldapUseTLS": {
  542. "type": "boolean"
  543. },
  544. "ldapUserAttr": {
  545. "type": "string"
  546. },
  547. "ldapUserFilter": {
  548. "type": "string"
  549. },
  550. "ldapVlessField": {
  551. "type": "string"
  552. },
  553. "outboundDownThreshold": {
  554. "maximum": 100,
  555. "minimum": 1,
  556. "type": "integer"
  557. },
  558. "pageSize": {
  559. "maximum": 1000,
  560. "minimum": 0,
  561. "type": "integer"
  562. },
  563. "panelOutbound": {
  564. "type": "string"
  565. },
  566. "remarkTemplate": {
  567. "type": "string"
  568. },
  569. "restartXrayOnClientDisable": {
  570. "type": "boolean"
  571. },
  572. "sessionMaxAge": {
  573. "maximum": 525600,
  574. "minimum": 1,
  575. "type": "integer"
  576. },
  577. "smtpCpu": {
  578. "maximum": 100,
  579. "minimum": 0,
  580. "type": "integer"
  581. },
  582. "smtpEnable": {
  583. "type": "boolean"
  584. },
  585. "smtpEnabledEvents": {
  586. "type": "string"
  587. },
  588. "smtpEncryptionType": {
  589. "type": "string"
  590. },
  591. "smtpFrom": {
  592. "type": "string"
  593. },
  594. "smtpFromName": {
  595. "type": "string"
  596. },
  597. "smtpHost": {
  598. "type": "string"
  599. },
  600. "smtpMemory": {
  601. "maximum": 100,
  602. "minimum": 0,
  603. "type": "integer"
  604. },
  605. "smtpPassword": {
  606. "type": "string"
  607. },
  608. "smtpPort": {
  609. "maximum": 65535,
  610. "minimum": 1,
  611. "type": "integer"
  612. },
  613. "smtpTo": {
  614. "type": "string"
  615. },
  616. "smtpUsername": {
  617. "type": "string"
  618. },
  619. "subAnnounce": {
  620. "type": "string"
  621. },
  622. "subCertFile": {
  623. "type": "string"
  624. },
  625. "subClashAutoDetect": {
  626. "type": "boolean"
  627. },
  628. "subClashEnable": {
  629. "type": "boolean"
  630. },
  631. "subClashEnableRouting": {
  632. "type": "boolean"
  633. },
  634. "subClashPath": {
  635. "type": "string"
  636. },
  637. "subClashRules": {
  638. "type": "string"
  639. },
  640. "subClashURI": {
  641. "type": "string"
  642. },
  643. "subClashUserAgentRegex": {
  644. "type": "string"
  645. },
  646. "subDomain": {
  647. "type": "string"
  648. },
  649. "subEnable": {
  650. "type": "boolean"
  651. },
  652. "subEnableRouting": {
  653. "type": "boolean"
  654. },
  655. "subEncrypt": {
  656. "type": "boolean"
  657. },
  658. "subHideSettings": {
  659. "type": "boolean"
  660. },
  661. "subIncyEnableRouting": {
  662. "type": "boolean"
  663. },
  664. "subIncyRoutingRules": {
  665. "type": "string"
  666. },
  667. "subJsonAlwaysArray": {
  668. "type": "boolean"
  669. },
  670. "subJsonAutoDetect": {
  671. "type": "boolean"
  672. },
  673. "subJsonEnable": {
  674. "type": "boolean"
  675. },
  676. "subJsonFinalMask": {
  677. "type": "string"
  678. },
  679. "subJsonMux": {
  680. "type": "string"
  681. },
  682. "subJsonPath": {
  683. "type": "string"
  684. },
  685. "subJsonRules": {
  686. "type": "string"
  687. },
  688. "subJsonURI": {
  689. "type": "string"
  690. },
  691. "subJsonUserAgentRegex": {
  692. "type": "string"
  693. },
  694. "subKeyFile": {
  695. "type": "string"
  696. },
  697. "subListen": {
  698. "type": "string"
  699. },
  700. "subPath": {
  701. "type": "string"
  702. },
  703. "subPort": {
  704. "maximum": 65535,
  705. "minimum": 1,
  706. "type": "integer"
  707. },
  708. "subProfileUrl": {
  709. "type": "string"
  710. },
  711. "subRoutingRules": {
  712. "type": "string"
  713. },
  714. "subSupportUrl": {
  715. "type": "string"
  716. },
  717. "subThemeDir": {
  718. "type": "string"
  719. },
  720. "subTitle": {
  721. "type": "string"
  722. },
  723. "subURI": {
  724. "type": "string"
  725. },
  726. "subUpdates": {
  727. "maximum": 525600,
  728. "minimum": 0,
  729. "type": "integer"
  730. },
  731. "tgBotAPIServer": {
  732. "type": "string"
  733. },
  734. "tgBotBackup": {
  735. "type": "boolean"
  736. },
  737. "tgBotChatId": {
  738. "type": "string"
  739. },
  740. "tgBotEnable": {
  741. "type": "boolean"
  742. },
  743. "tgBotProxy": {
  744. "type": "string"
  745. },
  746. "tgBotToken": {
  747. "type": "string"
  748. },
  749. "tgCpu": {
  750. "maximum": 100,
  751. "minimum": 0,
  752. "type": "integer"
  753. },
  754. "tgEnabledEvents": {
  755. "type": "string"
  756. },
  757. "tgLang": {
  758. "type": "string"
  759. },
  760. "tgMemory": {
  761. "maximum": 100,
  762. "minimum": 0,
  763. "type": "integer"
  764. },
  765. "tgRunTime": {
  766. "type": "string"
  767. },
  768. "timeLocation": {
  769. "type": "string"
  770. },
  771. "trafficDiff": {
  772. "maximum": 100,
  773. "minimum": 0,
  774. "type": "integer"
  775. },
  776. "trustedProxyCIDRs": {
  777. "type": "string"
  778. },
  779. "twoFactorEnable": {
  780. "type": "boolean"
  781. },
  782. "twoFactorToken": {
  783. "type": "string"
  784. },
  785. "warpUpdateInterval": {
  786. "minimum": 0,
  787. "type": "integer"
  788. },
  789. "webBasePath": {
  790. "type": "string"
  791. },
  792. "webCertFile": {
  793. "type": "string"
  794. },
  795. "webDomain": {
  796. "type": "string"
  797. },
  798. "webKeyFile": {
  799. "type": "string"
  800. },
  801. "webListen": {
  802. "type": "string"
  803. },
  804. "webPort": {
  805. "maximum": 65535,
  806. "minimum": 1,
  807. "type": "integer"
  808. }
  809. },
  810. "required": [
  811. "datepicker",
  812. "expireDiff",
  813. "externalTrafficInformEnable",
  814. "externalTrafficInformURI",
  815. "hasApiToken",
  816. "hasLdapPassword",
  817. "hasNordSecret",
  818. "hasSmtpPassword",
  819. "hasTgBotToken",
  820. "hasTwoFactorToken",
  821. "hasWarpSecret",
  822. "ldapAutoCreate",
  823. "ldapAutoDelete",
  824. "ldapBaseDN",
  825. "ldapBindDN",
  826. "ldapDefaultExpiryDays",
  827. "ldapDefaultLimitIP",
  828. "ldapDefaultTotalGB",
  829. "ldapEnable",
  830. "ldapFlagField",
  831. "ldapHost",
  832. "ldapInboundTags",
  833. "ldapInsecureSkipVerify",
  834. "ldapInvertFlag",
  835. "ldapPassword",
  836. "ldapPort",
  837. "ldapSyncCron",
  838. "ldapTruthyValues",
  839. "ldapUseTLS",
  840. "ldapUserAttr",
  841. "ldapUserFilter",
  842. "ldapVlessField",
  843. "outboundDownThreshold",
  844. "pageSize",
  845. "panelOutbound",
  846. "remarkTemplate",
  847. "restartXrayOnClientDisable",
  848. "sessionMaxAge",
  849. "smtpCpu",
  850. "smtpEnable",
  851. "smtpEnabledEvents",
  852. "smtpEncryptionType",
  853. "smtpFrom",
  854. "smtpFromName",
  855. "smtpHost",
  856. "smtpMemory",
  857. "smtpPassword",
  858. "smtpPort",
  859. "smtpTo",
  860. "smtpUsername",
  861. "subAnnounce",
  862. "subCertFile",
  863. "subClashAutoDetect",
  864. "subClashEnable",
  865. "subClashEnableRouting",
  866. "subClashPath",
  867. "subClashRules",
  868. "subClashURI",
  869. "subClashUserAgentRegex",
  870. "subDomain",
  871. "subEnable",
  872. "subEnableRouting",
  873. "subEncrypt",
  874. "subHideSettings",
  875. "subIncyEnableRouting",
  876. "subIncyRoutingRules",
  877. "subJsonAlwaysArray",
  878. "subJsonAutoDetect",
  879. "subJsonEnable",
  880. "subJsonFinalMask",
  881. "subJsonMux",
  882. "subJsonPath",
  883. "subJsonRules",
  884. "subJsonURI",
  885. "subJsonUserAgentRegex",
  886. "subKeyFile",
  887. "subListen",
  888. "subPath",
  889. "subPort",
  890. "subProfileUrl",
  891. "subRoutingRules",
  892. "subSupportUrl",
  893. "subThemeDir",
  894. "subTitle",
  895. "subURI",
  896. "subUpdates",
  897. "tgBotAPIServer",
  898. "tgBotBackup",
  899. "tgBotChatId",
  900. "tgBotEnable",
  901. "tgBotProxy",
  902. "tgBotToken",
  903. "tgCpu",
  904. "tgEnabledEvents",
  905. "tgLang",
  906. "tgMemory",
  907. "tgRunTime",
  908. "timeLocation",
  909. "trafficDiff",
  910. "trustedProxyCIDRs",
  911. "twoFactorEnable",
  912. "twoFactorToken",
  913. "warpUpdateInterval",
  914. "webBasePath",
  915. "webCertFile",
  916. "webDomain",
  917. "webKeyFile",
  918. "webListen",
  919. "webPort"
  920. ],
  921. "type": "object"
  922. },
  923. "ApiToken": {
  924. "properties": {
  925. "createdAt": {
  926. "format": "int64",
  927. "type": "integer"
  928. },
  929. "enabled": {
  930. "type": "boolean"
  931. },
  932. "id": {
  933. "type": "integer"
  934. },
  935. "name": {
  936. "type": "string"
  937. },
  938. "token": {
  939. "description": "SHA-256 hash; the plaintext is shown only once at creation",
  940. "type": "string"
  941. }
  942. },
  943. "required": [
  944. "createdAt",
  945. "enabled",
  946. "id",
  947. "name",
  948. "token"
  949. ],
  950. "type": "object"
  951. },
  952. "ApiTokenView": {
  953. "properties": {
  954. "createdAt": {
  955. "example": 1736000000,
  956. "format": "int64",
  957. "type": "integer"
  958. },
  959. "enabled": {
  960. "example": true,
  961. "type": "boolean"
  962. },
  963. "id": {
  964. "example": 2,
  965. "type": "integer"
  966. },
  967. "name": {
  968. "example": "central-panel-a",
  969. "type": "string"
  970. },
  971. "token": {
  972. "example": "new-token-string",
  973. "type": "string"
  974. }
  975. },
  976. "required": [
  977. "createdAt",
  978. "enabled",
  979. "id",
  980. "name"
  981. ],
  982. "type": "object"
  983. },
  984. "Client": {
  985. "description": "Client represents a client configuration for Xray inbounds with traffic limits and settings.",
  986. "properties": {
  987. "adTag": {
  988. "example": "0123456789abcdef0123456789abcdef",
  989. "type": "string"
  990. },
  991. "allowedIPs": {
  992. "items": {
  993. "type": "string"
  994. },
  995. "type": "array"
  996. },
  997. "auth": {
  998. "description": "Auth password (Hysteria)",
  999. "type": "string"
  1000. },
  1001. "comment": {
  1002. "description": "Client comment",
  1003. "type": "string"
  1004. },
  1005. "created_at": {
  1006. "description": "Creation timestamp",
  1007. "format": "int64",
  1008. "type": "integer"
  1009. },
  1010. "email": {
  1011. "description": "Client email identifier",
  1012. "type": "string"
  1013. },
  1014. "enable": {
  1015. "description": "Whether the client is enabled",
  1016. "type": "boolean"
  1017. },
  1018. "expiryTime": {
  1019. "description": "Expiration timestamp",
  1020. "format": "int64",
  1021. "type": "integer"
  1022. },
  1023. "flow": {
  1024. "description": "Flow control (XTLS)",
  1025. "type": "string"
  1026. },
  1027. "group": {
  1028. "description": "Logical grouping label",
  1029. "type": "string"
  1030. },
  1031. "id": {
  1032. "description": "Unique client identifier",
  1033. "type": "string"
  1034. },
  1035. "keepAlive": {
  1036. "type": "integer"
  1037. },
  1038. "limitIp": {
  1039. "description": "IP limit for this client",
  1040. "type": "integer"
  1041. },
  1042. "password": {
  1043. "description": "Client password",
  1044. "type": "string"
  1045. },
  1046. "preSharedKey": {
  1047. "type": "string"
  1048. },
  1049. "privateKey": {
  1050. "type": "string"
  1051. },
  1052. "publicKey": {
  1053. "type": "string"
  1054. },
  1055. "reset": {
  1056. "description": "Reset period in days",
  1057. "type": "integer"
  1058. },
  1059. "reverse": {
  1060. "allOf": [
  1061. {
  1062. "$ref": "#/components/schemas/ClientReverse"
  1063. }
  1064. ],
  1065. "description": "VLESS simple reverse proxy settings",
  1066. "nullable": true
  1067. },
  1068. "secret": {
  1069. "example": "ee1234567890abcdef1234567890abcd7777772e636c6f7564666c6172652e636f6d",
  1070. "type": "string"
  1071. },
  1072. "security": {
  1073. "description": "Security method (e.g., \"auto\", \"aes-128-gcm\")",
  1074. "type": "string"
  1075. },
  1076. "subId": {
  1077. "description": "Subscription identifier",
  1078. "type": "string"
  1079. },
  1080. "tgId": {
  1081. "description": "Telegram user ID for notifications",
  1082. "format": "int64",
  1083. "type": "integer"
  1084. },
  1085. "totalGB": {
  1086. "description": "Total traffic limit in GB",
  1087. "format": "int64",
  1088. "type": "integer"
  1089. },
  1090. "updated_at": {
  1091. "description": "Last update timestamp",
  1092. "format": "int64",
  1093. "type": "integer"
  1094. }
  1095. },
  1096. "required": [
  1097. "comment",
  1098. "email",
  1099. "enable",
  1100. "expiryTime",
  1101. "limitIp",
  1102. "reset",
  1103. "security",
  1104. "subId",
  1105. "tgId",
  1106. "totalGB"
  1107. ],
  1108. "type": "object"
  1109. },
  1110. "ClientInbound": {
  1111. "properties": {
  1112. "clientId": {
  1113. "type": "integer"
  1114. },
  1115. "createdAt": {
  1116. "format": "int64",
  1117. "type": "integer"
  1118. },
  1119. "flowOverride": {
  1120. "type": "string"
  1121. },
  1122. "inboundId": {
  1123. "type": "integer"
  1124. }
  1125. },
  1126. "required": [
  1127. "clientId",
  1128. "createdAt",
  1129. "flowOverride",
  1130. "inboundId"
  1131. ],
  1132. "type": "object"
  1133. },
  1134. "ClientRecord": {
  1135. "properties": {
  1136. "adTag": {
  1137. "type": "string"
  1138. },
  1139. "allowedIPs": {
  1140. "type": "string"
  1141. },
  1142. "auth": {
  1143. "type": "string"
  1144. },
  1145. "comment": {
  1146. "type": "string"
  1147. },
  1148. "createdAt": {
  1149. "format": "int64",
  1150. "type": "integer"
  1151. },
  1152. "email": {
  1153. "type": "string"
  1154. },
  1155. "enable": {
  1156. "type": "boolean"
  1157. },
  1158. "expiryTime": {
  1159. "format": "int64",
  1160. "type": "integer"
  1161. },
  1162. "flow": {
  1163. "type": "string"
  1164. },
  1165. "group": {
  1166. "type": "string"
  1167. },
  1168. "id": {
  1169. "type": "integer"
  1170. },
  1171. "keepAlive": {
  1172. "type": "integer"
  1173. },
  1174. "limitIp": {
  1175. "type": "integer"
  1176. },
  1177. "password": {
  1178. "type": "string"
  1179. },
  1180. "preSharedKey": {
  1181. "type": "string"
  1182. },
  1183. "privateKey": {
  1184. "type": "string"
  1185. },
  1186. "publicKey": {
  1187. "type": "string"
  1188. },
  1189. "reset": {
  1190. "type": "integer"
  1191. },
  1192. "reverse": {},
  1193. "secret": {
  1194. "type": "string"
  1195. },
  1196. "security": {
  1197. "type": "string"
  1198. },
  1199. "subId": {
  1200. "type": "string"
  1201. },
  1202. "tgId": {
  1203. "format": "int64",
  1204. "type": "integer"
  1205. },
  1206. "totalGB": {
  1207. "format": "int64",
  1208. "type": "integer"
  1209. },
  1210. "updatedAt": {
  1211. "format": "int64",
  1212. "type": "integer"
  1213. },
  1214. "uuid": {
  1215. "type": "string"
  1216. }
  1217. },
  1218. "required": [
  1219. "adTag",
  1220. "allowedIPs",
  1221. "auth",
  1222. "comment",
  1223. "createdAt",
  1224. "email",
  1225. "enable",
  1226. "expiryTime",
  1227. "flow",
  1228. "group",
  1229. "id",
  1230. "keepAlive",
  1231. "limitIp",
  1232. "password",
  1233. "preSharedKey",
  1234. "privateKey",
  1235. "publicKey",
  1236. "reset",
  1237. "reverse",
  1238. "secret",
  1239. "security",
  1240. "subId",
  1241. "tgId",
  1242. "totalGB",
  1243. "updatedAt",
  1244. "uuid"
  1245. ],
  1246. "type": "object"
  1247. },
  1248. "ClientReverse": {
  1249. "properties": {
  1250. "tag": {
  1251. "type": "string"
  1252. }
  1253. },
  1254. "required": [
  1255. "tag"
  1256. ],
  1257. "type": "object"
  1258. },
  1259. "ClientTraffic": {
  1260. "description": "ClientTraffic represents traffic statistics and limits for a specific client.\nIt tracks upload/download usage, expiry times, and online status for inbound clients.",
  1261. "properties": {
  1262. "down": {
  1263. "example": 2097152,
  1264. "format": "int64",
  1265. "type": "integer"
  1266. },
  1267. "email": {
  1268. "example": "user1",
  1269. "type": "string"
  1270. },
  1271. "enable": {
  1272. "example": true,
  1273. "type": "boolean"
  1274. },
  1275. "expiryTime": {
  1276. "example": 1735689600000,
  1277. "format": "int64",
  1278. "type": "integer"
  1279. },
  1280. "id": {
  1281. "example": 14825,
  1282. "type": "integer"
  1283. },
  1284. "inboundId": {
  1285. "example": 1,
  1286. "type": "integer"
  1287. },
  1288. "lastOnline": {
  1289. "example": 1735680000000,
  1290. "format": "int64",
  1291. "type": "integer"
  1292. },
  1293. "reset": {
  1294. "example": 0,
  1295. "type": "integer"
  1296. },
  1297. "subId": {
  1298. "example": "i7tvdpeffi0hvvf1",
  1299. "type": "string"
  1300. },
  1301. "total": {
  1302. "example": 10737418240,
  1303. "format": "int64",
  1304. "type": "integer"
  1305. },
  1306. "up": {
  1307. "example": 1048576,
  1308. "format": "int64",
  1309. "type": "integer"
  1310. },
  1311. "uuid": {
  1312. "example": "e18c9a96-71bf-48d4-933f-8b9a46d4290c",
  1313. "type": "string"
  1314. }
  1315. },
  1316. "required": [
  1317. "down",
  1318. "email",
  1319. "enable",
  1320. "expiryTime",
  1321. "id",
  1322. "inboundId",
  1323. "lastOnline",
  1324. "reset",
  1325. "subId",
  1326. "total",
  1327. "up",
  1328. "uuid"
  1329. ],
  1330. "type": "object"
  1331. },
  1332. "FallbackParentInfo": {
  1333. "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.",
  1334. "properties": {
  1335. "masterId": {
  1336. "type": "integer"
  1337. },
  1338. "path": {
  1339. "type": "string"
  1340. }
  1341. },
  1342. "required": [
  1343. "masterId"
  1344. ],
  1345. "type": "object"
  1346. },
  1347. "HistoryOfSeeders": {
  1348. "description": "HistoryOfSeeders tracks which database seeders have been executed to prevent re-running.",
  1349. "properties": {
  1350. "id": {
  1351. "type": "integer"
  1352. },
  1353. "seederName": {
  1354. "type": "string"
  1355. }
  1356. },
  1357. "required": [
  1358. "id",
  1359. "seederName"
  1360. ],
  1361. "type": "object"
  1362. },
  1363. "Host": {
  1364. "properties": {
  1365. "address": {
  1366. "example": "cdn.example.com",
  1367. "type": "string"
  1368. },
  1369. "allowInsecure": {
  1370. "type": "boolean"
  1371. },
  1372. "alpn": {
  1373. "items": {
  1374. "type": "string"
  1375. },
  1376. "type": "array"
  1377. },
  1378. "createdAt": {
  1379. "format": "int64",
  1380. "type": "integer"
  1381. },
  1382. "echConfigList": {
  1383. "type": "string"
  1384. },
  1385. "excludeFromSubTypes": {
  1386. "items": {
  1387. "type": "string"
  1388. },
  1389. "type": "array"
  1390. },
  1391. "finalMask": {
  1392. "description": "FinalMask is a JSON object of xray finalmask masks (tcp/udp/quicParams),\nmerged into this host's JSON-subscription stream. Empty = no override.",
  1393. "type": "string"
  1394. },
  1395. "fingerprint": {
  1396. "type": "string"
  1397. },
  1398. "groupId": {
  1399. "type": "string"
  1400. },
  1401. "hostHeader": {
  1402. "type": "string"
  1403. },
  1404. "id": {
  1405. "example": 1,
  1406. "type": "integer"
  1407. },
  1408. "inboundId": {
  1409. "example": 1,
  1410. "type": "integer"
  1411. },
  1412. "isDisabled": {
  1413. "type": "boolean"
  1414. },
  1415. "isHidden": {
  1416. "type": "boolean"
  1417. },
  1418. "keepSniBlank": {
  1419. "type": "boolean"
  1420. },
  1421. "mihomoIpVersion": {
  1422. "enum": [
  1423. "dual",
  1424. "ipv4",
  1425. "ipv6",
  1426. "ipv4-prefer",
  1427. "ipv6-prefer"
  1428. ],
  1429. "type": "string"
  1430. },
  1431. "mihomoX25519": {
  1432. "type": "boolean"
  1433. },
  1434. "muxParams": {},
  1435. "nodeGuids": {
  1436. "items": {
  1437. "type": "string"
  1438. },
  1439. "type": "array"
  1440. },
  1441. "overrideSniFromAddress": {
  1442. "type": "boolean"
  1443. },
  1444. "path": {
  1445. "type": "string"
  1446. },
  1447. "pinnedPeerCertSha256": {
  1448. "items": {
  1449. "type": "string"
  1450. },
  1451. "type": "array"
  1452. },
  1453. "port": {
  1454. "example": 8443,
  1455. "maximum": 65535,
  1456. "minimum": 0,
  1457. "type": "integer"
  1458. },
  1459. "remark": {
  1460. "example": "cdn-front",
  1461. "maxLength": 256,
  1462. "type": "string"
  1463. },
  1464. "security": {
  1465. "enum": [
  1466. "same",
  1467. "tls",
  1468. "none",
  1469. "reality"
  1470. ],
  1471. "example": "same",
  1472. "type": "string"
  1473. },
  1474. "serverDescription": {
  1475. "maxLength": 64,
  1476. "type": "string"
  1477. },
  1478. "shuffleHost": {
  1479. "type": "boolean"
  1480. },
  1481. "sni": {
  1482. "type": "string"
  1483. },
  1484. "sockoptParams": {},
  1485. "sortOrder": {
  1486. "type": "integer"
  1487. },
  1488. "tags": {
  1489. "items": {
  1490. "type": "string"
  1491. },
  1492. "type": "array"
  1493. },
  1494. "updatedAt": {
  1495. "format": "int64",
  1496. "type": "integer"
  1497. },
  1498. "verifyPeerCertByName": {
  1499. "type": "string"
  1500. },
  1501. "vlessRoute": {
  1502. "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.",
  1503. "example": "443",
  1504. "type": "string"
  1505. }
  1506. },
  1507. "required": [
  1508. "address",
  1509. "allowInsecure",
  1510. "alpn",
  1511. "createdAt",
  1512. "echConfigList",
  1513. "excludeFromSubTypes",
  1514. "finalMask",
  1515. "fingerprint",
  1516. "groupId",
  1517. "hostHeader",
  1518. "id",
  1519. "inboundId",
  1520. "isDisabled",
  1521. "isHidden",
  1522. "keepSniBlank",
  1523. "mihomoIpVersion",
  1524. "mihomoX25519",
  1525. "muxParams",
  1526. "overrideSniFromAddress",
  1527. "path",
  1528. "pinnedPeerCertSha256",
  1529. "port",
  1530. "remark",
  1531. "security",
  1532. "serverDescription",
  1533. "shuffleHost",
  1534. "sni",
  1535. "sockoptParams",
  1536. "sortOrder",
  1537. "tags",
  1538. "updatedAt",
  1539. "verifyPeerCertByName",
  1540. "vlessRoute"
  1541. ],
  1542. "type": "object"
  1543. },
  1544. "HostGroup": {
  1545. "properties": {
  1546. "allowInsecure": {
  1547. "type": "boolean"
  1548. },
  1549. "alpn": {
  1550. "items": {
  1551. "type": "string"
  1552. },
  1553. "type": "array"
  1554. },
  1555. "echConfigList": {
  1556. "type": "string"
  1557. },
  1558. "excludeFromSubTypes": {
  1559. "items": {
  1560. "type": "string"
  1561. },
  1562. "type": "array"
  1563. },
  1564. "finalMask": {
  1565. "type": "string"
  1566. },
  1567. "fingerprint": {
  1568. "type": "string"
  1569. },
  1570. "groupId": {
  1571. "type": "string"
  1572. },
  1573. "hostHeader": {
  1574. "type": "string"
  1575. },
  1576. "hosts": {
  1577. "items": {
  1578. "type": "string"
  1579. },
  1580. "type": "array"
  1581. },
  1582. "inboundIds": {
  1583. "items": {
  1584. "type": "integer"
  1585. },
  1586. "type": "array"
  1587. },
  1588. "isDisabled": {
  1589. "type": "boolean"
  1590. },
  1591. "isHidden": {
  1592. "type": "boolean"
  1593. },
  1594. "keepSniBlank": {
  1595. "type": "boolean"
  1596. },
  1597. "mihomoIpVersion": {
  1598. "enum": [
  1599. "dual",
  1600. "ipv4",
  1601. "ipv6",
  1602. "ipv4-prefer",
  1603. "ipv6-prefer"
  1604. ],
  1605. "type": "string"
  1606. },
  1607. "mihomoX25519": {
  1608. "type": "boolean"
  1609. },
  1610. "muxParams": {
  1611. "type": "string"
  1612. },
  1613. "nodeGuids": {
  1614. "items": {
  1615. "type": "string"
  1616. },
  1617. "type": "array"
  1618. },
  1619. "overrideSniFromAddress": {
  1620. "type": "boolean"
  1621. },
  1622. "path": {
  1623. "type": "string"
  1624. },
  1625. "pinnedPeerCertSha256": {
  1626. "items": {
  1627. "type": "string"
  1628. },
  1629. "type": "array"
  1630. },
  1631. "port": {
  1632. "maximum": 65535,
  1633. "minimum": 0,
  1634. "type": "integer"
  1635. },
  1636. "remark": {
  1637. "maxLength": 256,
  1638. "type": "string"
  1639. },
  1640. "security": {
  1641. "enum": [
  1642. "same",
  1643. "tls",
  1644. "none",
  1645. "reality"
  1646. ],
  1647. "type": "string"
  1648. },
  1649. "serverDescription": {
  1650. "maxLength": 64,
  1651. "type": "string"
  1652. },
  1653. "shuffleHost": {
  1654. "type": "boolean"
  1655. },
  1656. "sni": {
  1657. "type": "string"
  1658. },
  1659. "sockoptParams": {
  1660. "type": "string"
  1661. },
  1662. "sortOrder": {
  1663. "type": "integer"
  1664. },
  1665. "tags": {
  1666. "items": {
  1667. "type": "string"
  1668. },
  1669. "type": "array"
  1670. },
  1671. "verifyPeerCertByName": {
  1672. "type": "string"
  1673. },
  1674. "vlessRoute": {
  1675. "type": "string"
  1676. }
  1677. },
  1678. "required": [
  1679. "allowInsecure",
  1680. "alpn",
  1681. "echConfigList",
  1682. "excludeFromSubTypes",
  1683. "finalMask",
  1684. "fingerprint",
  1685. "groupId",
  1686. "hostHeader",
  1687. "hosts",
  1688. "inboundIds",
  1689. "isDisabled",
  1690. "isHidden",
  1691. "keepSniBlank",
  1692. "mihomoIpVersion",
  1693. "mihomoX25519",
  1694. "muxParams",
  1695. "nodeGuids",
  1696. "overrideSniFromAddress",
  1697. "path",
  1698. "pinnedPeerCertSha256",
  1699. "port",
  1700. "remark",
  1701. "security",
  1702. "serverDescription",
  1703. "shuffleHost",
  1704. "sni",
  1705. "sockoptParams",
  1706. "sortOrder",
  1707. "tags",
  1708. "verifyPeerCertByName",
  1709. "vlessRoute"
  1710. ],
  1711. "type": "object"
  1712. },
  1713. "Inbound": {
  1714. "description": "Inbound represents an Xray inbound configuration with traffic statistics and settings.",
  1715. "properties": {
  1716. "clientStats": {
  1717. "description": "Client traffic statistics",
  1718. "items": {
  1719. "$ref": "#/components/schemas/ClientTraffic"
  1720. },
  1721. "type": "array"
  1722. },
  1723. "down": {
  1724. "description": "Download traffic in bytes",
  1725. "format": "int64",
  1726. "type": "integer"
  1727. },
  1728. "enable": {
  1729. "description": "Whether the inbound is enabled",
  1730. "example": true,
  1731. "type": "boolean"
  1732. },
  1733. "expiryTime": {
  1734. "description": "Expiration timestamp",
  1735. "format": "int64",
  1736. "type": "integer"
  1737. },
  1738. "fallbackParent": {
  1739. "allOf": [
  1740. {
  1741. "$ref": "#/components/schemas/FallbackParentInfo"
  1742. }
  1743. ],
  1744. "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.",
  1745. "nullable": true
  1746. },
  1747. "id": {
  1748. "description": "Unique identifier",
  1749. "example": 1,
  1750. "type": "integer"
  1751. },
  1752. "lastTrafficResetTime": {
  1753. "description": "Last traffic reset timestamp",
  1754. "format": "int64",
  1755. "type": "integer"
  1756. },
  1757. "listen": {
  1758. "description": "Xray configuration fields",
  1759. "type": "string"
  1760. },
  1761. "nodeId": {
  1762. "nullable": true,
  1763. "type": "integer"
  1764. },
  1765. "originNodeGuid": {
  1766. "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.",
  1767. "type": "string"
  1768. },
  1769. "port": {
  1770. "example": 443,
  1771. "maximum": 65535,
  1772. "minimum": 0,
  1773. "type": "integer"
  1774. },
  1775. "protocol": {
  1776. "enum": [
  1777. "vmess",
  1778. "vless",
  1779. "trojan",
  1780. "shadowsocks",
  1781. "wireguard",
  1782. "hysteria",
  1783. "http",
  1784. "mixed",
  1785. "tunnel",
  1786. "tun",
  1787. "mtproto"
  1788. ],
  1789. "example": "vless",
  1790. "type": "string"
  1791. },
  1792. "remark": {
  1793. "description": "Human-readable remark",
  1794. "example": "VLESS-443",
  1795. "type": "string"
  1796. },
  1797. "settings": {},
  1798. "shareAddr": {
  1799. "type": "string"
  1800. },
  1801. "shareAddrStrategy": {
  1802. "enum": [
  1803. "node",
  1804. "listen",
  1805. "custom"
  1806. ],
  1807. "type": "string"
  1808. },
  1809. "sniffing": {},
  1810. "streamSettings": {},
  1811. "subSortIndex": {
  1812. "description": "1-based sort order of this inbound's links in subscription output only (lower first; ties by id)",
  1813. "example": 1,
  1814. "minimum": 1,
  1815. "type": "integer"
  1816. },
  1817. "tag": {
  1818. "example": "in-443-tcp",
  1819. "type": "string"
  1820. },
  1821. "total": {
  1822. "description": "Total traffic limit in bytes",
  1823. "format": "int64",
  1824. "type": "integer"
  1825. },
  1826. "trafficReset": {
  1827. "description": "Traffic reset schedule",
  1828. "enum": [
  1829. "never",
  1830. "hourly",
  1831. "daily",
  1832. "weekly",
  1833. "monthly"
  1834. ],
  1835. "type": "string"
  1836. },
  1837. "up": {
  1838. "description": "Upload traffic in bytes",
  1839. "format": "int64",
  1840. "type": "integer"
  1841. }
  1842. },
  1843. "required": [
  1844. "clientStats",
  1845. "down",
  1846. "enable",
  1847. "expiryTime",
  1848. "id",
  1849. "lastTrafficResetTime",
  1850. "listen",
  1851. "port",
  1852. "protocol",
  1853. "remark",
  1854. "settings",
  1855. "shareAddr",
  1856. "shareAddrStrategy",
  1857. "sniffing",
  1858. "streamSettings",
  1859. "subSortIndex",
  1860. "tag",
  1861. "total",
  1862. "trafficReset",
  1863. "up"
  1864. ],
  1865. "type": "object"
  1866. },
  1867. "InboundClientIps": {
  1868. "description": "InboundClientIps stores IP addresses associated with inbound clients for access control.",
  1869. "properties": {
  1870. "clientEmail": {
  1871. "type": "string"
  1872. },
  1873. "id": {
  1874. "type": "integer"
  1875. },
  1876. "ips": {}
  1877. },
  1878. "required": [
  1879. "clientEmail",
  1880. "id",
  1881. "ips"
  1882. ],
  1883. "type": "object"
  1884. },
  1885. "InboundFallback": {
  1886. "properties": {
  1887. "alpn": {
  1888. "type": "string"
  1889. },
  1890. "childId": {
  1891. "type": "integer"
  1892. },
  1893. "dest": {
  1894. "type": "string"
  1895. },
  1896. "id": {
  1897. "type": "integer"
  1898. },
  1899. "masterId": {
  1900. "type": "integer"
  1901. },
  1902. "name": {
  1903. "type": "string"
  1904. },
  1905. "path": {
  1906. "type": "string"
  1907. },
  1908. "sortOrder": {
  1909. "type": "integer"
  1910. },
  1911. "xver": {
  1912. "type": "integer"
  1913. }
  1914. },
  1915. "required": [
  1916. "alpn",
  1917. "childId",
  1918. "dest",
  1919. "id",
  1920. "masterId",
  1921. "name",
  1922. "path",
  1923. "sortOrder",
  1924. "xver"
  1925. ],
  1926. "type": "object"
  1927. },
  1928. "InboundOption": {
  1929. "properties": {
  1930. "enable": {
  1931. "example": true,
  1932. "type": "boolean"
  1933. },
  1934. "id": {
  1935. "example": 1,
  1936. "type": "integer"
  1937. },
  1938. "listen": {
  1939. "type": "string"
  1940. },
  1941. "mtprotoDomain": {
  1942. "type": "string"
  1943. },
  1944. "nodeAddress": {
  1945. "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.",
  1946. "type": "string"
  1947. },
  1948. "nodeId": {
  1949. "description": "Hosting node; nil for this panel's own inbounds. Lets the clients\npage map a node filter onto inbound IDs (#4997).",
  1950. "nullable": true,
  1951. "type": "integer"
  1952. },
  1953. "port": {
  1954. "example": 443,
  1955. "type": "integer"
  1956. },
  1957. "protocol": {
  1958. "example": "vless",
  1959. "type": "string"
  1960. },
  1961. "remark": {
  1962. "example": "VLESS-443",
  1963. "type": "string"
  1964. },
  1965. "shareAddr": {
  1966. "type": "string"
  1967. },
  1968. "shareAddrStrategy": {
  1969. "type": "string"
  1970. },
  1971. "ssMethod": {
  1972. "type": "string"
  1973. },
  1974. "tag": {
  1975. "example": "in-443-tcp",
  1976. "type": "string"
  1977. },
  1978. "tlsFlowCapable": {
  1979. "example": true,
  1980. "type": "boolean"
  1981. },
  1982. "wgDns": {
  1983. "type": "string"
  1984. },
  1985. "wgMtu": {
  1986. "type": "integer"
  1987. },
  1988. "wgPublicKey": {
  1989. "type": "string"
  1990. }
  1991. },
  1992. "required": [
  1993. "enable",
  1994. "id",
  1995. "port",
  1996. "protocol",
  1997. "remark",
  1998. "ssMethod",
  1999. "tag",
  2000. "tlsFlowCapable"
  2001. ],
  2002. "type": "object"
  2003. },
  2004. "Msg": {
  2005. "properties": {
  2006. "msg": {
  2007. "type": "string"
  2008. },
  2009. "obj": {},
  2010. "success": {
  2011. "type": "boolean"
  2012. }
  2013. },
  2014. "required": [
  2015. "msg",
  2016. "obj",
  2017. "success"
  2018. ],
  2019. "type": "object"
  2020. },
  2021. "Node": {
  2022. "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.",
  2023. "properties": {
  2024. "activeCount": {
  2025. "example": 23,
  2026. "type": "integer"
  2027. },
  2028. "address": {
  2029. "example": "node1.example.com",
  2030. "type": "string"
  2031. },
  2032. "allowPrivateAddress": {
  2033. "type": "boolean"
  2034. },
  2035. "apiToken": {
  2036. "example": "abcdef0123456789",
  2037. "type": "string"
  2038. },
  2039. "basePath": {
  2040. "example": "/",
  2041. "type": "string"
  2042. },
  2043. "clientCount": {
  2044. "example": 27,
  2045. "type": "integer"
  2046. },
  2047. "configDirty": {
  2048. "type": "boolean"
  2049. },
  2050. "configDirtyAt": {
  2051. "format": "int64",
  2052. "type": "integer"
  2053. },
  2054. "cpuPct": {
  2055. "example": 23.5,
  2056. "type": "number"
  2057. },
  2058. "createdAt": {
  2059. "example": 1700000000,
  2060. "format": "int64",
  2061. "type": "integer"
  2062. },
  2063. "depletedCount": {
  2064. "example": 1,
  2065. "type": "integer"
  2066. },
  2067. "disabledCount": {
  2068. "example": 3,
  2069. "type": "integer"
  2070. },
  2071. "enable": {
  2072. "example": true,
  2073. "type": "boolean"
  2074. },
  2075. "guid": {
  2076. "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.",
  2077. "type": "string"
  2078. },
  2079. "id": {
  2080. "example": 1,
  2081. "type": "integer"
  2082. },
  2083. "inboundCount": {
  2084. "example": 5,
  2085. "type": "integer"
  2086. },
  2087. "inboundSyncMode": {
  2088. "enum": [
  2089. "all",
  2090. "selected"
  2091. ],
  2092. "type": "string"
  2093. },
  2094. "inboundTags": {
  2095. "items": {
  2096. "type": "string"
  2097. },
  2098. "type": "array"
  2099. },
  2100. "lastError": {
  2101. "type": "string"
  2102. },
  2103. "lastHeartbeat": {
  2104. "description": "unix seconds, 0 = never",
  2105. "example": 1700000000,
  2106. "format": "int64",
  2107. "type": "integer"
  2108. },
  2109. "latencyMs": {
  2110. "example": 42,
  2111. "type": "integer"
  2112. },
  2113. "memPct": {
  2114. "example": 45.1,
  2115. "type": "number"
  2116. },
  2117. "name": {
  2118. "example": "de-fra-1",
  2119. "type": "string"
  2120. },
  2121. "netDown": {
  2122. "example": 2097152,
  2123. "format": "int64",
  2124. "type": "integer"
  2125. },
  2126. "netUp": {
  2127. "example": 1048576,
  2128. "format": "int64",
  2129. "type": "integer"
  2130. },
  2131. "onlineCount": {
  2132. "example": 3,
  2133. "type": "integer"
  2134. },
  2135. "outboundTag": {
  2136. "type": "string"
  2137. },
  2138. "panelVersion": {
  2139. "example": "v3.x.x",
  2140. "type": "string"
  2141. },
  2142. "parentGuid": {
  2143. "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.",
  2144. "type": "string"
  2145. },
  2146. "pinnedCertSha256": {
  2147. "type": "string"
  2148. },
  2149. "port": {
  2150. "example": 2053,
  2151. "maximum": 65535,
  2152. "minimum": 1,
  2153. "type": "integer"
  2154. },
  2155. "remark": {
  2156. "type": "string"
  2157. },
  2158. "scheme": {
  2159. "enum": [
  2160. "http",
  2161. "https"
  2162. ],
  2163. "example": "https",
  2164. "type": "string"
  2165. },
  2166. "status": {
  2167. "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",
  2168. "example": "online",
  2169. "type": "string"
  2170. },
  2171. "tlsVerifyMode": {
  2172. "enum": [
  2173. "verify",
  2174. "skip",
  2175. "pin",
  2176. "mtls"
  2177. ],
  2178. "type": "string"
  2179. },
  2180. "transitive": {
  2181. "type": "boolean"
  2182. },
  2183. "updatedAt": {
  2184. "example": 1700000000,
  2185. "format": "int64",
  2186. "type": "integer"
  2187. },
  2188. "uptimeSecs": {
  2189. "example": 86400,
  2190. "format": "int64",
  2191. "type": "integer"
  2192. },
  2193. "xrayError": {
  2194. "type": "string"
  2195. },
  2196. "xrayState": {
  2197. "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.",
  2198. "type": "string"
  2199. },
  2200. "xrayVersion": {
  2201. "example": "25.10.31",
  2202. "type": "string"
  2203. }
  2204. },
  2205. "required": [
  2206. "activeCount",
  2207. "address",
  2208. "allowPrivateAddress",
  2209. "apiToken",
  2210. "basePath",
  2211. "clientCount",
  2212. "configDirty",
  2213. "configDirtyAt",
  2214. "cpuPct",
  2215. "createdAt",
  2216. "depletedCount",
  2217. "disabledCount",
  2218. "enable",
  2219. "guid",
  2220. "id",
  2221. "inboundCount",
  2222. "inboundSyncMode",
  2223. "inboundTags",
  2224. "lastError",
  2225. "lastHeartbeat",
  2226. "latencyMs",
  2227. "memPct",
  2228. "name",
  2229. "netDown",
  2230. "netUp",
  2231. "onlineCount",
  2232. "outboundTag",
  2233. "panelVersion",
  2234. "pinnedCertSha256",
  2235. "port",
  2236. "remark",
  2237. "scheme",
  2238. "status",
  2239. "tlsVerifyMode",
  2240. "updatedAt",
  2241. "uptimeSecs",
  2242. "xrayError",
  2243. "xrayState",
  2244. "xrayVersion"
  2245. ],
  2246. "type": "object"
  2247. },
  2248. "OutboundTraffics": {
  2249. "description": "OutboundTraffics tracks traffic statistics for Xray outbound connections.",
  2250. "properties": {
  2251. "down": {
  2252. "format": "int64",
  2253. "type": "integer"
  2254. },
  2255. "id": {
  2256. "type": "integer"
  2257. },
  2258. "tag": {
  2259. "type": "string"
  2260. },
  2261. "total": {
  2262. "format": "int64",
  2263. "type": "integer"
  2264. },
  2265. "up": {
  2266. "format": "int64",
  2267. "type": "integer"
  2268. }
  2269. },
  2270. "required": [
  2271. "down",
  2272. "id",
  2273. "tag",
  2274. "total",
  2275. "up"
  2276. ],
  2277. "type": "object"
  2278. },
  2279. "PanelUpdateStatus": {
  2280. "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.",
  2281. "properties": {
  2282. "exitCode": {
  2283. "example": 0,
  2284. "type": "integer"
  2285. },
  2286. "finishedAt": {
  2287. "example": 1735689612,
  2288. "format": "int64",
  2289. "type": "integer"
  2290. },
  2291. "runId": {
  2292. "example": "1735689600123456789",
  2293. "type": "string"
  2294. },
  2295. "state": {
  2296. "example": "success",
  2297. "type": "string"
  2298. }
  2299. },
  2300. "required": [
  2301. "exitCode",
  2302. "finishedAt",
  2303. "runId",
  2304. "state"
  2305. ],
  2306. "type": "object"
  2307. },
  2308. "ProbeResultUI": {
  2309. "properties": {
  2310. "cpuPct": {
  2311. "example": 12.5,
  2312. "type": "number"
  2313. },
  2314. "error": {
  2315. "type": "string"
  2316. },
  2317. "latencyMs": {
  2318. "example": 42,
  2319. "type": "integer"
  2320. },
  2321. "memPct": {
  2322. "example": 45.2,
  2323. "type": "number"
  2324. },
  2325. "panelVersion": {
  2326. "example": "v3.x.x",
  2327. "type": "string"
  2328. },
  2329. "status": {
  2330. "example": "online",
  2331. "type": "string"
  2332. },
  2333. "uptimeSecs": {
  2334. "example": 86400,
  2335. "format": "int64",
  2336. "type": "integer"
  2337. },
  2338. "xrayError": {
  2339. "type": "string"
  2340. },
  2341. "xrayState": {
  2342. "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.",
  2343. "type": "string"
  2344. },
  2345. "xrayVersion": {
  2346. "example": "25.10.31",
  2347. "type": "string"
  2348. }
  2349. },
  2350. "required": [
  2351. "cpuPct",
  2352. "error",
  2353. "latencyMs",
  2354. "memPct",
  2355. "panelVersion",
  2356. "status",
  2357. "uptimeSecs",
  2358. "xrayError",
  2359. "xrayState",
  2360. "xrayVersion"
  2361. ],
  2362. "type": "object"
  2363. },
  2364. "RealityScanResult": {
  2365. "properties": {
  2366. "alpn": {
  2367. "example": "h2",
  2368. "type": "string"
  2369. },
  2370. "certIssuer": {
  2371. "example": "Google Trust Services",
  2372. "type": "string"
  2373. },
  2374. "certSubject": {
  2375. "example": "cloudflare.com",
  2376. "type": "string"
  2377. },
  2378. "certValid": {
  2379. "example": true,
  2380. "type": "boolean"
  2381. },
  2382. "curveID": {
  2383. "example": "X25519",
  2384. "type": "string"
  2385. },
  2386. "feasible": {
  2387. "example": true,
  2388. "type": "boolean"
  2389. },
  2390. "h2": {
  2391. "example": true,
  2392. "type": "boolean"
  2393. },
  2394. "host": {
  2395. "example": "www.cloudflare.com",
  2396. "type": "string"
  2397. },
  2398. "ip": {
  2399. "example": "104.16.124.96",
  2400. "type": "string"
  2401. },
  2402. "latencyMs": {
  2403. "example": 180,
  2404. "type": "integer"
  2405. },
  2406. "notAfter": {
  2407. "example": "2026-08-01T00:00:00Z",
  2408. "type": "string"
  2409. },
  2410. "port": {
  2411. "example": 443,
  2412. "type": "integer"
  2413. },
  2414. "reason": {
  2415. "type": "string"
  2416. },
  2417. "serverNames": {
  2418. "items": {
  2419. "type": "string"
  2420. },
  2421. "type": "array"
  2422. },
  2423. "target": {
  2424. "example": "www.cloudflare.com:443",
  2425. "type": "string"
  2426. },
  2427. "tls13": {
  2428. "example": true,
  2429. "type": "boolean"
  2430. },
  2431. "tlsVersion": {
  2432. "example": "1.3",
  2433. "type": "string"
  2434. },
  2435. "x25519": {
  2436. "example": true,
  2437. "type": "boolean"
  2438. }
  2439. },
  2440. "required": [
  2441. "alpn",
  2442. "certIssuer",
  2443. "certSubject",
  2444. "certValid",
  2445. "curveID",
  2446. "feasible",
  2447. "h2",
  2448. "host",
  2449. "ip",
  2450. "latencyMs",
  2451. "notAfter",
  2452. "port",
  2453. "reason",
  2454. "serverNames",
  2455. "target",
  2456. "tls13",
  2457. "tlsVersion",
  2458. "x25519"
  2459. ],
  2460. "type": "object"
  2461. },
  2462. "Setting": {
  2463. "description": "Setting stores key-value configuration settings for the 3x-ui panel.",
  2464. "properties": {
  2465. "id": {
  2466. "type": "integer"
  2467. },
  2468. "key": {
  2469. "type": "string"
  2470. },
  2471. "value": {
  2472. "type": "string"
  2473. }
  2474. },
  2475. "required": [
  2476. "id",
  2477. "key",
  2478. "value"
  2479. ],
  2480. "type": "object"
  2481. },
  2482. "User": {
  2483. "description": "User represents a user account in the 3x-ui panel.",
  2484. "properties": {
  2485. "id": {
  2486. "type": "integer"
  2487. },
  2488. "password": {
  2489. "type": "string"
  2490. },
  2491. "username": {
  2492. "type": "string"
  2493. }
  2494. },
  2495. "required": [
  2496. "id",
  2497. "password",
  2498. "username"
  2499. ],
  2500. "type": "object"
  2501. }
  2502. };