# Calendar APIs

本API用于第三方应用和校内日程系统同步日程安排。

APIs使用注意事项

  1. 该APIs权限申请目前仅支持教职工线下申请。
  2. 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

# 响应参数

所有API的响应参数都具有相同的通用结构,本文档只描述通用结构中entities数组返回的数据对象。

发送成功后会回复调用结果

{
    "errno":{number},                      // 错误号,0表示成功
    "error":{string},                      // 错误信息,在错误号不为0时可查看详细错误原因
    "total":{int},                         // 固定为0 ,无意义
    "entities":[{Event}]                   // Event 对象
}
1
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

# 响应示例

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

# 删除日程安排

# 功能介绍

用于依据日程ID删除指定日程安排

# 请求参数

id:创建日程成功后返回的日程id

# 响应参数

所有API的响应参数都具有相同的通用结构,本文档只描述通用结构中entities数组返回的数据对象。

发送成功后会回复调用结果

{
    "errno":{number},                      // 错误号,0表示成功
    "error":{string},                      // 错误信息,在错误号不为0时可查看详细错误原因
    "total":{int},                         // 固定为0 ,无意义
    "entities":null                        // Event 对象
}
1
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
  • Event.recurrence.patternType 日程重复类型 Data
Value Description Remark
Daily 每日,日程按 interval 指定的时间间隔天数重复发生。 目前仅支持每天(intervalNumber=1)
Weekly 日程按时间间隔周数在一周内的一天或几天重复发生。 目前支持每周(intervalNumber=1)和每两周(intervalNumber=2)
AbsoluteMonthly 日程按时间间隔月数在相应月份的指定一天(例如 15 号)重复发生。 目前仅支持每月(intervalNumber=1)
AbsoluteYearly 日程按时间间隔年数在指定月份的一天重复发生。 暂不支持