[{"data":1,"prerenderedAt":1708},["ShallowReactive",2],{"navigation":3,"docs-\u002Fdocs\u002Fapi\u002Fadmin":72,"surround-\u002Fdocs\u002Fapi\u002Fadmin":1704},[4],{"title":5,"path":6,"stem":7,"children":8,"page":38},"Docs","\u002Fdocs","docs",[9,39],{"title":10,"path":11,"stem":12,"children":13,"page":38},"Guide","\u002Fdocs\u002Fguide","docs\u002F1.guide",[14,18,22,26,30,34],{"title":15,"path":16,"stem":17},"介绍","\u002Fdocs\u002Fguide\u002Fintroduction","docs\u002F1.guide\u002F1.introduction",{"title":19,"path":20,"stem":21},"快速开始","\u002Fdocs\u002Fguide\u002Fquick-start","docs\u002F1.guide\u002F2.quick-start",{"title":23,"path":24,"stem":25},"配置说明","\u002Fdocs\u002Fguide\u002Fconfiguration","docs\u002F1.guide\u002F3.configuration",{"title":27,"path":28,"stem":29},"存储配置","\u002Fdocs\u002Fguide\u002Fstorage","docs\u002F1.guide\u002F4.storage",{"title":31,"path":32,"stem":33},"生产部署","\u002Fdocs\u002Fguide\u002Fdeployment","docs\u002F1.guide\u002F5.deployment",{"title":35,"path":36,"stem":37},"第三方客户端","\u002Fdocs\u002Fguide\u002Fclients","docs\u002F1.guide\u002F6.clients",false,{"title":40,"path":41,"stem":42,"children":43,"page":38},"Api","\u002Fdocs\u002Fapi","docs\u002F2.api",[44,48,52,56,60,64,68],{"title":45,"path":46,"stem":47},"概述","\u002Fdocs\u002Fapi\u002Foverview","docs\u002F2.api\u002F1.overview",{"title":49,"path":50,"stem":51},"认证","\u002Fdocs\u002Fapi\u002Fauthentication","docs\u002F2.api\u002F2.authentication",{"title":53,"path":54,"stem":55},"文件上传","\u002Fdocs\u002Fapi\u002Fupload","docs\u002F2.api\u002F3.upload",{"title":57,"path":58,"stem":59},"文件管理","\u002Fdocs\u002Fapi\u002Ffiles","docs\u002F2.api\u002F4.files",{"title":61,"path":62,"stem":63},"相册","\u002Fdocs\u002Fapi\u002Falbums","docs\u002F2.api\u002F5.albums",{"title":65,"path":66,"stem":67},"API Token","\u002Fdocs\u002Fapi\u002Ftokens","docs\u002F2.api\u002F6.tokens",{"title":69,"path":70,"stem":71},"管理员 API","\u002Fdocs\u002Fapi\u002Fadmin","docs\u002F2.api\u002F7.admin",{"id":73,"title":69,"body":74,"description":1698,"extension":1699,"meta":1700,"navigation":1701,"path":70,"seo":1702,"stem":71,"__hash__":1703},"docs\u002Fdocs\u002F2.api\u002F7.admin.md",{"type":75,"value":76,"toc":1670},"minimark",[77,86,99,116,120,123,127,140,206,213,216,227,234,307,310,337,340,343,353,393,588,591,599,681,755,758,768,771,848,851,860,863,865,868,877,884,985,988,996,1124,1145,1155,1158,1167,1174,1177,1185,1193,1196,1205,1212,1248,1251,1291,1298,1301,1304,1313,1491,1494,1497,1505,1508,1542,1545,1548,1551,1554,1563,1637,1640,1649,1652,1655,1666],[78,79,80,81,85],"p",{},"管理员 API 位于 ",[82,83,84],"code",{},"\u002Fapi\u002Fv1\u002Fadmin\u002F*"," 与部分共享端点，要求：",[87,88,89,93],"ol",{},[90,91,92],"li",{},"Bearer 认证通过",[90,94,95,96],{},"用户的 ",[82,97,98],{},"role == \"admin\"",[100,101,102],"warning",{},[78,103,104,105,110,111,115],{},"基于",[106,107,109],"a",{"href":108},"\u002Fdocs\u002Fapi\u002Ftokens#token-%E8%83%BD%E5%81%9A%E4%BB%80%E4%B9%88","安全策略","，API Token ",[112,113,114],"strong",{},"不具备","管理员权限；管理员操作必须使用浏览器登录或直接调用接口时使用 Access Token。",[117,118,119],"h2",{"id":119},"安装向导",[78,121,122],{},"安装向导无需认证，仅在首次部署时生效。",[124,125,126],"h3",{"id":126},"检查安装状态",[128,129,130],"endpoint",{},[78,131,132,133,136,137],{},"GET · ",[82,134,135],{},"\u002Fapi\u002Fv1\u002Fsetup\u002Fstatus"," · ",[112,138,139],{},"无需认证",[141,142,147],"pre",{"className":143,"code":144,"language":145,"meta":146,"style":146},"language-json shiki shiki-themes github-light github-dark","{\n  \"code\": 0,\n  \"data\": {\n    \"initialized\": false\n  }\n}\n","json","",[82,148,149,158,174,183,194,200],{"__ignoreMap":146},[150,151,154],"span",{"class":152,"line":153},"line",1,[150,155,157],{"class":156},"sVt8B","{\n",[150,159,161,165,168,171],{"class":152,"line":160},2,[150,162,164],{"class":163},"sj4cs","  \"code\"",[150,166,167],{"class":156},": ",[150,169,170],{"class":163},"0",[150,172,173],{"class":156},",\n",[150,175,177,180],{"class":152,"line":176},3,[150,178,179],{"class":163},"  \"data\"",[150,181,182],{"class":156},": {\n",[150,184,186,189,191],{"class":152,"line":185},4,[150,187,188],{"class":163},"    \"initialized\"",[150,190,167],{"class":156},[150,192,193],{"class":163},"false\n",[150,195,197],{"class":152,"line":196},5,[150,198,199],{"class":156},"  }\n",[150,201,203],{"class":152,"line":202},6,[150,204,205],{"class":156},"}\n",[78,207,208,209,212],{},"该端点同时被 Docker ",[82,210,211],{},"HEALTHCHECK"," 使用。",[124,214,215],{"id":215},"执行初始化",[128,217,218],{},[78,219,220,221,136,224,226],{},"POST · ",[82,222,223],{},"\u002Fapi\u002Fv1\u002Fsetup",[112,225,139],{},"（仅首次）",[78,228,229,230,233],{},"仅当 ",[82,231,232],{},"initialized == false"," 时可调用。",[141,235,237],{"className":143,"code":236,"language":145,"meta":146,"style":146},"{\n  \"site_name\": \"My Kite\",\n  \"site_url\": \"https:\u002F\u002Fkite.example.com\",\n  \"admin_username\": \"alice\",\n  \"admin_email\": \"alice@example.com\",\n  \"admin_password\": \"strong-password\"\n}\n",[82,238,239,243,256,268,280,292,302],{"__ignoreMap":146},[150,240,241],{"class":152,"line":153},[150,242,157],{"class":156},[150,244,245,248,250,254],{"class":152,"line":160},[150,246,247],{"class":163},"  \"site_name\"",[150,249,167],{"class":156},[150,251,253],{"class":252},"sZZnC","\"My Kite\"",[150,255,173],{"class":156},[150,257,258,261,263,266],{"class":152,"line":176},[150,259,260],{"class":163},"  \"site_url\"",[150,262,167],{"class":156},[150,264,265],{"class":252},"\"https:\u002F\u002Fkite.example.com\"",[150,267,173],{"class":156},[150,269,270,273,275,278],{"class":152,"line":185},[150,271,272],{"class":163},"  \"admin_username\"",[150,274,167],{"class":156},[150,276,277],{"class":252},"\"alice\"",[150,279,173],{"class":156},[150,281,282,285,287,290],{"class":152,"line":196},[150,283,284],{"class":163},"  \"admin_email\"",[150,286,167],{"class":156},[150,288,289],{"class":252},"\"alice@example.com\"",[150,291,173],{"class":156},[150,293,294,297,299],{"class":152,"line":202},[150,295,296],{"class":163},"  \"admin_password\"",[150,298,167],{"class":156},[150,300,301],{"class":252},"\"strong-password\"\n",[150,303,305],{"class":152,"line":304},7,[150,306,205],{"class":156},[78,308,309],{},"成功后：",[311,312,313,320,331],"ul",{},[90,314,315,316,319],{},"把站点配置写入 ",[82,317,318],{},"settings"," 表",[90,321,322,323,326,327,330],{},"使用传入的凭据",[112,324,325],{},"替换","默认 ",[82,328,329],{},"admin\u002Fadmin"," 账号",[90,332,333,334,336],{},"后续调用 ",[82,335,223],{}," 将被拒绝",[117,338,339],{"id":339},"用户管理",[124,341,342],{"id":342},"列出全部用户",[128,344,345],{},[78,346,132,347,136,350],{},[82,348,349],{},"\u002Fapi\u002Fv1\u002Fadmin\u002Fusers",[112,351,352],{},"需管理员",[354,355,356,369],"table",{},[357,358,359],"thead",{},[360,361,362,366],"tr",{},[363,364,365],"th",{},"参数",[363,367,368],{},"说明",[370,371,372,383],"tbody",{},[360,373,374,380],{},[375,376,377],"td",{},[82,378,379],{},"page",[375,381,382],{},"页码",[360,384,385,390],{},[375,386,387],{},[82,388,389],{},"size",[375,391,392],{},"每页数量",[141,394,396],{"className":143,"code":395,"language":145,"meta":146,"style":146},"{\n  \"code\": 0,\n  \"data\": {\n    \"items\": [\n      {\n        \"id\": \"uuid\",\n        \"username\": \"alice\",\n        \"email\": \"alice@example.com\",\n        \"role\": \"user\",\n        \"storage_limit\": 10737418240,\n        \"storage_used\": 521308864,\n        \"is_active\": true,\n        \"created_at\": \"2026-01-01T00:00:00Z\"\n      }\n    ],\n    \"total\": 12,\n    \"page\": 1,\n    \"size\": 20\n  }\n}\n",[82,397,398,402,412,418,426,431,443,454,466,479,492,505,518,529,535,541,554,567,578,583],{"__ignoreMap":146},[150,399,400],{"class":152,"line":153},[150,401,157],{"class":156},[150,403,404,406,408,410],{"class":152,"line":160},[150,405,164],{"class":163},[150,407,167],{"class":156},[150,409,170],{"class":163},[150,411,173],{"class":156},[150,413,414,416],{"class":152,"line":176},[150,415,179],{"class":163},[150,417,182],{"class":156},[150,419,420,423],{"class":152,"line":185},[150,421,422],{"class":163},"    \"items\"",[150,424,425],{"class":156},": [\n",[150,427,428],{"class":152,"line":196},[150,429,430],{"class":156},"      {\n",[150,432,433,436,438,441],{"class":152,"line":202},[150,434,435],{"class":163},"        \"id\"",[150,437,167],{"class":156},[150,439,440],{"class":252},"\"uuid\"",[150,442,173],{"class":156},[150,444,445,448,450,452],{"class":152,"line":304},[150,446,447],{"class":163},"        \"username\"",[150,449,167],{"class":156},[150,451,277],{"class":252},[150,453,173],{"class":156},[150,455,457,460,462,464],{"class":152,"line":456},8,[150,458,459],{"class":163},"        \"email\"",[150,461,167],{"class":156},[150,463,289],{"class":252},[150,465,173],{"class":156},[150,467,469,472,474,477],{"class":152,"line":468},9,[150,470,471],{"class":163},"        \"role\"",[150,473,167],{"class":156},[150,475,476],{"class":252},"\"user\"",[150,478,173],{"class":156},[150,480,482,485,487,490],{"class":152,"line":481},10,[150,483,484],{"class":163},"        \"storage_limit\"",[150,486,167],{"class":156},[150,488,489],{"class":163},"10737418240",[150,491,173],{"class":156},[150,493,495,498,500,503],{"class":152,"line":494},11,[150,496,497],{"class":163},"        \"storage_used\"",[150,499,167],{"class":156},[150,501,502],{"class":163},"521308864",[150,504,173],{"class":156},[150,506,508,511,513,516],{"class":152,"line":507},12,[150,509,510],{"class":163},"        \"is_active\"",[150,512,167],{"class":156},[150,514,515],{"class":163},"true",[150,517,173],{"class":156},[150,519,521,524,526],{"class":152,"line":520},13,[150,522,523],{"class":163},"        \"created_at\"",[150,525,167],{"class":156},[150,527,528],{"class":252},"\"2026-01-01T00:00:00Z\"\n",[150,530,532],{"class":152,"line":531},14,[150,533,534],{"class":156},"      }\n",[150,536,538],{"class":152,"line":537},15,[150,539,540],{"class":156},"    ],\n",[150,542,544,547,549,552],{"class":152,"line":543},16,[150,545,546],{"class":163},"    \"total\"",[150,548,167],{"class":156},[150,550,551],{"class":163},"12",[150,553,173],{"class":156},[150,555,557,560,562,565],{"class":152,"line":556},17,[150,558,559],{"class":163},"    \"page\"",[150,561,167],{"class":156},[150,563,564],{"class":163},"1",[150,566,173],{"class":156},[150,568,570,573,575],{"class":152,"line":569},18,[150,571,572],{"class":163},"    \"size\"",[150,574,167],{"class":156},[150,576,577],{"class":163},"20\n",[150,579,581],{"class":152,"line":580},19,[150,582,199],{"class":156},[150,584,586],{"class":152,"line":585},20,[150,587,205],{"class":156},[124,589,590],{"id":590},"创建用户",[128,592,593],{},[78,594,220,595,136,597],{},[82,596,349],{},[112,598,352],{},[141,600,602],{"className":143,"code":601,"language":145,"meta":146,"style":146},"{\n  \"username\": \"bob\",\n  \"nickname\": \"Bob\",\n  \"email\": \"bob@example.com\",\n  \"password\": \"initial-pass\",\n  \"role\": \"user\",\n  \"storage_limit\": 10737418240\n}\n",[82,603,604,608,620,632,644,656,667,677],{"__ignoreMap":146},[150,605,606],{"class":152,"line":153},[150,607,157],{"class":156},[150,609,610,613,615,618],{"class":152,"line":160},[150,611,612],{"class":163},"  \"username\"",[150,614,167],{"class":156},[150,616,617],{"class":252},"\"bob\"",[150,619,173],{"class":156},[150,621,622,625,627,630],{"class":152,"line":176},[150,623,624],{"class":163},"  \"nickname\"",[150,626,167],{"class":156},[150,628,629],{"class":252},"\"Bob\"",[150,631,173],{"class":156},[150,633,634,637,639,642],{"class":152,"line":185},[150,635,636],{"class":163},"  \"email\"",[150,638,167],{"class":156},[150,640,641],{"class":252},"\"bob@example.com\"",[150,643,173],{"class":156},[150,645,646,649,651,654],{"class":152,"line":196},[150,647,648],{"class":163},"  \"password\"",[150,650,167],{"class":156},[150,652,653],{"class":252},"\"initial-pass\"",[150,655,173],{"class":156},[150,657,658,661,663,665],{"class":152,"line":202},[150,659,660],{"class":163},"  \"role\"",[150,662,167],{"class":156},[150,664,476],{"class":252},[150,666,173],{"class":156},[150,668,669,672,674],{"class":152,"line":304},[150,670,671],{"class":163},"  \"storage_limit\"",[150,673,167],{"class":156},[150,675,676],{"class":163},"10737418240\n",[150,678,679],{"class":152,"line":456},[150,680,205],{"class":156},[354,682,683,693],{},[357,684,685],{},[360,686,687,690],{},[363,688,689],{},"字段",[363,691,692],{},"约束",[370,694,695,705,715,725,741],{},[360,696,697,702],{},[375,698,699],{},[82,700,701],{},"username",[375,703,704],{},"必填，3-32 字符",[360,706,707,712],{},[375,708,709],{},[82,710,711],{},"email",[375,713,714],{},"必填，RFC 邮箱",[360,716,717,722],{},[375,718,719],{},[82,720,721],{},"password",[375,723,724],{},"必填，6-64 字符",[360,726,727,732],{},[375,728,729],{},[82,730,731],{},"role",[375,733,734,737,738],{},[82,735,736],{},"admin"," \u002F ",[82,739,740],{},"user",[360,742,743,748],{},[375,744,745],{},[82,746,747],{},"storage_limit",[375,749,750,751,754],{},"字节，",[82,752,753],{},"-1"," 表示不限额",[124,756,757],{"id":757},"更新用户",[128,759,760],{},[78,761,762,763,136,766],{},"PUT · ",[82,764,765],{},"\u002Fapi\u002Fv1\u002Fadmin\u002Fusers\u002F:id",[112,767,352],{},[78,769,770],{},"所有字段可选：",[141,772,774],{"className":143,"code":773,"language":145,"meta":146,"style":146},"{\n  \"nickname\": \"Bob L.\",\n  \"email\": \"bob-new@example.com\",\n  \"password\": \"reset-password\",\n  \"role\": \"admin\",\n  \"is_active\": true,\n  \"storage_limit\": 21474836480\n}\n",[82,775,776,780,791,802,813,824,835,844],{"__ignoreMap":146},[150,777,778],{"class":152,"line":153},[150,779,157],{"class":156},[150,781,782,784,786,789],{"class":152,"line":160},[150,783,624],{"class":163},[150,785,167],{"class":156},[150,787,788],{"class":252},"\"Bob L.\"",[150,790,173],{"class":156},[150,792,793,795,797,800],{"class":152,"line":176},[150,794,636],{"class":163},[150,796,167],{"class":156},[150,798,799],{"class":252},"\"bob-new@example.com\"",[150,801,173],{"class":156},[150,803,804,806,808,811],{"class":152,"line":185},[150,805,648],{"class":163},[150,807,167],{"class":156},[150,809,810],{"class":252},"\"reset-password\"",[150,812,173],{"class":156},[150,814,815,817,819,822],{"class":152,"line":196},[150,816,660],{"class":163},[150,818,167],{"class":156},[150,820,821],{"class":252},"\"admin\"",[150,823,173],{"class":156},[150,825,826,829,831,833],{"class":152,"line":202},[150,827,828],{"class":163},"  \"is_active\"",[150,830,167],{"class":156},[150,832,515],{"class":163},[150,834,173],{"class":156},[150,836,837,839,841],{"class":152,"line":304},[150,838,671],{"class":163},[150,840,167],{"class":156},[150,842,843],{"class":163},"21474836480\n",[150,845,846],{"class":152,"line":456},[150,847,205],{"class":156},[124,849,850],{"id":850},"删除用户",[128,852,853],{},[78,854,855,856,136,858],{},"DELETE · ",[82,857,765],{},[112,859,352],{},[78,861,862],{},"软删除：将用户标记为不可用，文件数据保留，可供审计与恢复。",[117,864,27],{"id":27},[124,866,867],{"id":867},"列出存储",[128,869,870],{},[78,871,132,872,136,875],{},[82,873,874],{},"\u002Fapi\u002Fv1\u002Fstorage",[112,876,352],{},[78,878,879,880,883],{},"返回所有存储配置（",[112,881,882],{},"不包含","敏感凭据字段）：",[141,885,887],{"className":143,"code":886,"language":145,"meta":146,"style":146},"{\n  \"code\": 0,\n  \"data\": [\n    {\n      \"id\": \"storage-uuid\",\n      \"name\": \"本机存储\",\n      \"driver\": \"local\",\n      \"is_default\": true,\n      \"is_active\": true\n    }\n  ]\n}\n",[82,888,889,893,903,909,914,926,938,950,961,971,976,981],{"__ignoreMap":146},[150,890,891],{"class":152,"line":153},[150,892,157],{"class":156},[150,894,895,897,899,901],{"class":152,"line":160},[150,896,164],{"class":163},[150,898,167],{"class":156},[150,900,170],{"class":163},[150,902,173],{"class":156},[150,904,905,907],{"class":152,"line":176},[150,906,179],{"class":163},[150,908,425],{"class":156},[150,910,911],{"class":152,"line":185},[150,912,913],{"class":156},"    {\n",[150,915,916,919,921,924],{"class":152,"line":196},[150,917,918],{"class":163},"      \"id\"",[150,920,167],{"class":156},[150,922,923],{"class":252},"\"storage-uuid\"",[150,925,173],{"class":156},[150,927,928,931,933,936],{"class":152,"line":202},[150,929,930],{"class":163},"      \"name\"",[150,932,167],{"class":156},[150,934,935],{"class":252},"\"本机存储\"",[150,937,173],{"class":156},[150,939,940,943,945,948],{"class":152,"line":304},[150,941,942],{"class":163},"      \"driver\"",[150,944,167],{"class":156},[150,946,947],{"class":252},"\"local\"",[150,949,173],{"class":156},[150,951,952,955,957,959],{"class":152,"line":456},[150,953,954],{"class":163},"      \"is_default\"",[150,956,167],{"class":156},[150,958,515],{"class":163},[150,960,173],{"class":156},[150,962,963,966,968],{"class":152,"line":468},[150,964,965],{"class":163},"      \"is_active\"",[150,967,167],{"class":156},[150,969,970],{"class":163},"true\n",[150,972,973],{"class":152,"line":481},[150,974,975],{"class":156},"    }\n",[150,977,978],{"class":152,"line":494},[150,979,980],{"class":156},"  ]\n",[150,982,983],{"class":152,"line":507},[150,984,205],{"class":156},[124,986,987],{"id":987},"创建存储",[128,989,990],{},[78,991,220,992,136,994],{},[82,993,874],{},[112,995,352],{},[141,997,999],{"className":143,"code":998,"language":145,"meta":146,"style":146},"{\n  \"name\": \"Cloudflare R2\",\n  \"driver\": \"s3\",\n  \"config\": {\n    \"endpoint\": \"https:\u002F\u002F\u003Caccount_id>.r2.cloudflarestorage.com\",\n    \"region\": \"auto\",\n    \"bucket\": \"my-kite\",\n    \"access_key_id\": \"...\",\n    \"secret_access_key\": \"...\",\n    \"base_url\": \"https:\u002F\u002Ffiles.example.com\",\n    \"force_path_style\": false\n  }\n}\n",[82,1000,1001,1005,1017,1029,1036,1048,1060,1072,1084,1095,1107,1116,1120],{"__ignoreMap":146},[150,1002,1003],{"class":152,"line":153},[150,1004,157],{"class":156},[150,1006,1007,1010,1012,1015],{"class":152,"line":160},[150,1008,1009],{"class":163},"  \"name\"",[150,1011,167],{"class":156},[150,1013,1014],{"class":252},"\"Cloudflare R2\"",[150,1016,173],{"class":156},[150,1018,1019,1022,1024,1027],{"class":152,"line":176},[150,1020,1021],{"class":163},"  \"driver\"",[150,1023,167],{"class":156},[150,1025,1026],{"class":252},"\"s3\"",[150,1028,173],{"class":156},[150,1030,1031,1034],{"class":152,"line":185},[150,1032,1033],{"class":163},"  \"config\"",[150,1035,182],{"class":156},[150,1037,1038,1041,1043,1046],{"class":152,"line":196},[150,1039,1040],{"class":163},"    \"endpoint\"",[150,1042,167],{"class":156},[150,1044,1045],{"class":252},"\"https:\u002F\u002F\u003Caccount_id>.r2.cloudflarestorage.com\"",[150,1047,173],{"class":156},[150,1049,1050,1053,1055,1058],{"class":152,"line":202},[150,1051,1052],{"class":163},"    \"region\"",[150,1054,167],{"class":156},[150,1056,1057],{"class":252},"\"auto\"",[150,1059,173],{"class":156},[150,1061,1062,1065,1067,1070],{"class":152,"line":304},[150,1063,1064],{"class":163},"    \"bucket\"",[150,1066,167],{"class":156},[150,1068,1069],{"class":252},"\"my-kite\"",[150,1071,173],{"class":156},[150,1073,1074,1077,1079,1082],{"class":152,"line":456},[150,1075,1076],{"class":163},"    \"access_key_id\"",[150,1078,167],{"class":156},[150,1080,1081],{"class":252},"\"...\"",[150,1083,173],{"class":156},[150,1085,1086,1089,1091,1093],{"class":152,"line":468},[150,1087,1088],{"class":163},"    \"secret_access_key\"",[150,1090,167],{"class":156},[150,1092,1081],{"class":252},[150,1094,173],{"class":156},[150,1096,1097,1100,1102,1105],{"class":152,"line":481},[150,1098,1099],{"class":163},"    \"base_url\"",[150,1101,167],{"class":156},[150,1103,1104],{"class":252},"\"https:\u002F\u002Ffiles.example.com\"",[150,1106,173],{"class":156},[150,1108,1109,1112,1114],{"class":152,"line":494},[150,1110,1111],{"class":163},"    \"force_path_style\"",[150,1113,167],{"class":156},[150,1115,193],{"class":163},[150,1117,1118],{"class":152,"line":507},[150,1119,199],{"class":156},[150,1121,1122],{"class":152,"line":520},[150,1123,205],{"class":156},[78,1125,1126,1129,1130,1133,1134,1137,1138,1141,1142,1144],{},[82,1127,1128],{},"driver"," 可选值为 ",[82,1131,1132],{},"local"," 或 ",[82,1135,1136],{},"s3","，对应的 ",[82,1139,1140],{},"config"," 字段结构详见",[106,1143,27],{"href":28},"。",[78,1146,1147,1148,1151,1152,1144],{},"请求提交后服务器会",[112,1149,1150],{},"立即","尝试构造驱动；若配置非法会返回 ",[82,1153,1154],{},"40000",[124,1156,1157],{"id":1157},"更新存储",[128,1159,1160],{},[78,1161,762,1162,136,1165],{},[82,1163,1164],{},"\u002Fapi\u002Fv1\u002Fstorage\u002F:id",[112,1166,352],{},[78,1168,1169,1170,1173],{},"请求结构与创建相同，",[112,1171,1172],{},"整体","替换现有配置。",[124,1175,1176],{"id":1176},"删除存储",[128,1178,1179],{},[78,1180,855,1181,136,1183],{},[82,1182,1164],{},[112,1184,352],{},[100,1186,1187],{},[78,1188,1176,1189,1192],{},[112,1190,1191],{},"不会","检查是否仍有文件引用它。请在后台核实「该存储下的文件已迁移或不再需要访问」后再执行。",[124,1194,1195],{"id":1195},"测试连接",[128,1197,1198],{},[78,1199,220,1200,136,1203],{},[82,1201,1202],{},"\u002Fapi\u002Fv1\u002Fstorage\u002F:id\u002Ftest",[112,1204,352],{},[78,1206,1207,1208,1211],{},"执行一次 ",[82,1209,1210],{},"PUT → GET → DELETE"," 往返，验证凭据与权限：",[141,1213,1215],{"className":143,"code":1214,"language":145,"meta":146,"style":146},"{ \"code\": 0, \"data\": { \"ok\": true } }\n",[82,1216,1217],{"__ignoreMap":146},[150,1218,1219,1222,1225,1227,1229,1232,1235,1238,1241,1243,1245],{"class":152,"line":153},[150,1220,1221],{"class":156},"{ ",[150,1223,1224],{"class":163},"\"code\"",[150,1226,167],{"class":156},[150,1228,170],{"class":163},[150,1230,1231],{"class":156},", ",[150,1233,1234],{"class":163},"\"data\"",[150,1236,1237],{"class":156},": { ",[150,1239,1240],{"class":163},"\"ok\"",[150,1242,167],{"class":156},[150,1244,515],{"class":163},[150,1246,1247],{"class":156}," } }\n",[78,1249,1250],{},"失败：",[141,1252,1254],{"className":143,"code":1253,"language":145,"meta":146,"style":146},"{ \"code\": 0, \"data\": { \"ok\": false, \"error\": \"AccessDenied: ...\" } }\n",[82,1255,1256],{"__ignoreMap":146},[150,1257,1258,1260,1262,1264,1266,1268,1270,1272,1274,1276,1279,1281,1284,1286,1289],{"class":152,"line":153},[150,1259,1221],{"class":156},[150,1261,1224],{"class":163},[150,1263,167],{"class":156},[150,1265,170],{"class":163},[150,1267,1231],{"class":156},[150,1269,1234],{"class":163},[150,1271,1237],{"class":156},[150,1273,1240],{"class":163},[150,1275,167],{"class":156},[150,1277,1278],{"class":163},"false",[150,1280,1231],{"class":156},[150,1282,1283],{"class":163},"\"error\"",[150,1285,167],{"class":156},[150,1287,1288],{"class":252},"\"AccessDenied: ...\"",[150,1290,1247],{"class":156},[78,1292,1293,1294,1297],{},"测试文件使用固定前缀 ",[82,1295,1296],{},".kite-test-connection","，执行完立即清除。",[117,1299,1300],{"id":1300},"系统设置",[124,1302,1303],{"id":1303},"读取全部设置",[128,1305,1306],{},[78,1307,132,1308,136,1311],{},[82,1309,1310],{},"\u002Fapi\u002Fv1\u002Fsettings",[112,1312,352],{},[141,1314,1316],{"className":143,"code":1315,"language":145,"meta":146,"style":146},"{\n  \"code\": 0,\n  \"data\": {\n    \"site_name\": \"My Kite\",\n    \"site_url\": \"https:\u002F\u002Fkite.example.com\",\n    \"allow_registration\": \"true\",\n    \"allow_guest_upload\": \"false\",\n    \"allow_public_gallery\": \"true\",\n    \"max_file_size\": \"104857600\",\n    \"allowed_types\": \"[\\\"image\u002F\\\",\\\"video\u002F\\\",\\\"audio\u002F\\\"]\",\n    \"thumb_width\": \"300\",\n    \"thumb_quality\": \"80\",\n    \"auto_webp\": \"false\"\n  }\n}\n",[82,1317,1318,1322,1332,1338,1349,1360,1372,1384,1395,1407,1449,1461,1473,1483,1487],{"__ignoreMap":146},[150,1319,1320],{"class":152,"line":153},[150,1321,157],{"class":156},[150,1323,1324,1326,1328,1330],{"class":152,"line":160},[150,1325,164],{"class":163},[150,1327,167],{"class":156},[150,1329,170],{"class":163},[150,1331,173],{"class":156},[150,1333,1334,1336],{"class":152,"line":176},[150,1335,179],{"class":163},[150,1337,182],{"class":156},[150,1339,1340,1343,1345,1347],{"class":152,"line":185},[150,1341,1342],{"class":163},"    \"site_name\"",[150,1344,167],{"class":156},[150,1346,253],{"class":252},[150,1348,173],{"class":156},[150,1350,1351,1354,1356,1358],{"class":152,"line":196},[150,1352,1353],{"class":163},"    \"site_url\"",[150,1355,167],{"class":156},[150,1357,265],{"class":252},[150,1359,173],{"class":156},[150,1361,1362,1365,1367,1370],{"class":152,"line":202},[150,1363,1364],{"class":163},"    \"allow_registration\"",[150,1366,167],{"class":156},[150,1368,1369],{"class":252},"\"true\"",[150,1371,173],{"class":156},[150,1373,1374,1377,1379,1382],{"class":152,"line":304},[150,1375,1376],{"class":163},"    \"allow_guest_upload\"",[150,1378,167],{"class":156},[150,1380,1381],{"class":252},"\"false\"",[150,1383,173],{"class":156},[150,1385,1386,1389,1391,1393],{"class":152,"line":456},[150,1387,1388],{"class":163},"    \"allow_public_gallery\"",[150,1390,167],{"class":156},[150,1392,1369],{"class":252},[150,1394,173],{"class":156},[150,1396,1397,1400,1402,1405],{"class":152,"line":468},[150,1398,1399],{"class":163},"    \"max_file_size\"",[150,1401,167],{"class":156},[150,1403,1404],{"class":252},"\"104857600\"",[150,1406,173],{"class":156},[150,1408,1409,1412,1414,1417,1420,1423,1425,1428,1430,1433,1435,1437,1439,1442,1444,1447],{"class":152,"line":481},[150,1410,1411],{"class":163},"    \"allowed_types\"",[150,1413,167],{"class":156},[150,1415,1416],{"class":252},"\"[",[150,1418,1419],{"class":163},"\\\"",[150,1421,1422],{"class":252},"image\u002F",[150,1424,1419],{"class":163},[150,1426,1427],{"class":252},",",[150,1429,1419],{"class":163},[150,1431,1432],{"class":252},"video\u002F",[150,1434,1419],{"class":163},[150,1436,1427],{"class":252},[150,1438,1419],{"class":163},[150,1440,1441],{"class":252},"audio\u002F",[150,1443,1419],{"class":163},[150,1445,1446],{"class":252},"]\"",[150,1448,173],{"class":156},[150,1450,1451,1454,1456,1459],{"class":152,"line":494},[150,1452,1453],{"class":163},"    \"thumb_width\"",[150,1455,167],{"class":156},[150,1457,1458],{"class":252},"\"300\"",[150,1460,173],{"class":156},[150,1462,1463,1466,1468,1471],{"class":152,"line":507},[150,1464,1465],{"class":163},"    \"thumb_quality\"",[150,1467,167],{"class":156},[150,1469,1470],{"class":252},"\"80\"",[150,1472,173],{"class":156},[150,1474,1475,1478,1480],{"class":152,"line":520},[150,1476,1477],{"class":163},"    \"auto_webp\"",[150,1479,167],{"class":156},[150,1481,1482],{"class":252},"\"false\"\n",[150,1484,1485],{"class":152,"line":531},[150,1486,199],{"class":156},[150,1488,1489],{"class":152,"line":537},[150,1490,205],{"class":156},[78,1492,1493],{},"所有值均以字符串形式存储；布尔、数字、数组需要由客户端解析。",[124,1495,1496],{"id":1496},"更新设置",[128,1498,1499],{},[78,1500,762,1501,136,1503],{},[82,1502,1310],{},[112,1504,352],{},[78,1506,1507],{},"部分更新：",[141,1509,1511],{"className":143,"code":1510,"language":145,"meta":146,"style":146},"{\n  \"allow_registration\": \"false\",\n  \"max_file_size\": \"209715200\"\n}\n",[82,1512,1513,1517,1528,1538],{"__ignoreMap":146},[150,1514,1515],{"class":152,"line":153},[150,1516,157],{"class":156},[150,1518,1519,1522,1524,1526],{"class":152,"line":160},[150,1520,1521],{"class":163},"  \"allow_registration\"",[150,1523,167],{"class":156},[150,1525,1381],{"class":252},[150,1527,173],{"class":156},[150,1529,1530,1533,1535],{"class":152,"line":176},[150,1531,1532],{"class":163},"  \"max_file_size\"",[150,1534,167],{"class":156},[150,1536,1537],{"class":252},"\"209715200\"\n",[150,1539,1540],{"class":152,"line":185},[150,1541,205],{"class":156},[78,1543,1544],{},"仅传入需要修改的字段；未传入的字段保持不变。",[117,1546,1547],{"id":1547},"全站文件管理",[78,1549,1550],{},"管理员还可以跨用户查看与删除文件。",[124,1552,1553],{"id":1553},"全站文件列表",[128,1555,1556],{},[78,1557,132,1558,136,1561],{},[82,1559,1560],{},"\u002Fapi\u002Fv1\u002Fadmin\u002Ffiles",[112,1562,352],{},[354,1564,1565,1573],{},[357,1566,1567],{},[360,1568,1569,1571],{},[363,1570,365],{},[363,1572,368],{},[370,1574,1575,1585,1606,1616],{},[360,1576,1577,1582],{},[375,1578,1579],{},[82,1580,1581],{},"user_id",[375,1583,1584],{},"按用户筛选",[360,1586,1587,1592],{},[375,1588,1589],{},[82,1590,1591],{},"file_type",[375,1593,1594,737,1597,737,1600,737,1603],{},[82,1595,1596],{},"image",[82,1598,1599],{},"video",[82,1601,1602],{},"audio",[82,1604,1605],{},"file",[360,1607,1608,1613],{},[375,1609,1610],{},[82,1611,1612],{},"keyword",[375,1614,1615],{},"按文件名搜索",[360,1617,1618,1631],{},[375,1619,1620,1622,1623,1622,1625,1622,1628],{},[82,1621,379],{},"、",[82,1624,389],{},[82,1626,1627],{},"order_by",[82,1629,1630],{},"order",[375,1632,1633,1634],{},"同 ",[82,1635,1636],{},"\u002Ffiles",[124,1638,1639],{"id":1639},"管理员删除文件",[128,1641,1642],{},[78,1643,855,1644,136,1647],{},[82,1645,1646],{},"\u002Fapi\u002Fv1\u002Fadmin\u002Ffiles\u002F:id",[112,1648,352],{},[78,1650,1651],{},"删除任意用户的文件，不做所有者校验。",[117,1653,1654],{"id":1654},"下一步",[311,1656,1657,1662],{},[90,1658,1659],{},[106,1660,1661],{"href":46},"概览",[90,1663,1664],{},[106,1665,65],{"href":66},[1667,1668,1669],"style",{},"html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}",{"title":146,"searchDepth":176,"depth":176,"links":1671},[1672,1676,1682,1689,1693,1697],{"id":119,"depth":160,"text":119,"children":1673},[1674,1675],{"id":126,"depth":176,"text":126},{"id":215,"depth":176,"text":215},{"id":339,"depth":160,"text":339,"children":1677},[1678,1679,1680,1681],{"id":342,"depth":176,"text":342},{"id":590,"depth":176,"text":590},{"id":757,"depth":176,"text":757},{"id":850,"depth":176,"text":850},{"id":27,"depth":160,"text":27,"children":1683},[1684,1685,1686,1687,1688],{"id":867,"depth":176,"text":867},{"id":987,"depth":176,"text":987},{"id":1157,"depth":176,"text":1157},{"id":1176,"depth":176,"text":1176},{"id":1195,"depth":176,"text":1195},{"id":1300,"depth":160,"text":1300,"children":1690},[1691,1692],{"id":1303,"depth":176,"text":1303},{"id":1496,"depth":176,"text":1496},{"id":1547,"depth":160,"text":1547,"children":1694},[1695,1696],{"id":1553,"depth":176,"text":1553},{"id":1639,"depth":176,"text":1639},{"id":1654,"depth":160,"text":1654},"用户管理、存储配置、系统设置、安装向导等管理员专用接口。","md",{},{"title":69},{"title":69,"description":1698},"gZ2zRXbO_vZ9GRsgOfWw0LE-mT9P_CLbrvuF-GQLnmk",[1705,1707],{"title":65,"path":66,"stem":67,"description":1706,"children":-1},"为第三方工具创建与管理长期 API 令牌。",null,1776443820628]