# Education APIs
本组API是教务领域相关接口。
- 使用本组API前请先阅读概述,使用前的准备工作请参考此处,令牌的获取参考此处,构造请求请参考此处,返回数据请参考此处,除非特殊注明,所有开放式API有着通用的返回结构。
- 每个API的授权方式、授权范围和是否API SDK支持请查看以下每个API详细的表述。
# 基本概念
# 时间
两个概念:校历、课节 尚不提供
# 地点
三个概念:校区、大楼、教室 需和资产、房产、网络的数据统一提供,尚不提供
# 人物
三个概念:教师、学生、院系 参见Profile APIs
# 对象
两个概念:学科、专业、课程
# 事件
教学过程中的活动(或事件),基于时间地点任务对象中的基础实体,产生的一些业务实体
- 入学、注册、升级、异动、毕业
影响概念:学籍、培养方案、培养计划、行政班 - 计划、排课
影响概念:教学计划、教学班 - 选课
影响概念: 课表(三个视角:教师课表、学生课表、教室课表) 几乎和1-4中所有概念相关 - 排考
影响概念:考场 - 考试
影响概念:成绩
# 获取教学班信息
# 功能介绍
根据参数中指定的教学班编码或bsid获取教学班信息,包括课程信息和排课情况。使用授权码(Authorization Code)方式获取scope为lessons的令牌即可访问。
# 请求参数
- 路径参数 code教学班编码, bsid两者选择其一
# 响应参数
所有API的响应参数都具有相同的通用结构,本文档只描述通用结构中entities数组返回的数据对象。
- Lesson 课程信息 Structure
{
"id":{guid}, // 暂未提供,无意义id
"name":{string}, // 教学班名称
"uri":{string}, // 暂无,待议
"kind":"sjtu.lesson", // 固定值
"bsid":{string}, // 即:bsid
"code":{string}, // 教学班编码
"course": {
"id":{guid}, // 无提供
"code":{string}, // 课程代码
"name":{string}, // 课程名
"kind":"sjtu.course", // 固定值
}
"teachers":[{canvas.profile}], // 只给出姓名即可(工号如需要使用code)
"organize":{
"id":{guid},
"code":{string}, // 院系代码
"name":{string}, // 院系名称
"kind":"sjtu.organize"
}
"hours": {integer}, // 学时
"credits":{double}, // 学分
"classes":[{ // 上课安排,未排课的此数据未空
"schedule": {
"kind":"sjtu.schedule",
"week":{int}, // 周次(0-17),如5表示第六周
"day":{int}, // 星期(0-6),如0表示星期一
"period":{string}, // 节次(0-17),如0表示第一节
"last":{int}, // 持续课节,可能因考试、上课的不同而课节定义不同
"start":{long}, // 具体开始时间的unix时间戳(校历数据不完整时可不提供)
"finish":{long}, // 具体结束时间的unix时间戳(校历数据不完整时可不提供)
}
"classroom":{
"name":{string}, // 上课地点,如东上院101
"kind":"sjtu.room" // 固定值
}
}]
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
- Profile 用户 Structure
请参考Profile API中的用户信息响应参数
# 请求示例
GET /v1/lesson/377669 HTTP/1.1
Host: api.sjtu.edu.cn
1
2
2
# 响应示例
HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
{
"errno": 0,
"error": "success",
"total": 0,
"entities": [
{
"name": "2016-2017-1-BI907-377669",
"kind": "sjtu.lesson",
"bsid": "377669",
"code": "2016-2017-1-BI907-377669",
"course": {
"code": "BI907",
"name": "基因与人",
"kind": "sjtu.course"
},
"teachers": [{
"name": "李大伟",
"kind": "canvas.profile"
}],
"organize": {
"id": "17000",
"name": "药学院"
},
"hours": 32,
"credits": 2,
"classes": [
{
"schedule": {
"kind": "sjtu.schedule",
"week": 14,
"day": 1,
"period": 7,
"start": 1591080900,
"finish": 1591083600
},
"classroom": {
"name": "东中院2-401",
"kind": "sjtu.room"
}
}
...
]
}
]
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
# 获取学生课表
# 功能介绍
获取令牌中指定用户的学期课程信息
# 请求参数
- 路径参数 term 用于指定学期,选填,不指定学期就查询当前学期(学期号格式例如2012-2013-1)
# 响应参数
所有API的响应参数都具有相同的通用结构,本文档只描述通用结构中entities数组返回的数据对象。
同以上课程信息数据结构
# 请求示例
GET /v1/me/lessons HTTP/1.1
Host: api.sjtu.edu.cn
1
2
2
# 获取学生考试信息
注意
此API尚未实现
# 功能介绍
获取学生考试信息,此API需考试或者成绩scope两者至少一个,如果只有成绩scope无考试scope时,则classroom和schedule信息不给出
# 请求参数
- 路径参数 term 可选,可指定学期号(格式:2012-2013-1),不指定则查询当前学期
# 响应参数
所有API的响应参数都具有相同的通用结构,本文档只描述通用结构中entities数组返回的数据对象。
- Examination 考试信息 structure
{
"kind":"sjtu.examination",
"id":{guid}, // GUID,暂未使用
"name":{string}, // 考试名称,即课程名称?
"lesson":{sjtu.lesson}, // 对应的lesson
"classroom":{sjtu.room}, // 位置信息 ,是否给出受scope影响
"schedule":{sjtu.schedule}, // 时间信息
"score":{string} // 成绩信息,可能未空,原因有二:1.未出成绩 2.scope没有权限
}
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
- Room 位置信息 structure
{
"kind":"sjtu.room",
"name":{string}, // 上课地点,如东上院101
}
1
2
3
4
2
3
4
- Schedule 事件信息
{
"kind":"sjtu.schedule",
"week":{int}, // 周次(0-17),如5表示第六周
"day":{int}, // 星期(0-6),如0表示星期一
"period":{string}, // 节次(0-17),如0表示第一节
"last":{int}, // 持续课节,可能因考试、上课的不同而课节定义不同
"start":{long}, // 具体开始时间的unix时间戳(校历数据不完整时可不提供)
"finish":{long}, // 具体结束时间的unix时间戳(校历数据不完整时可不提供)
}
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
# 获取学生绩点信息
注意
此API尚未实现
# 功能介绍
获取学生绩点信息
# 请求参数
除了access_token外无其他参数
# 响应参数
所有API的响应参数都具有相同的通用结构,本文档只描述通用结构中entities数组返回的数据对象。
- GPA 绩点信息 structure
{
"user":{canvas.profile}, // 只含id,name,code
"gpa":{double}, // 平均绩点
"credits":{double}, // 对应gpa总学分
"timestamp":{long}, // 计算时间,时间戳格式返回
"year":{string}, // 学年
"semester":{string}, // 学期
}
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8