Skip to main content
提交用于跟踪每个成员在任务中的作业。成员可以创建和更新自己的提交;OWNER 和 ADMIN 可以查看全部提交、批改它们并导出结果。
所有提交接口都需要有效的 Authorization: Bearer <token> 头。

GET /tasks/:taskId/submissions

返回某个任务中每位班级成员的提交状态。包括尚未提交的成员。需要 OWNER 或 ADMIN 角色。 Path parameters
taskId
string
required
任务 UUID。
Response — 200 OK 提交列表行数组(每位班级成员一行)。
userId
string
required
成员的用户 UUID。
nickname
string
显示名,或 null
avatarHash
string
required
用于 Gravatar 查找的用户邮箱 SHA-256 十六进制哈希。
schoolName
string
学校名称,或 null
studentId
string
学号,或 null
role
string
required
成员角色:OWNERADMINMEMBER
submitted
boolean
required
成员是否已提交。
attachments
object[]
required
提交附件列表。若未提交则为空数组。
submission
object
提交摘要,若未提交则为 null
Error codes
状态何时发生
403 Forbidden权限不足(必须是 OWNER 或 ADMIN)。
curl https://api.yourdomain.com/tasks/t1a2b3c4-.../submissions \
  -H "Authorization: Bearer <token>"

GET /tasks/:taskId/submissions/me

获取当前用户对某个任务的提交。 Path parameters
taskId
string
required
任务 UUID。
Response — 200 OK
id
string
required
Submission UUID.
taskId
string
required
Task UUID.
userId
string
required
Submitter UUID.
content
string
Markdown 正文内容,或 null
attachments
object[]
required
已上传附件列表。
firstSubmittedAt
string
required
首次提交的 ISO 8601 UTC 时间戳。
lastUpdatedAt
string
required
最后更新的 ISO 8601 UTC 时间戳。
score
number
批改人给出的分数,或 null
reviewNote
string
批改人反馈,或 null
isExemplary
boolean
required
该提交是否被标记为示例提交。
Error codes
状态何时发生
404 Not Found你还没有提交这个任务。
curl https://api.yourdomain.com/tasks/t1a2b3c4-.../submissions/me \
  -H "Authorization: Bearer <token>"

PUT /tasks/:taskId/submissions/me

创建或更新你对某个任务的提交(upsert)。如果没有提交记录,就会创建一条,并记录 firstSubmittedAt。如果已有提交记录,则会更新它 - 更新时 firstSubmittedAt 永远不会改变。
如果 allowLateSubmissionfalse 且任务的 dueAt 已经过期,此接口会返回 403。截止后你无法提交或更新。
Path parameters
taskId
string
required
任务 UUID。
Request body
content
string
你的提交的 Markdown 正文。传入 null 可清空。附件请通过 POST /tasks/:taskId/submissions/me/attachments 单独上传。
Response — 200 OK 返回完整的提交详情对象(结构与 GET /tasks/:taskId/submissions/me 相同)。 Error codes
状态何时发生
403 Forbidden已禁用迟交,且截止时间已过。
curl -X PUT https://api.yourdomain.com/tasks/t1a2b3c4-.../submissions/me \
  -H "Authorization: Bearer <token>" \
  -H "Content-Type: application/json" \
  -d '{"content": "## My Solution\n\nHere is my approach..."}'

GET /tasks/:taskId/submissions/:submissionId

获取某个提交的完整详情,包括其 Markdown 正文和附件。供 OWNER 和 ADMIN 在批改页面使用。需要 OWNER 或 ADMIN 角色。 Path parameters
taskId
string
required
任务 UUID。
submissionId
string
required
提交 UUID。
Response — 200 OK 返回提交详情对象(结构与 GET /tasks/:taskId/submissions/me 相同)。 Error codes
状态何时发生
403 Forbidden权限不足(必须是 OWNER 或 ADMIN)。
404 Not Found提交不存在。
curl https://api.yourdomain.com/tasks/t1a2b3c4-.../submissions/sub789-... \
  -H "Authorization: Bearer <token>"

PATCH /tasks/:taskId/submissions/:submissionId/grade

为提交分配分数和/或反馈。需要 OWNER 或 ADMIN 角色。reviewerId 会自动设为当前用户,reviewedAt 会设为当前时间。 Path parameters
taskId
string
required
任务 UUID。
submissionId
string
required
提交 UUID。
Request body
score
number
数值分数。传入 null 可移除分数。
reviewNote
string
书面反馈。传入 null 可清空。
Response — 200 OK 返回更新后的提交详情对象。 Error codes
状态何时发生
403 Forbidden权限不足(必须是 OWNER 或 ADMIN)。
curl -X PATCH https://api.yourdomain.com/tasks/t1a2b3c4-.../submissions/sub789-.../grade \
  -H "Authorization: Bearer <token>" \
  -H "Content-Type: application/json" \
  -d '{
    "score": 95,
    "reviewNote": "Excellent work. Clean code and well-commented."
  }'

GET /tasks/:taskId/submissions/export

将某个任务的所有提交数据导出为 CSV 文件。包含每位班级成员 - 未提交的成员会显示为空的提交字段。需要 OWNER 或 ADMIN 角色。 **CSV 列:**昵称、学校、学号、班级、任务名称、首次提交时间、最后更新时间、分数。 Path parameters
taskId
string
required
任务 UUID。
Response — 200 OK 返回 text/csv 内容,响应头为:
Content-Disposition: attachment; filename="submissions_export.csv"
Error codes
状态何时发生
403 Forbidden权限不足(必须是 OWNER 或 ADMIN)。
curl https://api.yourdomain.com/tasks/t1a2b3c4-.../submissions/export \
  -H "Authorization: Bearer <token>" \
  -o submissions.csv