[{"data":1,"prerenderedAt":955},["ShallowReactive",2],{"navigation":3,"docs-\u002Fdocs\u002Fapi\u002Falbums":72,"surround-\u002Fdocs\u002Fapi\u002Falbums":950},[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":61,"body":74,"description":944,"extension":945,"meta":946,"navigation":947,"path":62,"seo":948,"stem":63,"__hash__":949},"docs\u002Fdocs\u002F2.api\u002F5.albums.md",{"type":75,"value":76,"toc":926},"minimark",[77,86,100,104,250,253,266,270,323,376,379,497,500,509,516,519,566,569,741,744,754,757,760,793,796,830,833,842,855,858,865,903,906,909,922],[78,79,80,81,85],"p",{},"相册是文件的逻辑分组。每个用户可以拥有多个相册，文件通过 ",[82,83,84],"code",{},"album_id"," 归属到某个相册。",[87,88,89],"note",{},[78,90,91,92,96,97,99],{},"相册是",[93,94,95],"strong",{},"可选","的 —— 上传时不指定 ",[82,98,84],{}," 的文件不归属任何相册。",[101,102,103],"h2",{"id":103},"相册对象结构",[105,106,111],"pre",{"className":107,"code":108,"language":109,"meta":110,"style":110},"language-typescript shiki shiki-themes github-light github-dark","interface Album {\n  id:          string\n  user_id:     string\n  name:        string\n  description: string\n  is_public:   boolean           \u002F\u002F 公开相册可被匿名访问\n  cover_url:   string | null\n  file_count:  number            \u002F\u002F 动态计算，非数据库列\n  created_at:  string\n  updated_at:  string\n}\n","typescript","",[82,112,113,130,144,155,166,177,192,209,223,234,244],{"__ignoreMap":110},[114,115,118,122,126],"span",{"class":116,"line":117},"line",1,[114,119,121],{"class":120},"szBVR","interface",[114,123,125],{"class":124},"sScJk"," Album",[114,127,129],{"class":128},"sVt8B"," {\n",[114,131,133,137,140],{"class":116,"line":132},2,[114,134,136],{"class":135},"s4XuR","  id",[114,138,139],{"class":120},":",[114,141,143],{"class":142},"sj4cs","          string\n",[114,145,147,150,152],{"class":116,"line":146},3,[114,148,149],{"class":135},"  user_id",[114,151,139],{"class":120},[114,153,154],{"class":142},"     string\n",[114,156,158,161,163],{"class":116,"line":157},4,[114,159,160],{"class":135},"  name",[114,162,139],{"class":120},[114,164,165],{"class":142},"        string\n",[114,167,169,172,174],{"class":116,"line":168},5,[114,170,171],{"class":135},"  description",[114,173,139],{"class":120},[114,175,176],{"class":142}," string\n",[114,178,180,183,185,188],{"class":116,"line":179},6,[114,181,182],{"class":135},"  is_public",[114,184,139],{"class":120},[114,186,187],{"class":142},"   boolean",[114,189,191],{"class":190},"sJ8bj","           \u002F\u002F 公开相册可被匿名访问\n",[114,193,195,198,200,203,206],{"class":116,"line":194},7,[114,196,197],{"class":135},"  cover_url",[114,199,139],{"class":120},[114,201,202],{"class":142},"   string",[114,204,205],{"class":120}," |",[114,207,208],{"class":142}," null\n",[114,210,212,215,217,220],{"class":116,"line":211},8,[114,213,214],{"class":135},"  file_count",[114,216,139],{"class":120},[114,218,219],{"class":142},"  number",[114,221,222],{"class":190},"            \u002F\u002F 动态计算，非数据库列\n",[114,224,226,229,231],{"class":116,"line":225},9,[114,227,228],{"class":135},"  created_at",[114,230,139],{"class":120},[114,232,233],{"class":142},"  string\n",[114,235,237,240,242],{"class":116,"line":236},10,[114,238,239],{"class":135},"  updated_at",[114,241,139],{"class":120},[114,243,233],{"class":142},[114,245,247],{"class":116,"line":246},11,[114,248,249],{"class":128},"}\n",[101,251,252],{"id":252},"创建相册",[254,255,256],"endpoint",{},[78,257,258,259,262,263],{},"POST · ",[82,260,261],{},"\u002Fapi\u002Fv1\u002Falbums"," · ",[93,264,265],{},"需认证",[267,268,269],"h3",{"id":269},"请求",[105,271,275],{"className":272,"code":273,"language":274,"meta":110,"style":110},"language-json shiki shiki-themes github-light github-dark","{\n  \"name\": \"旅行照片\",\n  \"description\": \"2026 春季东京\",\n  \"is_public\": false\n}\n","json",[82,276,277,282,297,309,319],{"__ignoreMap":110},[114,278,279],{"class":116,"line":117},[114,280,281],{"class":128},"{\n",[114,283,284,287,290,294],{"class":116,"line":132},[114,285,286],{"class":142},"  \"name\"",[114,288,289],{"class":128},": ",[114,291,293],{"class":292},"sZZnC","\"旅行照片\"",[114,295,296],{"class":128},",\n",[114,298,299,302,304,307],{"class":116,"line":146},[114,300,301],{"class":142},"  \"description\"",[114,303,289],{"class":128},[114,305,306],{"class":292},"\"2026 春季东京\"",[114,308,296],{"class":128},[114,310,311,314,316],{"class":116,"line":157},[114,312,313],{"class":142},"  \"is_public\"",[114,315,289],{"class":128},[114,317,318],{"class":142},"false\n",[114,320,321],{"class":116,"line":168},[114,322,249],{"class":128},[324,325,326,339],"table",{},[327,328,329],"thead",{},[330,331,332,336],"tr",{},[333,334,335],"th",{},"字段",[333,337,338],{},"约束",[340,341,342,353,363],"tbody",{},[330,343,344,350],{},[345,346,347],"td",{},[82,348,349],{},"name",[345,351,352],{},"必填，最长 100 字符",[330,354,355,360],{},[345,356,357],{},[82,358,359],{},"description",[345,361,362],{},"可选，最长 500 字符",[330,364,365,370],{},[345,366,367],{},[82,368,369],{},"is_public",[345,371,372,373],{},"默认 ",[82,374,375],{},"false",[267,377,378],{"id":378},"响应",[105,380,382],{"className":272,"code":381,"language":274,"meta":110,"style":110},"{\n  \"code\": 0,\n  \"data\": {\n    \"id\": \"album-uuid\",\n    \"user_id\": \"user-uuid\",\n    \"name\": \"旅行照片\",\n    \"description\": \"2026 春季东京\",\n    \"is_public\": false,\n    \"created_at\": \"2026-04-17T10:00:00Z\",\n    \"updated_at\": \"2026-04-17T10:00:00Z\"\n  }\n}\n",[82,383,384,388,400,408,420,432,443,454,465,477,487,492],{"__ignoreMap":110},[114,385,386],{"class":116,"line":117},[114,387,281],{"class":128},[114,389,390,393,395,398],{"class":116,"line":132},[114,391,392],{"class":142},"  \"code\"",[114,394,289],{"class":128},[114,396,397],{"class":142},"0",[114,399,296],{"class":128},[114,401,402,405],{"class":116,"line":146},[114,403,404],{"class":142},"  \"data\"",[114,406,407],{"class":128},": {\n",[114,409,410,413,415,418],{"class":116,"line":157},[114,411,412],{"class":142},"    \"id\"",[114,414,289],{"class":128},[114,416,417],{"class":292},"\"album-uuid\"",[114,419,296],{"class":128},[114,421,422,425,427,430],{"class":116,"line":168},[114,423,424],{"class":142},"    \"user_id\"",[114,426,289],{"class":128},[114,428,429],{"class":292},"\"user-uuid\"",[114,431,296],{"class":128},[114,433,434,437,439,441],{"class":116,"line":179},[114,435,436],{"class":142},"    \"name\"",[114,438,289],{"class":128},[114,440,293],{"class":292},[114,442,296],{"class":128},[114,444,445,448,450,452],{"class":116,"line":194},[114,446,447],{"class":142},"    \"description\"",[114,449,289],{"class":128},[114,451,306],{"class":292},[114,453,296],{"class":128},[114,455,456,459,461,463],{"class":116,"line":211},[114,457,458],{"class":142},"    \"is_public\"",[114,460,289],{"class":128},[114,462,375],{"class":142},[114,464,296],{"class":128},[114,466,467,470,472,475],{"class":116,"line":225},[114,468,469],{"class":142},"    \"created_at\"",[114,471,289],{"class":128},[114,473,474],{"class":292},"\"2026-04-17T10:00:00Z\"",[114,476,296],{"class":128},[114,478,479,482,484],{"class":116,"line":236},[114,480,481],{"class":142},"    \"updated_at\"",[114,483,289],{"class":128},[114,485,486],{"class":292},"\"2026-04-17T10:00:00Z\"\n",[114,488,489],{"class":116,"line":246},[114,490,491],{"class":128},"  }\n",[114,493,495],{"class":116,"line":494},12,[114,496,249],{"class":128},[101,498,499],{"id":499},"相册列表",[254,501,502],{},[78,503,504,505,262,507],{},"GET · ",[82,506,261],{},[93,508,265],{},[78,510,511,512,515],{},"返回当前用户的全部相册，每条附带 ",[82,513,514],{},"file_count","。",[267,517,518],{"id":518},"查询参数",[324,520,521,534],{},[327,522,523],{},[330,524,525,528,531],{},[333,526,527],{},"参数",[333,529,530],{},"默认",[333,532,533],{},"说明",[340,535,536,551],{},[330,537,538,543,548],{},[345,539,540],{},[82,541,542],{},"page",[345,544,545],{},[82,546,547],{},"1",[345,549,550],{},"页码",[330,552,553,558,563],{},[345,554,555],{},[82,556,557],{},"size",[345,559,560],{},[82,561,562],{},"20",[345,564,565],{},"每页数量（最大 100）",[267,567,378],{"id":568},"响应-1",[105,570,572],{"className":272,"code":571,"language":274,"meta":110,"style":110},"{\n  \"code\": 0,\n  \"data\": {\n    \"items\": [\n      {\n        \"id\": \"album-uuid\",\n        \"name\": \"旅行照片\",\n        \"description\": \"2026 春季东京\",\n        \"is_public\": false,\n        \"file_count\": 24,\n        \"created_at\": \"2026-04-17T10:00:00Z\",\n        \"updated_at\": \"2026-04-17T10:00:00Z\"\n      }\n    ],\n    \"total\": 5,\n    \"page\": 1,\n    \"size\": 20\n  }\n}\n",[82,573,574,578,588,594,602,607,618,629,640,651,663,674,683,689,695,708,720,731,736],{"__ignoreMap":110},[114,575,576],{"class":116,"line":117},[114,577,281],{"class":128},[114,579,580,582,584,586],{"class":116,"line":132},[114,581,392],{"class":142},[114,583,289],{"class":128},[114,585,397],{"class":142},[114,587,296],{"class":128},[114,589,590,592],{"class":116,"line":146},[114,591,404],{"class":142},[114,593,407],{"class":128},[114,595,596,599],{"class":116,"line":157},[114,597,598],{"class":142},"    \"items\"",[114,600,601],{"class":128},": [\n",[114,603,604],{"class":116,"line":168},[114,605,606],{"class":128},"      {\n",[114,608,609,612,614,616],{"class":116,"line":179},[114,610,611],{"class":142},"        \"id\"",[114,613,289],{"class":128},[114,615,417],{"class":292},[114,617,296],{"class":128},[114,619,620,623,625,627],{"class":116,"line":194},[114,621,622],{"class":142},"        \"name\"",[114,624,289],{"class":128},[114,626,293],{"class":292},[114,628,296],{"class":128},[114,630,631,634,636,638],{"class":116,"line":211},[114,632,633],{"class":142},"        \"description\"",[114,635,289],{"class":128},[114,637,306],{"class":292},[114,639,296],{"class":128},[114,641,642,645,647,649],{"class":116,"line":225},[114,643,644],{"class":142},"        \"is_public\"",[114,646,289],{"class":128},[114,648,375],{"class":142},[114,650,296],{"class":128},[114,652,653,656,658,661],{"class":116,"line":236},[114,654,655],{"class":142},"        \"file_count\"",[114,657,289],{"class":128},[114,659,660],{"class":142},"24",[114,662,296],{"class":128},[114,664,665,668,670,672],{"class":116,"line":246},[114,666,667],{"class":142},"        \"created_at\"",[114,669,289],{"class":128},[114,671,474],{"class":292},[114,673,296],{"class":128},[114,675,676,679,681],{"class":116,"line":494},[114,677,678],{"class":142},"        \"updated_at\"",[114,680,289],{"class":128},[114,682,486],{"class":292},[114,684,686],{"class":116,"line":685},13,[114,687,688],{"class":128},"      }\n",[114,690,692],{"class":116,"line":691},14,[114,693,694],{"class":128},"    ],\n",[114,696,698,701,703,706],{"class":116,"line":697},15,[114,699,700],{"class":142},"    \"total\"",[114,702,289],{"class":128},[114,704,705],{"class":142},"5",[114,707,296],{"class":128},[114,709,711,714,716,718],{"class":116,"line":710},16,[114,712,713],{"class":142},"    \"page\"",[114,715,289],{"class":128},[114,717,547],{"class":142},[114,719,296],{"class":128},[114,721,723,726,728],{"class":116,"line":722},17,[114,724,725],{"class":142},"    \"size\"",[114,727,289],{"class":128},[114,729,730],{"class":142},"20\n",[114,732,734],{"class":116,"line":733},18,[114,735,491],{"class":128},[114,737,739],{"class":116,"line":738},19,[114,740,249],{"class":128},[101,742,743],{"id":743},"更新相册",[254,745,746],{},[78,747,748,749,262,752],{},"PUT · ",[82,750,751],{},"\u002Fapi\u002Fv1\u002Falbums\u002F:id",[93,753,265],{},[78,755,756],{},"所有字段可选，仅更新传入的字段。",[267,758,269],{"id":759},"请求-1",[105,761,763],{"className":272,"code":762,"language":274,"meta":110,"style":110},"{\n  \"name\": \"2026 春·东京\",\n  \"is_public\": true\n}\n",[82,764,765,769,780,789],{"__ignoreMap":110},[114,766,767],{"class":116,"line":117},[114,768,281],{"class":128},[114,770,771,773,775,778],{"class":116,"line":132},[114,772,286],{"class":142},[114,774,289],{"class":128},[114,776,777],{"class":292},"\"2026 春·东京\"",[114,779,296],{"class":128},[114,781,782,784,786],{"class":116,"line":146},[114,783,313],{"class":142},[114,785,289],{"class":128},[114,787,788],{"class":142},"true\n",[114,790,791],{"class":116,"line":157},[114,792,249],{"class":128},[267,794,795],{"id":795},"错误",[324,797,798,808],{},[327,799,800],{},[330,801,802,805],{},[333,803,804],{},"Code",[333,806,807],{},"条件",[340,809,810,820],{},[330,811,812,817],{},[345,813,814],{},[82,815,816],{},"40300",[345,818,819],{},"非相册所有者",[330,821,822,827],{},[345,823,824],{},[82,825,826],{},"40400",[345,828,829],{},"相册不存在",[101,831,832],{"id":832},"删除相册",[254,834,835],{},[78,836,837,838,262,840],{},"DELETE · ",[82,839,751],{},[93,841,265],{},[78,843,832,844,847,848,850,851,854],{},[93,845,846],{},"不会","删除其中的文件 —— 相关文件的 ",[82,849,84],{}," 被置为 ",[82,852,853],{},"null","，文件本身仍然存在。",[101,856,857],{"id":857},"向相册添加文件",[78,859,860,861,864],{},"相册 ID 在",[93,862,863],{},"上传","时传入即可：",[105,866,870],{"className":867,"code":868,"language":869,"meta":110,"style":110},"language-http shiki shiki-themes github-light github-dark","POST \u002Fapi\u002Fv1\u002Fupload\nAuthorization: Bearer YOUR_TOKEN\nContent-Type: multipart\u002Fform-data\n\nfile=\u003Cfile>\nalbum_id=album-uuid\n","http",[82,871,872,877,882,887,893,898],{"__ignoreMap":110},[114,873,874],{"class":116,"line":117},[114,875,876],{},"POST \u002Fapi\u002Fv1\u002Fupload\n",[114,878,879],{"class":116,"line":132},[114,880,881],{},"Authorization: Bearer YOUR_TOKEN\n",[114,883,884],{"class":116,"line":146},[114,885,886],{},"Content-Type: multipart\u002Fform-data\n",[114,888,889],{"class":116,"line":157},[114,890,892],{"emptyLinePlaceholder":891},true,"\n",[114,894,895],{"class":116,"line":168},[114,896,897],{},"file=\u003Cfile>\n",[114,899,900],{"class":116,"line":179},[114,901,902],{},"album_id=album-uuid\n",[78,904,905],{},"现有文件若需要改变归属，目前建议通过后台操作；后续版本会暴露专用的「移动到相册」接口。",[101,907,908],{"id":908},"下一步",[910,911,912,918],"ul",{},[913,914,915],"li",{},[916,917,57],"a",{"href":58},[913,919,920],{},[916,921,65],{"href":66},[923,924,925],"style",{},"html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .s4XuR, html code.shiki .s4XuR{--shiki-default:#E36209;--shiki-dark:#FFAB70}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}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":110,"searchDepth":146,"depth":146,"links":927},[928,929,933,937,941,942,943],{"id":103,"depth":132,"text":103},{"id":252,"depth":132,"text":252,"children":930},[931,932],{"id":269,"depth":146,"text":269},{"id":378,"depth":146,"text":378},{"id":499,"depth":132,"text":499,"children":934},[935,936],{"id":518,"depth":146,"text":518},{"id":568,"depth":146,"text":378},{"id":743,"depth":132,"text":743,"children":938},[939,940],{"id":759,"depth":146,"text":269},{"id":795,"depth":146,"text":795},{"id":832,"depth":132,"text":832},{"id":857,"depth":132,"text":857},{"id":908,"depth":132,"text":908},"相册的创建、更新、列表与删除。","md",{},{"title":61},{"title":61,"description":944},"4MNsUWyHikcRZi1TJWhLBNWcUxnbxX8gVTMx0_k5PCE",[951,953],{"title":57,"path":58,"stem":59,"description":952,"children":-1},"文件列表、详情、删除与批量操作接口。",{"title":65,"path":66,"stem":67,"description":954,"children":-1},"为第三方工具创建与管理长期 API 令牌。",1776443820583]