课表与日历

schedule、calendar/events 与字段

路径未版本化 最后更新:2026-10-25

课表与日历

GET /api/schedule

认证:是。班级:必需。用途:返回指定周次的课表、本周日期和节次时间。

参数位置类型说明
weekquerynumber第几周;不传或不在 1–30 范围内时回落当前周
classquerystring可选,班级 id 或 slug
返回字段说明
classId本次请求的班级 id
termName / termStart学期名称、学期第 1 周周一日期(YYYY-MM-DD)
periodTimes节次时间数组,元素形如 08:00-08:45
periodCount节次数(1–20)
week / currentWeek / weekDates本次周次、当前周次、索引 1–7 的日期数组
todayWeekday1–7;查看非本周时为 0
courses / todayCourses / totalCourses本周课程、今天课程、全部课程数量
meta.classId / meta.isCurrentWeek班级 id、是否当前周

课程对象字段:id、name、teacher、location、weekday(1–7)、weekdayName、startPeriod、endPeriod、periodText、weeks、weekText、color。

curl -s "$BASE/api/schedule?week=9&class=demo-class" \
  -H "Authorization: Bearer $TOKEN"

GET /api/calendar/events

认证:是。班级:必需。用途:返回已展开的手机日历事件(每次课 + 未完成待办),供 Android 端写入本地日历。

参数位置类型说明
fromquerystring可选,YYYY-MM-DD,按事件开始日期过滤
toquerystring可选,YYYY-MM-DD,按事件开始日期过滤
classquerystring可选,班级 id 或 slug
{
  "ok": true,
  "data": {
    "generatedAt": "2026-10-25T07:41:14.373Z",
    "classId": 3,
    "from": null,
    "to": null,
    "events": [
      {
        "uid": "class32601-c3-course-5-20261012",
        "type": "course",
        "title": "中国近现代史纲要",
        "start": "2026-10-12T14:00:00+08:00",
        "end": "2026-10-12T15:35:00+08:00",
        "location": "教学楼 A-101",
        "description": "教师:示例教师\n第 5-6 节\n1-16 周",
        "color": "#8B5CF6"
      },
      {
        "uid": "class32601-c3-todo-55",
        "type": "todo",
        "title": "待办:交实验报告",
        "start": "2026-10-30T23:59:00+08:00",
        "end": "2026-10-31T00:29:00+08:00",
        "location": "",
        "description": "周四前交到学习委员处\n班级待办\n截止 10-30 23:59",
        "color": "#F59E0B"
      }
    ]
  }
}
  • uid 是稳定标识,格式随多班级增加班级 id 段;Android 端按 UID 做增/改/删,不应自行生成。
  • 课程事件从学期第 1 周展开到课程最大周次;待办事件只包含未完成待办,source_key 以 course: 开头的自动待办不写入日历。
  • 没有开始时间、只有结束时间的待办,事件从结束时间开始并占 30 分钟;开始/结束至少填一个。
  • 响应额外设置 Cache-Control: no-store。
若本文与源码不一致,以源码和实际响应为准;发现不一致时请更新文档,而不是修改 API 行为。 学生使用指南 · 返回 API 总览