{"ok":true,"title":"BVCON API 文档","auth":{"type":"Bearer Token","header":"Authorization: Bearer {token}","note":"管理员接口使用管理员登录 token；\/api\/app\/* 使用「API 客户端」密钥（后台客户端详情\/重置密钥可得，对应 api_clients.bearer_token）。注意：可在「系统设置」里关闭 api_require_token 以便本地联调（关闭后将跳过 token 与权限校验）。登录\/注册与 api-docs 见各接口说明。"},"sections":[{"major":"admin","title":"管理后台与账号","description":"后台运营、RBAC、系统维护、API 客户端账号管理（创建\/重置密钥等）。通常使用管理员 Token。","groups":[{"group":"认证","items":[{"method":"POST","path":"\/api\/auth\/adminLogin","description":"管理员登录","feature":"public","fields":["username","password"],"sample_path_params":[],"sample_query":[],"sample_body":{"username":"示例名称","password":"示例值"}},{"method":"POST","path":"\/api\/auth\/userLogin","description":"业务用户登录（用户名或邮箱 + 密码）","feature":"public","fields":["username|email|account","password"],"sample_path_params":[],"sample_query":[],"sample_body":{"username|email|account":"示例名称","password":"示例值"}},{"method":"POST","path":"\/api\/auth\/qqLogin","description":"QQ 互联登录（已绑定直接登录；未绑定返回 need_bind）","feature":"public","fields":["access_token","openid"],"sample_path_params":[],"sample_query":[],"sample_body":{"access_token":"示例值","openid":1}},{"method":"POST","path":"\/api\/auth\/qqRegister","description":"QQ 未绑定：注册新账号并绑定","feature":"public","fields":["access_token","openid","username","password","email","email_code","ckid?","nickname?"],"sample_path_params":[],"sample_query":[],"sample_body":{"access_token":"示例值","openid":1,"username":"示例名称","password":"示例值","email":"示例值","email_code":"1001","ckid":1,"nickname":"示例名称"}},{"method":"POST","path":"\/api\/auth\/qqBindAccount","description":"QQ 未绑定：绑定已有账号后登录","feature":"public","fields":["access_token","openid","username|email|account","password"],"sample_path_params":[],"sample_query":[],"sample_body":{"access_token":"示例值","openid":1,"username|email|account":"示例名称","password":"示例值"}},{"method":"POST","path":"\/api\/auth\/qqBind","description":"已登录用户绑定 QQ","feature":"user_login_token","fields":["access_token","openid"],"sample_path_params":[],"sample_query":[],"sample_body":{"access_token":"示例值","openid":1}},{"method":"POST","path":"\/api\/auth\/qqUnbind","description":"已登录用户解绑 QQ","feature":"user_login_token","fields":[],"sample_path_params":[],"sample_query":[],"sample_body":{"_example":"按接口说明填写请求体"}},{"method":"POST","path":"\/api\/auth\/userRegister","description":"业务用户注册（必须携带 ckid\/public_id\/client_key 绑定客户端；可附带邮箱\/昵称\/头像\/QQ）","feature":"public","fields":["username","password","ckid|public_id|client_key","email?","nickname?","avatar?","qq?"],"sample_path_params":[],"sample_query":[],"sample_body":{"username":"示例名称","password":"示例值","ckid|public_id|client_key":1,"email":"示例值","nickname":"示例名称","avatar":"https:\/\/example.com\/demo.png","qq":"示例值"}},{"method":"POST","path":"\/api\/auth\/clientExchange","description":"客户端凭据换取 Bearer Token（public_id+secret）","feature":"public","fields":["public_id|client_key","secret|client_secret"],"sample_path_params":[],"sample_query":[],"sample_body":{"public_id|client_key":1,"secret|client_secret":"示例值"}},{"method":"PUT","path":"\/api\/auth\/updateProfile","description":"业务用户修改资料（需 user token）","feature":"user_login_token","fields":["email?","nickname?","avatar?","qq?"],"sample_path_params":[],"sample_query":[],"sample_body":{"email":"示例值","nickname":"示例名称","avatar":"https:\/\/example.com\/demo.png","qq":"示例值"}},{"method":"POST","path":"\/api\/auth\/avatarUpload","description":"业务用户上传头像（multipart: file）","feature":"user_login_token","fields":["file"],"sample_path_params":[],"sample_query":[],"sample_body":{"file":"示例值"}},{"method":"POST","path":"\/api\/auth\/realname\/verify","description":"二要素实名认证（姓名+身份证号；服务端代请求 \/api\/v1\/idenAuthentication.php，前端不暴露 appcode）。调用三方前会先做本地校验：name 仅支持 2-20 位中文\/英文，idNo 必须 18 位且校验位正确；未通过则直接 422，不会触发三方计费请求。三方 JSON：code 为调用状态码（与实名成败无关）；result=1 认证成功，result=0 失败（见 message）。","feature":"user_login_token","fields":["name","idNo"],"sample_path_params":[],"sample_query":[],"sample_body":{"name":"示例名称","idNo":"110101199001011234"}},{"method":"GET","path":"\/api\/share\/qr\/friend","description":"我的好友分享码（返回 qr_content，App 本地画 QR；不下发图片）","feature":"user_login_token","fields":["refresh?"],"sample_path_params":[],"sample_query":{"refresh":"示例值"},"sample_body":[]},{"method":"GET","path":"\/api\/share\/qr\/pack\/{id}","description":"资源包分享码（id 或 pack_code）","feature":"user_login_token","fields":[],"sample_path_params":{"id":1},"sample_query":{"page":1,"page_size":20},"sample_body":[]},{"method":"GET","path":"\/api\/share\/qr\/note\/{id}","description":"笔记分享码（仅已发布公开）","feature":"user_login_token","fields":[],"sample_path_params":{"id":1},"sample_query":{"page":1,"page_size":20},"sample_body":[]},{"method":"GET","path":"\/api\/share\/qr\/group\/{id}","description":"群聊分享码（须为群成员）","feature":"user_login_token","fields":[],"sample_path_params":{"id":1},"sample_query":{"page":1,"page_size":20},"sample_body":[]},{"method":"GET","path":"\/api\/share\/resolve","description":"解析分享码（登录）","feature":"user_login_token","fields":["t","c"],"sample_path_params":[],"sample_query":{"t":"示例值","c":"示例值"},"sample_body":[]},{"method":"GET","path":"\/api\/share\/public\/resolve","description":"解析分享码（公开脱敏，H5）","feature":"public","fields":["t","c"],"sample_path_params":[],"sample_query":{"t":"示例值","c":"示例值"},"sample_body":[]}]},{"group":"系统与权限","items":[{"method":"GET","path":"\/api\/features","description":"功能项列表","feature":"admin.assign_permissions","fields":[],"sample_path_params":[],"sample_query":{"page":1,"page_size":20},"sample_body":[]},{"method":"GET","path":"\/api\/admins","description":"管理员列表","feature":"admin.list","fields":[],"sample_path_params":[],"sample_query":{"page":1,"page_size":20},"sample_body":[]},{"method":"GET","path":"\/api\/admins\/{id}\/permissions","description":"读取管理员权限","feature":"admin.assign_permissions","fields":[],"sample_path_params":{"id":1},"sample_query":{"page":1,"page_size":20},"sample_body":[]},{"method":"PUT","path":"\/api\/admins\/{id}\/permissions","description":"保存管理员权限","feature":"admin.assign_permissions","fields":[],"sample_path_params":{"id":1},"sample_query":[],"sample_body":{"feature_keys":["client.list","client.update","audit_log.list"]}},{"method":"GET","path":"\/api\/system\/updates","description":"系统迁移脚本列表","feature":"system.update","fields":[],"sample_path_params":[],"sample_query":{"page":1,"page_size":20},"sample_body":[]},{"method":"POST","path":"\/api\/system\/updates\/apply","description":"执行迁移脚本","feature":"system.update","fields":["name"],"sample_path_params":[],"sample_query":[],"sample_body":{"name":"示例名称"}},{"method":"GET","path":"\/api\/system\/settings","description":"读取系统设置。响应 data：system_name、system_logo、system_favicon、api_require_token、realname_appcode（服务端实名认证配置）；资源包评论防刷 rp_comment_cooldown_sec（同用户最短间隔秒，0=关闭）、rp_comment_burst_max（滑动窗口内最大条数，0=关闭）、rp_comment_burst_window_sec（窗口秒数，与 burst_max 配套，默认展示 300）。需管理员 Token，具备 system.set_name \/ set_logo \/ set_favicon \/ system.update 之一可读。","feature":"system.set_name","fields":[],"sample_path_params":[],"sample_query":{"page":1,"page_size":20},"sample_body":[]},{"method":"PUT","path":"\/api\/system\/settings","description":"保存系统设置（仅提交需要修改的字段）。权限：system_name→system.set_name；logo\/favicon→对应权限；api_require_token、realname_appcode 与 rp_comment_*→system.update。realname_appcode 仅保存在服务端，用于实名认证接口代请求；客户端不需要也不应上传此值。rp_comment_cooldown_sec 范围 0～3600；rp_comment_burst_max 范围 0～500；rp_comment_burst_window_sec 范围 10～86400。","feature":"system.set_name","fields":["system_name?","system_logo?","system_favicon?","api_require_token?","realname_appcode?","rp_comment_cooldown_sec?","rp_comment_burst_max?","rp_comment_burst_window_sec?"],"sample_path_params":[],"sample_query":[],"sample_body":{"system_name":"示例名称","system_logo":"https:\/\/example.com\/demo.png","system_favicon":"https:\/\/example.com\/demo.png","api_require_token":"示例值","realname_appcode":"示例名称","rp_comment_cooldown_sec":15,"rp_comment_burst_max":15,"rp_comment_burst_window_sec":15}},{"method":"POST","path":"\/api\/system\/settings\/upload","description":"上传系统图标（logo\/favicon）","feature":"system.set_logo","fields":["kind","file"],"sample_path_params":[],"sample_query":[],"sample_body":{"kind":"示例值","file":"示例值"}},{"method":"GET","path":"\/api\/audit-logs","description":"审计日志列表","feature":"audit_log.list","fields":[],"sample_path_params":[],"sample_query":{"page":1,"page_size":20,"actor_type":"admin","action":"client.update","client_id":1,"success":1},"sample_body":[]},{"method":"GET","path":"\/api\/audit-logs\/settings","description":"审计日志设置（保留天数）","feature":"audit_log.list","fields":[],"sample_path_params":[],"sample_query":{"page":1,"page_size":20},"sample_body":[]},{"method":"PUT","path":"\/api\/audit-logs\/settings","description":"保存审计日志保留天数","feature":"audit_log.list","fields":["retention_days"],"sample_path_params":[],"sample_query":[],"sample_body":{"retention_days":"示例值"}},{"method":"POST","path":"\/api\/audit-logs\/cleanup","description":"立即按保留时长清理审计日志","feature":"audit_log.list","fields":[],"sample_path_params":[],"sample_query":[],"sample_body":{"_example":"按接口说明填写请求体"}},{"method":"GET","path":"\/api\/stats\/overview","description":"数据统计面板（DAU\/WAU\/MAU、登录、IM、待审、用户\/审计趋势）","feature":"user.list","fields":[],"sample_path_params":[],"sample_query":{"page":1,"page_size":20},"sample_body":[]},{"method":"GET","path":"\/api\/users","description":"业务用户列表","feature":"user.list","fields":[],"sample_path_params":[],"sample_query":{"page":1,"page_size":20},"sample_body":[]},{"method":"POST","path":"\/api\/users\/{id}\/realname\/refresh","description":"管理员代用户执行二要素实名认证（需提交 name、idNo）。调用三方前同样先做本地格式校验（失败直接 422，不计费）。该接口会覆写该用户最近实名状态（realname_passed \/ realname_message \/ realname_checked_at）。","feature":"user.update","fields":["name","idNo"],"sample_path_params":{"id":1},"sample_query":[],"sample_body":{"name":"示例名称","idNo":"110101199001011234"}}]},{"group":"客户端（账号侧）","items":[{"method":"GET","path":"\/api\/clients","description":"客户端列表","feature":"client.list","fields":[],"sample_path_params":[],"sample_query":{"page":1,"page_size":20},"sample_body":[]},{"method":"POST","path":"\/api\/clients","description":"创建客户端","feature":"client.create","fields":["name","icon?"],"sample_path_params":[],"sample_query":[],"sample_body":{"name":"示例名称","icon":"https:\/\/example.com\/demo.png"}},{"method":"POST","path":"\/api\/clients\/setAdmins","description":"设置客户端管理员","feature":"client.user_admin.manage","fields":["client_id","user_ids[]"],"sample_path_params":[],"sample_query":[],"sample_body":{"client_id":1,"user_ids":[1]}},{"method":"GET","path":"\/api\/clients\/{id}","description":"客户端详情","feature":"client.read","fields":[],"sample_path_params":{"id":1},"sample_query":{"page":1,"page_size":20},"sample_body":[]},{"method":"PUT","path":"\/api\/clients\/{id}","description":"更新客户端","feature":"client.update","fields":[],"sample_path_params":{"id":1},"sample_query":[],"sample_body":{"_example":"按接口说明填写请求体"}},{"method":"DELETE","path":"\/api\/clients\/{id}","description":"删除客户端","feature":"client.delete","fields":[],"sample_path_params":{"id":1},"sample_query":[],"sample_body":[]},{"method":"POST","path":"\/api\/clients\/{id}\/reset","description":"重置客户端凭据","feature":"client.reset","fields":[],"sample_path_params":{"id":1},"sample_query":[],"sample_body":{"_example":"按接口说明填写请求体"}}]}]},{"major":"client_app","title":"客户端对接 API","description":"含两类：① App 读接口 \/api\/app\/…，请求头携带该客户端的 Bearer 密钥（与 api_clients.bearer_token 一致），仅返回本客户端数据；② 管理端 CRUD \/api\/clients\/{id}\/…，需管理员 Token。学院：App 侧学院详情\/学生列表路径为 \/api\/app\/academies\/{code}（学院代号）；管理侧为 \/api\/clients\/{id}\/academies\/{academyId}（学院主键 id，与 code 不同）。","groups":[{"group":"App 公共读（客户端密钥）","items":[{"method":"GET","path":"\/api\/app\/config","description":"App 基础信息（强更、最高版本号、下载页、官方联系方式页 URL 等）","feature":"client_bearer","fields":[],"sample_path_params":[],"sample_query":{"page":1,"page_size":20},"sample_body":[]},{"method":"GET","path":"\/api\/app\/version\/latest","description":"最新版本信息（单条 + 客户端版本摘要；无发布版本时 version 为 null）","feature":"client_bearer","fields":[],"sample_path_params":[],"sample_query":{"page":1,"page_size":20},"sample_body":[]},{"method":"POST","path":"\/api\/app\/telemetry\/version","description":"上报当前版本（install_id + version_code；可选 version_name\/user_id\/device_model\/os_version）","feature":"client_bearer","fields":["install_id","version_code","version_name?","user_id?","device_model?","os_version?"],"sample_path_params":[],"sample_query":[],"sample_body":{"install_id":1,"version_code":"1001","version_name":"示例名称","user_id":1,"device_model":"示例值","os_version":1}},{"method":"GET","path":"\/api\/app\/versions","description":"版本列表（含安装包页链接）","feature":"client_bearer","fields":[],"sample_path_params":[],"sample_query":{"page":1,"page_size":20},"sample_body":[]},{"method":"GET","path":"\/api\/app\/announcements","description":"公告列表","feature":"client_bearer","fields":[],"sample_path_params":[],"sample_query":{"page":1,"page_size":20},"sample_body":[]},{"method":"GET","path":"\/api\/app\/roles","description":"团队\/角色列表（与管理端列表字段一致；仅未隐藏）","feature":"client_bearer","fields":[],"sample_path_params":[],"sample_query":{"page":1,"page_size":20},"sample_body":[]},{"method":"GET","path":"\/api\/app\/officialContacts","description":"官方联系方式（仅未隐藏；qq_group 含群名\/群号\/key、qq_join_web_url、qq_join_android_intent_url、WPA 按钮图 URL）","feature":"client_bearer","fields":[],"sample_path_params":[],"sample_query":{"page":1,"page_size":20},"sample_body":[]},{"method":"GET","path":"\/api\/app\/banners","description":"轮播图（仅未隐藏）","feature":"client_bearer","fields":[],"sample_path_params":[],"sample_query":{"page":1,"page_size":20},"sample_body":[]},{"method":"GET","path":"\/api\/app\/linkSet","description":"链接集与链接（仅未隐藏，支持分页：page、page_size）","feature":"client_bearer","fields":["page?","page_size?"],"sample_path_params":[],"sample_query":{"page":"示例值","page_size":"示例值"},"sample_body":[]},{"method":"GET","path":"\/api\/app\/public\/linkSet","description":"APP 公共链接集读取（免 bearer，按 query: public_id\/client_public_id，支持分页：page、page_size）","feature":"public","fields":["public_id?","client_public_id?","page?","page_size?"],"sample_path_params":[],"sample_query":{"public_id":1,"client_public_id":1,"page":"示例值","page_size":"示例值"},"sample_body":[]},{"method":"GET","path":"\/api\/app\/galleries","description":"图库列表","feature":"client_bearer","fields":[],"sample_path_params":[],"sample_query":{"page":1,"page_size":20},"sample_body":[]},{"method":"GET","path":"\/api\/app\/galleries\/{galleryId}\/albums","description":"某图库下相册列表","feature":"client_bearer","fields":["galleryId"],"sample_path_params":{"galleryId":1},"sample_query":{"galleryId":1},"sample_body":[]},{"method":"GET","path":"\/api\/app\/galleries\/{galleryId}\/albums\/{albumId}\/photos","description":"相册照片列表","feature":"client_bearer","fields":["galleryId","albumId"],"sample_path_params":{"galleryId":1,"albumId":1},"sample_query":{"galleryId":1,"albumId":1},"sample_body":[]},{"method":"GET","path":"\/api\/app\/resources","description":"热更资源文件树（目录下列表）","feature":"client_bearer","fields":["parent_id?"],"sample_path_params":[],"sample_query":{"parent_id":1},"sample_body":[]},{"method":"GET","path":"\/api\/app\/academies\/listVersion","description":"学院列表版本号（仅 academy_list_version，轻量轮询）","feature":"client_bearer","fields":[],"sample_path_params":[],"sample_query":{"page":1,"page_size":20},"sample_body":[]},{"method":"GET","path":"\/api\/app\/academies","description":"学院列表（默认按后台 academy_list_sort；可传 order=asc|desc 覆盖；含 sort_order）","feature":"client_bearer","fields":["order?"],"sample_path_params":[],"sample_query":{"order":"示例值"},"sample_body":[]},{"method":"GET","path":"\/api\/app\/academies\/{code}","description":"学院详情：路径 {code} 为学院代号（与列表 data[].code 一致），勿填主键 id","feature":"client_bearer","fields":[],"sample_path_params":{"code":"Abydos"},"sample_query":{"page":1,"page_size":20},"sample_body":[]},{"method":"GET","path":"\/api\/app\/academies\/{code}\/students","description":"学生列表：同上，按学院 code 定位","feature":"client_bearer","fields":["order?"],"sample_path_params":{"code":"Abydos"},"sample_query":{"order":"示例值"},"sample_body":[]},{"method":"GET","path":"\/api\/app\/academies\/{code}\/students\/{studentCode}\/package","description":"下载学生资源包（本地文件直下；外链资源 302 跳转）","feature":"client_bearer","fields":[],"sample_path_params":{"code":"Abydos","studentCode":"demo"},"sample_query":{"page":1,"page_size":20},"sample_body":[]},{"method":"GET","path":"\/api\/app\/store\/userPacks","description":"资源商城上架包（已审核通过且上架）","feature":"client_bearer","fields":["page","page_size","q","user_id","sort=random|newest|hot|downloads（recommend 同 random）","seed（sort=random 时必填，确定性乱序）"],"sample_path_params":[],"sample_query":{"page":"示例值","page_size":"示例值","q":"示例值","user_id":1,"sort=random|newest|hot|downloads（recommend 同 random）":"示例值","seed（sort=random 时必填，确定性乱序）":"示例值"},"sample_body":[]},{"method":"GET","path":"\/api\/app\/store\/userPacks\/contentStatus","description":"批量查询已上架商城包内容版本（ids=1,2,3）","feature":"client_bearer","fields":["ids"],"sample_path_params":[],"sample_query":{"ids":1},"sample_body":[]},{"method":"GET","path":"\/api\/app\/store\/userPacks\/{packId}\/download","description":"下载资源商城资源包（仅当前客户端已审核通过且上架）","feature":"client_bearer","fields":[],"sample_path_params":{"packId":1},"sample_query":{"page":1,"page_size":20},"sample_body":[]},{"method":"GET","path":"\/api\/app\/gpt-sovits\/env-pack","description":"GPT-SoVITS：本体下载链接 + 环境包地址\/密码(AES-GCM)\/MD5","feature":"client_bearer","fields":[],"sample_path_params":[],"sample_query":{"page":1,"page_size":20},"sample_body":[]}]},{"group":"业务用户资源包投稿","items":[{"method":"GET","path":"\/api\/resource-packs","description":"业务用户资源包列表（普通业务用户只查本人，勿传 user_id\/client_id；仅「客户端管理员」可传 user_id 查他人。管理员须 client_id，或仅传 user_id 推断 client_id）","feature":"user_login_token","fields":["client_id?","user_id?"],"sample_path_params":[],"sample_query":{"client_id":1,"user_id":1},"sample_body":[]},{"method":"POST","path":"\/api\/resource-packs\/upload","description":"上传资源包（multipart: file，可选 cover\/cover_image；普通业务用户需先实名认证通过）","feature":"user_login_token","fields":["pack_name?","pack_code?","introduction?","user_id?","file","cover?"],"sample_path_params":[],"sample_query":[],"sample_body":{"pack_name":"示例名称","pack_code":"1001","introduction":"示例内容","user_id":1,"file":"示例值","cover":"示例值"}},{"method":"GET","path":"\/api\/resource-packs\/{packId}","description":"读取资源包详情（本人\/管理员\/已上架可读）","feature":"user_login_token","fields":[],"sample_path_params":{"packId":1},"sample_query":{"page":1,"page_size":20},"sample_body":[]},{"method":"PUT","path":"\/api\/resource-packs\/{packId}","description":"更新资源包元数据（名称\/code\/简介；审核中或已上架须先下架。可传 store_listed=0 下架）","feature":"user_login_token","fields":["pack_name?","pack_code?","introduction?","store_listed?"],"sample_path_params":{"packId":1},"sample_query":[],"sample_body":{"pack_name":"示例名称","pack_code":"1001","introduction":"示例内容","store_listed":1}},{"method":"POST","path":"\/api\/resource-packs\/{packId}\/replace","description":"替换资源包文件（multipart: file；审核中或已上架不可换文件，须先下架）","feature":"user_login_token","fields":["file","pack_name?","pack_code?"],"sample_path_params":{"packId":1},"sample_query":[],"sample_body":{"file":"示例值","pack_name":"示例名称","pack_code":"1001"}},{"method":"POST","path":"\/api\/resource-packs\/{packId}\/cover","description":"单独上传资源包封面（multipart: cover|cover_image）","feature":"user_login_token","fields":["cover|cover_image"],"sample_path_params":{"packId":1},"sample_query":[],"sample_body":{"cover|cover_image":"示例值"}},{"method":"PUT","path":"\/api\/resource-packs\/{packId}\/submit-review","description":"提交资源包审核","feature":"user_login_token","fields":[],"sample_path_params":{"packId":1},"sample_query":[],"sample_body":{"_example":"按接口说明填写请求体"}},{"method":"POST","path":"\/api\/resource-packs\/{packId}\/view","description":"资源包浏览量 +1（仅业务用户、同客户端、已审核且已上架）。成功 200 JSON：ok、pack_id、view_count、like_count、comment_count、liked（bool，当前用户是否已点赞该包）。403 非业务用户或未绑定客户端；404 未上架或不存在。","feature":"user_login_token","fields":[],"sample_path_params":{"packId":1},"sample_query":[],"sample_body":{"_example":"按接口说明填写请求体"}},{"method":"PUT","path":"\/api\/resource-packs\/{packId}\/like","description":"点赞资源包（重复点赞幂等）","feature":"user_login_token","fields":[],"sample_path_params":{"packId":1},"sample_query":[],"sample_body":{"_example":"按接口说明填写请求体"}},{"method":"DELETE","path":"\/api\/resource-packs\/{packId}\/like","description":"取消点赞（重复取消幂等）","feature":"user_login_token","fields":[],"sample_path_params":{"packId":1},"sample_query":[],"sample_body":[]},{"method":"GET","path":"\/api\/resource-packs\/{packId}\/comments","description":"资源包评论列表（分页）","feature":"user_login_token","fields":["page?","page_size?"],"sample_path_params":{"packId":1},"sample_query":{"page":"示例值","page_size":"示例值"},"sample_body":[]},{"method":"POST","path":"\/api\/resource-packs\/{packId}\/comments","description":"发表评论。请求体 JSON：content（必填，trim 后非空，≤1000 字，且需已实名认证）。成功 200：ok、comment_count、data{id,pack_id,user_id,username,content,created_at,updated_at}。422 内容校验失败。429 防刷：未满足管理端配置的「最短间隔」或「窗口内条数上限」，message 为「评论过于频繁，请稍后再试」或「评论次数过多，请稍后再试」。","feature":"user_login_token","fields":["content"],"sample_path_params":{"packId":1},"sample_query":[],"sample_body":{"content":"示例内容"}},{"method":"DELETE","path":"\/api\/resource-packs\/{packId}\/comments\/{commentId}","description":"删除评论（评论作者\/资源包作者\/客户端管理员）","feature":"user_login_token","fields":[],"sample_path_params":{"packId":1,"commentId":1},"sample_query":[],"sample_body":[]},{"method":"DELETE","path":"\/api\/resource-packs\/{packId}","description":"删除资源包","feature":"user_login_token","fields":[],"sample_path_params":{"packId":1},"sample_query":[],"sample_body":[]},{"method":"GET","path":"\/api\/resource-packs\/{packId}\/download","description":"下载资源包（路径支持包 id 或 pack_code；本人\/管理员\/已上架可下）","feature":"user_login_token","fields":[],"sample_path_params":{"packId":1},"sample_query":{"page":1,"page_size":20},"sample_body":[]}]},{"group":"业务用户图廊","items":[{"method":"GET","path":"\/api\/user\/corridor","description":"图廊信息（是否启用、绑定 gallery_id、feed_sort）；须用户 Token 且已绑定客户端","feature":"user_login_token","fields":[],"sample_path_params":[],"sample_query":{"page":1,"page_size":20},"sample_body":[]},{"method":"GET","path":"\/api\/user\/corridor\/feed","description":"图廊动态（排序：asc|desc|random；random 时由 App 传 seed，同 seed 分页稳定不重样）","feature":"user_login_token","fields":["page?","page_size?","tag?","q?","seed?"],"sample_path_params":[],"sample_query":{"page":"示例值","page_size":"示例值","tag":"示例值","q":"示例值","seed":"示例值"},"sample_body":[]},{"method":"GET","path":"\/api\/user\/corridor\/my-album","description":"我的个人相册（自动创建；含待审\/已上廊\/已驳回；含 tags_text、author）","feature":"user_login_token","fields":[],"sample_path_params":[],"sample_query":{"page":1,"page_size":20},"sample_body":[]},{"method":"GET","path":"\/api\/user\/corridor\/tags","description":"本客户端图廊标签列表（纯名称，展示时加 #）","feature":"user_login_token","fields":[],"sample_path_params":[],"sample_query":{"page":1,"page_size":20},"sample_body":[]},{"method":"POST","path":"\/api\/user\/corridor\/photos\/upload","description":"批量上传到个人相册（multipart: files[] 或 file；可选 title、tags，tags 可带 #；自动缩略图；进待审上廊）","feature":"user_login_token","fields":["files[]|file","title?","tags?"],"sample_path_params":[],"sample_query":[],"sample_body":{"files[]|file":"示例值","title":"示例标题","tags":"示例值"}},{"method":"PUT","path":"\/api\/user\/corridor\/photos\/{photoId}","description":"更新我的照片标题\/标签","feature":"user_login_token","fields":["title?","tags?"],"sample_path_params":{"photoId":1},"sample_query":[],"sample_body":{"title":"示例标题","tags":"示例值"}},{"method":"GET","path":"\/api\/user\/corridor\/photos\/{photoId}\/download","description":"下载原图（本人任意状态；他人仅已上廊）","feature":"user_login_token","fields":[],"sample_path_params":{"photoId":1},"sample_query":{"page":1,"page_size":20},"sample_body":[]}]},{"group":"业务用户图文笔记","items":[{"method":"GET","path":"\/api\/user\/notes\/config","description":"笔记配置（是否启用、先审、引用策略）","feature":"user_login_token","fields":[],"sample_path_params":[],"sample_query":{"page":1,"page_size":20},"sample_body":[]},{"method":"GET","path":"\/api\/user\/notes\/feed","description":"发现 Feed（已发布公开笔记；sort=newest|random|hottest|featured|official）","feature":"user_login_token","fields":["page?","page_size?","topic?","q?","sort?","seed?"],"sample_path_params":[],"sample_query":{"page":"示例值","page_size":"示例值","topic":"示例值","q":"示例值","sort":"示例值","seed":"示例值"},"sample_body":[]},{"method":"GET","path":"\/api\/user\/notes\/mine","description":"我的笔记（含草稿\/待审\/驳回）","feature":"user_login_token","fields":["status?","page?","page_size?"],"sample_path_params":[],"sample_query":{"status":"示例值","page":"示例值","page_size":"示例值"},"sample_body":[]},{"method":"GET","path":"\/api\/user\/notes\/picker\/corridor","description":"选择器：已上廊图廊照片","feature":"user_login_token","fields":["page?","page_size?","tag?","q?"],"sample_path_params":[],"sample_query":{"page":"示例值","page_size":"示例值","tag":"示例值","q":"示例值"},"sample_body":[]},{"method":"GET","path":"\/api\/user\/notes\/picker\/albums","description":"选择器：可读相册列表","feature":"user_login_token","fields":[],"sample_path_params":[],"sample_query":{"page":1,"page_size":20},"sample_body":[]},{"method":"GET","path":"\/api\/user\/notes\/picker\/albums\/{albumId}\/photos","description":"选择器：相册内照片","feature":"user_login_token","fields":["page?","page_size?"],"sample_path_params":{"albumId":1},"sample_query":{"page":"示例值","page_size":"示例值"},"sample_body":[]},{"method":"GET","path":"\/api\/user\/notes\/picker\/store-packs","description":"选择器：商城已上架资源包","feature":"user_login_token","fields":["page?","page_size?","q?"],"sample_path_params":[],"sample_query":{"page":"示例值","page_size":"示例值","q":"示例值"},"sample_body":[]},{"method":"GET","path":"\/api\/user\/notes\/picker\/academy-packs","description":"选择器：官方=学院学生资源包","feature":"user_login_token","fields":["page?","page_size?","q?","academy_code?","academy_id?"],"sample_path_params":[],"sample_query":{"page":"示例值","page_size":"示例值","q":"示例值","academy_code":"1001","academy_id":1},"sample_body":[]},{"method":"POST","path":"\/api\/user\/notes\/media\/upload","description":"本机上传到笔记（不写图廊；返回 upload_id）","feature":"user_login_token","fields":["files[]|file"],"sample_path_params":[],"sample_query":[],"sample_body":{"files[]|file":"示例值"}},{"method":"GET","path":"\/api\/user\/topics","description":"话题搜索\/热门","feature":"user_login_token","fields":["q?","limit?"],"sample_path_params":[],"sample_query":{"q":"示例值","limit":"示例值"},"sample_body":[]},{"method":"POST","path":"\/api\/user\/notes","description":"创建笔记（draft|published；attachments 多态引用）","feature":"user_login_token","fields":["title","content?","status?","attachments?","topic_names?"],"sample_path_params":[],"sample_query":[],"sample_body":{"title":"示例标题","content":"示例内容","status":"示例值","attachments":"示例值","topic_names":"示例名称"}},{"method":"GET","path":"\/api\/user\/notes\/{id}","description":"笔记详情","feature":"user_login_token","fields":[],"sample_path_params":{"id":1},"sample_query":{"page":1,"page_size":20},"sample_body":[]},{"method":"PUT","path":"\/api\/user\/notes\/{id}","description":"更新笔记（draft\/pending\/published\/rejected；attachments 可传 attachment_id 保留原附件；本笔记 upload 可复用）","feature":"user_login_token","fields":["title?","content?","attachments?","topic_names?"],"sample_path_params":{"id":1},"sample_query":[],"sample_body":{"title":"示例标题","content":"示例内容","attachments":"示例值","topic_names":"示例名称"}},{"method":"DELETE","path":"\/api\/user\/notes\/{id}","description":"软删除笔记","feature":"user_login_token","fields":[],"sample_path_params":{"id":1},"sample_query":[],"sample_body":[]},{"method":"POST","path":"\/api\/user\/notes\/{id}\/publish","description":"发布草稿（可能进入 pending）","feature":"user_login_token","fields":[],"sample_path_params":{"id":1},"sample_query":[],"sample_body":{"_example":"按接口说明填写请求体"}},{"method":"POST","path":"\/api\/user\/notes\/{id}\/view","description":"浏览量 +1","feature":"user_login_token","fields":[],"sample_path_params":{"id":1},"sample_query":[],"sample_body":{"_example":"按接口说明填写请求体"}},{"method":"PUT","path":"\/api\/user\/notes\/{id}\/like","description":"点赞","feature":"user_login_token","fields":[],"sample_path_params":{"id":1},"sample_query":[],"sample_body":{"_example":"按接口说明填写请求体"}},{"method":"DELETE","path":"\/api\/user\/notes\/{id}\/like","description":"取消点赞","feature":"user_login_token","fields":[],"sample_path_params":{"id":1},"sample_query":[],"sample_body":[]},{"method":"GET","path":"\/api\/user\/notes\/{id}\/comments","description":"评论列表","feature":"user_login_token","fields":["page?","page_size?"],"sample_path_params":{"id":1},"sample_query":{"page":"示例值","page_size":"示例值"},"sample_body":[]},{"method":"POST","path":"\/api\/user\/notes\/{id}\/comments","description":"发表评论（需实名）","feature":"user_login_token","fields":["content"],"sample_path_params":{"id":1},"sample_query":[],"sample_body":{"content":"示例内容"}},{"method":"DELETE","path":"\/api\/user\/notes\/{id}\/comments\/{commentId}","description":"删除评论","feature":"user_login_token","fields":[],"sample_path_params":{"id":1,"commentId":1},"sample_query":[],"sample_body":[]}]},{"group":"版本与热更资源","items":[{"method":"GET","path":"\/api\/clients\/{id}\/versions","description":"版本列表","feature":"client.version.list","fields":[],"sample_path_params":{"id":1},"sample_query":{"page":1,"page_size":20},"sample_body":[]},{"method":"POST","path":"\/api\/clients\/{id}\/versions","description":"发布版本（JSON 或 multipart；必填 version_name、version_code；文件字段 file，兼容 package_file）","feature":"client.version.create","fields":["version_name","version_code","changelog?","install_url?","file?"],"sample_path_params":{"id":1},"sample_query":[],"sample_body":{"version_name":"示例名称","version_code":"1001","changelog":"示例值","install_url":"https:\/\/example.com\/demo.png","file":"示例值"}},{"method":"GET","path":"\/api\/clients\/{id}\/versionTelemetry","description":"版本使用分布与更新率（query: days? 默认30）","feature":"client.version.list","fields":["days?"],"sample_path_params":{"id":1},"sample_query":{"days":"示例值"},"sample_body":[]},{"method":"PUT","path":"\/api\/clients\/{id}\/forceUpdate","description":"设置强更","feature":"client.version.force","fields":[],"sample_path_params":{"id":1},"sample_query":[],"sample_body":{"force_update_min_version_code":100}},{"method":"DELETE","path":"\/api\/clients\/{id}\/versions\/{versionId}","description":"删除版本","feature":"client.version.delete","fields":[],"sample_path_params":{"id":1,"versionId":1},"sample_query":[],"sample_body":[]},{"method":"GET","path":"\/api\/clients\/{id}\/resources","description":"更新资源列表","feature":"client_resource.list","fields":[],"sample_path_params":{"id":1},"sample_query":{"page":1,"page_size":20},"sample_body":[]},{"method":"POST","path":"\/api\/clients\/{id}\/resources\/mkdir","description":"新建资源目录","feature":"client_resource.create","fields":[],"sample_path_params":{"id":1},"sample_query":[],"sample_body":{"parent_id":0,"name":"新目录"}},{"method":"POST","path":"\/api\/clients\/{id}\/resources\/upload","description":"上传资源文件","feature":"client_resource.create","fields":[],"sample_path_params":{"id":1},"sample_query":[],"sample_body":{"parent_id":0,"resource_key":"assets\/demo.png","file":"<binary>"}},{"method":"DELETE","path":"\/api\/clients\/{id}\/resources\/{resourceId}","description":"删除资源","feature":"client_resource.delete","fields":[],"sample_path_params":{"id":1,"resourceId":1},"sample_query":[],"sample_body":[]}]},{"group":"公告与展示","items":[{"method":"GET","path":"\/api\/clients\/{id}\/announcements","description":"公告列表","feature":"announcement.list","fields":[],"sample_path_params":{"id":1},"sample_query":{"page":1,"page_size":20},"sample_body":[]},{"method":"POST","path":"\/api\/clients\/{id}\/announcements","description":"新建公告","feature":"announcement.create","fields":[],"sample_path_params":{"id":1},"sample_query":[],"sample_body":{"title":"系统公告","content":"今晚维护","created_by":"admin"}},{"method":"PUT","path":"\/api\/clients\/{id}\/announcements\/{announcementId}","description":"更新公告","feature":"announcement.update","fields":[],"sample_path_params":{"id":1,"announcementId":1},"sample_query":[],"sample_body":{"title":"系统公告","content":"今晚维护","created_by":"admin"}},{"method":"DELETE","path":"\/api\/clients\/{id}\/announcements\/{announcementId}","description":"删除公告","feature":"announcement.delete","fields":[],"sample_path_params":{"id":1,"announcementId":1},"sample_query":[],"sample_body":[]},{"method":"GET","path":"\/api\/clients\/{id}\/notifications","description":"系统通知-用户收件箱记录","feature":"notification.list","fields":["user_id?","page?","page_size?"],"sample_path_params":{"id":1},"sample_query":{"user_id":1,"page":"示例值","page_size":"示例值"},"sample_body":[]},{"method":"POST","path":"\/api\/clients\/{id}\/notifications","description":"系统通知-发给指定用户（卡片）","feature":"notification.send","fields":["user_id","title","summary?","body?","category?","event?","action_type?","action_value?"],"sample_path_params":{"id":1},"sample_query":[],"sample_body":{"user_id":1,"title":"示例标题","summary":"示例值","body":"示例值","category":"示例值","event":"示例值","action_type":"示例值","action_value":"示例值"}},{"method":"DELETE","path":"\/api\/clients\/{id}\/notifications\/{nid}","description":"系统通知-删除个人通知（撤回）","feature":"notification.send","fields":[],"sample_path_params":{"id":1,"nid":1},"sample_query":[],"sample_body":[]},{"method":"GET","path":"\/api\/clients\/{id}\/notification-broadcasts","description":"系统通知-广播记录","feature":"notification.list","fields":["page?","page_size?"],"sample_path_params":{"id":1},"sample_query":{"page":"示例值","page_size":"示例值"},"sample_body":[]},{"method":"POST","path":"\/api\/clients\/{id}\/notification-broadcasts","description":"系统通知-发布广播","feature":"notification.broadcast","fields":["title","summary?","body?","category?","event?","action_type?","action_value?","expire_at?"],"sample_path_params":{"id":1},"sample_query":[],"sample_body":{"title":"示例标题","summary":"示例值","body":"示例值","category":"示例值","event":"示例值","action_type":"示例值","action_value":"示例值","expire_at":"示例值"}},{"method":"DELETE","path":"\/api\/clients\/{id}\/notification-broadcasts\/{bid}","description":"系统通知-删除广播（撤回）","feature":"notification.broadcast","fields":[],"sample_path_params":{"id":1,"bid":1},"sample_query":[],"sample_body":[]},{"method":"POST","path":"\/api\/clients\/{id}\/notification-broadcasts\/{bid}\/unpublish","description":"系统通知-下架广播","feature":"notification.broadcast","fields":[],"sample_path_params":{"id":1,"bid":1},"sample_query":[],"sample_body":{"_example":"按接口说明填写请求体"}},{"method":"GET","path":"\/api\/clients\/{id}\/banners","description":"轮播图列表","feature":"client_banner.list","fields":[],"sample_path_params":{"id":1},"sample_query":{"page":1,"page_size":20},"sample_body":[]},{"method":"POST","path":"\/api\/clients\/{id}\/banners","description":"新建轮播图","feature":"client_banner.create","fields":[],"sample_path_params":{"id":1},"sample_query":[],"sample_body":{"image_url":"https:\/\/example.com\/banner.png","title":"首页头图","subtitle":"副标题","target_url":"https:\/\/example.com","sort_order":1,"hidden":0}},{"method":"PUT","path":"\/api\/clients\/{id}\/banners\/{bannerId}","description":"更新轮播图","feature":"client_banner.update","fields":[],"sample_path_params":{"id":1,"bannerId":1},"sample_query":[],"sample_body":{"image_url":"https:\/\/example.com\/banner.png","title":"首页头图","subtitle":"副标题","target_url":"https:\/\/example.com","sort_order":1,"hidden":0}},{"method":"DELETE","path":"\/api\/clients\/{id}\/banners\/{bannerId}","description":"删除轮播图","feature":"client_banner.delete","fields":[],"sample_path_params":{"id":1,"bannerId":1},"sample_query":[],"sample_body":[]},{"method":"GET","path":"\/api\/clients\/{id}\/officialContacts","description":"官方联系方式列表","feature":"client_official_contact.list","fields":[],"sample_path_params":{"id":1},"sample_query":{"page":1,"page_size":20},"sample_body":[]},{"method":"POST","path":"\/api\/clients\/{id}\/officialContacts","description":"新建官方联系方式","feature":"client_official_contact.create","fields":[],"sample_path_params":{"id":1},"sample_query":[],"sample_body":{"contact_type":"qq_group","label":"官方联系方式","icon_url":"https:\/\/example.com\/qq.png","subtitle":"可选副标题","value_text":"","qq_group_key":"GgWSIin2XYIp-kTwXZKEctBzV1dVJgMn","qq_group_auth_key":"pQWfb7OtuaVUsXvqv8Uk8PiH8fTYrR5H6d0CdWwTqmZKfBUR8WNpvBdcb9tjrDnq","qq_group_number":"973976463","qq_group_name":"紧漫甜汤③","image_url":"","sort_order":0,"hidden":0}},{"method":"PUT","path":"\/api\/clients\/{id}\/officialContacts\/{contactId}","description":"更新官方联系方式","feature":"client_official_contact.update","fields":[],"sample_path_params":{"id":1,"contactId":1},"sample_query":[],"sample_body":{"contact_type":"qq_group","label":"官方联系方式","icon_url":"https:\/\/example.com\/qq.png","subtitle":"可选副标题","value_text":"","qq_group_key":"GgWSIin2XYIp-kTwXZKEctBzV1dVJgMn","qq_group_auth_key":"pQWfb7OtuaVUsXvqv8Uk8PiH8fTYrR5H6d0CdWwTqmZKfBUR8WNpvBdcb9tjrDnq","qq_group_number":"973976463","qq_group_name":"紧漫甜汤③","image_url":"","sort_order":0,"hidden":0}},{"method":"DELETE","path":"\/api\/clients\/{id}\/officialContacts\/{contactId}","description":"删除官方联系方式","feature":"client_official_contact.delete","fields":[],"sample_path_params":{"id":1,"contactId":1},"sample_query":[],"sample_body":[]},{"method":"GET","path":"\/api\/clients\/{id}\/roles","description":"团队\/角色列表（App 读接口：GET \/api\/app\/roles）","feature":"client_role.list","fields":[],"sample_path_params":{"id":1},"sample_query":{"page":1,"page_size":20},"sample_body":[]},{"method":"POST","path":"\/api\/clients\/{id}\/roles","description":"新建角色","feature":"client_role.create","fields":[],"sample_path_params":{"id":1},"sample_query":[],"sample_body":{"role_type":"developer","role_name":"开发者","nickname":"张三","avatar":"https:\/\/example.com\/avatar.png","hidden":0,"sort_order":1}},{"method":"PUT","path":"\/api\/clients\/{id}\/roles\/{roleId}","description":"更新角色","feature":"client_role.update","fields":[],"sample_path_params":{"id":1,"roleId":1},"sample_query":[],"sample_body":{"role_type":"developer","role_name":"开发者","nickname":"张三","avatar":"https:\/\/example.com\/avatar.png","hidden":0,"sort_order":1}},{"method":"DELETE","path":"\/api\/clients\/{id}\/roles\/{roleId}","description":"删除角色","feature":"client_role.delete","fields":[],"sample_path_params":{"id":1,"roleId":1},"sample_query":[],"sample_body":[]}]},{"group":"图库","items":[{"method":"GET","path":"\/api\/clients\/{id}\/galleries","description":"图库列表","feature":"gallery.list","fields":[],"sample_path_params":{"id":1},"sample_query":{"page":1,"page_size":20},"sample_body":[]},{"method":"POST","path":"\/api\/clients\/{id}\/galleries","description":"新建图库","feature":"gallery.create","fields":[],"sample_path_params":{"id":1},"sample_query":[],"sample_body":{"name":"默认图库","description":"图库描述"}},{"method":"PUT","path":"\/api\/clients\/{id}\/galleries\/{galleryId}","description":"更新图库","feature":"gallery.update","fields":[],"sample_path_params":{"id":1,"galleryId":1},"sample_query":[],"sample_body":{"name":"默认图库","description":"图库描述"}},{"method":"DELETE","path":"\/api\/clients\/{id}\/galleries\/{galleryId}","description":"删除图库","feature":"gallery.delete","fields":[],"sample_path_params":{"id":1,"galleryId":1},"sample_query":[],"sample_body":[]},{"method":"GET","path":"\/api\/clients\/{id}\/galleries\/{galleryId}\/albums","description":"相册列表","feature":"gallery_album.list","fields":[],"sample_path_params":{"id":1,"galleryId":1},"sample_query":{"page":1,"page_size":20},"sample_body":[]},{"method":"POST","path":"\/api\/clients\/{id}\/galleries\/{galleryId}\/albums","description":"新建相册","feature":"gallery_album.create","fields":[],"sample_path_params":{"id":1,"galleryId":1},"sample_query":[],"sample_body":{"title":"默认相册","description":"相册描述","sort_order":1}},{"method":"PUT","path":"\/api\/clients\/{id}\/galleries\/{galleryId}\/albums\/{albumId}","description":"更新相册","feature":"gallery_album.update","fields":[],"sample_path_params":{"id":1,"galleryId":1,"albumId":1},"sample_query":[],"sample_body":{"title":"默认相册","description":"相册描述","sort_order":1}},{"method":"PUT","path":"\/api\/clients\/{id}\/galleries\/{galleryId}\/albums\/{albumId}\/cover","description":"设置相册封面","feature":"gallery_album.update","fields":[],"sample_path_params":{"id":1,"galleryId":1,"albumId":1},"sample_query":[],"sample_body":{"cover_photo_id":1}},{"method":"DELETE","path":"\/api\/clients\/{id}\/galleries\/{galleryId}\/albums\/{albumId}","description":"删除相册","feature":"gallery_album.delete","fields":[],"sample_path_params":{"id":1,"galleryId":1,"albumId":1},"sample_query":[],"sample_body":[]},{"method":"GET","path":"\/api\/clients\/{id}\/galleries\/{galleryId}\/albums\/{albumId}\/photos","description":"照片列表","feature":"gallery_photo.list","fields":[],"sample_path_params":{"id":1,"galleryId":1,"albumId":1},"sample_query":{"page":1,"page_size":20},"sample_body":[]},{"method":"POST","path":"\/api\/clients\/{id}\/galleries\/{galleryId}\/albums\/{albumId}\/photos\/upload","description":"上传照片","feature":"gallery_photo.upload","fields":[],"sample_path_params":{"id":1,"galleryId":1,"albumId":1},"sample_query":[],"sample_body":{"title":"示例照片","file":"<binary>"}},{"method":"PUT","path":"\/api\/clients\/{id}\/galleries\/{galleryId}\/albums\/{albumId}\/photos\/{photoId}","description":"更新照片","feature":"gallery_photo.update","fields":[],"sample_path_params":{"id":1,"galleryId":1,"albumId":1,"photoId":1},"sample_query":[],"sample_body":{"title":"重命名后的照片"}},{"method":"DELETE","path":"\/api\/clients\/{id}\/galleries\/{galleryId}\/albums\/{albumId}\/photos\/{photoId}","description":"删除照片","feature":"gallery_photo.delete","fields":[],"sample_path_params":{"id":1,"galleryId":1,"albumId":1,"photoId":1},"sample_query":[],"sample_body":[]}]},{"group":"图廊","items":[{"method":"GET","path":"\/api\/clients\/{id}\/corridor","description":"读取图廊绑定（含 feed_sort_mode \/ feed_sort_seed）","feature":"corridor.read","fields":[],"sample_path_params":{"id":1},"sample_query":{"page":1,"page_size":20},"sample_body":[]},{"method":"PUT","path":"\/api\/clients\/{id}\/corridor","description":"保存图廊绑定\/启用\/展示排序","feature":"corridor.update","fields":["gallery_id","name?","enabled?","feed_sort_mode?","feed_sort_seed?"],"sample_path_params":{"id":1},"sample_query":[],"sample_body":{"gallery_id":1,"name":"示例名称","enabled":1,"feed_sort_mode":"示例值","feed_sort_seed":"示例值"}},{"method":"GET","path":"\/api\/clients\/{id}\/corridor\/photos","description":"图廊审核列表（status=pending|approved|rejected|all；仅个人相册照片）","feature":"corridor.read","fields":["status?","page?","page_size?","tag?"],"sample_path_params":{"id":1},"sample_query":{"status":"示例值","page":"示例值","page_size":"示例值","tag":"示例值"},"sample_body":[]},{"method":"POST","path":"\/api\/clients\/{id}\/corridor\/photos\/review","description":"批量审核上廊（action=approve|reject）","feature":"corridor.review","fields":["action","photo_ids[]","note?"],"sample_path_params":{"id":1},"sample_query":[],"sample_body":{"action":"示例值","photo_ids":[1],"note":"示例备注"}}]},{"group":"图文笔记（管理端）","items":[{"method":"GET","path":"\/api\/clients\/{id}\/notes-config","description":"读取笔记配置","feature":"note.read","fields":[],"sample_path_params":{"id":1},"sample_query":{"page":1,"page_size":20},"sample_body":[]},{"method":"PUT","path":"\/api\/clients\/{id}\/notes-config","description":"保存笔记配置","feature":"note.update","fields":["enabled?","require_review?","allow_quote_others_corridor?","max_media?","max_embeds?"],"sample_path_params":{"id":1},"sample_query":[],"sample_body":{"enabled":1,"require_review":"示例值","allow_quote_others_corridor":1,"max_media":"示例值","max_embeds":"示例值"}},{"method":"GET","path":"\/api\/clients\/{id}\/gpt-sovits-config","description":"GPT-SoVITS 配置（本体下载链接、环境包、密码明文、MD5）","feature":"client.update","fields":[],"sample_path_params":{"id":1},"sample_query":{"page":1,"page_size":20},"sample_body":[]},{"method":"PUT","path":"\/api\/clients\/{id}\/gpt-sovits-config","description":"保存 GPT-SoVITS\/环境包下载链接、密码、MD5","feature":"client.update","fields":["gpt_sovits_download_url?","pack_download_url?","pack_unzip_password?","pack_file_md5?","verify_pack_md5?"],"sample_path_params":{"id":1},"sample_query":[],"sample_body":{"gpt_sovits_download_url":"https:\/\/example.com\/demo.png","pack_download_url":"https:\/\/example.com\/demo.png","pack_unzip_password":"示例值","pack_file_md5":"示例值","verify_pack_md5":"示例值"}},{"method":"GET","path":"\/api\/clients\/{id}\/notes","description":"笔记审核列表","feature":"note.read","fields":["status?","page?","page_size?","q?"],"sample_path_params":{"id":1},"sample_query":{"status":"示例值","page":"示例值","page_size":"示例值","q":"示例值"},"sample_body":[]},{"method":"POST","path":"\/api\/clients\/{id}\/notes\/review","description":"批量审核（action=approve|reject）","feature":"note.review","fields":["action","note_ids[]","note?"],"sample_path_params":{"id":1},"sample_query":[],"sample_body":{"action":"示例值","note_ids":[1],"note":"示例备注"}},{"method":"PUT","path":"\/api\/clients\/{id}\/notes\/{noteId}\/flags","description":"设置优质\/官方（is_featured、is_official）","feature":"note.update","fields":["is_featured?","is_official?"],"sample_path_params":{"id":1,"noteId":1},"sample_query":[],"sample_body":{"is_featured":"示例值","is_official":"示例值"}},{"method":"GET","path":"\/api\/clients\/{id}\/notes\/{noteId}\/comments","description":"管理端评论列表","feature":"note.read","fields":["page?","page_size?"],"sample_path_params":{"id":1,"noteId":1},"sample_query":{"page":"示例值","page_size":"示例值"},"sample_body":[]},{"method":"DELETE","path":"\/api\/clients\/{id}\/notes\/{noteId}\/comments\/{commentId}","description":"管理端删除评论","feature":"note.update","fields":[],"sample_path_params":{"id":1,"noteId":1,"commentId":1},"sample_query":[],"sample_body":[]},{"method":"GET","path":"\/api\/clients\/{id}\/note-topics","description":"话题列表（管理）","feature":"note.read","fields":["q?"],"sample_path_params":{"id":1},"sample_query":{"q":"示例值"},"sample_body":[]},{"method":"POST","path":"\/api\/clients\/{id}\/note-topics","description":"创建话题","feature":"note.update","fields":["name","enabled?","sort?"],"sample_path_params":{"id":1},"sample_query":[],"sample_body":{"name":"示例名称","enabled":1,"sort":"示例值"}},{"method":"PUT","path":"\/api\/clients\/{id}\/note-topics\/{topicId}","description":"更新话题","feature":"note.update","fields":["name?","enabled?","sort?"],"sample_path_params":{"id":1,"topicId":1},"sample_query":[],"sample_body":{"name":"示例名称","enabled":1,"sort":"示例值"}},{"method":"DELETE","path":"\/api\/clients\/{id}\/note-topics\/{topicId}","description":"删除话题","feature":"note.update","fields":[],"sample_path_params":{"id":1,"topicId":1},"sample_query":[],"sample_body":[]}]},{"group":"链接与文件空间","items":[{"method":"GET","path":"\/api\/clients\/{id}\/linkSet","description":"读取链接集（含隐藏链接；分页：page、page_size，默认 20 条\/页，最大 200）","feature":"client_linkset.read","fields":["page?","page_size?"],"sample_path_params":{"id":1},"sample_query":{"page":"示例值","page_size":"示例值"},"sample_body":[]},{"method":"POST","path":"\/api\/clients\/{id}\/linkSet","description":"初始化链接集（与 API 客户端绑定，通常无需手动调用）","feature":"client_linkset.create","fields":[],"sample_path_params":{"id":1},"sample_query":[],"sample_body":{"name":"客户端链接集","icon":"https:\/\/example.com\/icon.png"}},{"method":"PUT","path":"\/api\/clients\/{id}\/linkSet","description":"更新链接集（name、icon）","feature":"client_linkset.update","fields":[],"sample_path_params":{"id":1},"sample_query":[],"sample_body":{"name":"客户端链接集","icon":"https:\/\/example.com\/icon.png"}},{"method":"POST","path":"\/api\/clients\/{id}\/links\/uploadIcon","description":"上传链接\/链接集图标（multipart: file）","feature":"client_link.update","fields":["file"],"sample_path_params":{"id":1},"sample_query":[],"sample_body":{"file":"示例值"}},{"method":"POST","path":"\/api\/clients\/{id}\/links\/seedLongTest","description":"批量生成长文本测试链接（可选 clear_old、count、title_prefix）","feature":"client_link.create","fields":["clear_old?","count?","title_prefix?"],"sample_path_params":{"id":1},"sample_query":[],"sample_body":{"clear_old":"示例值","count":"示例值","title_prefix":"示例标题"}},{"method":"POST","path":"\/api\/clients\/{id}\/links","description":"创建链接","feature":"client_link.create","fields":[],"sample_path_params":{"id":1},"sample_query":[],"sample_body":{"title":"官网","content":"点击跳转","target_url":"https:\/\/example.com","icon":"https:\/\/example.com\/icon.png","sort_order":1,"hidden":0}},{"method":"POST","path":"\/api\/clients\/{id}\/links\/batch","description":"批量操作：action=delete+ids（须 client_link.delete）；action=set_hidden+ids+hidden（须 client_link.update）","feature":"client_link.delete","fields":[],"sample_path_params":{"id":1},"sample_query":[],"sample_body":{"action":"delete","ids":[1,2,3]}},{"method":"PUT","path":"\/api\/clients\/{id}\/links\/{linkId}","description":"更新链接","feature":"client_link.update","fields":[],"sample_path_params":{"id":1,"linkId":1},"sample_query":[],"sample_body":{"title":"官网","content":"点击跳转","target_url":"https:\/\/example.com","icon":"https:\/\/example.com\/icon.png","sort_order":1,"hidden":0}},{"method":"DELETE","path":"\/api\/clients\/{id}\/links\/{linkId}","description":"删除链接","feature":"client_link.delete","fields":[],"sample_path_params":{"id":1,"linkId":1},"sample_query":[],"sample_body":[]},{"method":"GET","path":"\/api\/clients\/{id}\/files","description":"文件列表","feature":"client_file.list","fields":[],"sample_path_params":{"id":1},"sample_query":{"page":1,"page_size":20},"sample_body":[]},{"method":"GET","path":"\/api\/clients\/{id}\/files\/{fileId}","description":"文件详情","feature":"client_file.read","fields":[],"sample_path_params":{"id":1,"fileId":1},"sample_query":{"page":1,"page_size":20},"sample_body":[]},{"method":"POST","path":"\/api\/clients\/{id}\/files\/mkdir","description":"新建目录","feature":"client_file.create","fields":[],"sample_path_params":{"id":1},"sample_query":[],"sample_body":{"parent_id":0,"name":"新目录"}},{"method":"POST","path":"\/api\/clients\/{id}\/files\/upload","description":"上传文件","feature":"client_file.create","fields":[],"sample_path_params":{"id":1},"sample_query":[],"sample_body":{"parent_id":0,"file":"<binary>"}},{"method":"PUT","path":"\/api\/clients\/{id}\/files\/{fileId}","description":"重命名\/移动文件","feature":"client_file.update","fields":[],"sample_path_params":{"id":1,"fileId":1},"sample_query":[],"sample_body":{"parent_id":0,"name":"新文件名"}},{"method":"GET","path":"\/api\/clients\/{id}\/files\/{fileId}\/download","description":"下载文件","feature":"client_file.read","fields":[],"sample_path_params":{"id":1,"fileId":1},"sample_query":{"page":1,"page_size":20},"sample_body":[]},{"method":"DELETE","path":"\/api\/clients\/{id}\/files\/{fileId}","description":"删除文件","feature":"client_file.delete","fields":[],"sample_path_params":{"id":1,"fileId":1},"sample_query":[],"sample_body":[]}]},{"group":"学院与学生","items":[{"method":"GET","path":"\/api\/clients\/{id}\/academies\/listVersion","description":"学院列表版本号（仅 academy_list_version）","feature":"academy.read","fields":[],"sample_path_params":{"id":1},"sample_query":{"page":1,"page_size":20},"sample_body":[]},{"method":"GET","path":"\/api\/clients\/{id}\/academies","description":"学院列表（默认按 academy_list_sort；响应含该字段）","feature":"academy.read","fields":["order?"],"sample_path_params":{"id":1},"sample_query":{"order":"示例值"},"sample_body":[]},{"method":"POST","path":"\/api\/clients\/{id}\/academies","description":"创建学院（可传 sort_order，越小越靠前）","feature":"academy.create","fields":[],"sample_path_params":{"id":1},"sample_query":[],"sample_body":{"name":"计算机学院","code":"CS","logo":"https:\/\/example.com\/logo.png","introduction":"学院简介","sort_order":0,"use_external_assets":0,"external_assets_base_url":""}},{"method":"GET","path":"\/api\/clients\/{id}\/academies\/{academyId}","description":"学院详情（路径为学院主键 id；App 读接口请用 GET \/api\/app\/academies\/{code}）","feature":"academy.read","fields":[],"sample_path_params":{"id":1,"academyId":1},"sample_query":{"page":1,"page_size":20},"sample_body":[]},{"method":"PUT","path":"\/api\/clients\/{id}\/academies\/{academyId}","description":"更新学院（含 sort_order；academyId 为主键 id）","feature":"academy.update","fields":[],"sample_path_params":{"id":1,"academyId":1},"sample_query":[],"sample_body":{"name":"计算机学院","code":"CS","logo":"https:\/\/example.com\/logo.png","introduction":"学院简介","sort_order":0,"use_external_assets":0,"external_assets_base_url":""}},{"method":"DELETE","path":"\/api\/clients\/{id}\/academies\/{academyId}","description":"删除学院（academyId 为主键 id）","feature":"academy.delete","fields":[],"sample_path_params":{"id":1,"academyId":1},"sample_query":[],"sample_body":[]},{"method":"GET","path":"\/api\/clients\/{id}\/academies\/{academyId}\/students","description":"学生列表（路径 academyId 为主键 id；App 请用 \/api\/app\/academies\/{code}\/students）","feature":"student.read","fields":["order?"],"sample_path_params":{"id":1,"academyId":1},"sample_query":{"order":"示例值"},"sample_body":[]},{"method":"POST","path":"\/api\/clients\/{id}\/academies\/{academyId}\/students","description":"创建学生","feature":"student.create","fields":[],"sample_path_params":{"id":1,"academyId":1},"sample_query":[],"sample_body":{"name":"学生A","code":"stu001","avatar":"https:\/\/example.com\/avatar.png","introduction":"学生简介","resource_package":"pack.zip"}},{"method":"PUT","path":"\/api\/clients\/{id}\/academies\/{academyId}\/students\/{studentId}","description":"更新学生","feature":"student.update","fields":[],"sample_path_params":{"id":1,"academyId":1,"studentId":1},"sample_query":[],"sample_body":{"name":"学生A","code":"stu001","avatar":"https:\/\/example.com\/avatar.png","introduction":"学生简介","resource_package":"pack.zip"}},{"method":"DELETE","path":"\/api\/clients\/{id}\/academies\/{academyId}\/students\/{studentId}","description":"删除学生","feature":"student.delete","fields":[],"sample_path_params":{"id":1,"academyId":1,"studentId":1},"sample_query":[],"sample_body":[]},{"method":"PUT","path":"\/api\/clients\/{id}\/academyGlobalStudentAssets","description":"设置全局学生资源","feature":"academy.update","fields":[],"sample_path_params":{"id":1},"sample_query":[],"sample_body":{"use_external_student_assets":1,"external_student_assets_base_url":"https:\/\/example.com\/students\/"}},{"method":"PUT","path":"\/api\/clients\/{id}\/academyListSort","description":"学院列表输出正序\/倒序（asc|desc）","feature":"academy.update","fields":[],"sample_path_params":{"id":1},"sample_query":[],"sample_body":{"academy_list_sort":"asc"}}]},{"group":"资源商城（用户资源包）","items":[{"method":"GET","path":"\/api\/clients\/{id}\/userPacks","description":"用户资源包列表","feature":"resource_pack.list","fields":[],"sample_path_params":{"id":1},"sample_query":{"review_status":"pending","listed":1,"user_id":1},"sample_body":[]},{"method":"DELETE","path":"\/api\/clients\/{id}\/userPacks\/{packId}","description":"删除用户资源包（含文件）","feature":"resource_pack.delete","fields":[],"sample_path_params":{"id":1,"packId":1},"sample_query":[],"sample_body":[]},{"method":"PUT","path":"\/api\/clients\/{id}\/userPacks\/{packId}\/approve","description":"资源包审核通过","feature":"resource_pack.update","fields":[],"sample_path_params":{"id":1,"packId":1},"sample_query":[],"sample_body":{"_example":"按接口说明填写请求体"}},{"method":"PUT","path":"\/api\/clients\/{id}\/userPacks\/{packId}\/reject","description":"资源包驳回","feature":"resource_pack.update","fields":[],"sample_path_params":{"id":1,"packId":1},"sample_query":[],"sample_body":{"note":"请补充封面图和介绍"}},{"method":"PUT","path":"\/api\/clients\/{id}\/userPacks\/{packId}\/listed","description":"资源包上下架","feature":"resource_pack.update","fields":[],"sample_path_params":{"id":1,"packId":1},"sample_query":[],"sample_body":{"store_listed":1}},{"method":"GET","path":"\/api\/clients\/{id}\/userPacks\/{packId}\/comments","description":"管理端查看资源包评论列表（分页）","feature":"resource_pack.list","fields":["page?","page_size?"],"sample_path_params":{"id":1,"packId":1},"sample_query":{"page":"示例值","page_size":"示例值"},"sample_body":[]},{"method":"DELETE","path":"\/api\/clients\/{id}\/userPacks\/{packId}\/comments\/{commentId}","description":"管理端删除资源包评论","feature":"resource_pack.update","fields":[],"sample_path_params":{"id":1,"packId":1,"commentId":1},"sample_query":[],"sample_body":[]},{"method":"PUT","path":"\/api\/clients\/{id}\/userPacks\/{packId}\/interaction-counters\/reset","description":"重置互动计数（可选清空浏览\/点赞\/评论，点赞与评论可同时清表）","feature":"resource_pack.update","fields":["views?","likes?","comments?"],"sample_path_params":{"id":1,"packId":1},"sample_query":[],"sample_body":{"views":"示例值","likes":"示例值","comments":"示例值"}}]}]},{"major":"sys_notification_app","title":"系统通知中心（APP）","description":"卡片式站内通知，独立于 IM。业务用户 Token。个人收件箱与广播合并列表；id 形如 n_123 \/ b_456。","groups":[{"group":"通知收件箱","items":[{"method":"GET","path":"\/api\/notifications","description":"通知卡片列表（个人+广播合并）","feature":"user_login_token","fields":["page?","page_size?","category?","unread_only?"],"sample_path_params":[],"sample_query":{"page":"示例值","page_size":"示例值","category":"示例值","unread_only":"示例值"},"sample_body":[]},{"method":"GET","path":"\/api\/notifications\/unread-count","description":"未读数量（红点）","feature":"user_login_token","fields":[],"sample_path_params":[],"sample_query":{"page":1,"page_size":20},"sample_body":[]},{"method":"GET","path":"\/api\/notifications\/{id}","description":"通知详情（含 body）","feature":"user_login_token","fields":[],"sample_path_params":{"id":1},"sample_query":{"page":1,"page_size":20},"sample_body":[]},{"method":"POST","path":"\/api\/notifications\/{id}\/read","description":"单条已读","feature":"user_login_token","fields":[],"sample_path_params":{"id":1},"sample_query":[],"sample_body":{"_example":"按接口说明填写请求体"}},{"method":"POST","path":"\/api\/notifications\/read-all","description":"全部已读","feature":"user_login_token","fields":[],"sample_path_params":[],"sample_query":[],"sample_body":{"_example":"按接口说明填写请求体"}}]}]},{"major":"im_app","title":"即时通讯（APP）","description":"业务用户 Token。含好友申请\/关系\/拉黑，以及会话消息群聊。发消息以 HTTP 为准；WebSocket 仅做实时下行与在线态。好友申请当前无 WS 推送，需轮询申请列表。","groups":[{"group":"会话与消息","items":[{"method":"GET","path":"\/api\/im\/conversations","description":"会话列表（含未读）","feature":"user_login_token","fields":["page?","page_size?"],"sample_path_params":[],"sample_query":{"page":"示例值","page_size":"示例值"},"sample_body":[]},{"method":"GET","path":"\/api\/im\/conversations\/sync","description":"会话列表增量同步（本地缓存；since 空=全量；含 deleted）","feature":"user_login_token","fields":["since?","limit?"],"sample_path_params":[],"sample_query":{"since":"示例值","limit":"示例值"},"sample_body":[]},{"method":"GET","path":"\/api\/im\/bootstrap","description":"冷启动打包：会话+好友全量及各自 sync_token","feature":"user_login_token","fields":[],"sample_path_params":[],"sample_query":{"page":1,"page_size":20},"sample_body":[]},{"method":"GET","path":"\/api\/im\/support","description":"帮助与客服：返回后台配置的客服用户（im_support_user_id）","feature":"user_login_token","fields":[],"sample_path_params":[],"sample_query":{"page":1,"page_size":20},"sample_body":[]},{"method":"POST","path":"\/api\/im\/conversations\/private","description":"打开\/创建私聊","feature":"user_login_token","fields":["user_id"],"sample_path_params":[],"sample_query":[],"sample_body":{"user_id":1}},{"method":"GET","path":"\/api\/im\/conversations\/{id}\/messages","description":"历史消息（seq 游标）","feature":"user_login_token","fields":["after_seq?","before_seq?","limit?"],"sample_path_params":{"id":1},"sample_query":{"after_seq":"示例值","before_seq":"示例值","limit":"示例值"},"sample_body":[]},{"method":"POST","path":"\/api\/im\/conversations\/{id}\/read","description":"已读到某 seq","feature":"user_login_token","fields":["seq"],"sample_path_params":{"id":1},"sample_query":[],"sample_body":{"seq":"示例值"}},{"method":"POST","path":"\/api\/im\/messages","description":"发送消息（落库后 WS 推送）","feature":"user_login_token","fields":["conversation_id","msg_type","content","client_msg_id?","extra?"],"sample_path_params":[],"sample_query":[],"sample_body":{"conversation_id":1,"msg_type":"示例值","content":"示例内容","client_msg_id":1,"extra":"示例值"}},{"method":"POST","path":"\/api\/im\/messages\/{id}\/recall","description":"撤回消息（受 im_recall_seconds 限制）","feature":"user_login_token","fields":[],"sample_path_params":{"id":1},"sample_query":[],"sample_body":{"_example":"按接口说明填写请求体"}},{"method":"POST","path":"\/api\/im\/upload","description":"上传图片\/文件（multipart: file）","feature":"user_login_token","fields":["file"],"sample_path_params":[],"sample_query":[],"sample_body":{"file":"示例值"}},{"method":"POST","path":"\/api\/im\/reports","description":"举报","feature":"user_login_token","fields":["target_type","target_id","reason?","detail?"],"sample_path_params":[],"sample_query":[],"sample_body":{"target_type":"示例值","target_id":1,"reason":"示例值","detail":"示例值"}}]},{"group":"好友与拉黑","items":[{"method":"GET","path":"\/api\/im\/friends","description":"好友列表（含 is_fixed\/can_delete；固定联系人置顶注入）","feature":"user_login_token","fields":[],"sample_path_params":[],"sample_query":{"page":1,"page_size":20},"sample_body":[]},{"method":"GET","path":"\/api\/im\/friends\/sync","description":"好友列表增量同步（含 deleted 墓碑；since 空=全量）","feature":"user_login_token","fields":["since?","limit?"],"sample_path_params":[],"sample_query":{"since":"示例值","limit":"示例值"},"sample_body":[]},{"method":"GET","path":"\/api\/im\/users\/search","description":"搜索用户以便加好友。返回 is_friend \/ is_blocked \/ is_fixed","feature":"user_login_token","fields":["q","limit?"],"sample_path_params":[],"sample_query":{"q":"示例值","limit":"示例值"},"sample_body":[]},{"method":"GET","path":"\/api\/im\/users\/{id}\/profile","description":"他人个人主页（bio、关系：is_friend\/is_fixed\/can_chat 等）；未登录也可查看公开资料","feature":"optional_user_token","fields":[],"sample_path_params":{"id":1},"sample_query":{"page":1,"page_size":20},"sample_body":[]},{"method":"POST","path":"\/api\/im\/friend-requests","description":"发起好友申请。已是好友\/拉黑会失败；若对方已向我发起待处理申请则自动同意成好友。可重复提交同一申请（返回已有记录）","feature":"user_login_token","fields":["user_id|to_user_id","message?"],"sample_path_params":[],"sample_query":[],"sample_body":{"user_id|to_user_id":1,"message":"示例备注"}},{"method":"GET","path":"\/api\/im\/friend-requests","description":"待处理申请列表。direction=incoming(默认)收件 \/ outgoing发件；仅 status=0","feature":"user_login_token","fields":["direction?"],"sample_path_params":[],"sample_query":{"direction":"示例值"},"sample_body":[]},{"method":"POST","path":"\/api\/im\/friend-requests\/{id}\/accept","description":"同意申请（仅被申请人；双向写入 im_friend，不自动建会话）","feature":"user_login_token","fields":[],"sample_path_params":{"id":1},"sample_query":[],"sample_body":{"_example":"按接口说明填写请求体"}},{"method":"POST","path":"\/api\/im\/friend-requests\/{id}\/reject","description":"拒绝申请（仅被申请人）","feature":"user_login_token","fields":[],"sample_path_params":{"id":1},"sample_query":[],"sample_body":{"_example":"按接口说明填写请求体"}},{"method":"DELETE","path":"\/api\/im\/friends\/{friendId}","description":"删除好友（双向；固定联系人不可删）","feature":"user_login_token","fields":[],"sample_path_params":{"friendId":1},"sample_query":[],"sample_body":[]},{"method":"POST","path":"\/api\/im\/blocks","description":"拉黑（单向；自动解除好友；固定联系人不可拉黑）","feature":"user_login_token","fields":["user_id"],"sample_path_params":[],"sample_query":[],"sample_body":{"user_id":1}},{"method":"GET","path":"\/api\/im\/blocks","description":"拉黑列表（含对方资料与拉黑时间）","feature":"user_login_token","fields":[],"sample_path_params":[],"sample_query":{"page":1,"page_size":20},"sample_body":[]},{"method":"DELETE","path":"\/api\/im\/blocks\/{userId}","description":"取消拉黑（不自动恢复好友）","feature":"user_login_token","fields":[],"sample_path_params":{"userId":1},"sample_query":[],"sample_body":[]}]},{"group":"群聊","items":[{"method":"POST","path":"\/api\/im\/groups","description":"创建群；返回群详情（含 cover、conversation_id、my_role）","feature":"user_login_token","fields":["name","member_ids?","avatar?"],"sample_path_params":[],"sample_query":[],"sample_body":{"name":"示例名称","member_ids":1,"avatar":"https:\/\/example.com\/demo.png"}},{"method":"GET","path":"\/api\/im\/groups\/{id}","description":"群信息\/详情。含 cover、announcements_count、latest_announcement、my_role、can_edit","feature":"user_login_token","fields":[],"sample_path_params":{"id":1},"sample_query":{"page":1,"page_size":20},"sample_body":[]},{"method":"GET","path":"\/api\/im\/groups\/{id}\/members","description":"群成员列表。支持 page\/page_size","feature":"user_login_token","fields":["page?","page_size?"],"sample_path_params":{"id":1},"sample_query":{"page":"示例值","page_size":"示例值"},"sample_body":[]},{"method":"GET","path":"\/api\/im\/groups\/{id}\/notice","description":"群公告列表（多条，新在前）","feature":"user_login_token","fields":["page?","page_size?"],"sample_path_params":{"id":1},"sample_query":{"page":"示例值","page_size":"示例值"},"sample_body":[]},{"method":"POST","path":"\/api\/im\/groups\/{id}\/notice","description":"发布一条群公告（群主\/管理员）","feature":"user_login_token","fields":["content|notice"],"sample_path_params":{"id":1},"sample_query":[],"sample_body":{"content|notice":"示例内容"}},{"method":"PUT","path":"\/api\/im\/groups\/{id}\/notice\/{aid}","description":"编辑一条群公告","feature":"user_login_token","fields":["content|notice"],"sample_path_params":{"id":1,"aid":1},"sample_query":[],"sample_body":{"content|notice":"示例内容"}},{"method":"DELETE","path":"\/api\/im\/groups\/{id}\/notice\/{aid}","description":"删除一条群公告","feature":"user_login_token","fields":[],"sample_path_params":{"id":1,"aid":1},"sample_query":[],"sample_body":[]},{"method":"POST","path":"\/api\/im\/groups\/{id}\/members","description":"拉人入群（群主\/管理员）","feature":"user_login_token","fields":["user_ids"],"sample_path_params":{"id":1},"sample_query":[],"sample_body":{"user_ids":1}},{"method":"DELETE","path":"\/api\/im\/groups\/{id}\/members\/{userId}","description":"踢人（群主\/管理员）","feature":"user_login_token","fields":[],"sample_path_params":{"id":1,"userId":1},"sample_query":[],"sample_body":[]},{"method":"POST","path":"\/api\/im\/groups\/{id}\/mute","description":"禁言\/解禁成员（群主\/管理员）；mute_until 空则解禁","feature":"user_login_token","fields":["user_id","mute_until?"],"sample_path_params":{"id":1},"sample_query":[],"sample_body":{"user_id":1,"mute_until":"示例值"}},{"method":"POST","path":"\/api\/im\/groups\/{id}\/quit","description":"退群（群主须先转让）","feature":"user_login_token","fields":[],"sample_path_params":{"id":1},"sample_query":[],"sample_body":{"_example":"按接口说明填写请求体"}},{"method":"POST","path":"\/api\/im\/groups\/{id}\/transfer","description":"转让群主","feature":"user_login_token","fields":["user_id"],"sample_path_params":{"id":1},"sample_query":[],"sample_body":{"user_id":1}},{"method":"PUT","path":"\/api\/im\/groups\/{id}","description":"群资料编辑：name?\/avatar?\/cover?；传 notice 会额外发一条新公告","feature":"user_login_token","fields":["name?","avatar?","cover?","notice?"],"sample_path_params":{"id":1},"sample_query":[],"sample_body":{"name":"示例名称","avatar":"https:\/\/example.com\/demo.png","cover":"示例值","notice":"示例值"}}]}]},{"major":"im_admin","title":"即时通讯（后台）","description":"管理员 Token + RBAC 权限码。","groups":[{"group":"运营接口","items":[{"method":"GET","path":"\/api\/im\/admin\/conversations","description":"会话监控列表","feature":"im.conversation.list","fields":["page?","page_size?","type?","keyword?"],"sample_path_params":[],"sample_query":{"page":"示例值","page_size":"示例值","type":"示例值","keyword":"示例值"},"sample_body":[]},{"method":"GET","path":"\/api\/im\/admin\/conversations\/{id}","description":"会话详情（成员+最近消息）","feature":"im.conversation.list","fields":[],"sample_path_params":{"id":1},"sample_query":{"page":1,"page_size":20},"sample_body":[]},{"method":"GET","path":"\/api\/im\/admin\/messages","description":"消息审计检索","feature":"im.message.audit","fields":["page?","page_size?","keyword?","conversation_id?","sender_id?","msg_type?","status?","time_from?","time_to?","include_deleted?"],"sample_path_params":[],"sample_query":{"page":"示例值","page_size":"示例值","keyword":"示例值","conversation_id":1,"sender_id":1,"msg_type":"示例值","status":"示例值","time_from":"示例值","time_to":"示例值","include_deleted":"示例值"},"sample_body":[]},{"method":"DELETE","path":"\/api\/im\/admin\/messages\/{id}","description":"删除违规消息","feature":"im.message.audit","fields":[],"sample_path_params":{"id":1},"sample_query":[],"sample_body":[]},{"method":"POST","path":"\/api\/im\/admin\/messages\/{id}\/recall","description":"强制撤回","feature":"im.message.audit","fields":[],"sample_path_params":{"id":1},"sample_query":[],"sample_body":{"_example":"按接口说明填写请求体"}},{"method":"GET","path":"\/api\/im\/admin\/groups","description":"群组列表","feature":"im.group.manage","fields":["page?","page_size?","keyword?"],"sample_path_params":[],"sample_query":{"page":"示例值","page_size":"示例值","keyword":"示例值"},"sample_body":[]},{"method":"GET","path":"\/api\/im\/admin\/groups\/{id}\/members","description":"群成员列表","feature":"im.group.manage","fields":["page?","page_size?"],"sample_path_params":{"id":1},"sample_query":{"page":"示例值","page_size":"示例值"},"sample_body":[]},{"method":"POST","path":"\/api\/im\/admin\/groups\/{id}\/members\/kick","description":"踢出成员","feature":"im.group.manage","fields":["user_id"],"sample_path_params":{"id":1},"sample_query":[],"sample_body":{"user_id":1}},{"method":"PUT","path":"\/api\/im\/admin\/groups\/{id}\/members\/role","description":"设置成员角色 admin|member","feature":"im.group.manage","fields":["user_id","role"],"sample_path_params":{"id":1},"sample_query":[],"sample_body":{"user_id":1,"role":"示例值"}},{"method":"PUT","path":"\/api\/im\/admin\/groups\/{id}","description":"改群资料","feature":"im.group.manage","fields":["name?","avatar?","cover?","notice?"],"sample_path_params":{"id":1},"sample_query":[],"sample_body":{"name":"示例名称","avatar":"https:\/\/example.com\/demo.png","cover":"示例值","notice":"示例值"}},{"method":"POST","path":"\/api\/im\/admin\/groups\/{id}\/dissolve","description":"解散群","feature":"im.group.manage","fields":[],"sample_path_params":{"id":1},"sample_query":[],"sample_body":{"_example":"按接口说明填写请求体"}},{"method":"POST","path":"\/api\/im\/admin\/groups\/{id}\/transfer","description":"转让群主","feature":"im.group.manage","fields":["user_id"],"sample_path_params":{"id":1},"sample_query":[],"sample_body":{"user_id":1}},{"method":"POST","path":"\/api\/im\/admin\/groups\/{id}\/mute","description":"禁言成员","feature":"im.group.manage","fields":["user_id","mute_until?"],"sample_path_params":{"id":1},"sample_query":[],"sample_body":{"user_id":1,"mute_until":"示例值"}},{"method":"GET","path":"\/api\/im\/admin\/reports","description":"举报列表","feature":"im.report.handle","fields":["page?","page_size?","status?","target_type?","reporter_id?"],"sample_path_params":[],"sample_query":{"page":"示例值","page_size":"示例值","status":"示例值","target_type":"示例值","reporter_id":1},"sample_body":[]},{"method":"POST","path":"\/api\/im\/admin\/reports\/batch-handle","description":"批量处理举报","feature":"im.report.handle","fields":["ids","status","handle_result?"],"sample_path_params":[],"sample_query":[],"sample_body":{"ids":1,"status":"示例值","handle_result":"示例值"}},{"method":"POST","path":"\/api\/im\/admin\/reports\/{id}\/handle","description":"处理举报（可选 ban_user_id 真封禁）","feature":"im.report.handle","fields":["status","handle_result?","ban_user_id?","ban_reason?"],"sample_path_params":{"id":1},"sample_query":[],"sample_body":{"status":"示例值","handle_result":"示例值","ban_user_id":1,"ban_reason":"示例值"}},{"method":"POST","path":"\/api\/im\/admin\/users\/{id}\/ban","description":"封禁业务用户","feature":"im.report.handle","fields":["reason?"],"sample_path_params":{"id":1},"sample_query":[],"sample_body":{"reason":"示例值"}},{"method":"POST","path":"\/api\/im\/admin\/users\/{id}\/unban","description":"解封业务用户","feature":"im.report.handle","fields":[],"sample_path_params":{"id":1},"sample_query":[],"sample_body":{"_example":"按接口说明填写请求体"}},{"method":"GET","path":"\/api\/im\/admin\/settings","description":"读取 IM 设置（含固定联系人、客服账号 im_support_user_id、保留天数等）","feature":"im.settings","fields":[],"sample_path_params":[],"sample_query":{"page":1,"page_size":20},"sample_body":[]},{"method":"PUT","path":"\/api\/im\/admin\/settings","description":"保存 IM 设置","feature":"im.settings","fields":["im_recall_seconds?","im_group_max_members?","im_friend_required?","im_upload_max_mb?","im_ws_register_address?","im_ws_client_url?","im_message_retention_days?","im_fixed_contact_ids?","im_support_user_id?"],"sample_path_params":[],"sample_query":[],"sample_body":{"im_recall_seconds":"示例值","im_group_max_members":"示例值","im_friend_required":"示例值","im_upload_max_mb":"示例值","im_ws_register_address":"示例值","im_ws_client_url":"https:\/\/example.com\/demo.png","im_message_retention_days":"示例备注","im_fixed_contact_ids":1,"im_support_user_id":1}},{"method":"GET","path":"\/api\/im\/admin\/ws-health","description":"检测 Register \/ 客户端 WS \/ GatewayClient 连通性","feature":"im.settings","fields":[],"sample_path_params":[],"sample_query":{"page":1,"page_size":20},"sample_body":[]},{"method":"POST","path":"\/api\/im\/admin\/cleanup-messages","description":"按保留天数立即物理清理过期聊天记录（可选 batch_size）","feature":"im.settings","fields":["batch_size?"],"sample_path_params":[],"sample_query":[],"sample_body":{"batch_size":"示例值"}},{"method":"GET","path":"\/api\/emoji\/admin\/packs","description":"表情包列表（含各状态）","feature":"im.emoji.manage","fields":["page?","page_size?","keyword?","status?","author_id?"],"sample_path_params":[],"sample_query":{"page":"示例值","page_size":"示例值","keyword":"示例值","status":"示例值","author_id":1},"sample_body":[]},{"method":"GET","path":"\/api\/emoji\/admin\/packs\/{id}","description":"表情包详情+表情项","feature":"im.emoji.manage","fields":[],"sample_path_params":{"id":1},"sample_query":{"page":1,"page_size":20},"sample_body":[]},{"method":"PUT","path":"\/api\/emoji\/admin\/packs\/{id}","description":"更新表情包（name?\/description?\/cover?\/status?）","feature":"im.emoji.manage","fields":["name?","description?","cover?","status?"],"sample_path_params":{"id":1},"sample_query":[],"sample_body":{"name":"示例名称","description":"示例内容","cover":"示例值","status":"示例值"}},{"method":"POST","path":"\/api\/emoji\/admin\/packs\/{id}\/sync-album","description":"同步\/创建绑定相册","feature":"im.emoji.manage","fields":[],"sample_path_params":{"id":1},"sample_query":[],"sample_body":{"_example":"按接口说明填写请求体"}},{"method":"DELETE","path":"\/api\/emoji\/admin\/packs\/{id}","description":"强制删除表情包（含文件）","feature":"im.emoji.manage","fields":[],"sample_path_params":{"id":1},"sample_query":[],"sample_body":[]},{"method":"DELETE","path":"\/api\/emoji\/admin\/items\/{id}","description":"删除单个表情项","feature":"im.emoji.manage","fields":[],"sample_path_params":{"id":1},"sample_query":[],"sample_body":[]},{"method":"GET","path":"\/api\/clients\/{id}\/emoji-gallery","description":"表情包图库绑定","feature":"im.emoji.manage","fields":[],"sample_path_params":{"id":1},"sample_query":{"page":1,"page_size":20},"sample_body":[]},{"method":"PUT","path":"\/api\/clients\/{id}\/emoji-gallery","description":"保存表情包图库绑定（可回填相册）","feature":"im.emoji.manage","fields":["gallery_id","enabled?","backfill?"],"sample_path_params":{"id":1},"sample_query":[],"sample_body":{"gallery_id":1,"enabled":1,"backfill":"示例值"}}]}]},{"major":"emoji_app","title":"表情包（用户侧）","description":"用户 Bearer；上传需实名。文件 \/data\/emoji\/…","groups":[{"group":"表情库","items":[{"method":"GET","path":"\/api\/emoji\/packs","description":"表情包列表（仅已上架）","feature":"user_login_token?","fields":["page?","page_size?","keyword?","sort?"],"sample_path_params":[],"sample_query":{"page":"示例值","page_size":"示例值","keyword":"示例值","sort":"示例值"},"sample_body":[]},{"method":"GET","path":"\/api\/emoji\/packs\/{id}","description":"表情包详情","feature":"user_login_token?","fields":[],"sample_path_params":{"id":1},"sample_query":{"page":1,"page_size":20},"sample_body":[]},{"method":"GET","path":"\/api\/emoji\/packs\/{id}\/items","description":"表情项列表","feature":"user_login_token?","fields":[],"sample_path_params":{"id":1},"sample_query":{"page":1,"page_size":20},"sample_body":[]},{"method":"PUT","path":"\/api\/emoji\/packs\/{id}","description":"作者更新包资料 name?\/description?\/cover?","feature":"user_login_token","fields":["name?","description?","cover?"],"sample_path_params":{"id":1},"sample_query":[],"sample_body":{"name":"示例名称","description":"示例内容","cover":"示例值"}},{"method":"POST","path":"\/api\/emoji\/cover","description":"上传封面","feature":"user_login_token+realname","fields":["file"],"sample_path_params":[],"sample_query":[],"sample_body":{"file":"示例值"}},{"method":"POST","path":"\/api\/emoji\/packs\/upload","description":"批量上传表情（新建或 pack_id 追加；files[] 多图）","feature":"user_login_token+realname","fields":["name?","description?","cover?","pack_id?","files[]"],"sample_path_params":[],"sample_query":[],"sample_body":{"name":"示例名称","description":"示例内容","cover":"示例值","pack_id":1,"files":["示例值"]}},{"method":"POST","path":"\/api\/emoji\/packs\/{id}\/download","description":"下载\/领取表情包","feature":"user_login_token","fields":[],"sample_path_params":{"id":1},"sample_query":[],"sample_body":{"_example":"按接口说明填写请求体"}},{"method":"POST","path":"\/api\/emoji\/packs\/{id}\/like","description":"点赞切换","feature":"user_login_token","fields":[],"sample_path_params":{"id":1},"sample_query":[],"sample_body":{"_example":"按接口说明填写请求体"}},{"method":"DELETE","path":"\/api\/emoji\/packs\/{id}","description":"作者删除自己的表情包","feature":"user_login_token","fields":[],"sample_path_params":{"id":1},"sample_query":[],"sample_body":[]},{"method":"DELETE","path":"\/api\/emoji\/items\/{id}","description":"作者删除包内单个表情","feature":"user_login_token","fields":[],"sample_path_params":{"id":1},"sample_query":[],"sample_body":[]},{"method":"GET","path":"\/api\/emoji\/packs\/my","description":"我下载的","feature":"user_login_token","fields":[],"sample_path_params":[],"sample_query":{"page":1,"page_size":20},"sample_body":[]},{"method":"GET","path":"\/api\/emoji\/packs\/my-uploads","description":"我上传的","feature":"user_login_token","fields":[],"sample_path_params":[],"sample_query":{"page":1,"page_size":20},"sample_body":[]},{"method":"GET","path":"\/api\/emoji\/items\/{id}\/token","description":"获取 render token","feature":"user_login_token","fields":[],"sample_path_params":{"id":1},"sample_query":{"page":1,"page_size":20},"sample_body":[]},{"method":"GET","path":"\/api\/emoji\/render","description":"按 token 输出图片","feature":"render_token","fields":["token"],"sample_path_params":[],"sample_query":{"token":"示例值"},"sample_body":[]}]}]},{"major":"im_ws","title":"即时通讯（WebSocket）","description":"客户端默认 ws:\/\/{host}:7272（见 IM 设置 im_ws_client_url）。Register 默认 127.0.0.1:1236。发消息仍走 HTTP；WS 只负责鉴权绑定 uid 与实时下行。Windows 启动见 im_ws\/start_windows.bat。","groups":[{"group":"协议","items":[{"method":"WS","path":"ws:\/\/{host}:7272","description":"连接后首包鉴权 {\"type\":\"auth\",\"token\":\"<user_token>\"}；心跳 ping\/pong；下行 message.new \/ message.recall \/ conversation.read \/ conversation.updated \/ conversation.removed \/ friend.updated \/ friend.removed \/ group.updated \/ presence \/ error","feature":"user_login_token","fields":[],"sample_path_params":{"host":"demo"},"sample_query":[],"sample_body":{"_example":"按接口说明填写请求体"}}]}]}],"groups":[{"group":"认证","items":[{"method":"POST","path":"\/api\/auth\/adminLogin","description":"管理员登录","feature":"public","fields":["username","password"],"sample_path_params":[],"sample_query":[],"sample_body":{"username":"示例名称","password":"示例值"}},{"method":"POST","path":"\/api\/auth\/userLogin","description":"业务用户登录（用户名或邮箱 + 密码）","feature":"public","fields":["username|email|account","password"],"sample_path_params":[],"sample_query":[],"sample_body":{"username|email|account":"示例名称","password":"示例值"}},{"method":"POST","path":"\/api\/auth\/qqLogin","description":"QQ 互联登录（已绑定直接登录；未绑定返回 need_bind）","feature":"public","fields":["access_token","openid"],"sample_path_params":[],"sample_query":[],"sample_body":{"access_token":"示例值","openid":1}},{"method":"POST","path":"\/api\/auth\/qqRegister","description":"QQ 未绑定：注册新账号并绑定","feature":"public","fields":["access_token","openid","username","password","email","email_code","ckid?","nickname?"],"sample_path_params":[],"sample_query":[],"sample_body":{"access_token":"示例值","openid":1,"username":"示例名称","password":"示例值","email":"示例值","email_code":"1001","ckid":1,"nickname":"示例名称"}},{"method":"POST","path":"\/api\/auth\/qqBindAccount","description":"QQ 未绑定：绑定已有账号后登录","feature":"public","fields":["access_token","openid","username|email|account","password"],"sample_path_params":[],"sample_query":[],"sample_body":{"access_token":"示例值","openid":1,"username|email|account":"示例名称","password":"示例值"}},{"method":"POST","path":"\/api\/auth\/qqBind","description":"已登录用户绑定 QQ","feature":"user_login_token","fields":["access_token","openid"],"sample_path_params":[],"sample_query":[],"sample_body":{"access_token":"示例值","openid":1}},{"method":"POST","path":"\/api\/auth\/qqUnbind","description":"已登录用户解绑 QQ","feature":"user_login_token","fields":[],"sample_path_params":[],"sample_query":[],"sample_body":{"_example":"按接口说明填写请求体"}},{"method":"POST","path":"\/api\/auth\/userRegister","description":"业务用户注册（必须携带 ckid\/public_id\/client_key 绑定客户端；可附带邮箱\/昵称\/头像\/QQ）","feature":"public","fields":["username","password","ckid|public_id|client_key","email?","nickname?","avatar?","qq?"],"sample_path_params":[],"sample_query":[],"sample_body":{"username":"示例名称","password":"示例值","ckid|public_id|client_key":1,"email":"示例值","nickname":"示例名称","avatar":"https:\/\/example.com\/demo.png","qq":"示例值"}},{"method":"POST","path":"\/api\/auth\/clientExchange","description":"客户端凭据换取 Bearer Token（public_id+secret）","feature":"public","fields":["public_id|client_key","secret|client_secret"],"sample_path_params":[],"sample_query":[],"sample_body":{"public_id|client_key":1,"secret|client_secret":"示例值"}},{"method":"PUT","path":"\/api\/auth\/updateProfile","description":"业务用户修改资料（需 user token）","feature":"user_login_token","fields":["email?","nickname?","avatar?","qq?"],"sample_path_params":[],"sample_query":[],"sample_body":{"email":"示例值","nickname":"示例名称","avatar":"https:\/\/example.com\/demo.png","qq":"示例值"}},{"method":"POST","path":"\/api\/auth\/avatarUpload","description":"业务用户上传头像（multipart: file）","feature":"user_login_token","fields":["file"],"sample_path_params":[],"sample_query":[],"sample_body":{"file":"示例值"}},{"method":"POST","path":"\/api\/auth\/realname\/verify","description":"二要素实名认证（姓名+身份证号；服务端代请求 \/api\/v1\/idenAuthentication.php，前端不暴露 appcode）。调用三方前会先做本地校验：name 仅支持 2-20 位中文\/英文，idNo 必须 18 位且校验位正确；未通过则直接 422，不会触发三方计费请求。三方 JSON：code 为调用状态码（与实名成败无关）；result=1 认证成功，result=0 失败（见 message）。","feature":"user_login_token","fields":["name","idNo"],"sample_path_params":[],"sample_query":[],"sample_body":{"name":"示例名称","idNo":"110101199001011234"}},{"method":"GET","path":"\/api\/share\/qr\/friend","description":"我的好友分享码（返回 qr_content，App 本地画 QR；不下发图片）","feature":"user_login_token","fields":["refresh?"],"sample_path_params":[],"sample_query":{"refresh":"示例值"},"sample_body":[]},{"method":"GET","path":"\/api\/share\/qr\/pack\/{id}","description":"资源包分享码（id 或 pack_code）","feature":"user_login_token","fields":[],"sample_path_params":{"id":1},"sample_query":{"page":1,"page_size":20},"sample_body":[]},{"method":"GET","path":"\/api\/share\/qr\/note\/{id}","description":"笔记分享码（仅已发布公开）","feature":"user_login_token","fields":[],"sample_path_params":{"id":1},"sample_query":{"page":1,"page_size":20},"sample_body":[]},{"method":"GET","path":"\/api\/share\/qr\/group\/{id}","description":"群聊分享码（须为群成员）","feature":"user_login_token","fields":[],"sample_path_params":{"id":1},"sample_query":{"page":1,"page_size":20},"sample_body":[]},{"method":"GET","path":"\/api\/share\/resolve","description":"解析分享码（登录）","feature":"user_login_token","fields":["t","c"],"sample_path_params":[],"sample_query":{"t":"示例值","c":"示例值"},"sample_body":[]},{"method":"GET","path":"\/api\/share\/public\/resolve","description":"解析分享码（公开脱敏，H5）","feature":"public","fields":["t","c"],"sample_path_params":[],"sample_query":{"t":"示例值","c":"示例值"},"sample_body":[]}],"major":"admin","major_title":"管理后台与账号"},{"group":"系统与权限","items":[{"method":"GET","path":"\/api\/features","description":"功能项列表","feature":"admin.assign_permissions","fields":[],"sample_path_params":[],"sample_query":{"page":1,"page_size":20},"sample_body":[]},{"method":"GET","path":"\/api\/admins","description":"管理员列表","feature":"admin.list","fields":[],"sample_path_params":[],"sample_query":{"page":1,"page_size":20},"sample_body":[]},{"method":"GET","path":"\/api\/admins\/{id}\/permissions","description":"读取管理员权限","feature":"admin.assign_permissions","fields":[],"sample_path_params":{"id":1},"sample_query":{"page":1,"page_size":20},"sample_body":[]},{"method":"PUT","path":"\/api\/admins\/{id}\/permissions","description":"保存管理员权限","feature":"admin.assign_permissions","fields":[],"sample_path_params":{"id":1},"sample_query":[],"sample_body":{"feature_keys":["client.list","client.update","audit_log.list"]}},{"method":"GET","path":"\/api\/system\/updates","description":"系统迁移脚本列表","feature":"system.update","fields":[],"sample_path_params":[],"sample_query":{"page":1,"page_size":20},"sample_body":[]},{"method":"POST","path":"\/api\/system\/updates\/apply","description":"执行迁移脚本","feature":"system.update","fields":["name"],"sample_path_params":[],"sample_query":[],"sample_body":{"name":"示例名称"}},{"method":"GET","path":"\/api\/system\/settings","description":"读取系统设置。响应 data：system_name、system_logo、system_favicon、api_require_token、realname_appcode（服务端实名认证配置）；资源包评论防刷 rp_comment_cooldown_sec（同用户最短间隔秒，0=关闭）、rp_comment_burst_max（滑动窗口内最大条数，0=关闭）、rp_comment_burst_window_sec（窗口秒数，与 burst_max 配套，默认展示 300）。需管理员 Token，具备 system.set_name \/ set_logo \/ set_favicon \/ system.update 之一可读。","feature":"system.set_name","fields":[],"sample_path_params":[],"sample_query":{"page":1,"page_size":20},"sample_body":[]},{"method":"PUT","path":"\/api\/system\/settings","description":"保存系统设置（仅提交需要修改的字段）。权限：system_name→system.set_name；logo\/favicon→对应权限；api_require_token、realname_appcode 与 rp_comment_*→system.update。realname_appcode 仅保存在服务端，用于实名认证接口代请求；客户端不需要也不应上传此值。rp_comment_cooldown_sec 范围 0～3600；rp_comment_burst_max 范围 0～500；rp_comment_burst_window_sec 范围 10～86400。","feature":"system.set_name","fields":["system_name?","system_logo?","system_favicon?","api_require_token?","realname_appcode?","rp_comment_cooldown_sec?","rp_comment_burst_max?","rp_comment_burst_window_sec?"],"sample_path_params":[],"sample_query":[],"sample_body":{"system_name":"示例名称","system_logo":"https:\/\/example.com\/demo.png","system_favicon":"https:\/\/example.com\/demo.png","api_require_token":"示例值","realname_appcode":"示例名称","rp_comment_cooldown_sec":15,"rp_comment_burst_max":15,"rp_comment_burst_window_sec":15}},{"method":"POST","path":"\/api\/system\/settings\/upload","description":"上传系统图标（logo\/favicon）","feature":"system.set_logo","fields":["kind","file"],"sample_path_params":[],"sample_query":[],"sample_body":{"kind":"示例值","file":"示例值"}},{"method":"GET","path":"\/api\/audit-logs","description":"审计日志列表","feature":"audit_log.list","fields":[],"sample_path_params":[],"sample_query":{"page":1,"page_size":20,"actor_type":"admin","action":"client.update","client_id":1,"success":1},"sample_body":[]},{"method":"GET","path":"\/api\/audit-logs\/settings","description":"审计日志设置（保留天数）","feature":"audit_log.list","fields":[],"sample_path_params":[],"sample_query":{"page":1,"page_size":20},"sample_body":[]},{"method":"PUT","path":"\/api\/audit-logs\/settings","description":"保存审计日志保留天数","feature":"audit_log.list","fields":["retention_days"],"sample_path_params":[],"sample_query":[],"sample_body":{"retention_days":"示例值"}},{"method":"POST","path":"\/api\/audit-logs\/cleanup","description":"立即按保留时长清理审计日志","feature":"audit_log.list","fields":[],"sample_path_params":[],"sample_query":[],"sample_body":{"_example":"按接口说明填写请求体"}},{"method":"GET","path":"\/api\/stats\/overview","description":"数据统计面板（DAU\/WAU\/MAU、登录、IM、待审、用户\/审计趋势）","feature":"user.list","fields":[],"sample_path_params":[],"sample_query":{"page":1,"page_size":20},"sample_body":[]},{"method":"GET","path":"\/api\/users","description":"业务用户列表","feature":"user.list","fields":[],"sample_path_params":[],"sample_query":{"page":1,"page_size":20},"sample_body":[]},{"method":"POST","path":"\/api\/users\/{id}\/realname\/refresh","description":"管理员代用户执行二要素实名认证（需提交 name、idNo）。调用三方前同样先做本地格式校验（失败直接 422，不计费）。该接口会覆写该用户最近实名状态（realname_passed \/ realname_message \/ realname_checked_at）。","feature":"user.update","fields":["name","idNo"],"sample_path_params":{"id":1},"sample_query":[],"sample_body":{"name":"示例名称","idNo":"110101199001011234"}}],"major":"admin","major_title":"管理后台与账号"},{"group":"客户端（账号侧）","items":[{"method":"GET","path":"\/api\/clients","description":"客户端列表","feature":"client.list","fields":[],"sample_path_params":[],"sample_query":{"page":1,"page_size":20},"sample_body":[]},{"method":"POST","path":"\/api\/clients","description":"创建客户端","feature":"client.create","fields":["name","icon?"],"sample_path_params":[],"sample_query":[],"sample_body":{"name":"示例名称","icon":"https:\/\/example.com\/demo.png"}},{"method":"POST","path":"\/api\/clients\/setAdmins","description":"设置客户端管理员","feature":"client.user_admin.manage","fields":["client_id","user_ids[]"],"sample_path_params":[],"sample_query":[],"sample_body":{"client_id":1,"user_ids":[1]}},{"method":"GET","path":"\/api\/clients\/{id}","description":"客户端详情","feature":"client.read","fields":[],"sample_path_params":{"id":1},"sample_query":{"page":1,"page_size":20},"sample_body":[]},{"method":"PUT","path":"\/api\/clients\/{id}","description":"更新客户端","feature":"client.update","fields":[],"sample_path_params":{"id":1},"sample_query":[],"sample_body":{"_example":"按接口说明填写请求体"}},{"method":"DELETE","path":"\/api\/clients\/{id}","description":"删除客户端","feature":"client.delete","fields":[],"sample_path_params":{"id":1},"sample_query":[],"sample_body":[]},{"method":"POST","path":"\/api\/clients\/{id}\/reset","description":"重置客户端凭据","feature":"client.reset","fields":[],"sample_path_params":{"id":1},"sample_query":[],"sample_body":{"_example":"按接口说明填写请求体"}}],"major":"admin","major_title":"管理后台与账号"},{"group":"App 公共读（客户端密钥）","items":[{"method":"GET","path":"\/api\/app\/config","description":"App 基础信息（强更、最高版本号、下载页、官方联系方式页 URL 等）","feature":"client_bearer","fields":[],"sample_path_params":[],"sample_query":{"page":1,"page_size":20},"sample_body":[]},{"method":"GET","path":"\/api\/app\/version\/latest","description":"最新版本信息（单条 + 客户端版本摘要；无发布版本时 version 为 null）","feature":"client_bearer","fields":[],"sample_path_params":[],"sample_query":{"page":1,"page_size":20},"sample_body":[]},{"method":"POST","path":"\/api\/app\/telemetry\/version","description":"上报当前版本（install_id + version_code；可选 version_name\/user_id\/device_model\/os_version）","feature":"client_bearer","fields":["install_id","version_code","version_name?","user_id?","device_model?","os_version?"],"sample_path_params":[],"sample_query":[],"sample_body":{"install_id":1,"version_code":"1001","version_name":"示例名称","user_id":1,"device_model":"示例值","os_version":1}},{"method":"GET","path":"\/api\/app\/versions","description":"版本列表（含安装包页链接）","feature":"client_bearer","fields":[],"sample_path_params":[],"sample_query":{"page":1,"page_size":20},"sample_body":[]},{"method":"GET","path":"\/api\/app\/announcements","description":"公告列表","feature":"client_bearer","fields":[],"sample_path_params":[],"sample_query":{"page":1,"page_size":20},"sample_body":[]},{"method":"GET","path":"\/api\/app\/roles","description":"团队\/角色列表（与管理端列表字段一致；仅未隐藏）","feature":"client_bearer","fields":[],"sample_path_params":[],"sample_query":{"page":1,"page_size":20},"sample_body":[]},{"method":"GET","path":"\/api\/app\/officialContacts","description":"官方联系方式（仅未隐藏；qq_group 含群名\/群号\/key、qq_join_web_url、qq_join_android_intent_url、WPA 按钮图 URL）","feature":"client_bearer","fields":[],"sample_path_params":[],"sample_query":{"page":1,"page_size":20},"sample_body":[]},{"method":"GET","path":"\/api\/app\/banners","description":"轮播图（仅未隐藏）","feature":"client_bearer","fields":[],"sample_path_params":[],"sample_query":{"page":1,"page_size":20},"sample_body":[]},{"method":"GET","path":"\/api\/app\/linkSet","description":"链接集与链接（仅未隐藏，支持分页：page、page_size）","feature":"client_bearer","fields":["page?","page_size?"],"sample_path_params":[],"sample_query":{"page":"示例值","page_size":"示例值"},"sample_body":[]},{"method":"GET","path":"\/api\/app\/public\/linkSet","description":"APP 公共链接集读取（免 bearer，按 query: public_id\/client_public_id，支持分页：page、page_size）","feature":"public","fields":["public_id?","client_public_id?","page?","page_size?"],"sample_path_params":[],"sample_query":{"public_id":1,"client_public_id":1,"page":"示例值","page_size":"示例值"},"sample_body":[]},{"method":"GET","path":"\/api\/app\/galleries","description":"图库列表","feature":"client_bearer","fields":[],"sample_path_params":[],"sample_query":{"page":1,"page_size":20},"sample_body":[]},{"method":"GET","path":"\/api\/app\/galleries\/{galleryId}\/albums","description":"某图库下相册列表","feature":"client_bearer","fields":["galleryId"],"sample_path_params":{"galleryId":1},"sample_query":{"galleryId":1},"sample_body":[]},{"method":"GET","path":"\/api\/app\/galleries\/{galleryId}\/albums\/{albumId}\/photos","description":"相册照片列表","feature":"client_bearer","fields":["galleryId","albumId"],"sample_path_params":{"galleryId":1,"albumId":1},"sample_query":{"galleryId":1,"albumId":1},"sample_body":[]},{"method":"GET","path":"\/api\/app\/resources","description":"热更资源文件树（目录下列表）","feature":"client_bearer","fields":["parent_id?"],"sample_path_params":[],"sample_query":{"parent_id":1},"sample_body":[]},{"method":"GET","path":"\/api\/app\/academies\/listVersion","description":"学院列表版本号（仅 academy_list_version，轻量轮询）","feature":"client_bearer","fields":[],"sample_path_params":[],"sample_query":{"page":1,"page_size":20},"sample_body":[]},{"method":"GET","path":"\/api\/app\/academies","description":"学院列表（默认按后台 academy_list_sort；可传 order=asc|desc 覆盖；含 sort_order）","feature":"client_bearer","fields":["order?"],"sample_path_params":[],"sample_query":{"order":"示例值"},"sample_body":[]},{"method":"GET","path":"\/api\/app\/academies\/{code}","description":"学院详情：路径 {code} 为学院代号（与列表 data[].code 一致），勿填主键 id","feature":"client_bearer","fields":[],"sample_path_params":{"code":"Abydos"},"sample_query":{"page":1,"page_size":20},"sample_body":[]},{"method":"GET","path":"\/api\/app\/academies\/{code}\/students","description":"学生列表：同上，按学院 code 定位","feature":"client_bearer","fields":["order?"],"sample_path_params":{"code":"Abydos"},"sample_query":{"order":"示例值"},"sample_body":[]},{"method":"GET","path":"\/api\/app\/academies\/{code}\/students\/{studentCode}\/package","description":"下载学生资源包（本地文件直下；外链资源 302 跳转）","feature":"client_bearer","fields":[],"sample_path_params":{"code":"Abydos","studentCode":"demo"},"sample_query":{"page":1,"page_size":20},"sample_body":[]},{"method":"GET","path":"\/api\/app\/store\/userPacks","description":"资源商城上架包（已审核通过且上架）","feature":"client_bearer","fields":["page","page_size","q","user_id","sort=random|newest|hot|downloads（recommend 同 random）","seed（sort=random 时必填，确定性乱序）"],"sample_path_params":[],"sample_query":{"page":"示例值","page_size":"示例值","q":"示例值","user_id":1,"sort=random|newest|hot|downloads（recommend 同 random）":"示例值","seed（sort=random 时必填，确定性乱序）":"示例值"},"sample_body":[]},{"method":"GET","path":"\/api\/app\/store\/userPacks\/contentStatus","description":"批量查询已上架商城包内容版本（ids=1,2,3）","feature":"client_bearer","fields":["ids"],"sample_path_params":[],"sample_query":{"ids":1},"sample_body":[]},{"method":"GET","path":"\/api\/app\/store\/userPacks\/{packId}\/download","description":"下载资源商城资源包（仅当前客户端已审核通过且上架）","feature":"client_bearer","fields":[],"sample_path_params":{"packId":1},"sample_query":{"page":1,"page_size":20},"sample_body":[]},{"method":"GET","path":"\/api\/app\/gpt-sovits\/env-pack","description":"GPT-SoVITS：本体下载链接 + 环境包地址\/密码(AES-GCM)\/MD5","feature":"client_bearer","fields":[],"sample_path_params":[],"sample_query":{"page":1,"page_size":20},"sample_body":[]}],"major":"client_app","major_title":"客户端对接 API"},{"group":"业务用户资源包投稿","items":[{"method":"GET","path":"\/api\/resource-packs","description":"业务用户资源包列表（普通业务用户只查本人，勿传 user_id\/client_id；仅「客户端管理员」可传 user_id 查他人。管理员须 client_id，或仅传 user_id 推断 client_id）","feature":"user_login_token","fields":["client_id?","user_id?"],"sample_path_params":[],"sample_query":{"client_id":1,"user_id":1},"sample_body":[]},{"method":"POST","path":"\/api\/resource-packs\/upload","description":"上传资源包（multipart: file，可选 cover\/cover_image；普通业务用户需先实名认证通过）","feature":"user_login_token","fields":["pack_name?","pack_code?","introduction?","user_id?","file","cover?"],"sample_path_params":[],"sample_query":[],"sample_body":{"pack_name":"示例名称","pack_code":"1001","introduction":"示例内容","user_id":1,"file":"示例值","cover":"示例值"}},{"method":"GET","path":"\/api\/resource-packs\/{packId}","description":"读取资源包详情（本人\/管理员\/已上架可读）","feature":"user_login_token","fields":[],"sample_path_params":{"packId":1},"sample_query":{"page":1,"page_size":20},"sample_body":[]},{"method":"PUT","path":"\/api\/resource-packs\/{packId}","description":"更新资源包元数据（名称\/code\/简介；审核中或已上架须先下架。可传 store_listed=0 下架）","feature":"user_login_token","fields":["pack_name?","pack_code?","introduction?","store_listed?"],"sample_path_params":{"packId":1},"sample_query":[],"sample_body":{"pack_name":"示例名称","pack_code":"1001","introduction":"示例内容","store_listed":1}},{"method":"POST","path":"\/api\/resource-packs\/{packId}\/replace","description":"替换资源包文件（multipart: file；审核中或已上架不可换文件，须先下架）","feature":"user_login_token","fields":["file","pack_name?","pack_code?"],"sample_path_params":{"packId":1},"sample_query":[],"sample_body":{"file":"示例值","pack_name":"示例名称","pack_code":"1001"}},{"method":"POST","path":"\/api\/resource-packs\/{packId}\/cover","description":"单独上传资源包封面（multipart: cover|cover_image）","feature":"user_login_token","fields":["cover|cover_image"],"sample_path_params":{"packId":1},"sample_query":[],"sample_body":{"cover|cover_image":"示例值"}},{"method":"PUT","path":"\/api\/resource-packs\/{packId}\/submit-review","description":"提交资源包审核","feature":"user_login_token","fields":[],"sample_path_params":{"packId":1},"sample_query":[],"sample_body":{"_example":"按接口说明填写请求体"}},{"method":"POST","path":"\/api\/resource-packs\/{packId}\/view","description":"资源包浏览量 +1（仅业务用户、同客户端、已审核且已上架）。成功 200 JSON：ok、pack_id、view_count、like_count、comment_count、liked（bool，当前用户是否已点赞该包）。403 非业务用户或未绑定客户端；404 未上架或不存在。","feature":"user_login_token","fields":[],"sample_path_params":{"packId":1},"sample_query":[],"sample_body":{"_example":"按接口说明填写请求体"}},{"method":"PUT","path":"\/api\/resource-packs\/{packId}\/like","description":"点赞资源包（重复点赞幂等）","feature":"user_login_token","fields":[],"sample_path_params":{"packId":1},"sample_query":[],"sample_body":{"_example":"按接口说明填写请求体"}},{"method":"DELETE","path":"\/api\/resource-packs\/{packId}\/like","description":"取消点赞（重复取消幂等）","feature":"user_login_token","fields":[],"sample_path_params":{"packId":1},"sample_query":[],"sample_body":[]},{"method":"GET","path":"\/api\/resource-packs\/{packId}\/comments","description":"资源包评论列表（分页）","feature":"user_login_token","fields":["page?","page_size?"],"sample_path_params":{"packId":1},"sample_query":{"page":"示例值","page_size":"示例值"},"sample_body":[]},{"method":"POST","path":"\/api\/resource-packs\/{packId}\/comments","description":"发表评论。请求体 JSON：content（必填，trim 后非空，≤1000 字，且需已实名认证）。成功 200：ok、comment_count、data{id,pack_id,user_id,username,content,created_at,updated_at}。422 内容校验失败。429 防刷：未满足管理端配置的「最短间隔」或「窗口内条数上限」，message 为「评论过于频繁，请稍后再试」或「评论次数过多，请稍后再试」。","feature":"user_login_token","fields":["content"],"sample_path_params":{"packId":1},"sample_query":[],"sample_body":{"content":"示例内容"}},{"method":"DELETE","path":"\/api\/resource-packs\/{packId}\/comments\/{commentId}","description":"删除评论（评论作者\/资源包作者\/客户端管理员）","feature":"user_login_token","fields":[],"sample_path_params":{"packId":1,"commentId":1},"sample_query":[],"sample_body":[]},{"method":"DELETE","path":"\/api\/resource-packs\/{packId}","description":"删除资源包","feature":"user_login_token","fields":[],"sample_path_params":{"packId":1},"sample_query":[],"sample_body":[]},{"method":"GET","path":"\/api\/resource-packs\/{packId}\/download","description":"下载资源包（路径支持包 id 或 pack_code；本人\/管理员\/已上架可下）","feature":"user_login_token","fields":[],"sample_path_params":{"packId":1},"sample_query":{"page":1,"page_size":20},"sample_body":[]}],"major":"client_app","major_title":"客户端对接 API"},{"group":"业务用户图廊","items":[{"method":"GET","path":"\/api\/user\/corridor","description":"图廊信息（是否启用、绑定 gallery_id、feed_sort）；须用户 Token 且已绑定客户端","feature":"user_login_token","fields":[],"sample_path_params":[],"sample_query":{"page":1,"page_size":20},"sample_body":[]},{"method":"GET","path":"\/api\/user\/corridor\/feed","description":"图廊动态（排序：asc|desc|random；random 时由 App 传 seed，同 seed 分页稳定不重样）","feature":"user_login_token","fields":["page?","page_size?","tag?","q?","seed?"],"sample_path_params":[],"sample_query":{"page":"示例值","page_size":"示例值","tag":"示例值","q":"示例值","seed":"示例值"},"sample_body":[]},{"method":"GET","path":"\/api\/user\/corridor\/my-album","description":"我的个人相册（自动创建；含待审\/已上廊\/已驳回；含 tags_text、author）","feature":"user_login_token","fields":[],"sample_path_params":[],"sample_query":{"page":1,"page_size":20},"sample_body":[]},{"method":"GET","path":"\/api\/user\/corridor\/tags","description":"本客户端图廊标签列表（纯名称，展示时加 #）","feature":"user_login_token","fields":[],"sample_path_params":[],"sample_query":{"page":1,"page_size":20},"sample_body":[]},{"method":"POST","path":"\/api\/user\/corridor\/photos\/upload","description":"批量上传到个人相册（multipart: files[] 或 file；可选 title、tags，tags 可带 #；自动缩略图；进待审上廊）","feature":"user_login_token","fields":["files[]|file","title?","tags?"],"sample_path_params":[],"sample_query":[],"sample_body":{"files[]|file":"示例值","title":"示例标题","tags":"示例值"}},{"method":"PUT","path":"\/api\/user\/corridor\/photos\/{photoId}","description":"更新我的照片标题\/标签","feature":"user_login_token","fields":["title?","tags?"],"sample_path_params":{"photoId":1},"sample_query":[],"sample_body":{"title":"示例标题","tags":"示例值"}},{"method":"GET","path":"\/api\/user\/corridor\/photos\/{photoId}\/download","description":"下载原图（本人任意状态；他人仅已上廊）","feature":"user_login_token","fields":[],"sample_path_params":{"photoId":1},"sample_query":{"page":1,"page_size":20},"sample_body":[]}],"major":"client_app","major_title":"客户端对接 API"},{"group":"业务用户图文笔记","items":[{"method":"GET","path":"\/api\/user\/notes\/config","description":"笔记配置（是否启用、先审、引用策略）","feature":"user_login_token","fields":[],"sample_path_params":[],"sample_query":{"page":1,"page_size":20},"sample_body":[]},{"method":"GET","path":"\/api\/user\/notes\/feed","description":"发现 Feed（已发布公开笔记；sort=newest|random|hottest|featured|official）","feature":"user_login_token","fields":["page?","page_size?","topic?","q?","sort?","seed?"],"sample_path_params":[],"sample_query":{"page":"示例值","page_size":"示例值","topic":"示例值","q":"示例值","sort":"示例值","seed":"示例值"},"sample_body":[]},{"method":"GET","path":"\/api\/user\/notes\/mine","description":"我的笔记（含草稿\/待审\/驳回）","feature":"user_login_token","fields":["status?","page?","page_size?"],"sample_path_params":[],"sample_query":{"status":"示例值","page":"示例值","page_size":"示例值"},"sample_body":[]},{"method":"GET","path":"\/api\/user\/notes\/picker\/corridor","description":"选择器：已上廊图廊照片","feature":"user_login_token","fields":["page?","page_size?","tag?","q?"],"sample_path_params":[],"sample_query":{"page":"示例值","page_size":"示例值","tag":"示例值","q":"示例值"},"sample_body":[]},{"method":"GET","path":"\/api\/user\/notes\/picker\/albums","description":"选择器：可读相册列表","feature":"user_login_token","fields":[],"sample_path_params":[],"sample_query":{"page":1,"page_size":20},"sample_body":[]},{"method":"GET","path":"\/api\/user\/notes\/picker\/albums\/{albumId}\/photos","description":"选择器：相册内照片","feature":"user_login_token","fields":["page?","page_size?"],"sample_path_params":{"albumId":1},"sample_query":{"page":"示例值","page_size":"示例值"},"sample_body":[]},{"method":"GET","path":"\/api\/user\/notes\/picker\/store-packs","description":"选择器：商城已上架资源包","feature":"user_login_token","fields":["page?","page_size?","q?"],"sample_path_params":[],"sample_query":{"page":"示例值","page_size":"示例值","q":"示例值"},"sample_body":[]},{"method":"GET","path":"\/api\/user\/notes\/picker\/academy-packs","description":"选择器：官方=学院学生资源包","feature":"user_login_token","fields":["page?","page_size?","q?","academy_code?","academy_id?"],"sample_path_params":[],"sample_query":{"page":"示例值","page_size":"示例值","q":"示例值","academy_code":"1001","academy_id":1},"sample_body":[]},{"method":"POST","path":"\/api\/user\/notes\/media\/upload","description":"本机上传到笔记（不写图廊；返回 upload_id）","feature":"user_login_token","fields":["files[]|file"],"sample_path_params":[],"sample_query":[],"sample_body":{"files[]|file":"示例值"}},{"method":"GET","path":"\/api\/user\/topics","description":"话题搜索\/热门","feature":"user_login_token","fields":["q?","limit?"],"sample_path_params":[],"sample_query":{"q":"示例值","limit":"示例值"},"sample_body":[]},{"method":"POST","path":"\/api\/user\/notes","description":"创建笔记（draft|published；attachments 多态引用）","feature":"user_login_token","fields":["title","content?","status?","attachments?","topic_names?"],"sample_path_params":[],"sample_query":[],"sample_body":{"title":"示例标题","content":"示例内容","status":"示例值","attachments":"示例值","topic_names":"示例名称"}},{"method":"GET","path":"\/api\/user\/notes\/{id}","description":"笔记详情","feature":"user_login_token","fields":[],"sample_path_params":{"id":1},"sample_query":{"page":1,"page_size":20},"sample_body":[]},{"method":"PUT","path":"\/api\/user\/notes\/{id}","description":"更新笔记（draft\/pending\/published\/rejected；attachments 可传 attachment_id 保留原附件；本笔记 upload 可复用）","feature":"user_login_token","fields":["title?","content?","attachments?","topic_names?"],"sample_path_params":{"id":1},"sample_query":[],"sample_body":{"title":"示例标题","content":"示例内容","attachments":"示例值","topic_names":"示例名称"}},{"method":"DELETE","path":"\/api\/user\/notes\/{id}","description":"软删除笔记","feature":"user_login_token","fields":[],"sample_path_params":{"id":1},"sample_query":[],"sample_body":[]},{"method":"POST","path":"\/api\/user\/notes\/{id}\/publish","description":"发布草稿（可能进入 pending）","feature":"user_login_token","fields":[],"sample_path_params":{"id":1},"sample_query":[],"sample_body":{"_example":"按接口说明填写请求体"}},{"method":"POST","path":"\/api\/user\/notes\/{id}\/view","description":"浏览量 +1","feature":"user_login_token","fields":[],"sample_path_params":{"id":1},"sample_query":[],"sample_body":{"_example":"按接口说明填写请求体"}},{"method":"PUT","path":"\/api\/user\/notes\/{id}\/like","description":"点赞","feature":"user_login_token","fields":[],"sample_path_params":{"id":1},"sample_query":[],"sample_body":{"_example":"按接口说明填写请求体"}},{"method":"DELETE","path":"\/api\/user\/notes\/{id}\/like","description":"取消点赞","feature":"user_login_token","fields":[],"sample_path_params":{"id":1},"sample_query":[],"sample_body":[]},{"method":"GET","path":"\/api\/user\/notes\/{id}\/comments","description":"评论列表","feature":"user_login_token","fields":["page?","page_size?"],"sample_path_params":{"id":1},"sample_query":{"page":"示例值","page_size":"示例值"},"sample_body":[]},{"method":"POST","path":"\/api\/user\/notes\/{id}\/comments","description":"发表评论（需实名）","feature":"user_login_token","fields":["content"],"sample_path_params":{"id":1},"sample_query":[],"sample_body":{"content":"示例内容"}},{"method":"DELETE","path":"\/api\/user\/notes\/{id}\/comments\/{commentId}","description":"删除评论","feature":"user_login_token","fields":[],"sample_path_params":{"id":1,"commentId":1},"sample_query":[],"sample_body":[]}],"major":"client_app","major_title":"客户端对接 API"},{"group":"版本与热更资源","items":[{"method":"GET","path":"\/api\/clients\/{id}\/versions","description":"版本列表","feature":"client.version.list","fields":[],"sample_path_params":{"id":1},"sample_query":{"page":1,"page_size":20},"sample_body":[]},{"method":"POST","path":"\/api\/clients\/{id}\/versions","description":"发布版本（JSON 或 multipart；必填 version_name、version_code；文件字段 file，兼容 package_file）","feature":"client.version.create","fields":["version_name","version_code","changelog?","install_url?","file?"],"sample_path_params":{"id":1},"sample_query":[],"sample_body":{"version_name":"示例名称","version_code":"1001","changelog":"示例值","install_url":"https:\/\/example.com\/demo.png","file":"示例值"}},{"method":"GET","path":"\/api\/clients\/{id}\/versionTelemetry","description":"版本使用分布与更新率（query: days? 默认30）","feature":"client.version.list","fields":["days?"],"sample_path_params":{"id":1},"sample_query":{"days":"示例值"},"sample_body":[]},{"method":"PUT","path":"\/api\/clients\/{id}\/forceUpdate","description":"设置强更","feature":"client.version.force","fields":[],"sample_path_params":{"id":1},"sample_query":[],"sample_body":{"force_update_min_version_code":100}},{"method":"DELETE","path":"\/api\/clients\/{id}\/versions\/{versionId}","description":"删除版本","feature":"client.version.delete","fields":[],"sample_path_params":{"id":1,"versionId":1},"sample_query":[],"sample_body":[]},{"method":"GET","path":"\/api\/clients\/{id}\/resources","description":"更新资源列表","feature":"client_resource.list","fields":[],"sample_path_params":{"id":1},"sample_query":{"page":1,"page_size":20},"sample_body":[]},{"method":"POST","path":"\/api\/clients\/{id}\/resources\/mkdir","description":"新建资源目录","feature":"client_resource.create","fields":[],"sample_path_params":{"id":1},"sample_query":[],"sample_body":{"parent_id":0,"name":"新目录"}},{"method":"POST","path":"\/api\/clients\/{id}\/resources\/upload","description":"上传资源文件","feature":"client_resource.create","fields":[],"sample_path_params":{"id":1},"sample_query":[],"sample_body":{"parent_id":0,"resource_key":"assets\/demo.png","file":"<binary>"}},{"method":"DELETE","path":"\/api\/clients\/{id}\/resources\/{resourceId}","description":"删除资源","feature":"client_resource.delete","fields":[],"sample_path_params":{"id":1,"resourceId":1},"sample_query":[],"sample_body":[]}],"major":"client_app","major_title":"客户端对接 API"},{"group":"公告与展示","items":[{"method":"GET","path":"\/api\/clients\/{id}\/announcements","description":"公告列表","feature":"announcement.list","fields":[],"sample_path_params":{"id":1},"sample_query":{"page":1,"page_size":20},"sample_body":[]},{"method":"POST","path":"\/api\/clients\/{id}\/announcements","description":"新建公告","feature":"announcement.create","fields":[],"sample_path_params":{"id":1},"sample_query":[],"sample_body":{"title":"系统公告","content":"今晚维护","created_by":"admin"}},{"method":"PUT","path":"\/api\/clients\/{id}\/announcements\/{announcementId}","description":"更新公告","feature":"announcement.update","fields":[],"sample_path_params":{"id":1,"announcementId":1},"sample_query":[],"sample_body":{"title":"系统公告","content":"今晚维护","created_by":"admin"}},{"method":"DELETE","path":"\/api\/clients\/{id}\/announcements\/{announcementId}","description":"删除公告","feature":"announcement.delete","fields":[],"sample_path_params":{"id":1,"announcementId":1},"sample_query":[],"sample_body":[]},{"method":"GET","path":"\/api\/clients\/{id}\/notifications","description":"系统通知-用户收件箱记录","feature":"notification.list","fields":["user_id?","page?","page_size?"],"sample_path_params":{"id":1},"sample_query":{"user_id":1,"page":"示例值","page_size":"示例值"},"sample_body":[]},{"method":"POST","path":"\/api\/clients\/{id}\/notifications","description":"系统通知-发给指定用户（卡片）","feature":"notification.send","fields":["user_id","title","summary?","body?","category?","event?","action_type?","action_value?"],"sample_path_params":{"id":1},"sample_query":[],"sample_body":{"user_id":1,"title":"示例标题","summary":"示例值","body":"示例值","category":"示例值","event":"示例值","action_type":"示例值","action_value":"示例值"}},{"method":"DELETE","path":"\/api\/clients\/{id}\/notifications\/{nid}","description":"系统通知-删除个人通知（撤回）","feature":"notification.send","fields":[],"sample_path_params":{"id":1,"nid":1},"sample_query":[],"sample_body":[]},{"method":"GET","path":"\/api\/clients\/{id}\/notification-broadcasts","description":"系统通知-广播记录","feature":"notification.list","fields":["page?","page_size?"],"sample_path_params":{"id":1},"sample_query":{"page":"示例值","page_size":"示例值"},"sample_body":[]},{"method":"POST","path":"\/api\/clients\/{id}\/notification-broadcasts","description":"系统通知-发布广播","feature":"notification.broadcast","fields":["title","summary?","body?","category?","event?","action_type?","action_value?","expire_at?"],"sample_path_params":{"id":1},"sample_query":[],"sample_body":{"title":"示例标题","summary":"示例值","body":"示例值","category":"示例值","event":"示例值","action_type":"示例值","action_value":"示例值","expire_at":"示例值"}},{"method":"DELETE","path":"\/api\/clients\/{id}\/notification-broadcasts\/{bid}","description":"系统通知-删除广播（撤回）","feature":"notification.broadcast","fields":[],"sample_path_params":{"id":1,"bid":1},"sample_query":[],"sample_body":[]},{"method":"POST","path":"\/api\/clients\/{id}\/notification-broadcasts\/{bid}\/unpublish","description":"系统通知-下架广播","feature":"notification.broadcast","fields":[],"sample_path_params":{"id":1,"bid":1},"sample_query":[],"sample_body":{"_example":"按接口说明填写请求体"}},{"method":"GET","path":"\/api\/clients\/{id}\/banners","description":"轮播图列表","feature":"client_banner.list","fields":[],"sample_path_params":{"id":1},"sample_query":{"page":1,"page_size":20},"sample_body":[]},{"method":"POST","path":"\/api\/clients\/{id}\/banners","description":"新建轮播图","feature":"client_banner.create","fields":[],"sample_path_params":{"id":1},"sample_query":[],"sample_body":{"image_url":"https:\/\/example.com\/banner.png","title":"首页头图","subtitle":"副标题","target_url":"https:\/\/example.com","sort_order":1,"hidden":0}},{"method":"PUT","path":"\/api\/clients\/{id}\/banners\/{bannerId}","description":"更新轮播图","feature":"client_banner.update","fields":[],"sample_path_params":{"id":1,"bannerId":1},"sample_query":[],"sample_body":{"image_url":"https:\/\/example.com\/banner.png","title":"首页头图","subtitle":"副标题","target_url":"https:\/\/example.com","sort_order":1,"hidden":0}},{"method":"DELETE","path":"\/api\/clients\/{id}\/banners\/{bannerId}","description":"删除轮播图","feature":"client_banner.delete","fields":[],"sample_path_params":{"id":1,"bannerId":1},"sample_query":[],"sample_body":[]},{"method":"GET","path":"\/api\/clients\/{id}\/officialContacts","description":"官方联系方式列表","feature":"client_official_contact.list","fields":[],"sample_path_params":{"id":1},"sample_query":{"page":1,"page_size":20},"sample_body":[]},{"method":"POST","path":"\/api\/clients\/{id}\/officialContacts","description":"新建官方联系方式","feature":"client_official_contact.create","fields":[],"sample_path_params":{"id":1},"sample_query":[],"sample_body":{"contact_type":"qq_group","label":"官方联系方式","icon_url":"https:\/\/example.com\/qq.png","subtitle":"可选副标题","value_text":"","qq_group_key":"GgWSIin2XYIp-kTwXZKEctBzV1dVJgMn","qq_group_auth_key":"pQWfb7OtuaVUsXvqv8Uk8PiH8fTYrR5H6d0CdWwTqmZKfBUR8WNpvBdcb9tjrDnq","qq_group_number":"973976463","qq_group_name":"紧漫甜汤③","image_url":"","sort_order":0,"hidden":0}},{"method":"PUT","path":"\/api\/clients\/{id}\/officialContacts\/{contactId}","description":"更新官方联系方式","feature":"client_official_contact.update","fields":[],"sample_path_params":{"id":1,"contactId":1},"sample_query":[],"sample_body":{"contact_type":"qq_group","label":"官方联系方式","icon_url":"https:\/\/example.com\/qq.png","subtitle":"可选副标题","value_text":"","qq_group_key":"GgWSIin2XYIp-kTwXZKEctBzV1dVJgMn","qq_group_auth_key":"pQWfb7OtuaVUsXvqv8Uk8PiH8fTYrR5H6d0CdWwTqmZKfBUR8WNpvBdcb9tjrDnq","qq_group_number":"973976463","qq_group_name":"紧漫甜汤③","image_url":"","sort_order":0,"hidden":0}},{"method":"DELETE","path":"\/api\/clients\/{id}\/officialContacts\/{contactId}","description":"删除官方联系方式","feature":"client_official_contact.delete","fields":[],"sample_path_params":{"id":1,"contactId":1},"sample_query":[],"sample_body":[]},{"method":"GET","path":"\/api\/clients\/{id}\/roles","description":"团队\/角色列表（App 读接口：GET \/api\/app\/roles）","feature":"client_role.list","fields":[],"sample_path_params":{"id":1},"sample_query":{"page":1,"page_size":20},"sample_body":[]},{"method":"POST","path":"\/api\/clients\/{id}\/roles","description":"新建角色","feature":"client_role.create","fields":[],"sample_path_params":{"id":1},"sample_query":[],"sample_body":{"role_type":"developer","role_name":"开发者","nickname":"张三","avatar":"https:\/\/example.com\/avatar.png","hidden":0,"sort_order":1}},{"method":"PUT","path":"\/api\/clients\/{id}\/roles\/{roleId}","description":"更新角色","feature":"client_role.update","fields":[],"sample_path_params":{"id":1,"roleId":1},"sample_query":[],"sample_body":{"role_type":"developer","role_name":"开发者","nickname":"张三","avatar":"https:\/\/example.com\/avatar.png","hidden":0,"sort_order":1}},{"method":"DELETE","path":"\/api\/clients\/{id}\/roles\/{roleId}","description":"删除角色","feature":"client_role.delete","fields":[],"sample_path_params":{"id":1,"roleId":1},"sample_query":[],"sample_body":[]}],"major":"client_app","major_title":"客户端对接 API"},{"group":"图库","items":[{"method":"GET","path":"\/api\/clients\/{id}\/galleries","description":"图库列表","feature":"gallery.list","fields":[],"sample_path_params":{"id":1},"sample_query":{"page":1,"page_size":20},"sample_body":[]},{"method":"POST","path":"\/api\/clients\/{id}\/galleries","description":"新建图库","feature":"gallery.create","fields":[],"sample_path_params":{"id":1},"sample_query":[],"sample_body":{"name":"默认图库","description":"图库描述"}},{"method":"PUT","path":"\/api\/clients\/{id}\/galleries\/{galleryId}","description":"更新图库","feature":"gallery.update","fields":[],"sample_path_params":{"id":1,"galleryId":1},"sample_query":[],"sample_body":{"name":"默认图库","description":"图库描述"}},{"method":"DELETE","path":"\/api\/clients\/{id}\/galleries\/{galleryId}","description":"删除图库","feature":"gallery.delete","fields":[],"sample_path_params":{"id":1,"galleryId":1},"sample_query":[],"sample_body":[]},{"method":"GET","path":"\/api\/clients\/{id}\/galleries\/{galleryId}\/albums","description":"相册列表","feature":"gallery_album.list","fields":[],"sample_path_params":{"id":1,"galleryId":1},"sample_query":{"page":1,"page_size":20},"sample_body":[]},{"method":"POST","path":"\/api\/clients\/{id}\/galleries\/{galleryId}\/albums","description":"新建相册","feature":"gallery_album.create","fields":[],"sample_path_params":{"id":1,"galleryId":1},"sample_query":[],"sample_body":{"title":"默认相册","description":"相册描述","sort_order":1}},{"method":"PUT","path":"\/api\/clients\/{id}\/galleries\/{galleryId}\/albums\/{albumId}","description":"更新相册","feature":"gallery_album.update","fields":[],"sample_path_params":{"id":1,"galleryId":1,"albumId":1},"sample_query":[],"sample_body":{"title":"默认相册","description":"相册描述","sort_order":1}},{"method":"PUT","path":"\/api\/clients\/{id}\/galleries\/{galleryId}\/albums\/{albumId}\/cover","description":"设置相册封面","feature":"gallery_album.update","fields":[],"sample_path_params":{"id":1,"galleryId":1,"albumId":1},"sample_query":[],"sample_body":{"cover_photo_id":1}},{"method":"DELETE","path":"\/api\/clients\/{id}\/galleries\/{galleryId}\/albums\/{albumId}","description":"删除相册","feature":"gallery_album.delete","fields":[],"sample_path_params":{"id":1,"galleryId":1,"albumId":1},"sample_query":[],"sample_body":[]},{"method":"GET","path":"\/api\/clients\/{id}\/galleries\/{galleryId}\/albums\/{albumId}\/photos","description":"照片列表","feature":"gallery_photo.list","fields":[],"sample_path_params":{"id":1,"galleryId":1,"albumId":1},"sample_query":{"page":1,"page_size":20},"sample_body":[]},{"method":"POST","path":"\/api\/clients\/{id}\/galleries\/{galleryId}\/albums\/{albumId}\/photos\/upload","description":"上传照片","feature":"gallery_photo.upload","fields":[],"sample_path_params":{"id":1,"galleryId":1,"albumId":1},"sample_query":[],"sample_body":{"title":"示例照片","file":"<binary>"}},{"method":"PUT","path":"\/api\/clients\/{id}\/galleries\/{galleryId}\/albums\/{albumId}\/photos\/{photoId}","description":"更新照片","feature":"gallery_photo.update","fields":[],"sample_path_params":{"id":1,"galleryId":1,"albumId":1,"photoId":1},"sample_query":[],"sample_body":{"title":"重命名后的照片"}},{"method":"DELETE","path":"\/api\/clients\/{id}\/galleries\/{galleryId}\/albums\/{albumId}\/photos\/{photoId}","description":"删除照片","feature":"gallery_photo.delete","fields":[],"sample_path_params":{"id":1,"galleryId":1,"albumId":1,"photoId":1},"sample_query":[],"sample_body":[]}],"major":"client_app","major_title":"客户端对接 API"},{"group":"图廊","items":[{"method":"GET","path":"\/api\/clients\/{id}\/corridor","description":"读取图廊绑定（含 feed_sort_mode \/ feed_sort_seed）","feature":"corridor.read","fields":[],"sample_path_params":{"id":1},"sample_query":{"page":1,"page_size":20},"sample_body":[]},{"method":"PUT","path":"\/api\/clients\/{id}\/corridor","description":"保存图廊绑定\/启用\/展示排序","feature":"corridor.update","fields":["gallery_id","name?","enabled?","feed_sort_mode?","feed_sort_seed?"],"sample_path_params":{"id":1},"sample_query":[],"sample_body":{"gallery_id":1,"name":"示例名称","enabled":1,"feed_sort_mode":"示例值","feed_sort_seed":"示例值"}},{"method":"GET","path":"\/api\/clients\/{id}\/corridor\/photos","description":"图廊审核列表（status=pending|approved|rejected|all；仅个人相册照片）","feature":"corridor.read","fields":["status?","page?","page_size?","tag?"],"sample_path_params":{"id":1},"sample_query":{"status":"示例值","page":"示例值","page_size":"示例值","tag":"示例值"},"sample_body":[]},{"method":"POST","path":"\/api\/clients\/{id}\/corridor\/photos\/review","description":"批量审核上廊（action=approve|reject）","feature":"corridor.review","fields":["action","photo_ids[]","note?"],"sample_path_params":{"id":1},"sample_query":[],"sample_body":{"action":"示例值","photo_ids":[1],"note":"示例备注"}}],"major":"client_app","major_title":"客户端对接 API"},{"group":"图文笔记（管理端）","items":[{"method":"GET","path":"\/api\/clients\/{id}\/notes-config","description":"读取笔记配置","feature":"note.read","fields":[],"sample_path_params":{"id":1},"sample_query":{"page":1,"page_size":20},"sample_body":[]},{"method":"PUT","path":"\/api\/clients\/{id}\/notes-config","description":"保存笔记配置","feature":"note.update","fields":["enabled?","require_review?","allow_quote_others_corridor?","max_media?","max_embeds?"],"sample_path_params":{"id":1},"sample_query":[],"sample_body":{"enabled":1,"require_review":"示例值","allow_quote_others_corridor":1,"max_media":"示例值","max_embeds":"示例值"}},{"method":"GET","path":"\/api\/clients\/{id}\/gpt-sovits-config","description":"GPT-SoVITS 配置（本体下载链接、环境包、密码明文、MD5）","feature":"client.update","fields":[],"sample_path_params":{"id":1},"sample_query":{"page":1,"page_size":20},"sample_body":[]},{"method":"PUT","path":"\/api\/clients\/{id}\/gpt-sovits-config","description":"保存 GPT-SoVITS\/环境包下载链接、密码、MD5","feature":"client.update","fields":["gpt_sovits_download_url?","pack_download_url?","pack_unzip_password?","pack_file_md5?","verify_pack_md5?"],"sample_path_params":{"id":1},"sample_query":[],"sample_body":{"gpt_sovits_download_url":"https:\/\/example.com\/demo.png","pack_download_url":"https:\/\/example.com\/demo.png","pack_unzip_password":"示例值","pack_file_md5":"示例值","verify_pack_md5":"示例值"}},{"method":"GET","path":"\/api\/clients\/{id}\/notes","description":"笔记审核列表","feature":"note.read","fields":["status?","page?","page_size?","q?"],"sample_path_params":{"id":1},"sample_query":{"status":"示例值","page":"示例值","page_size":"示例值","q":"示例值"},"sample_body":[]},{"method":"POST","path":"\/api\/clients\/{id}\/notes\/review","description":"批量审核（action=approve|reject）","feature":"note.review","fields":["action","note_ids[]","note?"],"sample_path_params":{"id":1},"sample_query":[],"sample_body":{"action":"示例值","note_ids":[1],"note":"示例备注"}},{"method":"PUT","path":"\/api\/clients\/{id}\/notes\/{noteId}\/flags","description":"设置优质\/官方（is_featured、is_official）","feature":"note.update","fields":["is_featured?","is_official?"],"sample_path_params":{"id":1,"noteId":1},"sample_query":[],"sample_body":{"is_featured":"示例值","is_official":"示例值"}},{"method":"GET","path":"\/api\/clients\/{id}\/notes\/{noteId}\/comments","description":"管理端评论列表","feature":"note.read","fields":["page?","page_size?"],"sample_path_params":{"id":1,"noteId":1},"sample_query":{"page":"示例值","page_size":"示例值"},"sample_body":[]},{"method":"DELETE","path":"\/api\/clients\/{id}\/notes\/{noteId}\/comments\/{commentId}","description":"管理端删除评论","feature":"note.update","fields":[],"sample_path_params":{"id":1,"noteId":1,"commentId":1},"sample_query":[],"sample_body":[]},{"method":"GET","path":"\/api\/clients\/{id}\/note-topics","description":"话题列表（管理）","feature":"note.read","fields":["q?"],"sample_path_params":{"id":1},"sample_query":{"q":"示例值"},"sample_body":[]},{"method":"POST","path":"\/api\/clients\/{id}\/note-topics","description":"创建话题","feature":"note.update","fields":["name","enabled?","sort?"],"sample_path_params":{"id":1},"sample_query":[],"sample_body":{"name":"示例名称","enabled":1,"sort":"示例值"}},{"method":"PUT","path":"\/api\/clients\/{id}\/note-topics\/{topicId}","description":"更新话题","feature":"note.update","fields":["name?","enabled?","sort?"],"sample_path_params":{"id":1,"topicId":1},"sample_query":[],"sample_body":{"name":"示例名称","enabled":1,"sort":"示例值"}},{"method":"DELETE","path":"\/api\/clients\/{id}\/note-topics\/{topicId}","description":"删除话题","feature":"note.update","fields":[],"sample_path_params":{"id":1,"topicId":1},"sample_query":[],"sample_body":[]}],"major":"client_app","major_title":"客户端对接 API"},{"group":"链接与文件空间","items":[{"method":"GET","path":"\/api\/clients\/{id}\/linkSet","description":"读取链接集（含隐藏链接；分页：page、page_size，默认 20 条\/页，最大 200）","feature":"client_linkset.read","fields":["page?","page_size?"],"sample_path_params":{"id":1},"sample_query":{"page":"示例值","page_size":"示例值"},"sample_body":[]},{"method":"POST","path":"\/api\/clients\/{id}\/linkSet","description":"初始化链接集（与 API 客户端绑定，通常无需手动调用）","feature":"client_linkset.create","fields":[],"sample_path_params":{"id":1},"sample_query":[],"sample_body":{"name":"客户端链接集","icon":"https:\/\/example.com\/icon.png"}},{"method":"PUT","path":"\/api\/clients\/{id}\/linkSet","description":"更新链接集（name、icon）","feature":"client_linkset.update","fields":[],"sample_path_params":{"id":1},"sample_query":[],"sample_body":{"name":"客户端链接集","icon":"https:\/\/example.com\/icon.png"}},{"method":"POST","path":"\/api\/clients\/{id}\/links\/uploadIcon","description":"上传链接\/链接集图标（multipart: file）","feature":"client_link.update","fields":["file"],"sample_path_params":{"id":1},"sample_query":[],"sample_body":{"file":"示例值"}},{"method":"POST","path":"\/api\/clients\/{id}\/links\/seedLongTest","description":"批量生成长文本测试链接（可选 clear_old、count、title_prefix）","feature":"client_link.create","fields":["clear_old?","count?","title_prefix?"],"sample_path_params":{"id":1},"sample_query":[],"sample_body":{"clear_old":"示例值","count":"示例值","title_prefix":"示例标题"}},{"method":"POST","path":"\/api\/clients\/{id}\/links","description":"创建链接","feature":"client_link.create","fields":[],"sample_path_params":{"id":1},"sample_query":[],"sample_body":{"title":"官网","content":"点击跳转","target_url":"https:\/\/example.com","icon":"https:\/\/example.com\/icon.png","sort_order":1,"hidden":0}},{"method":"POST","path":"\/api\/clients\/{id}\/links\/batch","description":"批量操作：action=delete+ids（须 client_link.delete）；action=set_hidden+ids+hidden（须 client_link.update）","feature":"client_link.delete","fields":[],"sample_path_params":{"id":1},"sample_query":[],"sample_body":{"action":"delete","ids":[1,2,3]}},{"method":"PUT","path":"\/api\/clients\/{id}\/links\/{linkId}","description":"更新链接","feature":"client_link.update","fields":[],"sample_path_params":{"id":1,"linkId":1},"sample_query":[],"sample_body":{"title":"官网","content":"点击跳转","target_url":"https:\/\/example.com","icon":"https:\/\/example.com\/icon.png","sort_order":1,"hidden":0}},{"method":"DELETE","path":"\/api\/clients\/{id}\/links\/{linkId}","description":"删除链接","feature":"client_link.delete","fields":[],"sample_path_params":{"id":1,"linkId":1},"sample_query":[],"sample_body":[]},{"method":"GET","path":"\/api\/clients\/{id}\/files","description":"文件列表","feature":"client_file.list","fields":[],"sample_path_params":{"id":1},"sample_query":{"page":1,"page_size":20},"sample_body":[]},{"method":"GET","path":"\/api\/clients\/{id}\/files\/{fileId}","description":"文件详情","feature":"client_file.read","fields":[],"sample_path_params":{"id":1,"fileId":1},"sample_query":{"page":1,"page_size":20},"sample_body":[]},{"method":"POST","path":"\/api\/clients\/{id}\/files\/mkdir","description":"新建目录","feature":"client_file.create","fields":[],"sample_path_params":{"id":1},"sample_query":[],"sample_body":{"parent_id":0,"name":"新目录"}},{"method":"POST","path":"\/api\/clients\/{id}\/files\/upload","description":"上传文件","feature":"client_file.create","fields":[],"sample_path_params":{"id":1},"sample_query":[],"sample_body":{"parent_id":0,"file":"<binary>"}},{"method":"PUT","path":"\/api\/clients\/{id}\/files\/{fileId}","description":"重命名\/移动文件","feature":"client_file.update","fields":[],"sample_path_params":{"id":1,"fileId":1},"sample_query":[],"sample_body":{"parent_id":0,"name":"新文件名"}},{"method":"GET","path":"\/api\/clients\/{id}\/files\/{fileId}\/download","description":"下载文件","feature":"client_file.read","fields":[],"sample_path_params":{"id":1,"fileId":1},"sample_query":{"page":1,"page_size":20},"sample_body":[]},{"method":"DELETE","path":"\/api\/clients\/{id}\/files\/{fileId}","description":"删除文件","feature":"client_file.delete","fields":[],"sample_path_params":{"id":1,"fileId":1},"sample_query":[],"sample_body":[]}],"major":"client_app","major_title":"客户端对接 API"},{"group":"学院与学生","items":[{"method":"GET","path":"\/api\/clients\/{id}\/academies\/listVersion","description":"学院列表版本号（仅 academy_list_version）","feature":"academy.read","fields":[],"sample_path_params":{"id":1},"sample_query":{"page":1,"page_size":20},"sample_body":[]},{"method":"GET","path":"\/api\/clients\/{id}\/academies","description":"学院列表（默认按 academy_list_sort；响应含该字段）","feature":"academy.read","fields":["order?"],"sample_path_params":{"id":1},"sample_query":{"order":"示例值"},"sample_body":[]},{"method":"POST","path":"\/api\/clients\/{id}\/academies","description":"创建学院（可传 sort_order，越小越靠前）","feature":"academy.create","fields":[],"sample_path_params":{"id":1},"sample_query":[],"sample_body":{"name":"计算机学院","code":"CS","logo":"https:\/\/example.com\/logo.png","introduction":"学院简介","sort_order":0,"use_external_assets":0,"external_assets_base_url":""}},{"method":"GET","path":"\/api\/clients\/{id}\/academies\/{academyId}","description":"学院详情（路径为学院主键 id；App 读接口请用 GET \/api\/app\/academies\/{code}）","feature":"academy.read","fields":[],"sample_path_params":{"id":1,"academyId":1},"sample_query":{"page":1,"page_size":20},"sample_body":[]},{"method":"PUT","path":"\/api\/clients\/{id}\/academies\/{academyId}","description":"更新学院（含 sort_order；academyId 为主键 id）","feature":"academy.update","fields":[],"sample_path_params":{"id":1,"academyId":1},"sample_query":[],"sample_body":{"name":"计算机学院","code":"CS","logo":"https:\/\/example.com\/logo.png","introduction":"学院简介","sort_order":0,"use_external_assets":0,"external_assets_base_url":""}},{"method":"DELETE","path":"\/api\/clients\/{id}\/academies\/{academyId}","description":"删除学院（academyId 为主键 id）","feature":"academy.delete","fields":[],"sample_path_params":{"id":1,"academyId":1},"sample_query":[],"sample_body":[]},{"method":"GET","path":"\/api\/clients\/{id}\/academies\/{academyId}\/students","description":"学生列表（路径 academyId 为主键 id；App 请用 \/api\/app\/academies\/{code}\/students）","feature":"student.read","fields":["order?"],"sample_path_params":{"id":1,"academyId":1},"sample_query":{"order":"示例值"},"sample_body":[]},{"method":"POST","path":"\/api\/clients\/{id}\/academies\/{academyId}\/students","description":"创建学生","feature":"student.create","fields":[],"sample_path_params":{"id":1,"academyId":1},"sample_query":[],"sample_body":{"name":"学生A","code":"stu001","avatar":"https:\/\/example.com\/avatar.png","introduction":"学生简介","resource_package":"pack.zip"}},{"method":"PUT","path":"\/api\/clients\/{id}\/academies\/{academyId}\/students\/{studentId}","description":"更新学生","feature":"student.update","fields":[],"sample_path_params":{"id":1,"academyId":1,"studentId":1},"sample_query":[],"sample_body":{"name":"学生A","code":"stu001","avatar":"https:\/\/example.com\/avatar.png","introduction":"学生简介","resource_package":"pack.zip"}},{"method":"DELETE","path":"\/api\/clients\/{id}\/academies\/{academyId}\/students\/{studentId}","description":"删除学生","feature":"student.delete","fields":[],"sample_path_params":{"id":1,"academyId":1,"studentId":1},"sample_query":[],"sample_body":[]},{"method":"PUT","path":"\/api\/clients\/{id}\/academyGlobalStudentAssets","description":"设置全局学生资源","feature":"academy.update","fields":[],"sample_path_params":{"id":1},"sample_query":[],"sample_body":{"use_external_student_assets":1,"external_student_assets_base_url":"https:\/\/example.com\/students\/"}},{"method":"PUT","path":"\/api\/clients\/{id}\/academyListSort","description":"学院列表输出正序\/倒序（asc|desc）","feature":"academy.update","fields":[],"sample_path_params":{"id":1},"sample_query":[],"sample_body":{"academy_list_sort":"asc"}}],"major":"client_app","major_title":"客户端对接 API"},{"group":"资源商城（用户资源包）","items":[{"method":"GET","path":"\/api\/clients\/{id}\/userPacks","description":"用户资源包列表","feature":"resource_pack.list","fields":[],"sample_path_params":{"id":1},"sample_query":{"review_status":"pending","listed":1,"user_id":1},"sample_body":[]},{"method":"DELETE","path":"\/api\/clients\/{id}\/userPacks\/{packId}","description":"删除用户资源包（含文件）","feature":"resource_pack.delete","fields":[],"sample_path_params":{"id":1,"packId":1},"sample_query":[],"sample_body":[]},{"method":"PUT","path":"\/api\/clients\/{id}\/userPacks\/{packId}\/approve","description":"资源包审核通过","feature":"resource_pack.update","fields":[],"sample_path_params":{"id":1,"packId":1},"sample_query":[],"sample_body":{"_example":"按接口说明填写请求体"}},{"method":"PUT","path":"\/api\/clients\/{id}\/userPacks\/{packId}\/reject","description":"资源包驳回","feature":"resource_pack.update","fields":[],"sample_path_params":{"id":1,"packId":1},"sample_query":[],"sample_body":{"note":"请补充封面图和介绍"}},{"method":"PUT","path":"\/api\/clients\/{id}\/userPacks\/{packId}\/listed","description":"资源包上下架","feature":"resource_pack.update","fields":[],"sample_path_params":{"id":1,"packId":1},"sample_query":[],"sample_body":{"store_listed":1}},{"method":"GET","path":"\/api\/clients\/{id}\/userPacks\/{packId}\/comments","description":"管理端查看资源包评论列表（分页）","feature":"resource_pack.list","fields":["page?","page_size?"],"sample_path_params":{"id":1,"packId":1},"sample_query":{"page":"示例值","page_size":"示例值"},"sample_body":[]},{"method":"DELETE","path":"\/api\/clients\/{id}\/userPacks\/{packId}\/comments\/{commentId}","description":"管理端删除资源包评论","feature":"resource_pack.update","fields":[],"sample_path_params":{"id":1,"packId":1,"commentId":1},"sample_query":[],"sample_body":[]},{"method":"PUT","path":"\/api\/clients\/{id}\/userPacks\/{packId}\/interaction-counters\/reset","description":"重置互动计数（可选清空浏览\/点赞\/评论，点赞与评论可同时清表）","feature":"resource_pack.update","fields":["views?","likes?","comments?"],"sample_path_params":{"id":1,"packId":1},"sample_query":[],"sample_body":{"views":"示例值","likes":"示例值","comments":"示例值"}}],"major":"client_app","major_title":"客户端对接 API"},{"group":"通知收件箱","items":[{"method":"GET","path":"\/api\/notifications","description":"通知卡片列表（个人+广播合并）","feature":"user_login_token","fields":["page?","page_size?","category?","unread_only?"],"sample_path_params":[],"sample_query":{"page":"示例值","page_size":"示例值","category":"示例值","unread_only":"示例值"},"sample_body":[]},{"method":"GET","path":"\/api\/notifications\/unread-count","description":"未读数量（红点）","feature":"user_login_token","fields":[],"sample_path_params":[],"sample_query":{"page":1,"page_size":20},"sample_body":[]},{"method":"GET","path":"\/api\/notifications\/{id}","description":"通知详情（含 body）","feature":"user_login_token","fields":[],"sample_path_params":{"id":1},"sample_query":{"page":1,"page_size":20},"sample_body":[]},{"method":"POST","path":"\/api\/notifications\/{id}\/read","description":"单条已读","feature":"user_login_token","fields":[],"sample_path_params":{"id":1},"sample_query":[],"sample_body":{"_example":"按接口说明填写请求体"}},{"method":"POST","path":"\/api\/notifications\/read-all","description":"全部已读","feature":"user_login_token","fields":[],"sample_path_params":[],"sample_query":[],"sample_body":{"_example":"按接口说明填写请求体"}}],"major":"sys_notification_app","major_title":"系统通知中心（APP）"},{"group":"会话与消息","items":[{"method":"GET","path":"\/api\/im\/conversations","description":"会话列表（含未读）","feature":"user_login_token","fields":["page?","page_size?"],"sample_path_params":[],"sample_query":{"page":"示例值","page_size":"示例值"},"sample_body":[]},{"method":"GET","path":"\/api\/im\/conversations\/sync","description":"会话列表增量同步（本地缓存；since 空=全量；含 deleted）","feature":"user_login_token","fields":["since?","limit?"],"sample_path_params":[],"sample_query":{"since":"示例值","limit":"示例值"},"sample_body":[]},{"method":"GET","path":"\/api\/im\/bootstrap","description":"冷启动打包：会话+好友全量及各自 sync_token","feature":"user_login_token","fields":[],"sample_path_params":[],"sample_query":{"page":1,"page_size":20},"sample_body":[]},{"method":"GET","path":"\/api\/im\/support","description":"帮助与客服：返回后台配置的客服用户（im_support_user_id）","feature":"user_login_token","fields":[],"sample_path_params":[],"sample_query":{"page":1,"page_size":20},"sample_body":[]},{"method":"POST","path":"\/api\/im\/conversations\/private","description":"打开\/创建私聊","feature":"user_login_token","fields":["user_id"],"sample_path_params":[],"sample_query":[],"sample_body":{"user_id":1}},{"method":"GET","path":"\/api\/im\/conversations\/{id}\/messages","description":"历史消息（seq 游标）","feature":"user_login_token","fields":["after_seq?","before_seq?","limit?"],"sample_path_params":{"id":1},"sample_query":{"after_seq":"示例值","before_seq":"示例值","limit":"示例值"},"sample_body":[]},{"method":"POST","path":"\/api\/im\/conversations\/{id}\/read","description":"已读到某 seq","feature":"user_login_token","fields":["seq"],"sample_path_params":{"id":1},"sample_query":[],"sample_body":{"seq":"示例值"}},{"method":"POST","path":"\/api\/im\/messages","description":"发送消息（落库后 WS 推送）","feature":"user_login_token","fields":["conversation_id","msg_type","content","client_msg_id?","extra?"],"sample_path_params":[],"sample_query":[],"sample_body":{"conversation_id":1,"msg_type":"示例值","content":"示例内容","client_msg_id":1,"extra":"示例值"}},{"method":"POST","path":"\/api\/im\/messages\/{id}\/recall","description":"撤回消息（受 im_recall_seconds 限制）","feature":"user_login_token","fields":[],"sample_path_params":{"id":1},"sample_query":[],"sample_body":{"_example":"按接口说明填写请求体"}},{"method":"POST","path":"\/api\/im\/upload","description":"上传图片\/文件（multipart: file）","feature":"user_login_token","fields":["file"],"sample_path_params":[],"sample_query":[],"sample_body":{"file":"示例值"}},{"method":"POST","path":"\/api\/im\/reports","description":"举报","feature":"user_login_token","fields":["target_type","target_id","reason?","detail?"],"sample_path_params":[],"sample_query":[],"sample_body":{"target_type":"示例值","target_id":1,"reason":"示例值","detail":"示例值"}}],"major":"im_app","major_title":"即时通讯（APP）"},{"group":"好友与拉黑","items":[{"method":"GET","path":"\/api\/im\/friends","description":"好友列表（含 is_fixed\/can_delete；固定联系人置顶注入）","feature":"user_login_token","fields":[],"sample_path_params":[],"sample_query":{"page":1,"page_size":20},"sample_body":[]},{"method":"GET","path":"\/api\/im\/friends\/sync","description":"好友列表增量同步（含 deleted 墓碑；since 空=全量）","feature":"user_login_token","fields":["since?","limit?"],"sample_path_params":[],"sample_query":{"since":"示例值","limit":"示例值"},"sample_body":[]},{"method":"GET","path":"\/api\/im\/users\/search","description":"搜索用户以便加好友。返回 is_friend \/ is_blocked \/ is_fixed","feature":"user_login_token","fields":["q","limit?"],"sample_path_params":[],"sample_query":{"q":"示例值","limit":"示例值"},"sample_body":[]},{"method":"GET","path":"\/api\/im\/users\/{id}\/profile","description":"他人个人主页（bio、关系：is_friend\/is_fixed\/can_chat 等）；未登录也可查看公开资料","feature":"optional_user_token","fields":[],"sample_path_params":{"id":1},"sample_query":{"page":1,"page_size":20},"sample_body":[]},{"method":"POST","path":"\/api\/im\/friend-requests","description":"发起好友申请。已是好友\/拉黑会失败；若对方已向我发起待处理申请则自动同意成好友。可重复提交同一申请（返回已有记录）","feature":"user_login_token","fields":["user_id|to_user_id","message?"],"sample_path_params":[],"sample_query":[],"sample_body":{"user_id|to_user_id":1,"message":"示例备注"}},{"method":"GET","path":"\/api\/im\/friend-requests","description":"待处理申请列表。direction=incoming(默认)收件 \/ outgoing发件；仅 status=0","feature":"user_login_token","fields":["direction?"],"sample_path_params":[],"sample_query":{"direction":"示例值"},"sample_body":[]},{"method":"POST","path":"\/api\/im\/friend-requests\/{id}\/accept","description":"同意申请（仅被申请人；双向写入 im_friend，不自动建会话）","feature":"user_login_token","fields":[],"sample_path_params":{"id":1},"sample_query":[],"sample_body":{"_example":"按接口说明填写请求体"}},{"method":"POST","path":"\/api\/im\/friend-requests\/{id}\/reject","description":"拒绝申请（仅被申请人）","feature":"user_login_token","fields":[],"sample_path_params":{"id":1},"sample_query":[],"sample_body":{"_example":"按接口说明填写请求体"}},{"method":"DELETE","path":"\/api\/im\/friends\/{friendId}","description":"删除好友（双向；固定联系人不可删）","feature":"user_login_token","fields":[],"sample_path_params":{"friendId":1},"sample_query":[],"sample_body":[]},{"method":"POST","path":"\/api\/im\/blocks","description":"拉黑（单向；自动解除好友；固定联系人不可拉黑）","feature":"user_login_token","fields":["user_id"],"sample_path_params":[],"sample_query":[],"sample_body":{"user_id":1}},{"method":"GET","path":"\/api\/im\/blocks","description":"拉黑列表（含对方资料与拉黑时间）","feature":"user_login_token","fields":[],"sample_path_params":[],"sample_query":{"page":1,"page_size":20},"sample_body":[]},{"method":"DELETE","path":"\/api\/im\/blocks\/{userId}","description":"取消拉黑（不自动恢复好友）","feature":"user_login_token","fields":[],"sample_path_params":{"userId":1},"sample_query":[],"sample_body":[]}],"major":"im_app","major_title":"即时通讯（APP）"},{"group":"群聊","items":[{"method":"POST","path":"\/api\/im\/groups","description":"创建群；返回群详情（含 cover、conversation_id、my_role）","feature":"user_login_token","fields":["name","member_ids?","avatar?"],"sample_path_params":[],"sample_query":[],"sample_body":{"name":"示例名称","member_ids":1,"avatar":"https:\/\/example.com\/demo.png"}},{"method":"GET","path":"\/api\/im\/groups\/{id}","description":"群信息\/详情。含 cover、announcements_count、latest_announcement、my_role、can_edit","feature":"user_login_token","fields":[],"sample_path_params":{"id":1},"sample_query":{"page":1,"page_size":20},"sample_body":[]},{"method":"GET","path":"\/api\/im\/groups\/{id}\/members","description":"群成员列表。支持 page\/page_size","feature":"user_login_token","fields":["page?","page_size?"],"sample_path_params":{"id":1},"sample_query":{"page":"示例值","page_size":"示例值"},"sample_body":[]},{"method":"GET","path":"\/api\/im\/groups\/{id}\/notice","description":"群公告列表（多条，新在前）","feature":"user_login_token","fields":["page?","page_size?"],"sample_path_params":{"id":1},"sample_query":{"page":"示例值","page_size":"示例值"},"sample_body":[]},{"method":"POST","path":"\/api\/im\/groups\/{id}\/notice","description":"发布一条群公告（群主\/管理员）","feature":"user_login_token","fields":["content|notice"],"sample_path_params":{"id":1},"sample_query":[],"sample_body":{"content|notice":"示例内容"}},{"method":"PUT","path":"\/api\/im\/groups\/{id}\/notice\/{aid}","description":"编辑一条群公告","feature":"user_login_token","fields":["content|notice"],"sample_path_params":{"id":1,"aid":1},"sample_query":[],"sample_body":{"content|notice":"示例内容"}},{"method":"DELETE","path":"\/api\/im\/groups\/{id}\/notice\/{aid}","description":"删除一条群公告","feature":"user_login_token","fields":[],"sample_path_params":{"id":1,"aid":1},"sample_query":[],"sample_body":[]},{"method":"POST","path":"\/api\/im\/groups\/{id}\/members","description":"拉人入群（群主\/管理员）","feature":"user_login_token","fields":["user_ids"],"sample_path_params":{"id":1},"sample_query":[],"sample_body":{"user_ids":1}},{"method":"DELETE","path":"\/api\/im\/groups\/{id}\/members\/{userId}","description":"踢人（群主\/管理员）","feature":"user_login_token","fields":[],"sample_path_params":{"id":1,"userId":1},"sample_query":[],"sample_body":[]},{"method":"POST","path":"\/api\/im\/groups\/{id}\/mute","description":"禁言\/解禁成员（群主\/管理员）；mute_until 空则解禁","feature":"user_login_token","fields":["user_id","mute_until?"],"sample_path_params":{"id":1},"sample_query":[],"sample_body":{"user_id":1,"mute_until":"示例值"}},{"method":"POST","path":"\/api\/im\/groups\/{id}\/quit","description":"退群（群主须先转让）","feature":"user_login_token","fields":[],"sample_path_params":{"id":1},"sample_query":[],"sample_body":{"_example":"按接口说明填写请求体"}},{"method":"POST","path":"\/api\/im\/groups\/{id}\/transfer","description":"转让群主","feature":"user_login_token","fields":["user_id"],"sample_path_params":{"id":1},"sample_query":[],"sample_body":{"user_id":1}},{"method":"PUT","path":"\/api\/im\/groups\/{id}","description":"群资料编辑：name?\/avatar?\/cover?；传 notice 会额外发一条新公告","feature":"user_login_token","fields":["name?","avatar?","cover?","notice?"],"sample_path_params":{"id":1},"sample_query":[],"sample_body":{"name":"示例名称","avatar":"https:\/\/example.com\/demo.png","cover":"示例值","notice":"示例值"}}],"major":"im_app","major_title":"即时通讯（APP）"},{"group":"运营接口","items":[{"method":"GET","path":"\/api\/im\/admin\/conversations","description":"会话监控列表","feature":"im.conversation.list","fields":["page?","page_size?","type?","keyword?"],"sample_path_params":[],"sample_query":{"page":"示例值","page_size":"示例值","type":"示例值","keyword":"示例值"},"sample_body":[]},{"method":"GET","path":"\/api\/im\/admin\/conversations\/{id}","description":"会话详情（成员+最近消息）","feature":"im.conversation.list","fields":[],"sample_path_params":{"id":1},"sample_query":{"page":1,"page_size":20},"sample_body":[]},{"method":"GET","path":"\/api\/im\/admin\/messages","description":"消息审计检索","feature":"im.message.audit","fields":["page?","page_size?","keyword?","conversation_id?","sender_id?","msg_type?","status?","time_from?","time_to?","include_deleted?"],"sample_path_params":[],"sample_query":{"page":"示例值","page_size":"示例值","keyword":"示例值","conversation_id":1,"sender_id":1,"msg_type":"示例值","status":"示例值","time_from":"示例值","time_to":"示例值","include_deleted":"示例值"},"sample_body":[]},{"method":"DELETE","path":"\/api\/im\/admin\/messages\/{id}","description":"删除违规消息","feature":"im.message.audit","fields":[],"sample_path_params":{"id":1},"sample_query":[],"sample_body":[]},{"method":"POST","path":"\/api\/im\/admin\/messages\/{id}\/recall","description":"强制撤回","feature":"im.message.audit","fields":[],"sample_path_params":{"id":1},"sample_query":[],"sample_body":{"_example":"按接口说明填写请求体"}},{"method":"GET","path":"\/api\/im\/admin\/groups","description":"群组列表","feature":"im.group.manage","fields":["page?","page_size?","keyword?"],"sample_path_params":[],"sample_query":{"page":"示例值","page_size":"示例值","keyword":"示例值"},"sample_body":[]},{"method":"GET","path":"\/api\/im\/admin\/groups\/{id}\/members","description":"群成员列表","feature":"im.group.manage","fields":["page?","page_size?"],"sample_path_params":{"id":1},"sample_query":{"page":"示例值","page_size":"示例值"},"sample_body":[]},{"method":"POST","path":"\/api\/im\/admin\/groups\/{id}\/members\/kick","description":"踢出成员","feature":"im.group.manage","fields":["user_id"],"sample_path_params":{"id":1},"sample_query":[],"sample_body":{"user_id":1}},{"method":"PUT","path":"\/api\/im\/admin\/groups\/{id}\/members\/role","description":"设置成员角色 admin|member","feature":"im.group.manage","fields":["user_id","role"],"sample_path_params":{"id":1},"sample_query":[],"sample_body":{"user_id":1,"role":"示例值"}},{"method":"PUT","path":"\/api\/im\/admin\/groups\/{id}","description":"改群资料","feature":"im.group.manage","fields":["name?","avatar?","cover?","notice?"],"sample_path_params":{"id":1},"sample_query":[],"sample_body":{"name":"示例名称","avatar":"https:\/\/example.com\/demo.png","cover":"示例值","notice":"示例值"}},{"method":"POST","path":"\/api\/im\/admin\/groups\/{id}\/dissolve","description":"解散群","feature":"im.group.manage","fields":[],"sample_path_params":{"id":1},"sample_query":[],"sample_body":{"_example":"按接口说明填写请求体"}},{"method":"POST","path":"\/api\/im\/admin\/groups\/{id}\/transfer","description":"转让群主","feature":"im.group.manage","fields":["user_id"],"sample_path_params":{"id":1},"sample_query":[],"sample_body":{"user_id":1}},{"method":"POST","path":"\/api\/im\/admin\/groups\/{id}\/mute","description":"禁言成员","feature":"im.group.manage","fields":["user_id","mute_until?"],"sample_path_params":{"id":1},"sample_query":[],"sample_body":{"user_id":1,"mute_until":"示例值"}},{"method":"GET","path":"\/api\/im\/admin\/reports","description":"举报列表","feature":"im.report.handle","fields":["page?","page_size?","status?","target_type?","reporter_id?"],"sample_path_params":[],"sample_query":{"page":"示例值","page_size":"示例值","status":"示例值","target_type":"示例值","reporter_id":1},"sample_body":[]},{"method":"POST","path":"\/api\/im\/admin\/reports\/batch-handle","description":"批量处理举报","feature":"im.report.handle","fields":["ids","status","handle_result?"],"sample_path_params":[],"sample_query":[],"sample_body":{"ids":1,"status":"示例值","handle_result":"示例值"}},{"method":"POST","path":"\/api\/im\/admin\/reports\/{id}\/handle","description":"处理举报（可选 ban_user_id 真封禁）","feature":"im.report.handle","fields":["status","handle_result?","ban_user_id?","ban_reason?"],"sample_path_params":{"id":1},"sample_query":[],"sample_body":{"status":"示例值","handle_result":"示例值","ban_user_id":1,"ban_reason":"示例值"}},{"method":"POST","path":"\/api\/im\/admin\/users\/{id}\/ban","description":"封禁业务用户","feature":"im.report.handle","fields":["reason?"],"sample_path_params":{"id":1},"sample_query":[],"sample_body":{"reason":"示例值"}},{"method":"POST","path":"\/api\/im\/admin\/users\/{id}\/unban","description":"解封业务用户","feature":"im.report.handle","fields":[],"sample_path_params":{"id":1},"sample_query":[],"sample_body":{"_example":"按接口说明填写请求体"}},{"method":"GET","path":"\/api\/im\/admin\/settings","description":"读取 IM 设置（含固定联系人、客服账号 im_support_user_id、保留天数等）","feature":"im.settings","fields":[],"sample_path_params":[],"sample_query":{"page":1,"page_size":20},"sample_body":[]},{"method":"PUT","path":"\/api\/im\/admin\/settings","description":"保存 IM 设置","feature":"im.settings","fields":["im_recall_seconds?","im_group_max_members?","im_friend_required?","im_upload_max_mb?","im_ws_register_address?","im_ws_client_url?","im_message_retention_days?","im_fixed_contact_ids?","im_support_user_id?"],"sample_path_params":[],"sample_query":[],"sample_body":{"im_recall_seconds":"示例值","im_group_max_members":"示例值","im_friend_required":"示例值","im_upload_max_mb":"示例值","im_ws_register_address":"示例值","im_ws_client_url":"https:\/\/example.com\/demo.png","im_message_retention_days":"示例备注","im_fixed_contact_ids":1,"im_support_user_id":1}},{"method":"GET","path":"\/api\/im\/admin\/ws-health","description":"检测 Register \/ 客户端 WS \/ GatewayClient 连通性","feature":"im.settings","fields":[],"sample_path_params":[],"sample_query":{"page":1,"page_size":20},"sample_body":[]},{"method":"POST","path":"\/api\/im\/admin\/cleanup-messages","description":"按保留天数立即物理清理过期聊天记录（可选 batch_size）","feature":"im.settings","fields":["batch_size?"],"sample_path_params":[],"sample_query":[],"sample_body":{"batch_size":"示例值"}},{"method":"GET","path":"\/api\/emoji\/admin\/packs","description":"表情包列表（含各状态）","feature":"im.emoji.manage","fields":["page?","page_size?","keyword?","status?","author_id?"],"sample_path_params":[],"sample_query":{"page":"示例值","page_size":"示例值","keyword":"示例值","status":"示例值","author_id":1},"sample_body":[]},{"method":"GET","path":"\/api\/emoji\/admin\/packs\/{id}","description":"表情包详情+表情项","feature":"im.emoji.manage","fields":[],"sample_path_params":{"id":1},"sample_query":{"page":1,"page_size":20},"sample_body":[]},{"method":"PUT","path":"\/api\/emoji\/admin\/packs\/{id}","description":"更新表情包（name?\/description?\/cover?\/status?）","feature":"im.emoji.manage","fields":["name?","description?","cover?","status?"],"sample_path_params":{"id":1},"sample_query":[],"sample_body":{"name":"示例名称","description":"示例内容","cover":"示例值","status":"示例值"}},{"method":"POST","path":"\/api\/emoji\/admin\/packs\/{id}\/sync-album","description":"同步\/创建绑定相册","feature":"im.emoji.manage","fields":[],"sample_path_params":{"id":1},"sample_query":[],"sample_body":{"_example":"按接口说明填写请求体"}},{"method":"DELETE","path":"\/api\/emoji\/admin\/packs\/{id}","description":"强制删除表情包（含文件）","feature":"im.emoji.manage","fields":[],"sample_path_params":{"id":1},"sample_query":[],"sample_body":[]},{"method":"DELETE","path":"\/api\/emoji\/admin\/items\/{id}","description":"删除单个表情项","feature":"im.emoji.manage","fields":[],"sample_path_params":{"id":1},"sample_query":[],"sample_body":[]},{"method":"GET","path":"\/api\/clients\/{id}\/emoji-gallery","description":"表情包图库绑定","feature":"im.emoji.manage","fields":[],"sample_path_params":{"id":1},"sample_query":{"page":1,"page_size":20},"sample_body":[]},{"method":"PUT","path":"\/api\/clients\/{id}\/emoji-gallery","description":"保存表情包图库绑定（可回填相册）","feature":"im.emoji.manage","fields":["gallery_id","enabled?","backfill?"],"sample_path_params":{"id":1},"sample_query":[],"sample_body":{"gallery_id":1,"enabled":1,"backfill":"示例值"}}],"major":"im_admin","major_title":"即时通讯（后台）"},{"group":"表情库","items":[{"method":"GET","path":"\/api\/emoji\/packs","description":"表情包列表（仅已上架）","feature":"user_login_token?","fields":["page?","page_size?","keyword?","sort?"],"sample_path_params":[],"sample_query":{"page":"示例值","page_size":"示例值","keyword":"示例值","sort":"示例值"},"sample_body":[]},{"method":"GET","path":"\/api\/emoji\/packs\/{id}","description":"表情包详情","feature":"user_login_token?","fields":[],"sample_path_params":{"id":1},"sample_query":{"page":1,"page_size":20},"sample_body":[]},{"method":"GET","path":"\/api\/emoji\/packs\/{id}\/items","description":"表情项列表","feature":"user_login_token?","fields":[],"sample_path_params":{"id":1},"sample_query":{"page":1,"page_size":20},"sample_body":[]},{"method":"PUT","path":"\/api\/emoji\/packs\/{id}","description":"作者更新包资料 name?\/description?\/cover?","feature":"user_login_token","fields":["name?","description?","cover?"],"sample_path_params":{"id":1},"sample_query":[],"sample_body":{"name":"示例名称","description":"示例内容","cover":"示例值"}},{"method":"POST","path":"\/api\/emoji\/cover","description":"上传封面","feature":"user_login_token+realname","fields":["file"],"sample_path_params":[],"sample_query":[],"sample_body":{"file":"示例值"}},{"method":"POST","path":"\/api\/emoji\/packs\/upload","description":"批量上传表情（新建或 pack_id 追加；files[] 多图）","feature":"user_login_token+realname","fields":["name?","description?","cover?","pack_id?","files[]"],"sample_path_params":[],"sample_query":[],"sample_body":{"name":"示例名称","description":"示例内容","cover":"示例值","pack_id":1,"files":["示例值"]}},{"method":"POST","path":"\/api\/emoji\/packs\/{id}\/download","description":"下载\/领取表情包","feature":"user_login_token","fields":[],"sample_path_params":{"id":1},"sample_query":[],"sample_body":{"_example":"按接口说明填写请求体"}},{"method":"POST","path":"\/api\/emoji\/packs\/{id}\/like","description":"点赞切换","feature":"user_login_token","fields":[],"sample_path_params":{"id":1},"sample_query":[],"sample_body":{"_example":"按接口说明填写请求体"}},{"method":"DELETE","path":"\/api\/emoji\/packs\/{id}","description":"作者删除自己的表情包","feature":"user_login_token","fields":[],"sample_path_params":{"id":1},"sample_query":[],"sample_body":[]},{"method":"DELETE","path":"\/api\/emoji\/items\/{id}","description":"作者删除包内单个表情","feature":"user_login_token","fields":[],"sample_path_params":{"id":1},"sample_query":[],"sample_body":[]},{"method":"GET","path":"\/api\/emoji\/packs\/my","description":"我下载的","feature":"user_login_token","fields":[],"sample_path_params":[],"sample_query":{"page":1,"page_size":20},"sample_body":[]},{"method":"GET","path":"\/api\/emoji\/packs\/my-uploads","description":"我上传的","feature":"user_login_token","fields":[],"sample_path_params":[],"sample_query":{"page":1,"page_size":20},"sample_body":[]},{"method":"GET","path":"\/api\/emoji\/items\/{id}\/token","description":"获取 render token","feature":"user_login_token","fields":[],"sample_path_params":{"id":1},"sample_query":{"page":1,"page_size":20},"sample_body":[]},{"method":"GET","path":"\/api\/emoji\/render","description":"按 token 输出图片","feature":"render_token","fields":["token"],"sample_path_params":[],"sample_query":{"token":"示例值"},"sample_body":[]}],"major":"emoji_app","major_title":"表情包（用户侧）"},{"group":"协议","items":[{"method":"WS","path":"ws:\/\/{host}:7272","description":"连接后首包鉴权 {\"type\":\"auth\",\"token\":\"<user_token>\"}；心跳 ping\/pong；下行 message.new \/ message.recall \/ conversation.read \/ conversation.updated \/ conversation.removed \/ friend.updated \/ friend.removed \/ group.updated \/ presence \/ error","feature":"user_login_token","fields":[],"sample_path_params":{"host":"demo"},"sample_query":[],"sample_body":{"_example":"按接口说明填写请求体"}}],"major":"im_ws","major_title":"即时通讯（WebSocket）"}],"features":[{"feature_key":"admin.list","feature_name":"管理员-列表"},{"feature_key":"admin.assign_permissions","feature_name":"管理员-分配权限"},{"feature_key":"audit_log.list","feature_name":"审计日志-列表（只读）"},{"feature_key":"system.update","feature_name":"系统-更新\/迁移（执行 SQL）"},{"feature_key":"user.create","feature_name":"用户-新增"},{"feature_key":"user.read","feature_name":"用户-查看"},{"feature_key":"user.update","feature_name":"用户-编辑"},{"feature_key":"user.delete","feature_name":"用户-删除"},{"feature_key":"user.list","feature_name":"用户-列表"},{"feature_key":"user.assign_permissions","feature_name":"用户-分配权限"},{"feature_key":"user.badge.manage","feature_name":"用户-铭牌管理"},{"feature_key":"announcement.create","feature_name":"公告-新增"},{"feature_key":"announcement.read","feature_name":"公告-查看（单条\/最新）"},{"feature_key":"announcement.update","feature_name":"公告-编辑"},{"feature_key":"announcement.delete","feature_name":"公告-删除"},{"feature_key":"announcement.list","feature_name":"公告-列表（分页）"},{"feature_key":"client.create","feature_name":"客户端-新增"},{"feature_key":"client.read","feature_name":"客户端-查看"},{"feature_key":"client.update","feature_name":"客户端-编辑"},{"feature_key":"client.delete","feature_name":"客户端-删除"},{"feature_key":"client.list","feature_name":"客户端-列表"},{"feature_key":"client.assign_permissions","feature_name":"客户端-权限分配"},{"feature_key":"client.reset","feature_name":"客户端-重置密钥"},{"feature_key":"client.view_secrets","feature_name":"客户端-查看凭证（public_id\/secret\/token）"},{"feature_key":"client.version.list","feature_name":"客户端版本-列表"},{"feature_key":"client.version.create","feature_name":"客户端版本-发布（新增）"},{"feature_key":"client.version.force","feature_name":"客户端版本-强制修改\/允许低版本号"},{"feature_key":"client.version.delete","feature_name":"客户端版本-删除"},{"feature_key":"system.set_name","feature_name":"系统-设置名称"},{"feature_key":"system.set_logo","feature_name":"系统-设置Logo"},{"feature_key":"system.set_favicon","feature_name":"系统-设置Favicon"},{"feature_key":"gallery.create","feature_name":"图库-创建"},{"feature_key":"gallery.read","feature_name":"图库-查看"},{"feature_key":"gallery.update","feature_name":"图库-编辑"},{"feature_key":"gallery.delete","feature_name":"图库-删除"},{"feature_key":"gallery.list","feature_name":"图库-列表"},{"feature_key":"gallery.manage_members","feature_name":"图库-成员管理"},{"feature_key":"gallery_album.create","feature_name":"相册-创建"},{"feature_key":"gallery_album.read","feature_name":"相册-查看"},{"feature_key":"gallery_album.update","feature_name":"相册-编辑"},{"feature_key":"gallery_album.delete","feature_name":"相册-删除"},{"feature_key":"gallery_album.list","feature_name":"相册-列表"},{"feature_key":"gallery_photo.upload","feature_name":"照片-上传"},{"feature_key":"gallery_photo.read","feature_name":"照片-查看"},{"feature_key":"gallery_photo.update","feature_name":"照片-编辑"},{"feature_key":"gallery_photo.delete","feature_name":"照片-删除"},{"feature_key":"gallery_photo.list","feature_name":"照片-列表"},{"feature_key":"client_linkset.read","feature_name":"链接集-查看"},{"feature_key":"client_linkset.create","feature_name":"链接集-新增"},{"feature_key":"client_linkset.update","feature_name":"链接集-编辑"},{"feature_key":"client_linkset.delete","feature_name":"链接集-删除"},{"feature_key":"client_link.read","feature_name":"链接-查看"},{"feature_key":"client_link.create","feature_name":"链接-新增"},{"feature_key":"client_link.update","feature_name":"链接-编辑"},{"feature_key":"client_link.delete","feature_name":"链接-删除"},{"feature_key":"client_role.read","feature_name":"客户端角色-查看单条"},{"feature_key":"client_role.list","feature_name":"客户端角色-列表"},{"feature_key":"client_role.create","feature_name":"客户端角色-新增"},{"feature_key":"client_role.update","feature_name":"客户端角色-编辑"},{"feature_key":"client_role.delete","feature_name":"客户端角色-删除"},{"feature_key":"client_banner.read","feature_name":"客户端轮播图-查看单条"},{"feature_key":"client_banner.list","feature_name":"客户端轮播图-列表"},{"feature_key":"client_banner.create","feature_name":"客户端轮播图-新增"},{"feature_key":"client_banner.update","feature_name":"客户端轮播图-编辑"},{"feature_key":"client_banner.delete","feature_name":"客户端轮播图-删除"},{"feature_key":"client_official_contact.read","feature_name":"官方联系方式-查看"},{"feature_key":"client_official_contact.list","feature_name":"官方联系方式-列表"},{"feature_key":"client_official_contact.create","feature_name":"官方联系方式-新增"},{"feature_key":"client_official_contact.update","feature_name":"官方联系方式-编辑"},{"feature_key":"client_official_contact.delete","feature_name":"官方联系方式-删除"},{"feature_key":"academy.create","feature_name":"学院-新增"},{"feature_key":"academy.read","feature_name":"学院-查看"},{"feature_key":"academy.update","feature_name":"学院-编辑"},{"feature_key":"academy.delete","feature_name":"学院-删除"},{"feature_key":"student.create","feature_name":"学生-新增"},{"feature_key":"student.read","feature_name":"学生-查看"},{"feature_key":"student.update","feature_name":"学生-编辑"},{"feature_key":"student.delete","feature_name":"学生-删除"},{"feature_key":"client_file.create","feature_name":"客户端文件-上传\/创建"},{"feature_key":"client_file.read","feature_name":"客户端文件-查看\/下载"},{"feature_key":"client_file.update","feature_name":"客户端文件-编辑（重命名\/移动）"},{"feature_key":"client_file.delete","feature_name":"客户端文件-删除"},{"feature_key":"client_file.list","feature_name":"客户端文件-列表"},{"feature_key":"client_resource.create","feature_name":"客户端更新资源-上传\/创建"},{"feature_key":"client_resource.read","feature_name":"客户端更新资源-查看\/下载"},{"feature_key":"client_resource.update","feature_name":"客户端更新资源-编辑（重命名\/移动）"},{"feature_key":"client_resource.delete","feature_name":"客户端更新资源-删除"},{"feature_key":"client_resource.list","feature_name":"客户端更新资源-列表"},{"feature_key":"client.user_admin.manage","feature_name":"客户端-管理员分配"},{"feature_key":"resource_pack.create","feature_name":"资源包-新增\/上传"},{"feature_key":"resource_pack.read","feature_name":"资源包-查看\/下载"},{"feature_key":"resource_pack.update","feature_name":"资源包-编辑"},{"feature_key":"resource_pack.delete","feature_name":"资源包-删除"},{"feature_key":"resource_pack.list","feature_name":"资源包-列表"},{"feature_key":"corridor.read","feature_name":"图廊-查看"},{"feature_key":"corridor.update","feature_name":"图廊-绑定图库\/设置"},{"feature_key":"corridor.review","feature_name":"图廊-审核发布"},{"feature_key":"note.read","feature_name":"图文笔记-查看\/审核列表"},{"feature_key":"note.update","feature_name":"图文笔记-配置\/删评论"},{"feature_key":"note.review","feature_name":"图文笔记-审核发布"},{"feature_key":"im.conversation.list","feature_name":"即时通讯-会话监控"},{"feature_key":"im.message.audit","feature_name":"即时通讯-消息审计"},{"feature_key":"im.group.manage","feature_name":"即时通讯-群组管理"},{"feature_key":"im.report.handle","feature_name":"即时通讯-举报处理"},{"feature_key":"im.settings","feature_name":"即时通讯-IM设置"},{"feature_key":"im.emoji.manage","feature_name":"即时通讯-表情包管理"},{"feature_key":"notification.list","feature_name":"系统通知-列表\/记录"},{"feature_key":"notification.send","feature_name":"系统通知-发给用户"},{"feature_key":"notification.broadcast","feature_name":"系统通知-广播"}],"generated_at":"2026-08-17 10:12:15"}