# Calendar APIs
本API用于第三方应用和校内日程系统同步日程安排。
- 使用本组API前请先阅读概述,使用前的准备工作请参考此处,令牌的获取参考此处,构造请求请参考此处,返回数据请参考此处,除非特殊注明,所有开放式API有着通用的返回结构。
- 每个API的授权方式、授权范围和是否API SDK支持请查看以下每个API详细的表述。
APIs使用注意事项
- 该APIs权限申请目前仅支持教职工线下申请。
- APIs使用前需要申请calendar权限,并线下联系确认订阅源CODE (将用作APIs中的src字段)
# 创建日程安排
# 功能介绍
用于向校内日程系统同步用户日程安排,使用客户端凭据授予方式获取scope为calendar的令牌即可访问。
# 请求参数
请求发送通知时请设置Content-Type请求头为application/json,并在请求体中放一个日程对象,格式如下
# Event 日程安排 Structure
"id":{String} //会议id,必填
"name":{String} //标题,必填
"content":{String} //内容
"address":{String} //地址
"timeFrom":{long} //开始时间(秒),必填
"timeTo":{long} //结束时间(秒),必填
"applicantCode":{String} //创建人账号,必填
"applicantName":{String} //创建人姓名,必填
"attendeeList":{String} //参与人账号(多个账号以','分隔)
"src":{String} //同步事件来源,新订阅源需约定src,必填
"recurrenceEndtime":{long} //重复事件结束时间(秒)
"recurrence":{
"patternType":{String} //重复事件类型(Daily/Weekly/AbsoluteMonthly/AbsoluteYearly),重复时必填
"rangeType":{String} //重复事件结束类型(EndDate/Numbered),默认EndDate,重复时必填
"endDate":{long} //重复事件结束时间,默认时间起始时间一年后,结束类型EndDate必填
"numberOfOccurrences":{String} //重复事件结束次数,默认为1,结束类型Numbered必填。该功能暂不支持。
"daysOfWeek":{String} //在星期几重复,默认为时间起始时间,重复类型Weekly时必填。该功能暂不支持
"intervalNumber":{Integer} //重复间隔,默认为1,重复时必填
},
"reminderOn":{boolean} //是否开启提醒
"reminderMinutes":{int} //支持0,5,10,15,30,60,1440(1天),10080(1周)
}
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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# 响应参数
所有API的响应参数都具有相同的通用结构,本文档只描述通用结构中entities数组返回的数据对象。
发送成功后会回复调用结果
{
"errno":{number}, // 错误号,0表示成功
"error":{string}, // 错误信息,在错误号不为0时可查看详细错误原因
"total":{int}, // 固定为0 ,无意义
"entities":[{Event}] // Event 对象
}
1
2
3
4
5
6
2
3
4
5
6
# 请求示例
POST /v1/calendar/event?access_token=token HTTP/1.1
Host: api.sjtu.edu.cn
Content-Type: application/json
{
"id":"test21050701",
"name":"测试",
"content":"测试内容",
"timeFrom":1619148900,
"timeTo":1619152200,
"applicantCode":"testprofilenewfresh2",
"applicantName":"测试人",
"attendeeList":"testprofilenewfresh2",
"src":"TEST",
"reminderOn":true,
"reminderMinutes":5
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# 响应示例
HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
{
"errno": 0,
"error": "success",
"total": 1,
"nextToken": null,
"entities": [
{
"id": "TTtest21050701",
"name": "测试",
"content": "测试内容",
"address": null,
"timeFrom": "2021-04-23 11:35",
"timeTo": "2021-04-23 12:30",
"applicantCode": "testprofilenewfresh2",
"applicantName": "测试人",
"attendeeList": "testprofilenewfresh2",
"src": "TEST",
"recurrenceEndtime": null,
"recurrence": null,
"reminderOn": true,
"reminderMinutes": 5
}
],
"type": null,
"success": true
}
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
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
# 删除日程安排
# 功能介绍
用于依据日程ID删除指定日程安排
# 请求参数
id:创建日程成功后返回的日程id
# 响应参数
所有API的响应参数都具有相同的通用结构,本文档只描述通用结构中entities数组返回的数据对象。
发送成功后会回复调用结果
{
"errno":{number}, // 错误号,0表示成功
"error":{string}, // 错误信息,在错误号不为0时可查看详细错误原因
"total":{int}, // 固定为0 ,无意义
"entities":null // Event 对象
}
1
2
3
4
5
6
2
3
4
5
6
# 请求示例
curl -v -X DELETE "https://api.sjtu.edu.cn/v1/calendar/event/TTtest21050701?access_token=token"
1
# 响应示例
HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
{
"errno": 0,
"error": "success",
"total": 0,
"nextToken": null,
"entities": null,
"type": null,
"success": true
}
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
- Event.recurrence.patternType 日程重复类型 Data
Value | Description | Remark |
---|---|---|
Daily | 每日,日程按 interval 指定的时间间隔天数重复发生。 | 目前仅支持每天(intervalNumber=1) |
Weekly | 日程按时间间隔周数在一周内的一天或几天重复发生。 | 目前支持每周(intervalNumber=1)和每两周(intervalNumber=2) |
AbsoluteMonthly | 日程按时间间隔月数在相应月份的指定一天(例如 15 号)重复发生。 | 目前仅支持每月(intervalNumber=1) |
AbsoluteYearly | 日程按时间间隔年数在指定月份的一天重复发生。 | 暂不支持 |