胆小的马克杯 · tkinter 字体模糊 - CSDN文库· 3 月前 · |
发怒的楼房 · 钢铁雄心4dlc_抖抖音· 1 年前 · |
谦和的猕猴桃 · 买迈腾gte的10大忠告_车主指南· 1 年前 · |
豁达的小摩托 · 刚开始他想买一辆电动皮卡,后来“不小心”卖出 ...· 1 年前 · |
英姿勃勃的胡萝卜 · 用力生活的青春真好——影评《五个扑水的少年》 ...· 1 年前 · |
rest outlook |
https://learn.microsoft.com/zh-cn/previous-versions/office/office-365-api/api/version-2.0/calendar-rest-operations |
细心的乒乓球
5 月前 |
适用于:Exchange Online | Office 365 | Hotmail.com | Live.com | MSN.com | Outlook.com | Passport.com** **
日历 API 可用于访问 Office 365 中的 Azure Active Directory 保护的事件、日历和日历组数据,以及特定于以下域中的 Microsoft 帐户的类似数据:Hotmail.com、Live.com、MSN.com、Outlook .com 和 Passport.com。
对 API 的 v2.0 不感兴趣? 在左侧的目录中,转到 Office 365 REST API 参考 部分,然后选择所需的版本。
事件表示用户日历上的约会或会议。 事件可以是一个系列主事件(定期事件)、一个执行、一个单个实例或一次异常。
日历用作事件容器。 用户可以拥有多个日历。 在 Office 365 中,每个日历都可以分配给一个日历组。
日历组是组织多个日历的一种方式。 用户可以将多个日历添加到 Outlook 或 Outlook Web 应用中的单个日历组中。 这使用户更容易快速查看此组内的所有日历。
Outlook.com 仅支持可通过
../me/calendars
快捷方式访问的默认日历组。 不能删除该日历组,或者创建另一个日历组。
像其他 Outlook REST API 那样,对 Calendar API 的每个请求,都应该包含有效的访问令牌。 获取访问令牌需要注册和识别应用,并获得相应的授权。
你可以 了解更多 有关简化注册和授权选项的信息。 在 Calendar API 中继续执行特定操作时,请记住这一点。
Office 365 和 Outlook.com 日历支持共享。 创建日历的用户可以与其他用户共享日历。 要访问与该用户已共享日历,以下范围是必需项:
https://outlook.office.com/calendars.read.shared
https://outlook.office.com/calendars.readwrite.shared
所有版本的 Outlook REST API 都支持日历 REST API。 功能可能因具体版本而异。
始终代表当前用户执行 Calendar API 请求。
有关 Outlook REST API 所有子集所共有的更多信息,请参阅 使用 Outlook REST API 。
获取事件集合或事件。
事件正文可以是文本或 HTML。
你可以使用
Prefer: outlook.body-content-type
标头指定 GET 请求的
正文
属性中所返回的所需的格式:
Prefer: outlook.body-content-type="text"
获取以文本格式返回的事件正文。
Prefer: outlook.body-content-type="html"
,或者直接跳过标头,以 HTML 格式返回事件正文。
如果你指定了任一标头,则响应将包含相应的
Preference-Applied
标头作为确认:
Preference-Applied: outlook.body-content-type="text"
Preference-Applied: outlook.body-content-type="html"
所有获取日历事件的操作都可以使用 Prefer: outlook.timezone HTTP 标头来指定响应中开始和结束时间的时区。 例如,下面的 Prefer: outlook.timezone 标头将响应中的开始和结束时间设置为东部标准时间。
Prefer: outlook.timezone="Eastern Standard Time"
如果未指定 Prefer: outlook.timezone 标头,则返回用 UTC 表示的响应中的开始和结束时间。 请参阅此列表了解支持的时区名称。
可以使用_事件_资源中的 OriginalStartTimeZone 和 OriginalEndTimeZone 属性来查找创建事件时使用的时区。
获取日历视图
获取系列主事件和单个事件
获取事件实例)
获取日历视图
要求的最小范围
以下各项之一:
https://outlook.office.com/calendars.read
wl.calendars
wl.contacts_日历
从用户的主日历 (../me/calendarview
) 或其他日历中,获取由时间范围定义的日历视图中事件的执行、异常和单一实例。
GET https://outlook.office.com/api/v2.0/me/calendarview?startDateTime={start_datetime}&endDateTime={end_datetime}
GET https://outlook.office.com/api/v2.0/me/calendars/{calendar_id}/calendarview?startDateTime={start_datetime}&endDateTime={end_datetime}
使用 Prefer: outlook.timezone 标头来指定响应中事件开始和结束时间要使用的时区。 如果该事件是在不同的时区中创建的,则开始和结束时间将调整到指定的时区。
请参阅此列表了解支持的时区名称。 如果未指定 Prefer: outlook.timezone 标头,则返回用 UTC 表示的开始和结束时间。
默认情况下,响应中的每个事件都包含其所有属性。 使用 $select
只指定那些你需要的最佳性能的属性。 始终返回该 ID 属性。 请参阅 OData 查询参数 了解筛选、排序和分页参数。
例如,获取 10 月份的日历视图,仅返回每个事件的“主题”属性。 假设 Prefer: outlook.timezone 标头未包含在请求中,时区则为 UTC。
GET https://outlook.office.com/api/v2.0/me/calendarview?startDateTime=2014-10-01T01:00:00&endDateTime=2014-10-31T23:00:00&$select=Subject
指定时间范围内的扩展事件。
获取系列主事件和单个事件
要求的最小范围
以下各项之一:
https://outlook.office.com/calendars.read
wl.calendars
wl.contacts_日历
从用户的主日历 (../me/events
) 或其他日历获取系列主事件和单个实例事件的集合。 要获取扩展的事件实例,可以获取日历视图,或者获取事件的实例。
GET https://outlook.office.com/api/v2.0/me/events
GET https://outlook.office.com/api/v2.0/me/calendars/{calendar_id}/events
使用 Prefer: outlook.timezone 标头来指定响应中事件开始和结束时间要使用的时区。 如果该事件是在不同的时区中创建的,则开始和结束时间将调整到指定的时区。
请参阅此列表了解支持的时区名称。 如果未指定 Prefer: outlook.timezone 标头,则返回用 UTC 表示的开始和结束时间。
响应中的每个事件都包含其所有属性。 使用 $select
只指定那些你需要的最佳性能的属性。 始终返回该 ID 属性。 请参阅下个示例。 请参阅 OData 查询参数 了解筛选、排序和分页参数。
以下示例显示如何使用 $select
来指定只返回响应中每个事件的主题、组织者、开始和结束属性。 请参阅 获取事件 (REST) 中的第一个示例响应,了解当你不使用 $select
时,某事件返回的完整属性列表。
GET https://outlook.office.com/api/v2.0/me/events?$select=Subject,Organizer,Start,End
"@odata.context": "https://outlook.office.com/api/beta/$metadata#Me/Events(Subject,Organizer,Start,End)",
"value": [
"@odata.id": "https://outlook.office.com/api/beta/Users('ddfcd489-628b-40d7-b48b-57002df800e5@1717622f-1d94-4d0c-9d74-709fad664b77')/Events('AAMkAGI28tEyDAAA=')",
"@odata.etag": "W/\"nfZyf7VcrEKLNoU37KWlkQAA/LpDWw==\"",
"Id": "AAMkAGI28tEyDAAA=",
"Subject": "Scrum",
"Start": {
"DateTime": "2015-11-02T17:00:00",
"TimeZone": "Pacific Standard Time"
"End": {
"DateTime": "2015-11-02T17:30:00",
"TimeZone": "Pacific Standard Time"
"Organizer": {
"EmailAddress": {
"Name": "user0TestUser",
"Address": "user0@a830edad9050849NDA1.onmicrosoft.com"
"@odata.id": "https://outlook.office.com/api/beta/Users('ddfcd489-628b-40d7-b48b-57002df800e5@1717622f-1d94-4d0c-9d74-709fad664b77')/Events('AAMkAGI28tEyCAAA=')",
"@odata.etag": "W/\"nfZyf7VcrEKLNoU37KWlkQAA/LpDWg==\"",
"Id": "AAMkAGI28tEyCAAA=",
"Subject": "team lunch",
"Start": {
"DateTime": "2015-11-02T00:00:00",
"TimeZone": "Pacific Standard Time"
"End": {
"DateTime": "2015-11-03T00:00:00",
"TimeZone": "Pacific Standard Time"
"Organizer": {
"EmailAddress": {
"Name": "user0TestUser",
"Address": "user0@a830edad9050849NDA1.onmicrosoft.com"
"@odata.id": "https://outlook.office.com/api/beta/Users('ddfcd489-628b-40d7-b48b-57002df800e5@1717622f-1d94-4d0c-9d74-709fad664b77')/Events('AAMkAGI2ADTG93AAA=')",
"@odata.etag": "W/\"nfZyf7VcrEKLNoU37KWlkQAAA0x49w==\"",
"Id": "AAMkAGI2G93AAA=",
"Subject": "Weekly Meeting on Contoso Project",
"Start": {
"DateTime": "2014-10-13T21:00:00",
"TimeZone": "Pacific Standard Time"
"End": {
"DateTime": "2014-10-13T22:00:00",
"TimeZone": "Pacific Standard Time"
"Organizer": {
"EmailAddress": {
"Name": "Alex D",
"Address": "alexd@a830edad9050849NDA1.onmicrosoft.com"
"@odata.id": "https://outlook.office.com/api/beta/Users('ddfcd489-628b-40d7-b48b-57002df800e5@1717622f-1d94-4d0c-9d74-709fad664b77')/Events('AAMkAGI2TG92AAA=')",
"@odata.etag": "W/\"nfZyf7VcrEKLNoU37KWlkQAAA0x49g==\"",
"Id": "AAMkAGI2TG92AAA=",
"Subject": "Daily Team Meeting",
"Start": {
"DateTime": "2014-10-13T18:00:00",
"TimeZone": "Pacific Standard Time"
"End": {
"DateTime": "2014-10-13T18:30:00",
"TimeZone": "Pacific Standard Time"
"Organizer": {
"EmailAddress": {
"Name": "Alex D",
"Address": "alexd@a830edad9050849NDA1.onmicrosoft.com"
"@odata.id": "https://outlook.office.com/api/beta/Users('ddfcd489-628b-40d7-b48b-57002df800e5@1717622f-1d94-4d0c-9d74-709fad664b77')/Events('AAMkAGI2TG91AAA=')",
"@odata.etag": "W/\"nfZyf7VcrEKLNoU37KWlkQAAA0x47Q==\"",
"Id": "AAMkAGI2TG91AAA=",
"Subject": "Rob:Alex 1:1",
"Start": {
"DateTime": "2014-10-15T16:30:00",
"TimeZone": "Pacific Standard Time"
"End": "2014-10-15T17:30:00Z",
"Organizer": {
"EmailAddress": {
"Name": "Alex D",
"Address": "alexd@a830edad9050849NDA1.onmicrosoft.com"
"@odata.id": "https://outlook.office.com/api/beta/Users('ddfcd489-628b-40d7-b48b-57002df800e5@1717622f-1d94-4d0c-9d74-709fad664b77')/Events('AAMkAGI2TG90AAA=')",
"@odata.etag": "W/\"nfZyf7VcrEKLNoU37KWlkQAAA0x46g==\"",
"Id": "AAMkAGI2TG90AAA=",
"Subject": "Thanksgiving Holiday",
"Start": {
"DateTime": "2015-11-26T00:00:00",
"TimeZone": "Pacific Standard Time"
"End": {
"DateTime": "2015-11-27T00:00:00",
"TimeZone": "Pacific Standard Time"
"Organizer": {
"EmailAddress": {
"Name": "Alex D",
"Address": "alexd@a830edad9050849NDA1.onmicrosoft.com"
"@odata.id": "https://outlook.office.com/api/beta/Users('ddfcd489-628b-40d7-b48b-57002df800e5@1717622f-1d94-4d0c-9d74-709fad664b77')/Events('AAMkAGI2TG9zAAA=')",
"@odata.etag": "W/\"nfZyf7VcrEKLNoU37KWlkQAAA0x46Q==\"",
"Id": "AAMkAGI2TG9zAAA=",
"Subject": "Thanksgiving Holiday",
"Start": {
"DateTime": "2014-11-27T00:00:00"
"TimeZone": "Pacific Standard Time"
"End": {
"DateTime": "2014-11-28T00:00:00",
"TimeZone": "Pacific Standard Time"
"Organizer": {
"EmailAddress": {
"Name": "Alex D",
"Address": "alexd@a830edad9050849NDA1.onmicrosoft.com"
"@odata.id": "https://outlook.office.com/api/beta/Users('ddfcd489-628b-40d7-b48b-57002df800e5@1717622f-1d94-4d0c-9d74-709fad664b77')/Events('AAMkAGI2TG9yAAA=')",
"@odata.etag": "W/\"nfZyf7VcrEKLNoU37KWlkQAAA0x49Q==\"",
"Id": "AAMkAGI2TG9yAAA=",
"Subject": "New Year's Day Holiday",
"Start": {
"DateTime": "2015-01-01T00:00:00",
"TimeZone": "Pacific Standard Time"
"End": {
"DateTime": "2015-01-02T00:00:00",
"TimeZone": "Pacific Standard Time"
"Organizer": {
"EmailAddress": {
"Name": "Alex D",
"Address": "alexd@a830edad9050849NDA1.onmicrosoft.com"
"@odata.id": "https://outlook.office.com/api/beta/Users('ddfcd489-628b-40d7-b48b-57002df800e5@1717622f-1d94-4d0c-9d74-709fad664b77')/Events('AAMkAGI2TG9xAAA=')",
"@odata.etag": "W/\"nfZyf7VcrEKLNoU37KWlkQAAA0x45w==\"",
"Id": "AAMkAGI2TG9xAAA=",
"Subject": "Christmas Holiday",
"Start": {
"DateTime": "2014-12-25T00:00:00",
"TimeZone": "Pacific Standard Time"
"End": {
"DateTime": "2014-12-26T00:00:00",
"TimeZone": "Pacific Standard Time"
"Organizer": {
"EmailAddress": {
"Name": "Alex D",
"Address": "alexd@a830edad9050849NDA1.onmicrosoft.com"
获取事件实例
要求的最小范围
以下各项之一:
https://outlook.office.com/calendars.read
wl.calendars
wl.contacts_日历
可以获取指定时间范围内某事件的实例(执行)。 如果该事件是 SeriesMaster 类型,则会返回指定时间范围内该事件的执行和异常。
GET https://outlook.office.com/api/v2.0/me/events/{event_id}/instances?startDateTime={start_datetime}&endDateTime={end_datetime}
使用 Prefer: outlook.timezone 标头来指定响应中事件开始和结束时间要使用的时区。 如果该事件是在不同的时区中创建的,则开始和结束时间将调整到指定的时区。
请参阅此列表了解支持的时区名称。 如果未指定 Prefer: outlook.timezone 标头,则返回用 UTC 表示的开始和结束时间。
请求的事件集合。
默认情况下,响应中的每个事件都包含其所有属性。 使用 $select
只指定那些你需要的最佳性能的属性。 始终返回该 ID 属性。 请参阅 OData 查询参数 了解筛选、排序和分页参数。
例如,获取 10 月份的特定事件的实例,仅包含每个实例的主题、开始和结束属性:
GET https://outlook.office.com/api/v2.0/me/events/AAMkAGE0MGM1Y2M5LWEAAA=/instances?startDateTime=2014-10-01T01:00:00Z&endDateTime=2014-10-31T23:00:00Z&$select=Subject,Start,End
要求的最小范围
以下各项之一:
https://outlook.office.com/calendars.read
wl.calendars
wl.contacts_日历
通过 ID 获取事件。
GET https://outlook.office.com/api/v2.0/me/events/{event_id}
使用 Prefer: outlook.timezone 标头来指定响应中事件开始和结束时间要使用的时区。 如果该事件是在不同的时区中创建的,则开始和结束时间将调整到指定的时区。
请参阅此列表了解支持的时区名称。 如果未指定 Prefer: outlook.timezone 标头,则返回用 UTC 表示的开始和结束时间。
GET https://outlook.office.com/api/v2.0/me/events/AAMkAGI2TG93AAA=
"@odata.context": "https://outlook.office.com/api/beta/$metadata#Me/Events/$entity",
"@odata.id": "https://outlook.office.com/api/beta/Users('ddfcd489-628b-40d7-b48b-57002df800e5@1717622f-1d94-4d0c-9d74-709fad664b77')/Events('AAMkAGI2TG93AAA=')",
"@odata.etag": "W/\"nfZyf7VcrEKLNoU37KWlkQAAA0x48w==\"",
"Id": "AAMkAGI2TG93AAA=",
"ChangeKey": "nfZyf7VcrEKLNoU37KWlkQAAA0x48w==",
"Categories": [],
"CreatedDateTime": "2014-10-19T23:13:47.3959685Z",
"LastModifiedDateTime": "2014-10-19T23:13:47.6772234Z",
"Subject": "Weekly Meeting on Contoso Project",
"BodyPreview": "Setting up some time to review the budget and planning on the Contoso Project",
"Body": {
"ContentType": "HTML",
"Content": "<html>\r\n<head>\r\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">\r\n</head>\r\n<body>\r\nSetting up some time to review the budget and planning on the Contoso Project\r\n</body>\r\n</html>\r\n"
"Importance": "Normal",
"HasAttachments": false,
"Start": {
"DateTime": "2014-10-13T21:00:00",
"TimeZone": "Pacific Standard Time"
"End": {
"DateTime": "2014-10-13T22:00:00",
"TimeZone": ""Pacific Standard Time"
"Location": {
"DisplayName": "Alex's Office",
"Address": null
"ShowAs": "Busy",
"IsAllDay": false,
"IsCancelled": false,
"IsOrganizer": true,
"ResponseRequested": true,
"Type": "SeriesMaster",
"SeriesMasterId": null,
"Attendees": [
"EmailAddress": {
"Address": "janets@a830edad9050849NDA1.onmicrosoft.com",
"Name": "Janet Schorr"
"Status": {
"Response": "None",
"Time": "0001-01-01T00:00:00Z"
"Type": "Required"
"EmailAddress": {
"Address": "pavelb@a830edad9050849NDA1.onmicrosoft.com",
"Name": "Pavel Bansky"
"Status": {
"Response": "None",
"Time": "0001-01-01T00:00:00Z"
"Type": "Required"
"Recurrence": {
"Pattern": {
"Type": "Weekly",
"Interval": 1,
"Month": 0,
"Index": "First",
"FirstDayOfWeek": "Sunday",
"DayOfMonth": 0,
"DaysOfWeek": [
"Monday"
"RecurrenceTimeZone": "Pacific Standard Time",
"Range": {
"Type": "NoEnd",
"StartDate": "2014-10-13",
"EndDate": "2014-11-13",
"NumberOfOccurrences": 0
"OriginalEndTimeZone": "Pacific Standard Time",
"OriginalStartTimeZone": "Pacific Standard Time",
"Organizer": {
"EmailAddress": {
"Address": "alexd@a830edad9050849NDA1.onmicrosoft.com",
"Name": "Alex D"
"OnlineMeetingUrl": null
请求的事件。
默认情况下,响应包含事件的所有属性。 使用 $select
只指定那些你需要的最佳性能的属性。 始终返回该 ID 属性。 请参阅 OData 查询参数 了解筛选、排序和分页参数。
以下示例显示如何使用 $select
来指定只返回事件的主题、组织者、开始和结束属性。
GET https://outlook.office.com/api/v2.0/me/events/AAMkAGI2TG93AAA=?$select=Subject,Organizer,Start,End
"@odata.context": "https://outlook.office.com/api/beta/$metadata#Me/Events/$entity",
"@odata.id": "https://outlook.office.com/api/beta/Users('ddfcd489-628b-40d7-b48b-57002df800e5@1717622f-1d94-4d0c-9d74-709fad664b77')/Events('AAMkAGI2TG93AAA=')",
"@odata.etag": "W/\"nfZyf7VcrEKLNoU37KWlkQAAA0x48w==\"",
"Id": "AAMkAGI2TG93AAA=",
"Subject": "Weekly Meeting on Contoso Project",
"Start": {
"DateTime": "2014-10-13T21:00:00",
"TimeZone": "Pacific Standard Time"
"End": {
"DateTime": "2014-10-13T22:00:00",
"TimeZone": ""Pacific Standard Time"
"Organizer": {
"EmailAddress": {
"Address": "alexd@a830edad9050849NDA1.onmicrosoft.com",
"Name": "Alex D"
wl.contacts_日历
从用户的主日历 (../me/calendarview
) 或其他日历同步并获取指定时间范围内新的、已更新的或已删除的事件。 一段时间范围内的这类事件集也称为日历视图。 返回的事件可能包括一个定期系列以及单个实例的执行和异常。
同步日历视图通常需要一轮两个或更多同步请求,其中每个同步请求都是 GET 调用。 要同步日历视图,请使用与你获取日历视图十分类似的 GET 方法,区别在于应包含特定的请求标头和 deltaToken 或者 skipToken(视具体情况)。
你必须在所有同步请求中指定 "Prefer: odata.track-changes" 标头,但包含从上个同步请求返回的 skipToken
的请求除外。 在第一个响应中,查找 Preference-Applied: odata.track-changes 标头,在继续之前确认资源支持同步。 (以下是有关示例第二响应数据中 skipToken
的详细信息。)
可以指定 "Prefer: odata.maxpagesize={x}" 标头,以指示同步请求返回的最多事件数。
以下是日历视图中的一轮典型同步事件:
使用强制性 Prefer: odata.track-changes 标头发出初始 GET 请求。 对同步请求的初始响应始终返回 deltaToken。 (第二个 GET 请求和后续 GET 请求与第一个 GET 请求不同,不同之处在于该请求包括在前一个响应中收到的 deltaToken 或 skipToken。)
如果第一个响应返回 Preference-Applied: odata.track-changes 标头,则可以继续进行同步。
进行第二次 GET 请求。 指定 Prefer: odata.track-changes 标头和从第一个 GET 返回的 deltaToken,以确定是否有任何其他事件。 第二个请求将返回其他事件,且如果有更多可用的事件,则返回 skipToken,如果最后一个事件已经同步,则返回 deltaToken(在这种情况下可以停止)。
通过发送 GET 调用并包括前一次调用中返回的 skipToken,继续进行同步。 在再次使用 deltaToken 获得包含 @odata.deltaLink 标头的最终响应(指明同步已完成)时停止。
要在默认日历中同步
初始请求:
GET https://outlook.office.com/api/v2.0/{user_context}/calendarview?startDateTime={start_datetime}&endDateTime={end_datetime}
第二个请求,或后续轮次中的第一个请求:
GET https://outlook.office.com/api/v2.0/{user_context}/calendarview?startDateTime={start_datetime}&endDateTime={end_datetime}&$deltatoken={delta_token}
同一轮循中的第三个或后续请求:
GET https://outlook.office.com/api/v2.0/{user_context}/calendarview?startDateTime={start_datetime}&endDateTime={end_datetime}&$skiptoken={skip_token}
要在特定日历中同步
初始请求:
GET https://outlook.office.com/api/v2.0/{user_context}/calendars('{calendar_id}')/calendarview?startDateTime={start_datetime}&endDateTime={end_datetime}
第二个请求,或后续轮次中的第一个请求:
GET https://outlook.office.com/api/v2.0/{user_context}/calendars('{calendar_id}')/calendarview?startDateTime={start_datetime}&endDateTime={end_datetime}&$deltatoken={delta_token}
同一轮循中的第三个或后续请求:
GET https://outlook.office.com/api/v2.0/{user_context}/calendars('{calendar_id}')/calendarview?startDateTime={start_datetime}&endDateTime={end_datetime}&$skiptoken={skip_token}
user_context
用户上下文。 可以使用值 "me" 来指示当前用户的上下文。 还可以使用 users/{upn} 的格式,其中 upn 为用户主体名称,通常是用户的电子邮件地址。
calendar_id
日历 ID(如果从特定日历获取日历视图)。
start_datetime
datetimeoffset
事件开始的日期和时间。
end_datetime
datetimeoffset
事件结束的日期和时间。
delta_token
作为前一个同步响应中 @odata.deltaLink 值的一部分返回的 deltaToken
字符串。
skip_token
作为前一个同步响应中 @odata.nextLink 值的一部分返回的 skipToken
字符串。
在初始请求中指定 "Prefer: odata.track-changes" 时,如果响应支持同步,则响应将在标头中包含 "Preference-applied: odata.track-changes"。
如果尝试同步不支持的资源,或者如果这不是初始同步请求,则你将不会在响应中看到 "Preference-applied" 标头。
可以通过更改 startdatetime 和 enddatetime 查询参数来改变更改时间窗口。
响应中的每个事件都包含其所有属性。
对于定期系列,同步响应包含定期主事件和异常事件等整个事件。
定期系列的实例为缩写形式,且仅包含开始和结束属性。 可以从定期主事件捕获发生事件信息的剩余部分。 有关参考信息,请参阅事件资源。
不能使用 $filter
、$count
、$select
、$skip
、$top
和 $search
查询参数。
指定时间范围内的扩展事件和缩略事件。
以下示例显示了用于同步用户的默认日历的初始和第二个同步请求。 每个请求指定一次只返回一个完整事件:
初始响应返回一个事件、一个 deltaLink
和 deltaToken
。
第二个请求使用那个 deltatoken
。 第二个响应返回一个事件、一个 nextLink
和 skipToken
。
要完成同步,请使用从前一个同步请求返回的 skipToken
,直到同步响应返回一个 deltaLink
和 deltaToken
,此时这一轮的同步完成。 保存 deltaToken
供下一轮同步使用。
有关更多信息,请参阅在 Outlook 日历视图中同步事件。
示例:初始请求
GET https://outlook.office.com/api/v2.0/me/calendarview?startdatetime=2015-01-01T00:00:00Z&enddatetime=2015-04-10T00:00:00Z HTTP/1.1
Authorization: Bearer <token>
Prefer: odata.track-changes
Prefer: odata.maxpagesize=1
示例初始响应数据
Preference-Applied: odata.track-changes
"@odata.context": "https://outlook.office.com/api/v2.0/$metadata#Me/CalendarView",
"value": [
"@odata.id": "https://outlook.office.com/api/v2.0/Users('user0@contoso.com')/Events('asdas==')",
"@odata.etag": "W/\"L8Z+4Y4u7k+97uRKg==\"",
"Id": "AQMkANJAAAAA==",
"ChangeKey": "L8Z+AAAAARKg==",
"Categories": [
"DateTimeCreated": "2015-04-10T17:54:49.2725912Z",
"DateTimeLastModified": "2015-04-10T17:54:49.3038538Z",
"Subject": "Discuss the Calendar REST API",
"BodyPreview": "I think it will meet our requirements!",
"Body": {
"ContentType": "HTML",
"Content": "<html>\r\n<head>\r\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">\r\n</head>\r\n<body>\r\nI think it will meet our requirements!\r\n</body>\r\n</html>\r\n"
"Importance": "Normal",
"HasAttachments": false,
"Start": {
"DateTime": "2015-04-05T18:00:00",
"TimeZone": "Pacific Standard Time"
"End": {
"DateTime": "2015-04-05T19:00:00",
"TimeZone": "Pacific Standard Time"
"ReminderMinutesBeforeStart": "15",
"IsReminderOn": "true",
"Location": {
"DisplayName": "",
"Address": null
"ResponseStatus": {
"Response": "Organizer",
"Time": "0001-01-01T00:00:00Z"
"ShowAs": "Busy",
"IsAllDay": false,
"IsCancelled": false,
"IsOrganizer": true,
"ResponseRequested": true,
"Type": "SingleInstance",
"SeriesMasterId": null,
"Attendees": [
"Recurrence": null,
"OriginalEndTimeZone": "Pacific Standard Time",
"OriginalStartTimeZone": "Pacific Standard Time",
"Organizer": {
"EmailAddress": {
"Address": "user0@contoso.com",
"Name": "user0"
"iCalUId": "040000008200E9888E07599CCFA23",
"WebLink": "https://outlook.office.com/owa/?ItemID=AAAINJAAAAA%3D%3D&exvsurl=1&viewmodel=ICalendarItemDetailsViewModelFactory",
"OnlineMeetingUrl": null
"@odata.deltaLink": "https://outlook.office.com/api/v2.0/me/calendarview/?startdatetime=2015-01-01T00%3a00%3a00Z&enddatetime=2015-04-10T00%3a00%3a00Z&%24deltatoken=v2%2cH4roCAAA%3d%2c1.0%2cFalse%2cA00%2c"
示例第二个请求
GET https://outlook.office.com/api/v2.0/me/calendarview?startdatetime=2015-01-01T00:00:00Z&enddatetime=2015-04-10T00:00:00Z&$deltatoken=v2%2cH4roCAAA%3d%2c1.0%2cFalse%2cA00%2c
Authorization: Bearer <token>
Prefer: odata.track-changes
Prefer: odata.maxpagesize=1
示例第二个响应数据
"@odata.context": "https://outlook.office.com/api/v2.0/$metadata#Me/CalendarView/$delta",
"value": [
"@odata.id": "https://outlook.office.com/api/v2.0/Users('user0@contoso.com')/Events('AAMkAD0jAAA=')",
"@odata.etag": "W/\"P2fd7QAAAAAVFA==\"",
"Id": "AAMkADNkNmVlOTITVAAAAAA0jAAA=",
"ChangeKey": "P2fdmIU1QAAAAAVFA==",
"Categories": [
"DateTimeCreated": "2015-04-15T18:59:11.0226221Z",
"DateTimeLastModified": "2015-04-15T18:59:11.0694979Z",
"Subject": "1 hour",
"BodyPreview": "\u200b",
"Body": {
"ContentType": "HTML",
"Content": "<html><body>content</body></html>"
"Importance": "Normal",
"HasAttachments": false,
"Start": {
"DateTime": "2015-04-16T18:00:00",
"TimeZone": "Pacific Standard Time"
"End": {
"DateTime": "2015-04-16T19:00:00",
"TimeZone": Pacific Standard Time"
"ReminderMinutesBeforeStart": "15",
"IsReminderOn": "true",
"Location": {
"DisplayName": "",
"Address": {
"Street": "",
"City": "",
"State": "",
"CountryOrRegion": "",
"PostalCode": ""
"ResponseStatus": {
"Response": "Organizer",
"Time": "0001-01-01T00:00:00Z"
"ShowAs": "Busy",
"IsAllDay": false,
"IsCancelled": false,
"IsOrganizer": true,
"ResponseRequested": true,
"Type": "SingleInstance",
"SeriesMasterId": null,
"Attendees": [
"Recurrence": null,
"OriginalEndTimeZone": "Pacific Standard Time",
"OriginalStartTimeZone": "Pacific Standard Time",
"Organizer": {
"EmailAddress": {
"Address": "user0@contoso.com",
"Name": "user0"
"iCalUId": "040000008200E09BB89A316862",
"WebLink": "https://outlook.office.com/owa/?ItemID=AAMkADNkNmVlOAA%3D&exvsurl=1&viewmodel=ICalendarItemDetailsViewModelFactory",
"OnlineMeetingUrl": null
"@odata.nextLink": "https://outlook.office.com/api/v2.0/me/calendarview/?startdatetime=2015-01-01T00%3a00%3a00Z&enddatetime=2015-08-10T00%3a00%3a00Z&%24skipToken=530c9d02ae1a4d96804538bd4d381546"
查找会议时间
要求的最小范围
以下各项之一:
https://outlook.office.com/calendars.read.shared
wl.calendars
wl.contacts_日历
根据组织者和与会者忙/闲状态以及指定为参数的时间或地点约束,查找会议时间建议。
此操作仅适用于 Office 365 邮箱(在 Azure AD 上),而不适用于 Microsoft 帐户。
POST https://outlook.office.com/api/{version}/me/findmeetingtimes
下面列出了所有支持的参数。 根据你的具体情况,在 FindMeetingTimes 操作的请求正文中指定必要的参数。
是否必需?
MeetingDuration
Edm.Duration
会议的持续时间以 ISO 8601 格式表示,例如,PT1H
代表 1 小时。 如果没有指定会议持续时间,则 FindMeetingTimes 使用 30 分钟的默认值。
MinimumAttendeePercentage
Edm.Double
在响应中返回时间段所需的最低 confidence。这是一个介于 0 到 100 之间的百分比值。
ReturnSuggestionReasons
Edm.Boolean
指定 true
为 SuggestionReason 属性中的每个会议建议返回一条理由。 默认值是 false
不返回该属性。
TimeConstraint
TimeConstraint
会议的任何时间限制,可以包括会议的性质 (ActivityDomain) 和可能的会议时间段 (TimeSlots)。 如果不指定这个参数,则 FindMeetingTimes 假设 ActivityDomain 为 Work
。
FindMeetingTimes 检查组织者和与会者的主日历中的空闲/繁忙状态。 根据指定的参数,此操作会建议最佳的会议时间。 下表介绍了可以在 TimeConstraint 参数中指定的限制。
TimeConstraint 中的 ActivityDomain 值
会议时间建议
建议在用户的工作时间范围内,这是在用户的日历配置中定义的,并且可以由用户或管理员自定义。 默认工作时间为星期一至星期五,上午 8 点至下午 5 点(在为邮箱设置的时区内)。 如果未指定 ActivityDomain,则此为默认值。
建议在用户的工作时间内,以及星期六和星期日。 默认为星期一至星期日,上午 8 点至下午 5 点(在为邮箱设置的时区内)。
Unrestricted
建议可以是全年任意一天的任意时间段。
请勿使用此值,因为以后会弃用此值。 当前其行为与 Work 相同。 根据需要更改任何现有代码以使用 Work、Personal 或 Unrestricted。
包含各种会议建议类型的 MeetingTimeSuggestionsResult,类型 MeetingTimeSuggestion 中的每一种,以及 EmptySuggestionsReason 属性。
每个建议被定义为 MeetingTimeSuggestion,其中与会者默认具有 50% 的置信度会参加会议,或者为你在 MinimumAttendeePercentage 参数中指定的具体百分数。
默认情况下,返回的每条会议时间建议的时区均为 UTC。 应用 Prefer: outlook.timezone
请求标头以使会议时间建议根据不同时区调整,例如:
Prefer: outlook.timezone="Pacific Standard Time"
如果 FindMeetingTimes 无法返回任何会议建议,则该响应将在 EmptySuggestionsReason 属性中指出原因。 根据此值,可以更好地调整参数并再次调用 FindMeetingTimes。
目前,FindMeetingTimes 假设作为人员(而非资源)的与会者都是必需的与会者。 因此,请在相应的类型属性中,为人员指定 Required
并为资源指定 Resource
,以作为与会者集合参数的一部分。
下面的每个示例都会调用 FindMeetingTimes,并因与会者的状态、时间和地点限制而异,具体如下所述:
查找和与会者举行会议的时间和地点
查找在已知地点举行会议的时间,并获取每个建议的理由
查找举行会议的时间,但没有与会者有空
查找举行会议的时间,但只有部分与会者有空
仅查找登录用户的空闲时隙
查找和特定与会者举行会议的时间和地点
通过在请求正文中指定以下参数来查找举行会议的时间和地点:
TimeConstraint
MeetingDuration
下面的示例提出了有关会议时间和地点的建议,其中考虑了组织者和与会者在所请求的会议时间范围之工作时间内的状态,以及所请求的持续时间。
POST https://outlook.office.com/api/v2.0/me/findmeetingtimes
Prefer: outlook.timezone="Pacific Standard Time"
Content-Type: application/json
"Attendees": [
"Type": "Required",
"EmailAddress": {
"Name": "Fanny",
"Address": "fannyd@prosewareltd.onmicrosoft.com"
"TimeConstraint": {
"ActivityDomain":"Work",
"Timeslots": [
"Start": {
"DateTime": "2016-05-20T07:00:00",
"TimeZone": "Pacific Standard Time"
"End": {
"DateTime": "2016-05-20T17:00:00",
"TimeZone": "Pacific Standard Time"
"MeetingDuration": "PT1H"
状态代码:200
"@odata.context": "https://outlook.office.com/api/v2.0/$metadata#Microsoft.OutlookServices.MeetingTimeSuggestionsResult",
"MeetingTimeSuggestions": [
"MeetingTimeSlot": {
"Start": {
"DateTime": "2016-05-20T10:00:00.0000000",
"TimeZone": "Pacific Standard Time"
"End": {
"DateTime": "2016-05-20T11:00:00.0000000",
"TimeZone": "Pacific Standard Time"
"Confidence": 100.0,
"OrganizerAvailability": "Free",
"AttendeeAvailability": [
"Attendee": {
"Type": "Required",
"EmailAddress": {
"Name": "Fanny",
"Address": "fannyd@prosewareltd.onmicrosoft.com"
"Availability": "Free"
"Locations": [
"DisplayName": "Tokyo conference room",
"LocationEmailAddress": "",
"LocationUri": "",
"Address": null,
"Coordinates": null
"MeetingTimeSlot": {
"Start": {
"DateTime": "2016-05-20T11:00:00.0000000",
"TimeZone": "Pacific Standard Time"
"End": {
"DateTime": "2016-05-20T12:00:00.0000000",
"TimeZone": "Pacific Standard Time"
"Confidence": 100.0,
"OrganizerAvailability": "Free",
"AttendeeAvailability": [
"Attendee": {
"Type": "Required",
"EmailAddress": {
"Name": "Fanny",
"Address": "fannyd@prosewareltd.onmicrosoft.com"
"Availability": "Free"
"Locations": [
"DisplayName": "Paris conference room",
"LocationEmailAddress": "",
"LocationUri": "",
"Address": null,
"Coordinates": null
"EmptySuggestionsReason": ""
查找在已知地点举行会议的时间,并获取每个建议的理由
查找在预定地点举行会议的时间,并请求获取每个建议的理由,具体是通过在请求正文中指定以下参数:
LocationConstraint
TimeConstraint
MeetingDuration
ReturnSuggestionReasons
设置 ReturnSuggestionReasons 参数后,SuggestionReason 属性中还会返回各条建议的理由(如果 FindMeetingTimes 返回建议的话)。
POST https://outlook.office.com/api/v2.0/me/findmeetingtimes
Prefer: outlook.timezone="Pacific Standard Time"
Content-Type: application/json
"Attendees": [
"Type": "Required",
"EmailAddress": {
"Name": "Fanny",
"Address": "fannyd@prosewareltd.onmicrosoft.com"
"LocationConstraint": {
"IsRequired": "false",
"SuggestLocation": "false",
"Locations": [
"ResolveAvailability": "false",
"DisplayName": "Conf room Hood"
"TimeConstraint": {
"ActivityDomain":"Work",
"Timeslots": [
"Start": {
"DateTime": "2016-05-20T07:00:00",
"TimeZone": "Pacific Standard Time"
"End": {
"DateTime": "2016-05-20T17:00:00",
"TimeZone": "Pacific Standard Time"
"MeetingDuration": "PT2H",
"ReturnSuggestionReasons": "true"
状态代码:200
"@odata.context": "https://outlook.office.com/api/v2.0/$metadata#Microsoft.OutlookServices.MeetingTimeSuggestionsResult",
"MeetingTimeSuggestions": [
"MeetingTimeSlot": {
"Start": {
"DateTime": "2016-05-20T10:00:00.0000000",
"TimeZone": "Pacific Standard Time"
"End": {
"DateTime": "2016-05-20T12:00:00.0000000",
"TimeZone": "Pacific Standard Time"
"Confidence": 100.0,
"OrganizerAvailability": "Free",
"AttendeeAvailability": [
"Attendee": {
"Type": "Required",
"EmailAddress": {
"Name": "Fanny",
"Address": "fannyd@prosewareltd.onmicrosoft.com"
"Availability": "Free"
"Locations": [
"DisplayName": "Conf room Hood"
"SuggestionReason": "Suggested because it is one of the nearest times when all attendees are available."
"EmptySuggestionsReason": ""
查找举行会议的时间,但没有与会者有空
查找在预定地点举行会议的时间,具体是通过在请求正文中指定以下参数:
LocationConstraint
TimeConstraint
MeetingDuration
在此示例中,根据指定参数和与会者的状态,FindMeetingTimes 无法返回任何建议,而是在 EmptySuggestionsReason 属性中返回一条理由 AttendeesUnavailable
。
请参阅其他未返回任何会议建议的可能原因。
POST https://outlook.office.com/api/v2.0/me/findmeetingtimes
Prefer: outlook.timezone="Pacific Standard Time"
Content-Type: application/json
"Attendees": [
"Type": "Required",
"EmailAddress": {
"Name": "Fanny",
"Address": "fannyd@prosewareltd.onmicrosoft.com"
"LocationConstraint": {
"IsRequired": "false",
"SuggestLocation": "false",
"Locations": [
"ResolveAvailability": "false",
"DisplayName": "Conf room Hood"
"TimeConstraint": {
"Timeslots": [
"Start": {
"DateTime": "2016-05-20T7:00:00",
"TimeZone": "Pacific Standard Time"
"End": {
"DateTime": "2016-05-20T14:00:00",
"TimeZone": "Pacific Standard Time"
"MeetingDuration": "PT2H"
状态代码:200
"@odata.context": "https://outlook.office.com/api/v2.0/$metadata#Microsoft.OutlookServices.MeetingTimeSuggestionsResult",
"MeetingTimeSuggestions": [
"EmptySuggestionsReason": "AttendeesUnavailable"
查找举行会议的时间,但只有部分与会者有空
查找在预定地点举行会议的时间,具体是通过在请求正文中指定以下参数:
LocationConstraint
TimeConstraint
MeetingDuration
ReturnSuggestionReasons
MinimumAttendeePercentage
在此示例中,两个与会者中只有一个有空。 FindMeetingTimes 返回的每条会议建议包括:
每个与会者的繁忙/空闲状态
计算的会议置信度,这是与会者参加会议的平均百分比。 这个值必须满足 MinimumAttendeePercentage 中指定的 60% 的要求。
一个 SuggestionHint,因为 ReturnSuggestionReasons 参数已设置。
查找有关会议置信度的更多信息。
POST https://outlook.office.com/api/v2.0/me/findmeetingtimes
Prefer: outlook.timezone="Pacific Standard Time"
Content-Type: application/json
"Attendees": [
"Type": "Required",
"EmailAddress": {
"Name": "Fanny",
"Address": "fannyd@prosewareltd.onmicrosoft.com"
"Type": "Optional",
"EmailAddress": {
"Name": "Dana",
"Address": "danas@prosewareltd.onmicrosoft.com"
"LocationConstraint": {
"IsRequired": "false",
"SuggestLocation": "false",
"Locations": [
"ResolveAvailability": "false",
"DisplayName": "Conf room Hood"
"TimeConstraint": {
"ActivityDomain":"Work",
"Timeslots": [
"Start": {
"DateTime": "2016-05-20T09:00:00",
"TimeZone": "Pacific Standard Time"
"End": {
"DateTime": "2016-05-20T17:00:00",
"TimeZone": "Pacific Standard Time"
"MeetingDuration": "PT1H",
"ReturnSuggestionReasons": "true",
"MinimumAttendeePercentage": "60"
状态代码:200
"@odata.context":"https://outlook.office.com/api/v2.0/$metadata#Microsoft.OutlookServices.MeetingTimeSuggestionsResult",
"MeetingTimeSuggestions":[
"MeetingTimeSlot":{
"Start":{
"DateTime":"2016-05-20T10:00:00.0000000",
"TimeZone":"Pacific Standard Time"
"End":{
"DateTime":"2016-05-20T11:00:00.0000000",
"TimeZone":"Pacific Standard Time"
"Confidence":100.0,
"OrganizerAvailability":"Free",
"AttendeeAvailability":[
"Attendee":{
"Type":"Required",
"EmailAddress":{
"Name": "Fanny",
"Address":"fannyd@prosewareltd.onmicrosoft.com"
"Availability":"Free"
"Attendee":{
"Type":"Required",
"EmailAddress":{
"Name": "Dana",
"Address":"danas@prosewareltd.onmicrosoft.com"
"Availability":"Free"
"Locations":[
"DisplayName":"Conf room Hood"
"SuggestionReason":"Suggested because it is one of the nearest times when most attendees are available."
"MeetingTimeSlot":{
"Start":{
"DateTime":"2016-05-20T11:00:00.0000000",
"TimeZone":"Pacific Standard Time"
"End":{
"DateTime":"2016-05-20T12:00:00.0000000",
"TimeZone":"Pacific Standard Time"
"Confidence":74.5,
"OrganizerAvailability":"Free",
"AttendeeAvailability":[
"Attendee":{
"Type":"Required",
"EmailAddress":{
"Name": "Fanny",
"Address":"fannyd@prosewareltd.onmicrosoft.com"
"Availability":"Free"
"Attendee":{
"Type":"Required",
"EmailAddress":{
"Name": "Dana",
"Address":"danas@prosewareltd.onmicrosoft.com"
"Availability":"Unknown"
"Locations":[
"DisplayName":"Conf room Hood"
"SuggestionReason":"Suggested because it is one of the nearest times when most attendees are available."
"EmptySuggestionsReason":""
仅查找登录用户的空闲时隙
通过在请求正文中指定以下参数,在登录用户的主日历中查找一个日期范围内一周中任何时间内的空闲时隙:
TimeConstraint
MeetingDuration
此示例查找 MeetingDuration 所指定的 1 小时空闲时隙,在登录用户的主日历中查找 TimeConstraint 指定的一个日期范围内一周中的任何时间。
POST https://outlook.office.com/api/v2.0/me/findmeetingtimes
Prefer: outlook.timezone="Pacific Standard Time"
Content-Type: application/json
"Attendees": [],
"TimeConstraint": {
"ActivityDomain": "Unrestricted",
"Timeslots": [
"Start": {
"DateTime": "2016-05-20T06:00:00",
"TimeZone": "Pacific Standard Time"
"End": {
"DateTime": "2016-05-22T23:00:00",
"TimeZone": "Pacific Standard Time"
"MeetingDuration": "PT1H"
状态代码:200
"@odata.context": "https://outlook.office.com/api/v2.0/$metadata#Microsoft.OutlookServices.MeetingTimeSuggestionsResult",
"MeetingTimeSuggestions": [
"MeetingTimeSlot": {
"Start": {
"DateTime": "2016-05-20T06:00:00.0000000",
"TimeZone": "Pacific Standard Time"
"End": {
"DateTime": "2016-05-20T07:00:00.0000000",
"TimeZone": "Pacific Standard Time"
"Confidence": 100.0,
"OrganizerAvailability": "Free",
"AttendeeAvailability": [
"Locations": [
"MeetingTimeSlot": {
"Start": {
"DateTime": "2016-05-21T09:00:00.0000000",
"TimeZone": "Pacific Standard Time"
"End": {
"DateTime": "2016-05-21T10:00:00.0000000",
"TimeZone": "Pacific Standard Time"
"Confidence": 100.0,
"OrganizerAvailability": "Free",
"AttendeeAvailability": [
"Locations": [
"MeetingTimeSlot": {
"Start": {
"DateTime": "2016-05-22T19:00:00.0000000",
"TimeZone": "Pacific Standard Time"
"End": {
"DateTime": "2016-05-22T20:00:00.0000000",
"TimeZone": "Pacific Standard Time"
"Confidence": 100.0,
"OrganizerAvailability": "Free",
"AttendeeAvailability": [
"Locations": [
"EmptySuggestionsReason": ""
获取会议室(预览)
这个功能目前在 beta 版中可用。 要了解详细信息,请在左侧的目录中转到 Office 365 REST API 参考部分,并选择 beta。
创建日历事件
创建日历事件
要求的最小范围
以下各项之一:
https://outlook.office.com/calendars.readwrite
wl.calendars_更新
wl.events_创建
通过发布到日历的 events
端点,在用户的主日历或特定日历中创建活动。 创建事件时,服务器将向所有与会者发送邀请。
POST https://outlook.office.com/api/v2.0/me/events
POST https://outlook.office.com/api/v2.0/me/calendars/{calendar_id}/events
"EmailAddress": {
"Address": "janets@a830edad9050849NDA1.onmicrosoft.com",
"Name": "Janet Schorr"
"Type": "Required"
状态代码:201
"@odata.context": "https://outlook.office.com/api/beta/$metadata#Me/Events/$entity",
"@odata.id": "https://outlook.office.com/api/beta/Users('ddfcd489-628b-40d7-b48b-57002df800e5@1717622f-1d94-4d0c-9d74-709fad664b77')/Events('AAMkAGE4v1RAAA=')",
"@odata.etag": "W/\"Jj9S59cHB0Wq4jXUzBgDvQAAFeNheA==\"",
"Id": "AAMkAGE4v1RAAA=",
"ChangeKey": "Jj9S59cHB0Wq4jXUzBgDvQAAFeNheA==",
"Categories": [],
"CreatedDateTime": "2014-01-22T20:56:10.1058291Z",
"LastModifiedDateTime": "2014-01-22T20:56:10.3402186Z",
"Subject": "Discuss the Calendar REST API",
"BodyPreview": "I think it will meet our requirements!",
"Body": {
"ContentType": "HTML",
"Content": "<html>\r\n<head>\r\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">\r\n</head>\r\n<body>\r\nI think it will meet our requirements!\r\n</body>\r\n</html>\r\n"
"Importance": "Normal",
"HasAttachments": false,
"Start": {
"DateTime": "2014-02-02T18:00:00",
"TimeZone": "Pacific Standard Time"
"End": {
"DateTime": "2014-02-02T19:00:00",
"TimeZone": "Pacific Standard Time"
"Location": {
"DisplayName": "",
"Address": null
"ShowAs": "Busy",
"IsAllDay": false,
"IsCancelled": false,
"IsOrganizer": true,
"ResponseRequested": true,
"Type": "SingleInstance",
"SeriesMasterId": null,
"Attendees": [
"EmailAddress": {
"Address": "janets@a830edad9050849NDA1.onmicrosoft.com",
"Name": "Janet Schorr"
"Status": {
"Response": "None",
"Time": "0001-01-01T00:00:00Z"
"Type": "Required"
"Recurrence": null,
"OriginalEndTimeZone": "Pacific Standard Time",
"OriginalStartTimeZone": "Pacific Standard Time",
"Organizer": {
"EmailAddress": {
"Address": "alexd@a830edad9050849NDA1.onmicrosoft.com",
"Name": "alexd"
"OnlineMeetingUrl": null
新事件。
默认情况下,响应包含新事件的所有属性。 使用 $select
只指定那些你需要的最佳性能的属性。 始终返回该 ID 属性。
以下是在响应中仅包含新事件的开始和结束属性的示例。
POST https://outlook.office.com/api/v2.0/me/events?$Select=Start,End
更新日历事件
更新日历事件
要求的最小范围
以下各项之一:
https://outlook.office.com/calendars.readwrite
wl.calendars_更新
wl.events_创建
更改事件。 只有你指定的属性才会更改。 如果用户是组织者,则服务器会向所有与会者发送会议更新。
PATCH https://outlook.office.com/api/v2.0/me/events/{event_id}
在请求正文中指定任何可写的事件属性。
PATCH https://outlook.office.com/api/v2.0/me/events/AAMkAGE0M4v1OAAA=
Content-Type: application/json
"Location": {
"DisplayName": "Your office",
"Address": null
状态代码:200
"@odata.context": "https://outlook.office.com/api/v2.0/$metadata#Me/Events/$entity",
"@odata.id": "https://outlook.office.com/api/v2.0/Users('ddfcd489-628b-40d7-b48b-57002df800e5@1717622f-1d94-4d0c-9d74-709fad664b77')/Events('AAMkAGE0M4v1OAAA=')",
"@odata.etag": "W/\"Jj9S59cHB0Wq4jXUzBgDvQAAFeNheQ==\"",
"Id": "AAMkAGE0M4v1OAAA=",
"ChangeKey": "Jj9S59cHB0Wq4jXUzBgDvQAAFeNheQ==",
"Categories": [],
"CreatedDateTime": "2014-01-22T20:49:05.5657528Z",
"LastModifiedDateTime": "2014-01-22T21:14:17.4886416Z",
"Subject": "Discuss the Calendar REST API",
"BodyPreview": "I think it will meet our requirements!",
"Body": {
"ContentType": "HTML",
"Content": "<html>\r\n<head>\r\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">\r\n</head>\r\n<body>\r\nI think it will meet our requirements!\r\n</body>\r\n</html>\r\n"
"Importance": "Normal",
"HasAttachments": false,
"Start": {
"DateTime": "2014-02-02T18:00:00",
"TimeZone": "Pacific Standard Time"
"End": {
"DateTime": "2014-02-02T19:00:00",
"TimeZone": "Pacific Standard Time"
"Location": {
"DisplayName": "Your office",
"Address": null
"ShowAs": "Busy",
"IsAllDay": false,
"IsCancelled": false,
"IsOrganizer": true,
"ResponseRequested": true,
"Type": "SingleInstance",
"SeriesMasterId": null,
"Attendees": [],
"Recurrence": null,
"OriginalEndTimeZone": "Pacific Standard Time",
"OriginalStartTimeZone": "Pacific Standard Time",
"Organizer": {
"EmailAddress": {
"Address": "alexd@a830edad9050849NDA1.onmicrosoft.com",
"Name": "alexd"
"OnlineMeetingUrl": null
已更新的事件。 如果用户是组织者,则服务器会向所有与会者发送会议更新。
默认情况下,响应包含已更新事件的所有属性。 使用 $select
只指定那些你需要的最佳性能的属性。 始终返回该 ID 属性。
PATCH https://outlook.office.com/api/v2.0/me/events/AAMkAGE1MFKPQWAAA=?$select=Location
暂时接受事件
要求的最小范围
以下各项之一:
https://outlook.office.com/calendars.readwrite
wl.calendars_更新
wl.events_创建
接受指定的事件。
POST https://outlook.office.com/api/v2.0/me/events/{event_id}/accept
if a response is to be sent to the organizer; otherwise, false
. Optional. Default is true
.
UNTRANSLATED_CONTENT_END
POST https://outlook.office.com/api/v2.0/me/events('AAMkAGE1M2IyNGNmLTI5MT_bs88AAAXDJwEAAA=')/accept
Content-Type: application/json
"Comment": "Great idea!",
"SendResponse": "true"
HTTP 202 已接受的响应代码表示响应成功。
暂时接受事件
要求的最小范围
以下各项之一:
https://outlook.office.com/calendars.readwrite
wl.calendars_更新
wl.events_创建
暂时接受指定的事件。
POST https://outlook.office.com/api/v2.0/me/events/{event_id}/tentativelyaccept
if a response is to be sent to the organizer; otherwise, false
. Optional. Default is true
.
UNTRANSLATED_CONTENT_END
POST https://outlook.office.com/api/v2.0/me/events('AAMkAGE1M2IyNGNmLTI5MT_bs88AAAXDJwEAAA=')/tentativelyaccept
Content-Type: application/json
"Comment": "I'll confirm later!",
"SendResponse": "true"
HTTP 202 已接受的响应代码表示响应成功。
要求的最小范围
以下各项之一:
https://outlook.office.com/calendars.readwrite
wl.calendars_更新
wl.events_创建
拒绝对指定事件的邀请。
POST https://outlook.office.com/api/v2.0/me/events/{event_id}/decline
if a response is to be sent to the organizer; otherwise, false
. Optional. Default is true
.
UNTRANSLATED_CONTENT_END
POST https://outlook.office.com/api/v2.0/me/events('AAMkAGE1M2IyNGNmLTI5MT_bs88AAAXDJwEAAA=')/decline
Content-Type: application/json
"Comment": "Sorry, maybe next time!",
"SendResponse": "true"
HTTP 202 已接受的响应代码表示响应成功。
转发事件(预览)
这个功能目前仅在 beta 版中可用。 要了解详细信息,请在左侧的目录中转到 Office 365 REST API 参考部分,并选择 beta。
删除日历事件
删除日历事件
要求的最小范围
以下各项之一:
https://outlook.office.com/calendars.readwrite
wl.calendars_更新
wl.events_创建
将事件移动到已登录用户的已删除项文件夹中。 如果事件是会议且已登录用户是组织者,则服务器会向所有与会者发送取消信息。
DELETE https://outlook.office.com/api/v2.0/me/events/{event_id}
一个附件集合,其类型可以为 FileAttachment 或 ItemAttachment。
GET https://outlook.office.com/api/v2.0/me/events/AAMkAGI2NGTG9yAAA=/attachments
状态代码:200
"@odata.context": "https://outlook.office.com/api/v2.0/$metadata#Me/Events('AAMkAGI2NG9yAAA%3D')/Attachments",
"value": [
"@odata.type": "#Microsoft.OutlookServices.FileAttachment",
"@odata.id": "https://outlook.office.com/api/v2.0/Users('ddfcd489-628b-40d7-b48b-57002df800e5@1717622f-1d94-4d0c-9d74-709fad664b77')/Events('AAMkAGI2NGTG9yAAA=')/Attachments('AAMkAGI2NGLwydGuOzcHf1FBlo=')",
"Id": "AAMkAGI2NGLwydGuOzcHf1FBlo=",
"LastModifiedDateTime": "2014-10-22T00:30:26Z",
"Name": "Company Party.docx",
"ContentType": "application/vnd.openxmlformats-officedocument.wordprocessingml.document",
"Size": 11647,
"IsInline": false,
"ContentId": null,
"ContentLocation": null,
"ContentBytes": "UEsDBBQABgAIAAAAIQDfpNJs...AAF4pAAAAAA=="
要求的最小范围
以下各项之一:
https://outlook.office.com/calendars.read
wl.calendars
wl.contacts_日历
从特定事件获取附件。
GET https://outlook.office.com/api/v2.0/me/events/{event_id}/attachments/{attachment_id}
GET https://outlook.office.com/api/v2.0/me/events/AAMkAGI2WRAAADTG9yAAA=/attachments/AAMkAGI2TG9yAAABEgAQALxJtn1LwydGuOzcHf1FBlo=
状态代码:200
"@odata.context": "https://outlook.office.com/api/v2.0/$metadata#Me/Events('AAMkAGI2WRAAADTG9yAAA%3D')/Attachments/$entity",
"@odata.type": "#Microsoft.OutlookServices.FileAttachment",
"@odata.id": "https://outlook.office.com/api/v2.0/Users('ddfcd489-628b-40d7-b48b-57002df800e5@1717622f-1d94-4d0c-9d74-709fad664b77')/Events('AAMkAGI2WRAAADTG9yAAA=')/Attachments('AAMkAGI2TG9yAAABEgAQALxJtn1LwydGuOzcHf1FBlo=')",
"Id": "AAMkAGI2TG9yAAABEgAQALxJtn1LwydGuOzcHf1FBlo=",
"LastModifiedDateTime": "2014-10-22T00:30:26Z",
"Name": "Company Party.docx",
"ContentType": "application/vnd.openxmlformats-officedocument.wordprocessingml.document",
"Size": 11647,
"IsInline": false,
"ContentId": null,
"ContentLocation": null,
"ContentBytes": "UEsDBBQABgAIAAAAIQD...AAF4pAAAAAA=="
示例请求(在附件上 $expand)
下面的示例以事件属性内联方式获取和扩展 2 个参考附件。
GET https://outlook.office.com/api/v2.0/me/events('AAMkAGE1Mbs88AADggYEcAAA=')?$expand=attachments
状态代码:200
"@odata.context": "https://outlook.office.com/api/v2.0/$metadata#users('ddfcd489-628b-40d7-b48b-57002df800e5')/events/$entity",
"@odata.etag": "W/\"mODEKWhc/Um6lA3uPm7PPAAA4KZrtA==\"",
"id": "AAMkAGE1Mbs88AADggYEcAAA=",
"createdDateTime": "2016-03-22T22:19:58.1359352Z",
"lastModifiedDateTime": "2016-03-22T22:39:09.9335289Z",
"changeKey": "mODEKWhc/Um6lA3uPm7PPAAA4KZrtA==",
"categories": [
"originalStartTimeZone": "Pacific Standard Time",
"originalEndTimeZone": "Pacific Standard Time",
"responseStatus": {
"response": "organizer",
"time": "0001-01-01T00:00:00Z"
"iCalUId": "040000008200E00074C5B7101A82E008000000005895FCF78884D10100000000000000001000000099DD7CA6BCF37C4F9F7DAACCADDD6B89",
"reminderMinutesBeforeStart": 15,
"isReminderOn": true,
"hasAttachments": true,
"subject": "Plan Easter egg hunt!",
"body": {
"contentType": "html",
"content": "<html>\r\n<body>\r\nLet's get organized for this weekend's gathering.\r\n</body>\r\n</html>\r\n"
"bodyPreview": "Let's get organized for this weekend's gathering.",
"importance": "normal",
"sensitivity": "normal",
"start": {
"dateTime": "2016-03-26T17:00:00.0000000",
"timeZone": "UTC"
"end": {
"dateTime": "2016-03-26T18:00:00.0000000",
"timeZone": "UTC"
"location": {
"displayName": "",
"locationType": "default",
"address": {
"type": "unknown"
"coordinates": {
"locations": [
"isAllDay": false,
"isCancelled": false,
"isOrganizer": true,
"recurrence": null,
"responseRequested": true,
"seriesMasterId": null,
"showAs": "busy",
"type": "singleInstance",
"attendees": [
"status": {
"response": "none",
"time": "0001-01-01T00:00:00Z"
"type": "required",
"emailAddress": {
"name": "Randi Welch",
"address": "randiw@contoso.onmicrosoft.com"
"organizer": {
"emailAddress": {
"name": "Dana Swope",
"address": "danas@contoso.onmicrosoft.com"
"webLink": "https://outlook.office.com/owa/?ItemID=AAMkAGE1Mbs88AADggYEcAAA%3D&exvsurl=1&viewmodel=ICalendarItemDetailsViewModelFactory",
"onlineMeetingUrl": null,
"attachments@odata.context": "https://outlook.office.com/api/beta/$metadata#users('ddfcd489-628b-40d7-b48b-57002df800e5')/events('AAMkAGE1Mbs88AADggYEcAAA%3D')/attachments",
"attachments": [
"@odata.type": "#Microsoft.OutlookServices.ReferenceAttachment",
"id": "AAMkAGE1Mbs88AADggYEcAAABEgAQAABWAoLgP3REt_LWRG8ORv4=",
"lastModifiedDateTime": "2016-03-22T22:27:20Z",
"name": "Hydrangea picture",
"contentType": null,
"size": 412,
"isInline": false,
"sourceUrl": "https://contoso-my.spoppe.com/personal/danas_contoso_onmicrosoft_com/Documents/Pics/hydrangea.jpg",
"providerType": "oneDriveBusiness",
"thumbnailUrl": null,
"previewUrl": null,
"permission": "edit",
"isFolder": false
"@odata.type": "#Microsoft.OutlookServices.ReferenceAttachment",
"id": "AAMkAGE1Mbs88AADggYEcAAABEgAQAE1rHHth7YNLlR9WsgnODy0=",
"lastModifiedDateTime": "2016-03-22T22:39:09Z",
"name": "Koala picture",
"contentType": null,
"size": 382,
"isInline": false,
"sourceUrl": "https://contoso-my.spoppe.com/personal/danas_contoso_onmicrosoft_com/Documents/Pics/koala.jpg",
"providerType": "oneDriveBusiness",
"thumbnailUrl": null,
"previewUrl": null,
"permission": "edit",
"isFolder": false
示例请求(嵌套附件项目上的 $expand)
下面的示例获取嵌套附件项。
GET https://outlook-sdf.office.com/api/v2.0/me/events/AAMkAGE1Mbs88AADUv0uFAAA=/attachments/AAMkAGE1Mbs88AADUv0uFAAABEgAQAL53d0u3BKBJmCxKVxZKBZ8=$expand=Microsoft.OutlookServices.ItemAttachment/Item
Status code: 200
"Id": "AAMkAGE1Mbs88AADUv0uFAAABEgAQAL53d0u3BKBJmCxKVxZKBZ8=",
"LastModifiedDateTime": "2017-04-25T20:05:55Z",
"Name": "RE: Changes to GetConditionMetadata handler",
"ContentType": null,
"Size": 78927,
"IsInline": false,
"Item": {
"Id": "",
"Name": "How to retrieve item attachment using Outlook REST API",
"ContentType": message/rfc822,
"Size": 71094,
"IsInline": false,
"LastModifiedDateTime": "2015-09-24T05:57:59Z",
可以为一个事件创建文件附件或创建项目附件。
创建文件附件
创建项目附件
创建参考附件
创建文件附件
要求的最小范围
以下各项之一:
https://outlook.office.com/calendars.readwrite
wl.calendars_更新
wl.events_创建
向一个事件添加文件附件。
POST https://outlook.office.com/api/v2.0/me/events/{event_id}/attachments
下面的示例向一个现有事件添加参考附件。 附件是 OneDrive for Business 上的文件的链接。
POST https://outlook.office.com/api/v2.0/me/events('AAMkAGE1Mbs88AADggYEcAAA=')/attachments
Content-Type: application/json
"@odata.type": "#Microsoft.OutlookServices.ReferenceAttachment",
"Name": "Hydrangea picture",
"SourceUrl": "https://contoso-my.spoppe.com/personal/danas_contoso_onmicrosoft_com/Documents/Pics/hydrangea.jpg",
"ProviderType": "oneDriveBusiness",
"Permission": "Edit",
"IsFolder": "False"
状态代码:201 已创建
"@odata.context": "https://outlook.office.com/api/v2.0/$metadata#users('ddfcd489-628b-40d7-b48b-57002df800e5')/events('AAMkAGE1Mbs88AADggYEcAAA%3D')/attachments/$entity",
"@odata.type": "#Microsoft.OutlookServices.ReferenceAttachment",
"Id": "AAMkAGE1Mbs88AADggYEcAAABEgAQAABWAoLgP3REt_LWRG8ORv4=",
"LastModifiedDateTime": "2016-03-22T22:27:20Z",
"Name": "Hydrangea picture",
"ContentType": null,
"Size": 412,
"IsInline": false,
"SourceUrl": "https://contoso-my.spoppe.com/personal/danas_contoso_onmicrosoft_com/Documents/Pics/hydrangea.jpg",
"ProviderType": "oneDriveBusiness",
"ThumbnailUrl": null,
"PreviewUrl": null,
"Permission": "edit",
"IsFolder": false
删除事件附件
删除事件附件
要求的最小范围
以下各项之一:
https://outlook.office.com/calendars.readwrite
wl.calendars_更新
wl.events_创建
删除一个事件的指定附件。 附件可以是 文件附件 或 项目附件。
DELETE https://outlook.office.com/api/v2.0/me/events/{event_id}/attachments/{attachment_id}
DELETE https:/outlook.office.com/api/v2.0/me/events/AAMkAGE0MG4v1OAAA=/attachments/AAMkAGITG9yAAA=
Status code: 204
从日历中获取两个日期和时间之间的事件提醒列表。
要求的最小范围
以下各项之一:
https://outlook.office.com/calendars.read
wl.calendars
wl.contacts_日历
GET https://outlook.office.com/api/v2.0/me/ReminderView(StartDateTime='{DateTime}',EndDateTime='{DateTime}')
使用 Prefer: outlook.timezone 标头来指定响应中事件开始和结束时间要使用的时区。 如果该事件是在不同的时区中创建的,则开始和结束时间将调整到指定的时区。
请参阅此列表了解支持的时区名称。 如果未指定 Prefer: outlook.timezone 标头,则时区设定为 UTC。
暂停提醒,将提醒推迟到新的时间。
要求的最小范围
以下各项之一:
https://outlook.office.com/calendars.readwrite
wl.calendars_更新
wl.events_创建
POST https://outlook.office.com/api/v2.0/me/Events('{id}')/SnoozeReminder
获取所有用户的日历 (calendars
) 或从特定日历组获取日历。
GET https://outlook.office.com/api/v2.0/me/calendars
GET https://outlook.office.com/api/v2.0/me/calendargroups/{calendar_group_id}/calendars
请参阅 OData 查询参数 了解筛选、排序和分页参数。
"@odata.context": "https://outlook.office.com/api/v2.0/$metadata#Me/Calendars",
"value": [
"@odata.id": "https://outlook.office.com/api/v2.0/Users('ddfcd489-628b-40d7-b48b-57002df800e5@1717622f-1d94-4d0c-9d74-709fad664b77')/Calendars('AAMkAGI2TGuLAAA=')",
"Id": "AAMkAGI2TGuLAAA=",
"Name": "Calendar",
"Color": "Auto",
"ChangeKey": "nfZyf7VcrEKLNoU37KWlkQAAA0x0+w==",
"CanShare":true,
"CanViewPrivateItems":true,
"CanEdit":true,
"Owner":{
"Name":"Fanny Downs",
"Address":"fannyd@adatum.onmicrosoft.com"
要求的最小范围
以下各项之一:
https://outlook.office.com/calendars.read
wl.calendars
wl.contacts_日历
通过 ID 获取日历。 可以通过使用 ../me/calendar
端点来获取用户的主日历。
GET https://outlook.office.com/api/v2.0/me/calendars/{calendar_id}
请参阅 OData 查询参数 了解筛选、排序和分页参数。
状态代码:200
"@odata.context": "https://outlook.office.com/api/v2.0/$metadata#Me/Calendars/$entity",
"@odata.id": "https://outlook.office.com/api/v2.0/Users('ddfcd489-628b-40d7-b48b-57002df800e5@1717622f-1d94-4d0c-9d74-709fad664b77')/Calendars('AAMkAGI2TGuLAAA=')",
"Id": "AAMkAGI2TGuLAAA=",
"Name": "Calendar",
"Color": "Auto",
"ChangeKey": "nfZyf7VcrEKLNoU37KWlkQAAA0x0+w==",
"CanShare":true,
"CanViewPrivateItems":true,
"CanEdit":true,
"Owner":{
"Name":"Fanny Downs",
"Address":"fannyd@adatum.onmicrosoft.com"
请求的日历。
要求的最小范围
以下各项之一:
https://outlook.office.com/calendars.readwrite
wl.calendars_更新
wl.events_创建
通过使用 ../me/calendars
快捷方式在默认日历组中创建日历,或通过发布到组的 calendars
端点在特定日历组中来创建日历。
POST https://outlook.office.com/api/v2.0/me/calendars
POST https://outlook.office.com/api/v2.0/me/calendargroups/{calendar_group_id}/calendars
状态代码:201
"@odata.context": "https://outlook.office.com/api/v2.0/$metadata#Me/Calendars/$entity",
"@odata.id": "https://outlook.office.com/api/v2.0/Users('ddfcd489-628b-40d7-b48b-57002df800e5@1717622f-1d94-4d0c-9d74-709fad664b77')/Calendars('AAMkAGE4xLHAAA=')",
"@odata.etag": "W/\"Jj9S59cHB0Wq4jXUzBgDvQAAFeN/SQ==\"",
"Id": "AAMkAGE4xLHAAA=",
"Name": "Social",
"ChangeKey": "Jj9S59cHB0Wq4jXUzBgDvQAAFeN/SQ==",
"CanShare":true,
"CanViewPrivateItems":true,
"CanEdit":true,
"Owner":{
"Name":"Fanny Downs",
"Address":"fannyd@adatum.onmicrosoft.com"
新日历。
要求的最小范围
以下各项之一:
https://outlook.office.com/calendars.readwrite
wl.calendars_更新
wl.events_创建
更改日历的可写属性。
PATCH https://outlook.office.com/api/v2.0/me/calendars/{calendar_id}
PATCH https://outlook.office.com/api/v2.0/me/calendars/AAMkAGE4xLIAAA=
Content-Type: application/json
"Name": "Social events"
状态代码:200
"@odata.context": "https://outlook.office.com/api/v2.0/$metadata#Me/Calendars/$entity",
"@odata.id": "https://outlook.office.com/api/v2.0/Users('ddfcd489-628b-40d7-b48b-57002df800e5@1717622f-1d94-4d0c-9d74-709fad664b77')/Calendars('AAMkAGE4xLIAAA=')",
"@odata.etag": "W/\"Jj9S59cHB0Wq4jXUzBgDvQAAFeN/Sw==\"",
"Id": "AAMkAGE4xLIAAA=",
"Name": "Social events",
"ChangeKey": "Jj9S59cHB0Wq4jXUzBgDvQAAFeN/Sw==",
"CanShare":true,
"CanViewPrivateItems":true,
"CanEdit":true,
"Owner":{
"Name":"Fanny Downs",
"Address":"fannyd@adatum.onmicrosoft.com"
已更新的日历。
要求的最小范围
以下各项之一:
https://outlook.office.com/calendars.readwrite
wl.calendars_更新
wl.events_创建
DELETE https://outlook.office.com/api/v2.0/me/calendars/{calendar_id}
状态代码:200
"@odata.context": "https://outlook.office.com/api/v2.0/$metadata#Me/CalendarGroups",
"value": [
"@odata.id": "https://outlook.office.com/api/v2.0/Users('ddfcd489-628b-40d7-b48b-57002df800e5@1717622f-1d94-4d0c-9d74-709fad664b77')/CalendarGroups('AAMkAGI2TGuKAAA=')",
"Id": "AAMkAGI2TGuKAAA=",
"Name": "My Calendars",
"ClassId": "0006f0b7-0000-0000-c000-000000000046",
"ChangeKey": "nfZyf7VcrEKLNoU37KWlkQAAA0x0+g=="
"@odata.id": "https://outlook.office.com/api/v2.0/Users('ddfcd489-628b-40d7-b48b-57002df800e5@1717622f-1d94-4d0c-9d74-709fad664b77')/CalendarGroups('AAMkAGI2TGuMAAA=')",
"Id": "AAMkAGI2TGuMAAA=",
"Name": "Other Calendars",
"ClassId": "0006f0b8-0000-0000-c000-000000000046",
"ChangeKey": "nfZyf7VcrEKLNoU37KWlkQAAA0x0/A=="
请求的日历组集合。
获取日历组
要求的最小范围
以下各项之一:
https://outlook.office.com/calendars.read
wl.calendars
wl.contacts_日历
通过 ID 获取日历组。
GET https://outlook.office.com/api/v2.0/me/calendargroups/{calendar_group_id}
请参阅 OData 查询参数 了解筛选、排序和分页参数。
状态代码:200
"@odata.context": "https://outlook.office.com/api/v2.0/$metadata#Me/CalendarGroups/$entity",
"@odata.id": "https://outlook.office.com/api/v2.0/Users('ddfcd489-628b-40d7-b48b-57002df800e5@1717622f-1d94-4d0c-9d74-709fad664b77')/CalendarGroups('AAMkAGI2TGuKAAA=')",
"Id": "AAMkAGI2TGuKAAA=",
"Name": "My Calendars",
"ClassId": "0006f0b7-0000-0000-c000-000000000046",
"ChangeKey": "nfZyf7VcrEKLNoU37KWlkQAAA0x0+g=="
请求的日历组。
创建日历组
创建日历组。 名称是日历组的唯一可写属性。
创建日历组
Outlook.com 仅支持可通过 ../me/calendars
快捷方式访问的默认日历组。 无法在 Outlook.com 中创建另一个日历组。
创建日历组
要求的最小范围
以下各项之一:
https://outlook.office.com/calendars.readwrite
wl.calendars_更新
wl.events_创建
POST https://outlook.office.com/api/v2.0/me/calendargroups
POST https://outlook.office.com/api/v2.0/me/calendargroups
Content-Type: application/json
"Name": "Birthdays"
状态代码:201
"@odata.context": "https://outlook.office.com/api/v2.0/$metadata#Me/CalendarGroups/$entity",
"@odata.id": "https://outlook.office.com/api/v2.0/Users('ddfcd489-628b-40d7-b48b-57002df800e5@1717622f-1d94-4d0c-9d74-709fad664b77')/CalendarGroups('AAMkAGE0M4xLGAAA=')",
"@odata.etag": "W/\"Jj9S59cHB0Wq4jXUzBgDvQAAFeN/Rw==\"",
"Id": "AAMkAGE0M4xLGAAA=",
"Name": "Birthdays",
"ChangeKey": "Jj9S59cHB0Wq4jXUzBgDvQAAFeN/Rw==",
"ClassId": "4d969bba-8942-42a0-ae33-c7d4410d1e11"
新日历组。
更新日历组
更新日历组
更新日历组
要求的最小范围
以下各项之一:
https://outlook.office.com/calendars.readwrite
wl.calendars_更新
wl.events_创建
更改日历组的名称。 Name是唯一可写的日历组属性。
PATCH https://outlook.office.com/api/v2.0/me/calendargroups/{calendar_group_id}
PATCH https://outlook.office.com/api/v2.0/me/calendargroups/AAMkAGE0M4xLGAAA=
Content-Type: application/json
"Name": "Holidays"
"@odata.context": "https://outlook.office.com/api/v2.0/$metadata#Me/CalendarGroups/$entity",
"@odata.id": "https://https://outlook.office.com/api/v2.0/Users('ddfcd489-628b-40d7-b48b-57002df800e5@1717622f-1d94-4d0c-9d74-709fad664b77')/CalendarGroups('AAMkAGE0MGM4xLGAAA=')",
"@odata.etag": "W/\"Jj9S59cHB0Wq4jXUzBgDvQAAFeN/SA==\"",
"Id": "AAMkAGE0MGM4xLGAAA=",
"Name": "Holidays",
"ChangeKey": "Jj9S59cHB0Wq4jXUzBgDvQAAFeN/SA==",
"ClassId": "4d969bba-8942-42a0-ae33-c7d4410d1e11"
已更新的日历组。
删除日历组
删除日历组
Outlook.com 仅支持可通过 ../me/calendars
快捷方式访问的默认日历组。 不要删除此日历组。
删除日历组
要求的最小范围
以下各项之一:
https://outlook.office.com/calendars.readwrite
wl.calendars_更新
wl.events_创建
DELETE https://outlook.office.com/api/v2.0/me/calendargroups/{calendar_group_id}