{"openapi":"3.1.0","info":{"title":"教育技术学研究方法 · 数智化学习中心 Open API","version":"1.0.0","description":"学习中心开放接口。身份恒为密钥主人本人；学情数据仅本人脱敏聚合。Agent 使用指南见 /api/open/v1/skill.md"},"servers":[{"url":"/"}],"tags":[{"name":"👤 基本信息（读）","description":"读取你的姓名、班级、所在小组列表"},{"name":"💬 我的社区（读）","description":"读取你发布的朋友圈动态与收到的评论"},{"name":"💬 我的社区（写）","description":"以你的身份发布朋友圈、评论、点赞"},{"name":"👥 我的小组（读）","description":"读取你所在小组的空间动态（仅限你所在的小组）"},{"name":"👥 我的小组（写）","description":"在你所在的小组空间发布动态（成员身份校验，非成员 403）"},{"name":"📝 作业（读）","description":"读取作业列表、你自己的提交记录、被分配的互评任务"},{"name":"📝 作业（写）","description":"创建/更新你自己的作业提交（草稿或提交）"},{"name":"🛫 协作塔台（读）","description":"读取你参与的项目与任务"},{"name":"🛫 协作塔台（写）","description":"在你参与的项目里创建/更新任务（成员校验）"},{"name":"📅 日程（读）","description":"读取你的日程（按日期区间）"},{"name":"📅 日程（写）","description":"创建/删除你的日程"},{"name":"✅ 待办（读）","description":"读取你的待办清单与事项"},{"name":"✅ 待办（写）","description":"创建/勾选/删除你的待办事项"},{"name":"📓 我的笔记（读）","description":"读取你的笔记分类与笔记内容（含 AI Agent 自留地）"},{"name":"📓 我的笔记（写）","description":"创建/修改/删除你的笔记与分类；Agent 整理的笔记默认进入「🤖 AI Agent 自留地」并附 AI 思考"},{"name":"🖼 图片上传","description":"上传图片到你的图床（朋友圈/笔记正文可引用返回的 URL；单张 ≤2MB）"},{"name":"⚖️ 作业互评 · 含教师评价（读）","description":"读取「我该评的全部任务」：学生匿名互评 + （若你是评价教师）教师实名评价；含评分指标与我已提交的评分"},{"name":"⚖️ 作业互评 · 含教师评价（写）","description":"提交评分：学生互评（匿名）或教师评价（实名，必须带评语）；记录自动标记为 AI Agent 操作"},{"name":"👨‍🏫 教师评价（读 · 兼容别名）","description":"等同于 review:read 中的教师评价部分（保留兼容，建议直接用 review:read）"},{"name":"👨‍🏫 教师评价（写 · 兼容别名）","description":"等同于 review:write 中的教师评价部分（保留兼容，建议直接用 review:write）"},{"name":"🌐 PostCenter（读）","description":"读取你自己的静态网页托管站点列表、文件树与文件内容"},{"name":"🌐 PostCenter（写）","description":"创建/更新你自己的静态网页托管站点：多文件推送（HTML/CSS/JS/图片/字体，相对目录）、发布/下线/删除"},{"name":"📊 学情数据（读·脱敏）","description":"读取你自己的学习行为聚合统计。⚠️ 仅本人、仅脱敏聚合（无原始日志/无精确时间戳/无他人数据），限速最严"},{"name":"📊 学情数据（教师 · 全班/指定学生）","description":"教师专用：按学生或全班读取学习行为埋点聚合、成长指数、SOLO 层次、认知网络（ENA）、课堂互动与作业证据。⚠️ 需要账号持有「学情数据（教师·全站）」平台权限，仅返回聚合口径（不含原始日志与作答原文）"},{"name":"🔑 🗺 用户行为地图","description":"学习分析 · 数据埋点可视化（SRL 六视图）。经网关代理调用站内接口（仍校验你本人是否持有该权限）"},{"name":"🔑 👥 成员管理","description":"添加 / 更新 / 移除成员。经网关代理调用站内接口（仍校验你本人是否持有该权限）"},{"name":"🔑 📤 AI 对话记录导出","description":"学习分析 · 按人导出 AI 对话记录。经网关代理调用站内接口（仍校验你本人是否持有该权限）"},{"name":"🔑 📚 阅读文献记录导出","description":"学习分析 · 导出文献精读记录。经网关代理调用站内接口（仍校验你本人是否持有该权限）"},{"name":"🔑 🌐 全局统一 API 配置（Aidee）","description":"智能体中心 · 全平台默认 Dify API 地址与密钥（Aidee 本体使用；未自定义的智能体自动沿用）。经网关代理调用站内接口（仍校验你本人是否持有该权限）"},{"name":"🔑 📓 智能笔记智能体","description":"智能体中心 · 智能笔记（笔记提炼 / 总结 / 定时回顾）的 API 自定义（留空=全局）。经网关代理调用站内接口（仍校验你本人是否持有该权限）"},{"name":"🔑 🧠 智能体中心 · 智能体管理","description":"新建 / 编辑 / 删除智能体 · 使用场景 · 谁能使用 · API 自定义（留空=全局）。经网关代理调用站内接口（仍校验你本人是否持有该权限）"},{"name":"🔑 📢 公众号与通知","description":"新建公众号 / 群发通知。经网关代理调用站内接口（仍校验你本人是否持有该权限）"},{"name":"🔑 ✨ 笔记精炼记录导出","description":"学习分析 · 导出笔记 AI 精炼记录。经网关代理调用站内接口（仍校验你本人是否持有该权限）"},{"name":"🔑 🧩 应用卡片与角色管理","description":"角色管理 · 启动页 APP 卡片：图标 / 标题 / 描述 / URL / 排序。经网关代理调用站内接口（仍校验你本人是否持有该权限）"},{"name":"🔑 🎫 工单客服","description":"工单中心：受理 / 回复 / 转交工单 · 新增分类 · 写帮助文章。经网关代理调用站内接口（仍校验你本人是否持有该权限）"},{"name":"🔑 📧 邮件推送","description":"SMTP 配置 · 公众号邮件 · 站点对外网址。经网关代理调用站内接口（仍校验你本人是否持有该权限）"},{"name":"🔑 📊 成果看板","description":"成果看板 · 研究类别分布 / 选题词云 / 成果知识图谱。经网关代理调用站内接口（仍校验你本人是否持有该权限）"},{"name":"🔑 🌱 学习成长 · 增值评价导出","description":"学习分析 · 全站/个人成长指数与基线对比导出。经网关代理调用站内接口（仍校验你本人是否持有该权限）"},{"name":"🔑 🧠 用户思维链","description":"学习分析 · 认知过程后台研究视图（三列泳道）。经网关代理调用站内接口（仍校验你本人是否持有该权限）"},{"name":"🔑 📋 AI 学习分析报告","description":"学习分析 · 学生报告聚合 + RT 三级分层。经网关代理调用站内接口（仍校验你本人是否持有该权限）"},{"name":"🔑 🕰 成果时光机 · AI 修改分析报告","description":"学习分析 · 成果修改历程 AI 分析报告聚合。经网关代理调用站内接口（仍校验你本人是否持有该权限）"},{"name":"🔑 🕰 全员成果时光机","description":"成果看板 · 查看全部学生成果的时光机版本历程（仅查看，不含 AI 分析/恢复）。经网关代理调用站内接口（仍校验你本人是否持有该权限）"},{"name":"🔑 🛫 项目协作塔台看板","description":"学习分析 · 全站协作项目执行率/延误率/任务量与全链路数据点看板。经网关代理调用站内接口（仍校验你本人是否持有该权限）"},{"name":"🔑 🎚 用户额度管理","description":"设置每个用户的全局 AI 调用次数与邮件接收次数上限 · 查看动态建议 · 邮件发送日志。经网关代理调用站内接口（仍校验你本人是否持有该权限）"},{"name":"🔑 ✋ 额度申请审核","description":"申请审核中心 · 审核 AI 调用/邮件接收提额与积分购买申请（与建组审核分权）。经网关代理调用站内接口（仍校验你本人是否持有该权限）"},{"name":"🔑 🛡️ 建组审核","description":"申请审核中心 · 审核学习社区建组申请（与额度审核分权）。经网关代理调用站内接口（仍校验你本人是否持有该权限）"},{"name":"🔑 💰 积分系统管理","description":"积分规则（行为基础分/权重）· 积分商城定价 · 全站积分与消耗明细（订单号）调阅。经网关代理调用站内接口（仍校验你本人是否持有该权限）"},{"name":"🔑 🛍️ 积分商城管理","description":"上架商品 / 定价 / 库存 / 额度直充商品设置 / 订单发货与快递单号。经网关代理调用站内接口（仍校验你本人是否持有该权限）"},{"name":"🔑 📢 启动页公告跑马灯","description":"启动页顶栏下方滚动通知：维护（黄）/ 常规（蓝）/ 活动（绿）/ 紧急（红）四色分级，可排序与上下架。经网关代理调用站内接口（仍校验你本人是否持有该权限）"},{"name":"🔑 🕸 认知网络分析","description":"学习分析 · 认知网络分析（ENA）：学习材料 / AI 对话两类认知网络 + 质心指标解读（积分策略研究视图）。经网关代理调用站内接口（仍校验你本人是否持有该权限）"},{"name":"🔑 📊 学情数据（教师·全站）","description":"开放接口 · 允许教师用 API 密钥读取全班/指定学生的学情聚合（行为埋点分布、成长指数、SOLO 层次、认知网络 ENA、课堂互动与作业证据）。授权后该账号才可在 API 中心勾选 learning:teacher:read；仅聚合口径，不含原始日志与作答原文。经网关代理调用站内接口（仍校验你本人是否持有该权限）"},{"name":"🔑 🧪 AI虚拟实训 · 教学看板","description":"AI虚拟实训 · 查看全班学生的模拟实训记录：研究关系模拟 / 教学模式模拟的推演结论与落地建议。经网关代理调用站内接口（仍校验你本人是否持有该权限）"},{"name":"🔑 🎓 课堂互动 · 发布与管理","description":"课堂互动 · 创建互动包（投票/词云/讨论/考试+签到）/ 大屏发布 / 结束归档 / AI 自动建议开关。经网关代理调用站内接口（仍校验你本人是否持有该权限）"},{"name":"🔑 🎓 课堂互动 · 数据看板","description":"学习分析 · 课堂互动模块：按互动包/单次课记录学生签到、各活动参与轨迹与生成内容。经网关代理调用站内接口（仍校验你本人是否持有该权限）"},{"name":"🔑 🖥 课堂互动 · 学生个人大屏","description":"课堂互动 · 学生个人学习大屏（参与互动包数 / 互动次数 / 发言字数 / 每次互动与总图谱 / 多次互动对比 / 时间热区 / AI 建议）。默认对所有学生开放，取消勾选即收回该生的查看权。经网关代理调用站内接口（仍校验你本人是否持有该权限）"},{"name":"🔑 🖥 课堂互动 · 教师分析大屏","description":"课堂互动 · 教师分析大屏（各包参与人数 / 每个互动与总图谱 / 逐生逐活动图谱 / 学生图谱进化 / 逐次与累计发言 ENA / 今日实时干预层级分布）。需显式授权。经网关代理调用站内接口（仍校验你本人是否持有该权限）"},{"name":"🔑 🔔 推送中心 · 学生信息大屏","description":"全局信息推送中心 · 学生个人信息大屏（收到什么 / 五类学习价值分布 / 阅读率 / 时间热区 / 每类对学习的帮助与行动建议 / 近期明细）。默认对所有学生开放，取消勾选即收回该生的查看权。经网关代理调用站内接口（仍校验你本人是否持有该权限）"},{"name":"🔑 🔔 推送中心 · 教师分析大屏","description":"全局信息推送中心 · 教师分析大屏（逐生收件量/回看率/关注度评分 / 谁互动多 / 谁需要帮助 / 全类型与维度分布 / 班级对比 / 推送×课堂互动交叉）。需显式授权。经网关代理调用站内接口（仍校验你本人是否持有该权限）"},{"name":"🔑 📝 作业 · 布置与流转","description":"作业与提交 · 上传 Word 模板 / 布置作业与截止时间 / 归集 / 形式审查 / 分配匿名互评 / 发布互评结果。经网关代理调用站内接口（仍校验你本人是否持有该权限）"},{"name":"🔑 📝 作业 · 评价指标配置","description":"作业与提交 · 配置互评打分指标集（维度 / 分值 / 说明）。经网关代理调用站内接口（仍校验你本人是否持有该权限）"},{"name":"🔑 📝 作业 · 互评数据看板","description":"作业与提交 · 互评参与情况 / 各作业得分 / 全批次平均分等数据看板。经网关代理调用站内接口（仍校验你本人是否持有该权限）"},{"name":"🔑 🕰 作业提交时光机 · 学习分析","description":"学习分析 · 查看学生作业提交的全部版本历程、修改依据与 AI 修改建议/分析报告。经网关代理调用站内接口（仍校验你本人是否持有该权限）"},{"name":"🔑 📝 互评记录导出","description":"学习分析 · 导出作业匿名互评的评审记录（评审人/各项得分/评语，按批次，CSV/Markdown/JSON）。经网关代理调用站内接口（仍校验你本人是否持有该权限）"},{"name":"🔑 ⭐ 工单满意度查看","description":"工单中心 · 查看学生提交的工单打分与评价评论（我的工单评价界面 / 客服工作台全局满意度 / 学习平台管理·满意度时效性看板）。经网关代理调用站内接口（仍校验你本人是否持有该权限）"},{"name":"🔑 🐾 全站宠物领养情况","description":"学习分析 · 查看全站用户宠物领养情况（领养人数/种类分布/健康状态/逐宠明细与最近到访，CSV/Markdown/JSON）。经网关代理调用站内接口（仍校验你本人是否持有该权限）"},{"name":"🔑 🏛 宠物大会管理","description":"发布与管理像素宠物学术会议/活动：标题、议程、起止时间，并可撤回大会。经网关代理调用站内接口（仍校验你本人是否持有该权限）"},{"name":"🔑 🐾 宠物数值设置","description":"学习平台管理 · 配置宠物活力恢复速度 / 随机生活事件频率 / 串门顺零食每人每日上限（全站生效）。经网关代理调用站内接口（仍校验你本人是否持有该权限）"},{"name":"🔑 🧩 拼豆作品管理","description":"学习平台管理 · 预览全站创意工坊拼豆作品，可下架（撤出旅行目的地）或删除违规作品。经网关代理调用站内接口（仍校验你本人是否持有该权限）"},{"name":"🔑 🇨🇳 国庆旅行管理","description":"学习平台管理 · 查看全站国庆旅行路线/旅行团/统计，可下架或删除违规的中心路线（限时活动）。经网关代理调用站内接口（仍校验你本人是否持有该权限）"},{"name":"🔑 平台权限 · vocab","description":"以你在学习平台的该数据权限调用对应站内接口（经 API 网关代理）。经网关代理调用站内接口（仍校验你本人是否持有该权限）"},{"name":"🔑 🧭 认知罗盘 · 题库与测评管理","description":"认知罗盘 · 导入题库 / 布置自适应测评（CAT）/ 全员认知画像与 RTI 干预看板 / 测评记录导出 / 发起学生认知分析。经网关代理调用站内接口（仍校验你本人是否持有该权限）"},{"name":"🔑 🧭 认知罗盘 · 查看全站学生诊断","description":"认知罗盘 · 查看任意学生的三维诊断（SOLO 所处层次 / AI 对话认知网络与时间切片 / 测评执行度与影响维度）、单次测评报告与群体对比（不含题库与测验的编辑权限）。经网关代理调用站内接口（仍校验你本人是否持有该权限）"},{"name":"🔑 🌐 静态网页 · 托管管理","description":"静态网页托管 · 查看全部团队/个人项目、调整团队与个人的托管数量配额、下架违规页面。经网关代理调用站内接口（仍校验你本人是否持有该权限）"},{"name":"🔑 📚 课程资源库 · 教师管理","description":"课程资源库 · 上传/管理课程资源（文件/课件/视频）、设置学生访问权限、设置每人容量配额、生成「外卖柜」取件分享。经网关代理调用站内接口（仍校验你本人是否持有该权限）"},{"name":"🔑 🧭 干预策略库 · 教师管理","description":"学习分析 · 三级干预策略库：为不同学习状态的学生配置干预组合（课程资源 / Skill / 专属智能体），发送至学生「教师与 Aidee 信箱」。经网关代理调用站内接口（仍校验你本人是否持有该权限）"},{"name":"🔑 🀫 AI 语义分词","description":"学习平台管理 · AI 语义分词中枢：开关传统词表 / 一键重新生成 / 定时自动重算 / 历史版本回滚（词云·知识图谱·思维链·泳道·SOLO·ENA·三认知网络·AI 报告全站适配）。经网关代理调用站内接口（仍校验你本人是否持有该权限）"}],"components":{"securitySchemes":{"ApiId":{"type":"apiKey","in":"header","name":"X-API-ID"},"ApiSecret":{"type":"apiKey","in":"header","name":"X-API-SECRET"}}},"security":[{"ApiId":[]},{"ApiSecret":[]}],"paths":{"/api/open/v1/me":{"get":{"summary":"我的身份","description":"当前密钥对应的姓名、班级、所在小组\n\n所需权限范围：👤 基本信息（读）（profile:read）。操作者恒为密钥主人本人。","tags":["👤 基本信息（读）"],"security":[{"ApiId":[]},{"ApiSecret":[]}],"responses":{"200":{"description":"成功","content":{"application/json":{"schema":{"type":"object"}}}},"401":{"description":"认证失败"},"403":{"description":"未授权该范围或非小组成员"},"429":{"description":"限速"}}}},"/api/open/v1/community/posts":{"get":{"summary":"我的朋友圈列表","description":"读取我发布的学习社区动态（最新 20 条）\n\n所需权限范围：💬 我的社区（读）（community:read）。操作者恒为密钥主人本人。","tags":["💬 我的社区（读）"],"security":[{"ApiId":[]},{"ApiSecret":[]}],"responses":{"200":{"description":"成功","content":{"application/json":{"schema":{"type":"object"}}}},"401":{"description":"认证失败"},"403":{"description":"未授权该范围或非小组成员"},"429":{"description":"限速"}}},"post":{"summary":"发布朋友圈","description":"以我的身份发布一条学习社区动态\n\n所需权限范围：💬 我的社区（写）（community:write）。操作者恒为密钥主人本人。","tags":["💬 我的社区（写）"],"security":[{"ApiId":[]},{"ApiSecret":[]}],"responses":{"200":{"description":"成功","content":{"application/json":{"schema":{"type":"object"}}}},"401":{"description":"认证失败"},"403":{"description":"未授权该范围或非小组成员"},"429":{"description":"限速"}},"parameters":[{"name":"content","in":"body","required":true,"schema":{"type":"string"},"description":"正文（≤5000 字，支持纯文本；话题用 #话题# 语法）"},{"name":"images","in":"body","required":false,"schema":{"type":"array"},"description":"图片 URL 列表（可选）"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"content":{"type":"string","description":"正文（≤5000 字，支持纯文本；话题用 #话题# 语法）"},"images":{"type":"array","description":"图片 URL 列表（可选）"}}}}}}}},"/api/open/v1/community/posts/{id}/comments":{"post":{"summary":"评论动态","description":"对某条动态发表评论\n\n所需权限范围：💬 我的社区（写）（community:write）。操作者恒为密钥主人本人。","tags":["💬 我的社区（写）"],"security":[{"ApiId":[]},{"ApiSecret":[]}],"responses":{"200":{"description":"成功","content":{"application/json":{"schema":{"type":"object"}}}},"401":{"description":"认证失败"},"403":{"description":"未授权该范围或非小组成员"},"429":{"description":"限速"}},"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"number"},"description":"动态 id"},{"name":"content","in":"body","required":true,"schema":{"type":"string"},"description":"评论内容"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"content":{"type":"string","description":"评论内容"}}}}}}}},"/api/open/v1/community/posts/{id}/like":{"post":{"summary":"点赞动态","description":"给某条动态点赞（重复调用无效）\n\n所需权限范围：💬 我的社区（写）（community:write）。操作者恒为密钥主人本人。","tags":["💬 我的社区（写）"],"security":[{"ApiId":[]},{"ApiSecret":[]}],"responses":{"200":{"description":"成功","content":{"application/json":{"schema":{"type":"object"}}}},"401":{"description":"认证失败"},"403":{"description":"未授权该范围或非小组成员"},"429":{"description":"限速"}},"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"number"},"description":"动态 id"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{}}}}}}},"/api/open/v1/groups":{"get":{"summary":"我的小组","description":"我所在的小组列表\n\n所需权限范围：👥 我的小组（读）（group:read）。操作者恒为密钥主人本人。","tags":["👥 我的小组（读）"],"security":[{"ApiId":[]},{"ApiSecret":[]}],"responses":{"200":{"description":"成功","content":{"application/json":{"schema":{"type":"object"}}}},"401":{"description":"认证失败"},"403":{"description":"未授权该范围或非小组成员"},"429":{"description":"限速"}}}},"/api/open/v1/groups/{id}/posts":{"get":{"summary":"小组动态列表","description":"读取该小组空间的朋友圈动态（仅限我所在的小组）\n\n所需权限范围：👥 我的小组（读）（group:read）。操作者恒为密钥主人本人。","tags":["👥 我的小组（读）"],"security":[{"ApiId":[]},{"ApiSecret":[]}],"responses":{"200":{"description":"成功","content":{"application/json":{"schema":{"type":"object"}}}},"401":{"description":"认证失败"},"403":{"description":"未授权该范围或非小组成员"},"429":{"description":"限速"}},"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"number"},"description":"小组 id"}]},"post":{"summary":"发布小组动态","description":"在我所在的小组空间发布动态（非成员返回 403）\n\n所需权限范围：👥 我的小组（写）（group:write）。操作者恒为密钥主人本人。","tags":["👥 我的小组（写）"],"security":[{"ApiId":[]},{"ApiSecret":[]}],"responses":{"200":{"description":"成功","content":{"application/json":{"schema":{"type":"object"}}}},"401":{"description":"认证失败"},"403":{"description":"未授权该范围或非小组成员"},"429":{"description":"限速"}},"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"number"},"description":"小组 id"},{"name":"content","in":"body","required":true,"schema":{"type":"string"},"description":"正文"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"content":{"type":"string","description":"正文"}}}}}}}},"/api/open/v1/homework/assignments":{"get":{"summary":"作业列表","description":"当前发布给我的作业（含截止时间与提交状态）\n\n所需权限范围：📝 作业（读）（homework:read）。操作者恒为密钥主人本人。","tags":["📝 作业（读）"],"security":[{"ApiId":[]},{"ApiSecret":[]}],"responses":{"200":{"description":"成功","content":{"application/json":{"schema":{"type":"object"}}}},"401":{"description":"认证失败"},"403":{"description":"未授权该范围或非小组成员"},"429":{"description":"限速"}}}},"/api/open/v1/homework/submissions":{"get":{"summary":"我的提交记录","description":"我自己的作业提交（含状态与文档版本号）\n\n所需权限范围：📝 作业（读）（homework:read）。操作者恒为密钥主人本人。","tags":["📝 作业（读）"],"security":[{"ApiId":[]},{"ApiSecret":[]}],"responses":{"200":{"description":"成功","content":{"application/json":{"schema":{"type":"object"}}}},"401":{"description":"认证失败"},"403":{"description":"未授权该范围或非小组成员"},"429":{"description":"限速"}}},"post":{"summary":"保存/提交作业","description":"创建或更新我自己的作业正文（submit=true 提交，false 存草稿）\n\n所需权限范围：📝 作业（写）（homework:write）。操作者恒为密钥主人本人。","tags":["📝 作业（写）"],"security":[{"ApiId":[]},{"ApiSecret":[]}],"responses":{"200":{"description":"成功","content":{"application/json":{"schema":{"type":"object"}}}},"401":{"description":"认证失败"},"403":{"description":"未授权该范围或非小组成员"},"429":{"description":"限速"}},"parameters":[{"name":"asg_id","in":"body","required":true,"schema":{"type":"string"},"description":"作业 id"},{"name":"body_html","in":"body","required":true,"schema":{"type":"string"},"description":"正文 HTML（或纯文本）"},{"name":"submit","in":"body","required":false,"schema":{"type":"boolean"},"description":"true=提交（默认 false 草稿）"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"asg_id":{"type":"string","description":"作业 id"},"body_html":{"type":"string","description":"正文 HTML（或纯文本）"},"submit":{"type":"boolean","description":"true=提交（默认 false 草稿）"}}}}}}}},"/api/open/v1/tower/projects":{"get":{"summary":"我的项目","description":"我参与的协作塔台项目（含成员与任务统计）\n\n所需权限范围：🛫 协作塔台（读）（tower:read）。操作者恒为密钥主人本人。","tags":["🛫 协作塔台（读）"],"security":[{"ApiId":[]},{"ApiSecret":[]}],"responses":{"200":{"description":"成功","content":{"application/json":{"schema":{"type":"object"}}}},"401":{"description":"认证失败"},"403":{"description":"未授权该范围或非小组成员"},"429":{"description":"限速"}}}},"/api/open/v1/tower/projects/{pid}/tasks":{"get":{"summary":"项目任务列表","description":"某项目的任务树（仅限我参与的项目）\n\n所需权限范围：🛫 协作塔台（读）（tower:read）。操作者恒为密钥主人本人。","tags":["🛫 协作塔台（读）"],"security":[{"ApiId":[]},{"ApiSecret":[]}],"responses":{"200":{"description":"成功","content":{"application/json":{"schema":{"type":"object"}}}},"401":{"description":"认证失败"},"403":{"description":"未授权该范围或非小组成员"},"429":{"description":"限速"}},"parameters":[{"name":"pid","in":"path","required":true,"schema":{"type":"string"},"description":"项目 id"}]},"post":{"summary":"创建任务","description":"在我参与的项目里创建任务（我可指定负责人为项目成员）\n\n所需权限范围：🛫 协作塔台（写）（tower:write）。操作者恒为密钥主人本人。","tags":["🛫 协作塔台（写）"],"security":[{"ApiId":[]},{"ApiSecret":[]}],"responses":{"200":{"description":"成功","content":{"application/json":{"schema":{"type":"object"}}}},"401":{"description":"认证失败"},"403":{"description":"未授权该范围或非小组成员"},"429":{"description":"限速"}},"parameters":[{"name":"pid","in":"path","required":true,"schema":{"type":"string"},"description":"项目 id"},{"name":"title","in":"body","required":true,"schema":{"type":"string"},"description":"任务标题"},{"name":"assignee","in":"body","required":false,"schema":{"type":"string"},"description":"负责人学号（默认我）"},{"name":"due_date","in":"body","required":false,"schema":{"type":"string"},"description":"截止日期 YYYY-MM-DD"},{"name":"notes","in":"body","required":false,"schema":{"type":"string"},"description":"备注"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"title":{"type":"string","description":"任务标题"},"assignee":{"type":"string","description":"负责人学号（默认我）"},"due_date":{"type":"string","description":"截止日期 YYYY-MM-DD"},"notes":{"type":"string","description":"备注"}}}}}}}},"/api/open/v1/tower/tasks/{tid}":{"patch":{"summary":"更新任务","description":"更新任务状态/进度说明（我必须是项目成员）\n\n所需权限范围：🛫 协作塔台（写）（tower:write）。操作者恒为密钥主人本人。","tags":["🛫 协作塔台（写）"],"security":[{"ApiId":[]},{"ApiSecret":[]}],"responses":{"200":{"description":"成功","content":{"application/json":{"schema":{"type":"object"}}}},"401":{"description":"认证失败"},"403":{"description":"未授权该范围或非小组成员"},"429":{"description":"限速"}},"parameters":[{"name":"tid","in":"path","required":true,"schema":{"type":"string"},"description":"任务 id"},{"name":"done","in":"body","required":false,"schema":{"type":"boolean"},"description":"是否完成"},{"name":"notes","in":"body","required":false,"schema":{"type":"string"},"description":"追加说明"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"done":{"type":"boolean","description":"是否完成"},"notes":{"type":"string","description":"追加说明"}}}}}}}},"/api/open/v1/schedule/events":{"get":{"summary":"查询日程","description":"按日期区间读取我的日程\n\n所需权限范围：📅 日程（读）（schedule:read）。操作者恒为密钥主人本人。","tags":["📅 日程（读）"],"security":[{"ApiId":[]},{"ApiSecret":[]}],"responses":{"200":{"description":"成功","content":{"application/json":{"schema":{"type":"object"}}}},"401":{"description":"认证失败"},"403":{"description":"未授权该范围或非小组成员"},"429":{"description":"限速"}},"parameters":[{"name":"from","in":"query","required":true,"schema":{"type":"string"},"description":"YYYY-MM-DD"},{"name":"to","in":"query","required":true,"schema":{"type":"string"},"description":"YYYY-MM-DD"}]},"post":{"summary":"创建日程","description":"在我的日历创建日程或待办型日程\n\n所需权限范围：📅 日程（写）（schedule:write）。操作者恒为密钥主人本人。","tags":["📅 日程（写）"],"security":[{"ApiId":[]},{"ApiSecret":[]}],"responses":{"200":{"description":"成功","content":{"application/json":{"schema":{"type":"object"}}}},"401":{"description":"认证失败"},"403":{"description":"未授权该范围或非小组成员"},"429":{"description":"限速"}},"parameters":[{"name":"title","in":"body","required":true,"schema":{"type":"string"},"description":"标题"},{"name":"date","in":"body","required":true,"schema":{"type":"string"},"description":"日期 YYYY-MM-DD"},{"name":"start","in":"body","required":false,"schema":{"type":"string"},"description":"开始 HH:MM"},{"name":"end","in":"body","required":false,"schema":{"type":"string"},"description":"结束 HH:MM"},{"name":"notes","in":"body","required":false,"schema":{"type":"string"},"description":"备注"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"title":{"type":"string","description":"标题"},"date":{"type":"string","description":"日期 YYYY-MM-DD"},"start":{"type":"string","description":"开始 HH:MM"},"end":{"type":"string","description":"结束 HH:MM"},"notes":{"type":"string","description":"备注"}}}}}}}},"/api/open/v1/schedule/events/{id}":{"delete":{"summary":"删除日程","description":"删除我的一条日程\n\n所需权限范围：📅 日程（写）（schedule:write）。操作者恒为密钥主人本人。","tags":["📅 日程（写）"],"security":[{"ApiId":[]},{"ApiSecret":[]}],"responses":{"200":{"description":"成功","content":{"application/json":{"schema":{"type":"object"}}}},"401":{"description":"认证失败"},"403":{"description":"未授权该范围或非小组成员"},"429":{"description":"限速"}},"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"日程 id"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{}}}}}}},"/api/open/v1/reminders":{"get":{"summary":"待办列表","description":"我的待办清单与全部事项\n\n所需权限范围：✅ 待办（读）（todo:read）。操作者恒为密钥主人本人。","tags":["✅ 待办（读）"],"security":[{"ApiId":[]},{"ApiSecret":[]}],"responses":{"200":{"description":"成功","content":{"application/json":{"schema":{"type":"object"}}}},"401":{"description":"认证失败"},"403":{"description":"未授权该范围或非小组成员"},"429":{"description":"限速"}}}},"/api/open/v1/reminders/items":{"post":{"summary":"创建待办","description":"在我的清单创建一条待办\n\n所需权限范围：✅ 待办（写）（todo:write）。操作者恒为密钥主人本人。","tags":["✅ 待办（写）"],"security":[{"ApiId":[]},{"ApiSecret":[]}],"responses":{"200":{"description":"成功","content":{"application/json":{"schema":{"type":"object"}}}},"401":{"description":"认证失败"},"403":{"description":"未授权该范围或非小组成员"},"429":{"description":"限速"}},"parameters":[{"name":"title","in":"body","required":true,"schema":{"type":"string"},"description":"标题"},{"name":"due_date","in":"body","required":false,"schema":{"type":"string"},"description":"截止 YYYY-MM-DD"},{"name":"notes","in":"body","required":false,"schema":{"type":"string"},"description":"备注"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"title":{"type":"string","description":"标题"},"due_date":{"type":"string","description":"截止 YYYY-MM-DD"},"notes":{"type":"string","description":"备注"}}}}}}}},"/api/open/v1/reminders/items/{id}/toggle":{"post":{"summary":"勾选/取消待办","description":"切换某条待办的完成状态\n\n所需权限范围：✅ 待办（写）（todo:write）。操作者恒为密钥主人本人。","tags":["✅ 待办（写）"],"security":[{"ApiId":[]},{"ApiSecret":[]}],"responses":{"200":{"description":"成功","content":{"application/json":{"schema":{"type":"object"}}}},"401":{"description":"认证失败"},"403":{"description":"未授权该范围或非小组成员"},"429":{"description":"限速"}},"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"待办 id"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{}}}}}}},"/api/open/v1/reminders/items/{id}":{"delete":{"summary":"删除待办","description":"删除我的一条待办\n\n所需权限范围：✅ 待办（写）（todo:write）。操作者恒为密钥主人本人。","tags":["✅ 待办（写）"],"security":[{"ApiId":[]},{"ApiSecret":[]}],"responses":{"200":{"description":"成功","content":{"application/json":{"schema":{"type":"object"}}}},"401":{"description":"认证失败"},"403":{"description":"未授权该范围或非小组成员"},"429":{"description":"限速"}},"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"待办 id"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{}}}}}}},"/api/open/v1/postcenter/sites":{"get":{"summary":"我的托管站点列表","description":"读取我自己的 PostCenter 站点（slug/标题/文件数/占用/公开地址）\n\n所需权限范围：🌐 PostCenter（读）（postcenter:read）。操作者恒为密钥主人本人。","tags":["🌐 PostCenter（读）"],"security":[{"ApiId":[]},{"ApiSecret":[]}],"responses":{"200":{"description":"成功","content":{"application/json":{"schema":{"type":"object"}}}},"401":{"description":"认证失败"},"403":{"description":"未授权该范围或非小组成员"},"429":{"description":"限速"}}},"post":{"summary":"发布网页托管（多文件）","description":"创建或更新我自己的 PostCenter 站点：支持多文件与相对目录（HTML/CSS/JS/图片/字体，页面在 CSP 沙箱内运行）。html 单文件用法向后兼容\n\n所需权限范围：🌐 PostCenter（写）（postcenter:write）。操作者恒为密钥主人本人。","tags":["🌐 PostCenter（写）"],"security":[{"ApiId":[]},{"ApiSecret":[]}],"responses":{"200":{"description":"成功","content":{"application/json":{"schema":{"type":"object"}}}},"401":{"description":"认证失败"},"403":{"description":"未授权该范围或非小组成员"},"429":{"description":"限速"}},"parameters":[{"name":"slug","in":"body","required":true,"schema":{"type":"string"},"description":"站点标识（小写字母数字连字符，2~39 位）"},{"name":"title","in":"body","required":true,"schema":{"type":"string"},"description":"站点标题"},{"name":"html","in":"body","required":false,"schema":{"type":"string"},"description":"单文件 HTML（写为 index.html；与 files 二选一）"},{"name":"files","in":"body","required":false,"schema":{"type":"array"},"description":"多文件数组 [{path,content,encoding?}]，encoding=utf8（默认）|base64（图片/字体二进制）"},{"name":"descr","in":"body","required":false,"schema":{"type":"string"},"description":"简介"},{"name":"published","in":"body","required":false,"schema":{"type":"boolean"},"description":"默认 true 发布；false=存为草稿（公开页 403）"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"slug":{"type":"string","description":"站点标识（小写字母数字连字符，2~39 位）"},"title":{"type":"string","description":"站点标题"},"html":{"type":"string","description":"单文件 HTML（写为 index.html；与 files 二选一）"},"files":{"type":"array","description":"多文件数组 [{path,content,encoding?}]，encoding=utf8（默认）|base64（图片/字体二进制）"},"descr":{"type":"string","description":"简介"},"published":{"type":"boolean","description":"默认 true 发布；false=存为草稿（公开页 403）"}}}}}}}},"/api/open/v1/postcenter/sites/{slug}":{"get":{"summary":"托管站点详情","description":"某站点的元数据 + 完整文件树（仅限我自己的站点）\n\n所需权限范围：🌐 PostCenter（读）（postcenter:read）。操作者恒为密钥主人本人。","tags":["🌐 PostCenter（读）"],"security":[{"ApiId":[]},{"ApiSecret":[]}],"responses":{"200":{"description":"成功","content":{"application/json":{"schema":{"type":"object"}}}},"401":{"description":"认证失败"},"403":{"description":"未授权该范围或非小组成员"},"429":{"description":"限速"}},"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string"},"description":"站点标识"}]},"delete":{"summary":"删除托管站点","description":"删除我自己的托管站点（含全部文件，不可恢复）\n\n所需权限范围：🌐 PostCenter（写）（postcenter:write）。操作者恒为密钥主人本人。","tags":["🌐 PostCenter（写）"],"security":[{"ApiId":[]},{"ApiSecret":[]}],"responses":{"200":{"description":"成功","content":{"application/json":{"schema":{"type":"object"}}}},"401":{"description":"认证失败"},"403":{"description":"未授权该范围或非小组成员"},"429":{"description":"限速"}},"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string"},"description":"站点标识"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{}}}}}}},"/api/open/v1/postcenter/sites/{slug}/files/{path}":{"get":{"summary":"读取托管文件","description":"读取站点内某个文件（文本原样返回；二进制 base64 返回）\n\n所需权限范围：🌐 PostCenter（读）（postcenter:read）。操作者恒为密钥主人本人。","tags":["🌐 PostCenter（读）"],"security":[{"ApiId":[]},{"ApiSecret":[]}],"responses":{"200":{"description":"成功","content":{"application/json":{"schema":{"type":"object"}}}},"401":{"description":"认证失败"},"403":{"description":"未授权该范围或非小组成员"},"429":{"description":"限速"}},"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string"},"description":"站点标识"},{"name":"path","in":"path","required":true,"schema":{"type":"string"},"description":"相对路径，如 assets/app.js"}]}},"/api/open/v1/postcenter/sites/{slug}/files":{"post":{"summary":"追加/更新托管文件","description":"向已有站点推送一批文件（相对目录，覆盖同名；不改动其他文件）\n\n所需权限范围：🌐 PostCenter（写）（postcenter:write）。操作者恒为密钥主人本人。","tags":["🌐 PostCenter（写）"],"security":[{"ApiId":[]},{"ApiSecret":[]}],"responses":{"200":{"description":"成功","content":{"application/json":{"schema":{"type":"object"}}}},"401":{"description":"认证失败"},"403":{"description":"未授权该范围或非小组成员"},"429":{"description":"限速"}},"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string"},"description":"站点标识"},{"name":"files","in":"body","required":true,"schema":{"type":"array"},"description":"多文件数组 [{path,content,encoding?}]"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"files":{"type":"array","description":"多文件数组 [{path,content,encoding?}]"}}}}}}}},"/api/open/v1/postcenter/sites/{slug}/publish":{"post":{"summary":"发布/下线托管站点","description":"切换站点的公开访问状态\n\n所需权限范围：🌐 PostCenter（写）（postcenter:write）。操作者恒为密钥主人本人。","tags":["🌐 PostCenter（写）"],"security":[{"ApiId":[]},{"ApiSecret":[]}],"responses":{"200":{"description":"成功","content":{"application/json":{"schema":{"type":"object"}}}},"401":{"description":"认证失败"},"403":{"description":"未授权该范围或非小组成员"},"429":{"description":"限速"}},"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string"},"description":"站点标识"},{"name":"published","in":"body","required":true,"schema":{"type":"boolean"},"description":"true=发布 false=下线"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"published":{"type":"boolean","description":"true=发布 false=下线"}}}}}}}},"/api/open/v1/perm/{key}/{api-path}":{"get":{"summary":"平台权限网关（遍历所有权限）","description":"把你的平台数据权限开放给 Agent：perm:<key> scope + 本人有该权限时，网关以你的身份转发站内 /api/<api-path>。路径与方法白名单见 skill.md\n\n所需权限范围：perm:*（perm:*）。操作者恒为密钥主人本人。","tags":["perm:*"],"security":[{"ApiId":[]},{"ApiSecret":[]}],"responses":{"200":{"description":"成功","content":{"application/json":{"schema":{"type":"object"}}}},"401":{"description":"认证失败"},"403":{"description":"未授权该范围或非小组成员"},"429":{"description":"限速"}},"parameters":[{"name":"key","in":"path","required":true,"schema":{"type":"string"},"description":"平台权限键（PERM_KEYS 之一，如 compass_manage）"},{"name":"api-path","in":"path","required":true,"schema":{"type":"string"},"description":"站内 API 路径（不含 /api 前缀，如 compass/manage）"}]}},"/api/open/v1/homework/reviews":{"get":{"summary":"我该评的全部任务（互评 + 教师评价）","description":"统一入口：type=peer 学生匿名互评 / type=teacher 教师实名评价（后者仅在你被指派为评价教师时出现）；含评分指标、我已提交的评分与进度\n\n所需权限范围：⚖️ 作业互评 · 含教师评价（读）（review:read）。操作者恒为密钥主人本人。","tags":["⚖️ 作业互评 · 含教师评价（读）"],"security":[{"ApiId":[]},{"ApiSecret":[]}],"responses":{"200":{"description":"成功","content":{"application/json":{"schema":{"type":"object"}}}},"401":{"description":"认证失败"},"403":{"description":"未授权该范围或非小组成员"},"429":{"description":"限速"}}}},"/api/open/v1/homework/reviews/{id}":{"get":{"summary":"读取待评材料（互评/教师评价通用）","description":"读取某份待评作业正文与评分指标（不含作者身份）；评价教师还会拿到匿名互评结果与自己的评价进度\n\n所需权限范围：⚖️ 作业互评 · 含教师评价（读）（review:read）。操作者恒为密钥主人本人。","tags":["⚖️ 作业互评 · 含教师评价（读）"],"security":[{"ApiId":[]},{"ApiSecret":[]}],"responses":{"200":{"description":"成功","content":{"application/json":{"schema":{"type":"object"}}}},"401":{"description":"认证失败"},"403":{"description":"未授权该范围或非小组成员"},"429":{"description":"限速"}},"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"提交 id（来自 GET /homework/reviews）"}]},"post":{"summary":"提交评分（互评 / 教师评价）","description":"一个入口按你的真实身份分派：学生互评（匿名，scores）或教师评价（实名，scores 或 total + 必须 comment）；记录自动标记 AI Agent 操作\n\n所需权限范围：⚖️ 作业互评 · 含教师评价（写）（review:write）。操作者恒为密钥主人本人。","tags":["⚖️ 作业互评 · 含教师评价（写）"],"security":[{"ApiId":[]},{"ApiSecret":[]}],"responses":{"200":{"description":"成功","content":{"application/json":{"schema":{"type":"object"}}}},"401":{"description":"认证失败"},"403":{"description":"未授权该范围或非小组成员"},"429":{"description":"限速"}},"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"提交 id"},{"name":"scores","in":"body","required":true,"schema":{"type":"string"},"description":"指标分映射 {指标名: 分数}"},{"name":"comment","in":"body","required":false,"schema":{"type":"string"},"description":"评语（≤600 字）"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"scores":{"type":"string","description":"指标分映射 {指标名: 分数}"},"comment":{"type":"string","description":"评语（≤600 字）"}}}}}}}},"/api/open/v1/homework/teacher-reviews":{"get":{"summary":"我的教师评价任务","description":"读取分配给我的教师评价任务（待评 + 已完成；仅被指派教师可用）\n\n所需权限范围：👨‍🏫 教师评价（读 · 兼容别名）（treach:read）。操作者恒为密钥主人本人。","tags":["👨‍🏫 教师评价（读 · 兼容别名）"],"security":[{"ApiId":[]},{"ApiSecret":[]}],"responses":{"200":{"description":"成功","content":{"application/json":{"schema":{"type":"object"}}}},"401":{"description":"认证失败"},"403":{"description":"未授权该范围或非小组成员"},"429":{"description":"限速"}}}},"/api/open/v1/homework/teacher-reviews/{id}":{"get":{"summary":"读取教师评价材料","description":"读取待评作业正文、匿名互评结果与评分指标（不暴露作者姓名）\n\n所需权限范围：👨‍🏫 教师评价（读 · 兼容别名）（treach:read）。操作者恒为密钥主人本人。","tags":["👨‍🏫 教师评价（读 · 兼容别名）"],"security":[{"ApiId":[]},{"ApiSecret":[]}],"responses":{"200":{"description":"成功","content":{"application/json":{"schema":{"type":"object"}}}},"401":{"description":"认证失败"},"403":{"description":"未授权该范围或非小组成员"},"429":{"description":"限速"}},"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"提交 id（来自 GET /homework/teacher-reviews）"}]},"post":{"summary":"提交教师评价","description":"提交实名教师评价打分与评语（必须带评语；记录标记为 AI Agent 操作，网页端显示机器人标识）\n\n所需权限范围：👨‍🏫 教师评价（写 · 兼容别名）（treach:write）。操作者恒为密钥主人本人。","tags":["👨‍🏫 教师评价（写 · 兼容别名）"],"security":[{"ApiId":[]},{"ApiSecret":[]}],"responses":{"200":{"description":"成功","content":{"application/json":{"schema":{"type":"object"}}}},"401":{"description":"认证失败"},"403":{"description":"未授权该范围或非小组成员"},"429":{"description":"限速"}},"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"提交 id"},{"name":"scores","in":"body","required":false,"schema":{"type":"string"},"description":"逐项分映射 {指标名: 分数}（0~100，可替代 total）"},{"name":"total","in":"body","required":false,"schema":{"type":"number"},"description":"总分 0~100（不传 scores 时使用）"},{"name":"comment","in":"body","required":true,"schema":{"type":"string"},"description":"评价意见（≤600 字）"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"scores":{"type":"string","description":"逐项分映射 {指标名: 分数}（0~100，可替代 total）"},"total":{"type":"number","description":"总分 0~100（不传 scores 时使用）"},"comment":{"type":"string","description":"评价意见（≤600 字）"}}}}}}}},"/api/open/v1/homework/attachments":{"post":{"summary":"上传作业附件","description":"上传附件到指定作业（base64；受作业附件白名单与大小限制），标记为 AI Agent 上传\n\n所需权限范围：📝 作业（写）（homework:write）。操作者恒为密钥主人本人。","tags":["📝 作业（写）"],"security":[{"ApiId":[]},{"ApiSecret":[]}],"responses":{"200":{"description":"成功","content":{"application/json":{"schema":{"type":"object"}}}},"401":{"description":"认证失败"},"403":{"description":"未授权该范围或非小组成员"},"429":{"description":"限速"}},"parameters":[{"name":"asg_id","in":"body","required":true,"schema":{"type":"string"},"description":"作业 id"},{"name":"name","in":"body","required":true,"schema":{"type":"string"},"description":"文件名（含扩展名）"},{"name":"data","in":"body","required":true,"schema":{"type":"string"},"description":"文件 base64"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"asg_id":{"type":"string","description":"作业 id"},"name":{"type":"string","description":"文件名（含扩展名）"},"data":{"type":"string","description":"文件 base64"}}}}}}}},"/api/open/v1/upload/image":{"post":{"summary":"上传图片","description":"上传一张图片到我的图床，返回可引用的 URL（朋友圈 images / 笔记正文 <img> 均可用）。data=base64（可带 data:image/...;base64, 前缀），ext=png/jpg/jpeg/gif/webp\n\n所需权限范围：🖼 图片上传（upload:write）。操作者恒为密钥主人本人。","tags":["🖼 图片上传"],"security":[{"ApiId":[]},{"ApiSecret":[]}],"responses":{"200":{"description":"成功","content":{"application/json":{"schema":{"type":"object"}}}},"401":{"description":"认证失败"},"403":{"description":"未授权该范围或非小组成员"},"429":{"description":"限速"}},"parameters":[{"name":"data","in":"body","required":true,"schema":{"type":"string"},"description":"图片 base64（≤2MB）"},{"name":"ext","in":"body","required":false,"schema":{"type":"string"},"description":"扩展名，默认 png"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"string","description":"图片 base64（≤2MB）"},"ext":{"type":"string","description":"扩展名，默认 png"}}}}}}}},"/api/open/v1/notes":{"get":{"summary":"笔记列表","description":"读取我的笔记分类与笔记（标题+摘要；?folder=<分类id> 可筛选）\n\n所需权限范围：📓 我的笔记（读）（notes:read）。操作者恒为密钥主人本人。","tags":["📓 我的笔记（读）"],"security":[{"ApiId":[]},{"ApiSecret":[]}],"responses":{"200":{"description":"成功","content":{"application/json":{"schema":{"type":"object"}}}},"401":{"description":"认证失败"},"403":{"description":"未授权该范围或非小组成员"},"429":{"description":"限速"}},"parameters":[{"name":"folder","in":"query","required":false,"schema":{"type":"string"},"description":"分类 id（可选）"}]},"post":{"summary":"创建笔记","description":"创建一篇笔记（Agent 整理的笔记默认进入「🤖 AI Agent 自留地」分类，并显示 AI Agent 标记）。正文支持 Markdown，图片用 upload/image 的 URL 以 <img> 或 ![]() 引用\n\n所需权限范围：📓 我的笔记（写）（notes:write）。操作者恒为密钥主人本人。","tags":["📓 我的笔记（写）"],"security":[{"ApiId":[]},{"ApiSecret":[]}],"responses":{"200":{"description":"成功","content":{"application/json":{"schema":{"type":"object"}}}},"401":{"description":"认证失败"},"403":{"description":"未授权该范围或非小组成员"},"429":{"description":"限速"}},"parameters":[{"name":"title","in":"body","required":true,"schema":{"type":"string"},"description":"标题（≤120 字）"},{"name":"content","in":"body","required":false,"schema":{"type":"string"},"description":"正文 Markdown"},{"name":"ai_note","in":"body","required":false,"schema":{"type":"string"},"description":"AI 思考（Agent 的整理思路/依据，会以「🤖 AI 思考」块展示）"},{"name":"folder","in":"body","required":false,"schema":{"type":"string"},"description":"分类名或分类 id；缺省=AI Agent 自留地（不存在自动创建）"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"title":{"type":"string","description":"标题（≤120 字）"},"content":{"type":"string","description":"正文 Markdown"},"ai_note":{"type":"string","description":"AI 思考（Agent 的整理思路/依据，会以「🤖 AI 思考」块展示）"},"folder":{"type":"string","description":"分类名或分类 id；缺省=AI Agent 自留地（不存在自动创建）"}}}}}}}},"/api/open/v1/notes/{id}":{"get":{"summary":"读取笔记","description":"读取某篇笔记全文（含 AI 思考块）\n\n所需权限范围：📓 我的笔记（读）（notes:read）。操作者恒为密钥主人本人。","tags":["📓 我的笔记（读）"],"security":[{"ApiId":[]},{"ApiSecret":[]}],"responses":{"200":{"description":"成功","content":{"application/json":{"schema":{"type":"object"}}}},"401":{"description":"认证失败"},"403":{"description":"未授权该范围或非小组成员"},"429":{"description":"限速"}},"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"number"},"description":"笔记 id"}]},"patch":{"summary":"更新笔记","description":"更新我的一篇笔记（标题/正文/AI 思考/分类，均可选，只传要改的）\n\n所需权限范围：📓 我的笔记（写）（notes:write）。操作者恒为密钥主人本人。","tags":["📓 我的笔记（写）"],"security":[{"ApiId":[]},{"ApiSecret":[]}],"responses":{"200":{"description":"成功","content":{"application/json":{"schema":{"type":"object"}}}},"401":{"description":"认证失败"},"403":{"description":"未授权该范围或非小组成员"},"429":{"description":"限速"}},"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"number"},"description":"笔记 id"},{"name":"title","in":"body","required":false,"schema":{"type":"string"},"description":"标题"},{"name":"content","in":"body","required":false,"schema":{"type":"string"},"description":"正文"},{"name":"ai_note","in":"body","required":false,"schema":{"type":"string"},"description":"AI 思考"},{"name":"folder","in":"body","required":false,"schema":{"type":"string"},"description":"分类名或 id"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"title":{"type":"string","description":"标题"},"content":{"type":"string","description":"正文"},"ai_note":{"type":"string","description":"AI 思考"},"folder":{"type":"string","description":"分类名或 id"}}}}}}},"delete":{"summary":"删除笔记","description":"删除我的一篇笔记（可恢复：网页端回收站语义为软删除）\n\n所需权限范围：📓 我的笔记（写）（notes:write）。操作者恒为密钥主人本人。","tags":["📓 我的笔记（写）"],"security":[{"ApiId":[]},{"ApiSecret":[]}],"responses":{"200":{"description":"成功","content":{"application/json":{"schema":{"type":"object"}}}},"401":{"description":"认证失败"},"403":{"description":"未授权该范围或非小组成员"},"429":{"description":"限速"}},"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"number"},"description":"笔记 id"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{}}}}}}},"/api/open/v1/notes/folders":{"get":{"summary":"笔记分类列表","description":"读取我的笔记分类（含每类笔记数）\n\n所需权限范围：📓 我的笔记（读）（notes:read）。操作者恒为密钥主人本人。","tags":["📓 我的笔记（读）"],"security":[{"ApiId":[]},{"ApiSecret":[]}],"responses":{"200":{"description":"成功","content":{"application/json":{"schema":{"type":"object"}}}},"401":{"description":"认证失败"},"403":{"description":"未授权该范围或非小组成员"},"429":{"description":"限速"}}},"post":{"summary":"创建笔记分类","description":"新建一个笔记分类\n\n所需权限范围：📓 我的笔记（写）（notes:write）。操作者恒为密钥主人本人。","tags":["📓 我的笔记（写）"],"security":[{"ApiId":[]},{"ApiSecret":[]}],"responses":{"200":{"description":"成功","content":{"application/json":{"schema":{"type":"object"}}}},"401":{"description":"认证失败"},"403":{"description":"未授权该范围或非小组成员"},"429":{"description":"限速"}},"parameters":[{"name":"name","in":"body","required":true,"schema":{"type":"string"},"description":"分类名（≤30 字）"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"分类名（≤30 字）"}}}}}}}},"/api/open/v1/notes/folders/{id}":{"patch":{"summary":"重命名笔记分类","description":"重命名我的一个分类\n\n所需权限范围：📓 我的笔记（写）（notes:write）。操作者恒为密钥主人本人。","tags":["📓 我的笔记（写）"],"security":[{"ApiId":[]},{"ApiSecret":[]}],"responses":{"200":{"description":"成功","content":{"application/json":{"schema":{"type":"object"}}}},"401":{"description":"认证失败"},"403":{"description":"未授权该范围或非小组成员"},"429":{"description":"限速"}},"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"number"},"description":"分类 id"},{"name":"name","in":"body","required":true,"schema":{"type":"string"},"description":"新名称"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"新名称"}}}}}}},"delete":{"summary":"删除笔记分类","description":"删除分类（其下笔记移回未分类）\n\n所需权限范围：📓 我的笔记（写）（notes:write）。操作者恒为密钥主人本人。","tags":["📓 我的笔记（写）"],"security":[{"ApiId":[]},{"ApiSecret":[]}],"responses":{"200":{"description":"成功","content":{"application/json":{"schema":{"type":"object"}}}},"401":{"description":"认证失败"},"403":{"description":"未授权该范围或非小组成员"},"429":{"description":"限速"}},"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"number"},"description":"分类 id"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{}}}}}}},"/api/open/v1/learning/summary":{"get":{"summary":"学情摘要（脱敏）","description":"我自己的学习行为聚合：近 7/28 天三环计数、连续活跃天数、行为类型占比。⚠️ 无原始日志、无精确时间戳、无他人数据\n\n所需权限范围：📊 学情数据（读·脱敏）（learning:read）。操作者恒为密钥主人本人。","tags":["📊 学情数据（读·脱敏）"],"security":[{"ApiId":[]},{"ApiSecret":[]}],"responses":{"200":{"description":"成功","content":{"application/json":{"schema":{"type":"object"}}}},"401":{"description":"认证失败"},"403":{"description":"未授权该范围或非小组成员"},"429":{"description":"限速"}}}},"/api/open/v1/learning/roster":{"get":{"summary":"学情名册（教师）","description":"读取全站名册（学号/姓名/班级）与班级列表，用于构造后续查询的筛选条件\n\n所需权限范围：📊 学情数据（教师 · 全班/指定学生）（learning:teacher:read）。操作者恒为密钥主人本人。","tags":["📊 学情数据（教师 · 全班/指定学生）"],"security":[{"ApiId":[]},{"ApiSecret":[]}],"responses":{"200":{"description":"成功","content":{"application/json":{"schema":{"type":"object"}}}},"401":{"description":"认证失败"},"403":{"description":"未授权该范围或非小组成员"},"429":{"description":"限速"}}}},"/api/open/v1/learning/events":{"get":{"summary":"学情埋点总览（教师）","description":"行为埋点聚合：按类别（导航/资源/创作/社会/AI/监控）、SRL 阶段（预备/执行/反思）与事件码的分布，含逐生事件数/活跃天数/成长指数。⚠️ 仅聚合计数，不含原始日志与对象自由文本\n\n所需权限范围：📊 学情数据（教师 · 全班/指定学生）（learning:teacher:read）。操作者恒为密钥主人本人。","tags":["📊 学情数据（教师 · 全班/指定学生）"],"security":[{"ApiId":[]},{"ApiSecret":[]}],"responses":{"200":{"description":"成功","content":{"application/json":{"schema":{"type":"object"}}}},"401":{"description":"认证失败"},"403":{"description":"未授权该范围或非小组成员"},"429":{"description":"限速"}},"parameters":[{"name":"from","in":"query","required":false,"schema":{"type":"string"},"description":"起始日期 YYYY-MM-DD（缺省=不限）"},{"name":"to","in":"query","required":false,"schema":{"type":"string"},"description":"结束日期 YYYY-MM-DD（缺省=不限）"},{"name":"banji","in":"query","required":false,"schema":{"type":"string"},"description":"班级名（与 students 二选一，缺省=全站非工作室学生）"},{"name":"students","in":"query","required":false,"schema":{"type":"string"},"description":"学号，逗号分隔（最多 80 人）"}]}},"/api/open/v1/learning/student":{"get":{"summary":"个人学情画像（教师）","description":"逐个学生读取：成长指数与基线、SOLO 五阶段判定（含六源证据投票）、ENA 认知网络密度与趋势、课堂互动参与、作业证据。⚠️ 需传学号，仅返回聚合口径\n\n所需权限范围：📊 学情数据（教师 · 全班/指定学生）（learning:teacher:read）。操作者恒为密钥主人本人。","tags":["📊 学情数据（教师 · 全班/指定学生）"],"security":[{"ApiId":[]},{"ApiSecret":[]}],"responses":{"200":{"description":"成功","content":{"application/json":{"schema":{"type":"object"}}}},"401":{"description":"认证失败"},"403":{"description":"未授权该范围或非小组成员"},"429":{"description":"限速"}},"parameters":[{"name":"xh","in":"query","required":true,"schema":{"type":"string"},"description":"学生学号"},{"name":"from","in":"query","required":false,"schema":{"type":"string"},"description":"起始日期 YYYY-MM-DD（作用于 ENA 与课堂互动）"},{"name":"to","in":"query","required":false,"schema":{"type":"string"},"description":"结束日期 YYYY-MM-DD"}]}},"/api/open/v1/learning/solo":{"get":{"summary":"SOLO 层次分布（教师）","description":"批量判定并统计 SOLO 五阶段分布（前结构/单点/多点/关联/拓展抽象），逐生给出层次与置信度\n\n所需权限范围：📊 学情数据（教师 · 全班/指定学生）（learning:teacher:read）。操作者恒为密钥主人本人。","tags":["📊 学情数据（教师 · 全班/指定学生）"],"security":[{"ApiId":[]},{"ApiSecret":[]}],"responses":{"200":{"description":"成功","content":{"application/json":{"schema":{"type":"object"}}}},"401":{"description":"认证失败"},"403":{"description":"未授权该范围或非小组成员"},"429":{"description":"限速"}},"parameters":[{"name":"banji","in":"query","required":false,"schema":{"type":"string"},"description":"班级名（缺省=全站非工作室学生）"},{"name":"students","in":"query","required":false,"schema":{"type":"string"},"description":"学号，逗号分隔（最多 80 人）"}]}},"/api/open/v1/learning/three-dim":{"get":{"summary":"三维认知诊断（教师）","description":"SOLO × ENA × 测评三维认知诊断与三级干预分级（口径与「认知罗盘 · 全站学生诊断」一致）\n\n所需权限范围：📊 学情数据（教师 · 全班/指定学生）（learning:teacher:read）。操作者恒为密钥主人本人。","tags":["📊 学情数据（教师 · 全班/指定学生）"],"security":[{"ApiId":[]},{"ApiSecret":[]}],"responses":{"200":{"description":"成功","content":{"application/json":{"schema":{"type":"object"}}}},"401":{"description":"认证失败"},"403":{"description":"未授权该范围或非小组成员"},"429":{"description":"限速"}},"parameters":[{"name":"banji","in":"query","required":false,"schema":{"type":"string"},"description":"班级名（缺省=全站非工作室学生）"},{"name":"students","in":"query","required":false,"schema":{"type":"string"},"description":"学号，逗号分隔（最多 40 人）"}]}},"/api/open/v1/learning/rhythm":{"get":{"summary":"学习时段画像（教师）","description":"行为发生时刻的 24 小时 / 星期分布、四时段占比与深夜学习比例，逐生给出峰值时段（用于观察作息与负担）\n\n所需权限范围：📊 学情数据（教师 · 全班/指定学生）（learning:teacher:read）。操作者恒为密钥主人本人。","tags":["📊 学情数据（教师 · 全班/指定学生）"],"security":[{"ApiId":[]},{"ApiSecret":[]}],"responses":{"200":{"description":"成功","content":{"application/json":{"schema":{"type":"object"}}}},"401":{"description":"认证失败"},"403":{"description":"未授权该范围或非小组成员"},"429":{"description":"限速"}},"parameters":[{"name":"from","in":"query","required":false,"schema":{"type":"string"},"description":"起始日期 YYYY-MM-DD（缺省=不限）"},{"name":"to","in":"query","required":false,"schema":{"type":"string"},"description":"结束日期 YYYY-MM-DD（缺省=不限）"},{"name":"banji","in":"query","required":false,"schema":{"type":"string"},"description":"班级名"},{"name":"students","in":"query","required":false,"schema":{"type":"string"},"description":"学号，逗号分隔（最多 80 人）"}]}}}}