所有任务接口都需要有效的
Authorization: Bearer <token> 头。GET /classes/:classId/tasks
返回班级中的所有活跃任务。每个任务都包含当前用户的个人状态(userState),用于记录查看时间、标签和排序顺序。
Path parameters
班级 UUID。
任务 UUID。
该任务所属班级 UUID。
班级名称。
任务标题。
任务对成员可见的时间,或
null。提交截止时间,或
null。是否在
dueAt 后仍接受提交。在解锁此任务前必须完成的任务 UUID 数组。
创建该任务的用户 UUID,或
null。ISO 8601 UTC 时间戳。
ISO 8601 UTC 时间戳。
已提交成员数。
班级成员总数。
当前用户在该任务上的个人状态;如果尚未有任何交互,则为
null。| 状态 | 何时发生 |
|---|---|
403 Forbidden | 你不是这个班级的成员。 |
POST /classes/:classId/tasks
在班级中创建新任务。需要 OWNER 或 ADMIN 角色。 Path parameters班级 UUID。
任务标题。
Markdown 正文内容。传入
null 可保持为空。任务对成员可见时的 ISO 8601 UTC 日期时间。传入
null 表示立即可见。ISO 8601 UTC 提交截止时间。传入
null 表示没有截止时间。是否接受
dueAt 之后的提交。在此任务解锁前必须完成的任务 UUID 数组。
description 和 attachments)。
Error codes
| 状态 | 何时发生 |
|---|---|
403 Forbidden | 权限不足(必须是 OWNER 或 ADMIN)。 |
GET /classes/:classId/tasks/drafts/mine
返回指定班级中当前用户最近的未发布草稿任务。只有 OWNER 和 ADMIN 可以调用此接口。 Path parameters班级 UUID。
包含
attachments 数组的草稿任务对象;若不存在草稿则为 null。GET /tasks/:taskId
获取任务完整详情,包括 Markdown 正文和附件。OWNER 和 ADMIN 还会收到一个包含查看和提交数量的stats 对象。
此接口不会记录任务被查看。请单独调用
POST /tasks/:taskId/view 将其标记为已读。任务 UUID。
任务 UUID。
任务标题。
Markdown 正文,或
null。已附加文件列表。
仅 OWNER 和 ADMIN 可见。
| 状态 | 何时发生 |
|---|---|
403 Forbidden | 你无权访问此任务。 |
404 Not Found | 任务不存在或已被删除。 |
PATCH /tasks/:taskId
更新任务字段。需要 OWNER 或 ADMIN 角色。 Path parameters任务 UUID。
新标题。
新的 Markdown 正文。传入
null 可清空。新的 ISO 8601 UTC 开始时间。传入
null 可清空。新的 ISO 8601 UTC 截止时间。传入
null 可清空。是否允许迟交。
更新后的阻塞任务 UUID 列表。
| 状态 | 何时发生 |
|---|---|
403 Forbidden | 权限不足。 |
DELETE /tasks/:taskId
删除任务。需要 OWNER 或 ADMIN 角色。- 若任务没有提交:执行硬删除 - 所有数据和附件都会被永久移除。
- 若任务已有提交:执行软删除 - 正文和附件会被清空,但任务记录会保留,以便提交仍可引用它。
任务 UUID。
| 状态 | 何时发生 |
|---|---|
403 Forbidden | 权限不足。 |
POST /tasks/:taskId/view
记录当前用户已查看某个任务。成员打开任务详情页时调用此接口。只有第一次调用会设置viewedAt - 后续调用不会产生变化。
Path parameters
任务 UUID。
POST /tasks/parse
使用 AI 将自然语言任务描述解析为结构化字段。该接口不会创建任务 - 只会返回解析建议。如果 LLM 调用失败或返回了意外格式,该接口仍会返回
200,并将所有字段设为 null(优雅降级)。自然语言任务描述,例如
"Submit the lab report by next Friday, no late submissions"。Suggested task title, or
null.1 到 3 种可能的开始/截止时间解释。输入含糊时会返回多个选项。
解析出的迟交偏好;若未提及则为
null。建议的 Markdown 正文,或
null。POST /tasks/:taskId/parse
使用 AI 解析草稿任务,并整合已上传的附件。会自动更新草稿的title、startAt、dueAt 和 description(使用第一个 timeOption)。还会生成并缓存可通过 GET /tasks/:taskId/draft-markdown 获取的 Markdown 草稿。只有 OWNER 和 ADMIN 可以调用此接口。
Path parameters
草稿任务 UUID。
自然语言描述。若省略,则使用该任务现有的
sourceText。POST /tasks/parse 相同的字段,外加:
是否已生成 Markdown 草稿并可供检索。
GET /tasks/:taskId/draft-markdown
从之前的POST /tasks/:taskId/parse 调用中获取 AI 生成的 Markdown 草稿。该草稿在解析后可保留 3 天。只有 OWNER 和 ADMIN 可以调用此接口。
Path parameters
草稿任务 UUID。
缓存的 Markdown 内容;如果不存在缓存或已过期则为
null。POST /tasks/:taskId/attachments
向任务正文上传文件附件。需要 OWNER 或 ADMIN 角色。接受multipart/form-data。
Path parameters
任务 UUID。
要上传的文件。
附件 UUID。
存储键。
原始文件名。
MIME 类型。
文件大小(字节)。
指向
GET /files/:fileKey 的 URL。ISO 8601 UTC 时间戳。
| 状态 | 何时发生 |
|---|---|
403 Forbidden | 权限不足。 |