Outlook Calendar REST API 引用( 1.0 版)
应用于 : Exchange Online | Office 365 | Hotmail.com | Live.com | MSN.com | Outlook.com | Passport.com
备注
已不推荐使用 1.0 版 Outlook REST API 。 自 2018 年 11 月 1 日 开始,应用将无法再在 1.0 版 REST 端点上使用基本身份验证。 截止到 2019 年 11 月 1 日 ,1.0 版 REST 端点将完全停止使用,并且 1.0 版文档将在不久之后移除。 请开始迁移你的应用,以便在 1.0 版 Microsoft Graph 中使用 Outlook REST API 。 更多详情,请参阅我们的 通知 。
日历 API 可用于访问 Office 365 中的 Azure Active Directory 保护的事件、日历和日历组数据,以及特定于以下域中的 Microsoft 帐户的类似数据: Hotmail.com、Live.com、MSN.com、Outlook .com 和 Passport.com 。
备注
- 例外的是 查找会议时间 的 API,它仅适用于 Office 365 邮箱(在 Azure AD 上)而不适用于 Microsoft 帐户。
- 为简化引用,本文的其余部分使用 Outlook.com 来包括这些 Microsoft 帐户域。
对 1.0 版 API 不感兴趣? 在左侧的目录表中,转到 Office 365 REST API 参考 部分,然后选择所需的版本。
所有日历 API 操作
事件操作
事件表示用户日历上的约会或会议。 事件可以是一个序列主(定期事件)、一个执行、一个单个实例或一次异常。
日历操作
日历用作事件容器。 用户可以拥有多个日历。 在 Office 365 中,每个日历都可以分配给一个日历组。
日历组操作
日历组是组织多个日历的一种方式。 用户可以将多个日历添加到 Outlook 或 Outlook Web 应用中的单个日历组中。 这使用户更容易快速查看此组内的所有日历。
备注
Outlook.com 仅支持可通过 ../me/calendars
快捷方式访问的默认日历组。 不能删除该日历组,或者创建另一个日历组。
另请参阅
使用日历 REST API
身份验证
像其他 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
API 版本
所有版本的 Outlook REST API 都支持日历 REST API 。 功能可能依特定版本而有所不同。
目标用户
始终代表当前用户执行 Calendar API 请求。
有关 Outlook REST API 所有子集所共有的更多信息,请参阅 使用 Outlook REST API 。
获取事件
获取事件。
事件体可以是文本或 HTML 。 目前,GET 操作只返回 HTML 格式的事件体。
获取日历视图
要求的最小范围
以下各项之一:
- https://outlook.office.com/calendars.read
- wl.calendars
- wl.contacts_日历
从用户的主日历 (../me/calendarview
) 或其他日历中,获取由时间范围定义的日历视图中事件的执行、异常和单一实例。
GET https://outlook.office.com/api/v1.0/me/calendarview?start={start_datetime}&end={end_datetime}
GET https://outlook.office.com/api/v1.0/me/calendars/{calendar_id}/calendarview?startDateTime={start_datetime}&endDateTime={end_datetime}
必需的参数 | 类型 | 说明 |
---|---|---|
URL 参数 | ||
calendar_id | 字符串 | 日历 ID(如果从特定日历获取日历视图)。 |
start_datetime | datetimeoffset | 事件开始的日期和时间。 |
end_datetime | datetimeoffset | 事件结束的日期和时间。 |
备注
默认情况下,响应中的每个事件都包含其所有属性。 使用 $select
只指定那些需要的性能最佳的属性。 始终返回该 ID 属性。 请参阅 OData 查询参数 了解筛选、排序和分页参数。
例如,获取 10 月份的日历视图,仅返回每个事件的“主题”属性:
GET https://outlook.office.com/api/v1.0/me/calendarview?startDateTime=2014-10-01T01:00:00Z&endDateTime=2014-10-31T23:00:00Z&$select=Subject
响应类型
指定时间范围内的扩展 事件 。
获取系列主事件和单个事件
要求的最小范围
以下各项之一:
- https://outlook.office.com/calendars.read
- wl.calendars
- wl.contacts_日历
从用户的主日历 (../me/events
) 或其他日历获取系列主事件和单实例事件的集合。 要获取扩展的事件实例,可以 获取日历视图 ,或者 获取事件的实例 。
GET https://outlook.office.com/api/v1.0/me/events
GET https://outlook.office.com/api/v1.0/me/calendars/{calendar_id}/events
必需的参数 | 类型 | 说明 |
---|---|---|
URL 参数 | ||
calendar_id | 字符串 | 日历 ID(如果从特定日历获取事件)。 |
备注
响应中的每个事件都包含其所有属性。 使用 $select
只指定那些需要的性能最佳的属性。 始终返回该 ID 属性。 请参阅下个示例。 请参阅 OData 查询参数 了解筛选、排序和分页参数。
以下示例显示如何使用 $select
来指定只返回响应中每个事件的主题 、组织者 、 开始 和 结束 属性。 请参阅 获取事件 (REST) 中的第一个示例响应,了解当你不使用 $select
时,某事件返回的完整属性列表。
示例请求
GET https://outlook.office.com/api/v1.0/me/events?$select=Subject,Organizer,Start,End
示例响应
状态代码:200
{
"@odata.context": "https://outlook.office.com/api/v1.0/$metadata#Me/Events(Subject,Organizer,Start,End)",
"value": [
{
"@odata.id": "https://outlook.office.com/api/v1.0/Users('ddfcd489-628b-40d7-b48b-57002df800e5@1717622f-1d94-4d0c-9d74-709fad664b77')/Events('AAMkAGI2TG9xAAA=')",
"@odata.etag": "W/\"nfZyf7VcrEKLNoU37KWlkQAA/LpDWw==\"",
"Id": "AAMkAGI2NGVhZTVlLTI1OGMtNDI4My1iZmE5LTA5OGJiZGEzMTc0YQBGAAAAAADUuTJK1K9aTpCdqXop_4NaBwCd9nJ-tVysQos2hTfspaWRAAAAAAENAACd9nJ-tVysQos2hTfspaWRAAD8tEyDAAA=",
"Subject": "Scrum",
"Start": "2015-11-02T17:00:00Z",
"End": "2015-11-02T17:30:00Z",
"Organizer": {
"EmailAddress": {
"Name": "user0TestUser",
"Address": "user0@a830edad9050849NDA1.onmicrosoft.com"
}
}
},
{
"@odata.id": "https://outlook.office.com/api/v1.0/Users('ddfcd489-628b-40d7-b48b-57002df800e5@1717622f-1d94-4d0c-9d74-709fad664b77')/Events('AAMkAGI2TG9xAAA=')",
"@odata.etag": "W/\"nfZyf7VcrEKLNoU37KWlkQAA/LpDWg==\"",
"Id": "AAMkAGI2NGVhZTVlLTI1OGMtNDI4My1iZmE5LTA5OGJiZGEzMTc0YQBGAAAAAADUuTJK1K9aTpCdqXop_4NaBwCd9nJ-tVysQos2hTfspaWRAAAAAAENAACd9nJ-tVysQos2hTfspaWRAAD8tEyCAAA=",
"Subject": "team lunch",
"Start": "2015-11-02T00:00:00Z",
"End": "2015-11-03T00:00:00Z",
"Organizer": {
"EmailAddress": {
"Name": "user0TestUser",
"Address": "user0@a830edad9050849NDA1.onmicrosoft.com"
}
}
},
{
"@odata.id": "https://outlook.office.com/api/v1.0/Users('ddfcd489-628b-40d7-b48b-57002df800e5@1717622f-1d94-4d0c-9d74-709fad664b77')/Events('AAMkAGI2TG9xAAA=')",
"@odata.etag": "W/\"nfZyf7VcrEKLNoU37KWlkQAAA0x49w==\"",
"Id": "AAMkAGI2NGVhZTVlLTI1OGMtNDI4My1iZmE5LTA5OGJiZGEzMTc0YQBGAAAAAADUuTJK1K9aTpCdqXop_4NaBwCd9nJ-tVysQos2hTfspaWRAAAAAAENAACd9nJ-tVysQos2hTfspaWRAAADTG93AAA=",
"Subject": "Weekly Meeting on Contoso Project",
"Start": "2014-10-13T21:00:00Z",
"End": "2014-10-13T22:00:00Z",
"Organizer": {
"EmailAddress": {
"Name": "Alex D",
"Address": "alexd@a830edad9050849NDA1.onmicrosoft.com"
}
}
},
{
"@odata.id": "https://outlook.office.com/api/v1.0/Users('ddfcd489-628b-40d7-b48b-57002df800e5@1717622f-1d94-4d0c-9d74-709fad664b77')/Events('AAMkAGI2TG9xAAA=')",
"@odata.etag": "W/\"nfZyf7VcrEKLNoU37KWlkQAAA0x49g==\"",
"Id": "AAMkAGI2NGVhZTVlLTI1OGMtNDI4My1iZmE5LTA5OGJiZGEzMTc0YQBGAAAAAADUuTJK1K9aTpCdqXop_4NaBwCd9nJ-tVysQos2hTfspaWRAAAAAAENAACd9nJ-tVysQos2hTfspaWRAAADTG92AAA=",
"Subject": "Daily Team Meeting",
"Start": "2014-10-13T18:00:00Z",
"End": "2014-10-13T18:30:00Z",
"Organizer": {
"EmailAddress": {
"Name": "Alex D",
"Address": "alexd@a830edad9050849NDA1.onmicrosoft.com"
}
}
},
{
"@odata.id": "https://outlook.office.com/api/v1.0/Users('ddfcd489-628b-40d7-b48b-57002df800e5@1717622f-1d94-4d0c-9d74-709fad664b77')/Events('AAMkAGI2TG9xAAA=')",
"@odata.etag": "W/\"nfZyf7VcrEKLNoU37KWlkQAAA0x47Q==\"",
"Id": "AAMkAGI2NGVhZTVlLTI1OGMtNDI4My1iZmE5LTA5OGJiZGEzMTc0YQBGAAAAAADUuTJK1K9aTpCdqXop_4NaBwCd9nJ-tVysQos2hTfspaWRAAAAAAENAACd9nJ-tVysQos2hTfspaWRAAADTG91AAA=",
"Subject": "Rob:Alex 1:1",
"Start": "2014-10-15T16:30:00Z",
"End": "2014-10-15T17:30:00Z",
"Organizer": {
"EmailAddress": {
"Name": "Alex D",
"Address": "alexd@a830edad9050849NDA1.onmicrosoft.com"
}
}
},
{
"@odata.id": "https://outlook.office.com/api/v1.0/Users('ddfcd489-628b-40d7-b48b-57002df800e5@1717622f-1d94-4d0c-9d74-709fad664b77')/Events('AAMkAGI2TG9xAAA=')",
"@odata.etag": "W/\"nfZyf7VcrEKLNoU37KWlkQAAA0x46g==\"",
"Id": "AAMkAGI2NGVhZTVlLTI1OGMtNDI4My1iZmE5LTA5OGJiZGEzMTc0YQBGAAAAAADUuTJK1K9aTpCdqXop_4NaBwCd9nJ-tVysQos2hTfspaWRAAAAAAENAACd9nJ-tVysQos2hTfspaWRAAADTG90AAA=",
"Subject": "Thanksgiving Holiday",
"Start": "2015-11-26T00:00:00Z",
"End": "2015-11-27T00:00:00Z",
"Organizer": {
"EmailAddress": {
"Name": "Alex D",
"Address": "alexd@a830edad9050849NDA1.onmicrosoft.com"
}
}
},
{
"@odata.id": "https://outlook.office.com/api/v1.0/Users('ddfcd489-628b-40d7-b48b-57002df800e5@1717622f-1d94-4d0c-9d74-709fad664b77')/Events('AAMkAGI2TG9xAAA=')",
"@odata.etag": "W/\"nfZyf7VcrEKLNoU37KWlkQAAA0x46Q==\"",
"Id": "AAMkAGI2NGVhZTVlLTI1OGMtNDI4My1iZmE5LTA5OGJiZGEzMTc0YQBGAAAAAADUuTJK1K9aTpCdqXop_4NaBwCd9nJ-tVysQos2hTfspaWRAAAAAAENAACd9nJ-tVysQos2hTfspaWRAAADTG9zAAA=",
"Subject": "Thanksgiving Holiday",
"Start": "2014-11-27T00:00:00Z",
"End": "2014-11-28T00:00:00Z",
"Organizer": {
"EmailAddress": {
"Name": "Alex D",
"Address": "alexd@a830edad9050849NDA1.onmicrosoft.com"
}
}
},
{
"@odata.id": "https://outlook.office.com/api/v1.0/Users('ddfcd489-628b-40d7-b48b-57002df800e5@1717622f-1d94-4d0c-9d74-709fad664b77')/Events('AAMkAGI2TG9xAAA=')",
"@odata.etag": "W/\"nfZyf7VcrEKLNoU37KWlkQAAA0x49Q==\"",
"Id": "AAMkAGI2NGVhZTVlLTI1OGMtNDI4My1iZmE5LTA5OGJiZGEzMTc0YQBGAAAAAADUuTJK1K9aTpCdqXop_4NaBwCd9nJ-tVysQos2hTfspaWRAAAAAAENAACd9nJ-tVysQos2hTfspaWRAAADTG9yAAA=",
"Subject": "New Year's Day Holiday",
"Start": "2015-01-01T00:00:00Z",
"End": "2015-01-02T00:00:00Z",
"Organizer": {
"EmailAddress": {
"Name": "Alex D",
"Address": "alexd@a830edad9050849NDA1.onmicrosoft.com"
}
}
},
{
"@odata.id": "https://outlook.office.com/api/v1.0/Users('ddfcd489-628b-40d7-b48b-57002df800e5@1717622f-1d94-4d0c-9d74-709fad664b77')/Events('AAMkAGI2TG9xAAA=')",
"@odata.etag": "W/\"nfZyf7VcrEKLNoU37KWlkQAAA0x45w==\"",
"Id": "AAMkAGI2NGVhZTVlLTI1OGMtNDI4My1iZmE5LTA5OGJiZGEzMTc0YQBGAAAAAADUuTJK1K9aTpCdqXop_4NaBwCd9nJ-tVysQos2hTfspaWRAAAAAAENAACd9nJ-tVysQos2hTfspaWRAAADTG9xAAA=",
"Subject": "Christmas Holiday",
"Start": "2014-12-25T00:00:00Z",
"End": "2014-12-26T00:00:00Z",
"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/v1.0/me/events/{event_id}/instances?startDateTime={start_datetime}&endDateTime={end_datetime}
必需的参数 | 类型 | 说明 |
---|---|---|
URL 参数 | ||
event_id | 字符串 | 事件 ID 。 |
start_datetime | datetimeoffset | 事件开始的 UTC 日期和时间。 |
end_datetime | datetimeoffset | 事件结束的 UTC 日期和时间。 |
响应类型
请求的 事件 集合。
备注
默认情况下,响应中的每个事件都包含其所有属性。 使用 $select
只指定那些需要的性能最佳的属性。 始终返回该 ID 属性。 请参阅 OData 查询参数 了解筛选、排序和分页参数。
例如,获取 10 月份的特定事件的实例,仅包含每个实例的 主题 、开始 和 结束 属性:
GET https://outlook.office.com/api/v1.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/v1.0/me/events/{event_id}
必需的参数 | 类型 | 说明 |
---|---|---|
URL 参数 | ||
event_id | 字符串 | 事件 ID 。 |
示例请求
GET https://outlook.office.com/api/v1.0/me/events/AAMkAGI2NGVhZTVlLTI1OGMtNDI4My1iZmE5LTA5OGJiZGEzMTc0YQBGAAAAAADUuTJK1K9aTpCdqXop_4NaBwCd9nJ-tVysQos2hTfspaWRAAAAAAENAACd9nJ-tVysQos2hTfspaWRAAADTG93AAA=
示例响应
状态代码:200
{
"@odata.context": "https://outlook.office.com/api/v1.0/$metadata#Me/Events/$entity",
"@odata.id": "https://outlook.office.com/api/v1.0/Users('ddfcd489-628b-40d7-b48b-57002df800e5@1717622f-1d94-4d0c-9d74-709fad664b77')/Events('AAMkAGI2TG9xAAA=')",
"@odata.etag": "W/\"nfZyf7VcrEKLNoU37KWlkQAAA0x49w==\"",
"Id": "AAMkAGI2NGVhZTVlLTI1OGMtNDI4My1iZmE5LTA5OGJiZGEzMTc0YQBGAAAAAADUuTJK1K9aTpCdqXop_4NaBwCd9nJ-tVysQos2hTfspaWRAAAAAAENAACd9nJ-tVysQos2hTfspaWRAAADTG93AAA=",
"DateTimeCreated": "2014-10-19T23:13:47.3959685Z",
"DateTimeLastModified": "2014-10-23T20:23:47.0735997Z",
"ChangeKey": "nfZyf7VcrEKLNoU37KWlkQAAA0x49w==",
"Categories": [],
"StartTimeZone": "Pacific Standard Time",
"EndTimeZone": "Pacific Standard Time",
"ResponseStatus": {
"Response": "Organizer",
"Time": "0001-01-01T00:00:00Z"
},
"iCalUId": "040000008200E00074C5B7101A82E0080000000005F3F755F2EBCF010000000000000000100000007547017C91509D42A5B60C97141AA3DD",
"Reminder": 15,
"HasAttachments": false,
"Subject": "Weekly Meeting on 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"
},
"BodyPreview": "Setting up some time to review the budget and planning on the Contoso Project",
"Importance": "Normal",
"Sensitivity": "Normal",
"Start": "2014-10-13T21:00:00Z",
"End": "2014-10-13T22:00:00Z",
"Location": {
"DisplayName": "Alex's Office"
},
"IsAllDay": false,
"IsCancelled": false,
"IsOrganizer": true,
"Recurrence": {
"Pattern": {
"Type": "Weekly",
"Interval": 1,
"Month": 0,
"DayOfMonth": 0,
"DaysOfWeek": [
"Monday"
],
"FirstDayOfWeek": "Sunday",
"Index": "First"
},
"Range": {
"Type": "NoEnd",
"StartDate": "2014-10-13T00:00:00-07:00",
"EndDate": "0001-01-01T00:00:00Z",
"NumberOfOccurrences": 0
}
},
"ResponseRequested": true,
"SeriesMasterId": null,
"ShowAs": "Busy",
"Type": "SeriesMaster",
"Attendees": [
{
"Status": {
"Response": "None",
"Time": "0001-01-01T00:00:00Z"
},
"Type": "Required",
"EmailAddress": {
"Name": "Janet Schorr",
"Address": "janets@a830edad9050849NDA1.onmicrosoft.com"
}
},
{
"Status": {
"Response": "None",
"Time": "0001-01-01T00:00:00Z"
},
"Type": "Required",
"EmailAddress": {
"Name": "Pavel Bansky",
"Address": "pavelb@a830edad9050849NDA1.onmicrosoft.com"
}
}
],
"Organizer": {
"EmailAddress": {
"Name": "Alex D",
"Address": "alexd@a830edad9050849NDA1.onmicrosoft.com"
}
}
响应类型
请求的 事件 。
备注
默认情况下,响应包含事件的所有属性。 使用 $select
只指定那些需要的性能最佳的属性。 始终返回该 ID 属性。 请参阅 OData 查询参数 了解筛选、排序和分页参数。
以下示例显示如何使用 $select
来指定只返回事件的 主题 、组织者 、开始 和 结束 属性。
示例请求
GET https://outlook.office.com/api/v1.0/me/events/AAMkAGI2NGVhZTVlLTI1OGMtNDI4My1iZmE5LTA5OGJiZGEzMTc0YQBGAAAAAADUuTJK1K9aTpCdqXop_4NaBwCd9nJ-tVysQos2hTfspaWRAAAAAAENAACd9nJ-tVysQos2hTfspaWRAAADTG93AAA=?$select=Subject,Organizer,Start,End
示例响应
{
"@odata.context": "https://outlook.office.com/api/v1.0/$metadata#Me/Events(Subject,Organizer,Start,End)/$entity",
"@odata.id": "https://outlook.office.com/api/v1.0/Users('ddfcd489-628b-40d7-b48b-57002df800e5@1717622f-1d94-4d0c-9d74-709fad664b77')/Events('AAMkAGI2TG9xAAA=')",
"@odata.etag": "W/\"nfZyf7VcrEKLNoU37KWlkQAAA0x49w==\"",
"Id": "AAMkAGI2NGVhZTVlLTI1OGMtNDI4My1iZmE5LTA5OGJiZGEzMTc0YQBGAAAAAADUuTJK1K9aTpCdqXop_4NaBwCd9nJ-tVysQos2hTfspaWRAAAAAAENAACd9nJ-tVysQos2hTfspaWRAAADTG93AAA=",
"Subject": "Weekly Meeting on Contoso Project",
"Start": "2014-10-13T21:00:00Z",
"End": "2014-10-13T22:00:00Z",
"Organizer": {
"EmailAddress": {
"Name": "Alex D",
"Address": "alexd@a830edad9050849NDA1.onmicrosoft.com"
}
}
}
同步事件
要求的最小范围
以下各项之一:
- https://outlook.office.com/calendars.read
- wl.calendars
- 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/v1.0/{user_context}/calendarview?startDateTime={start_datetime}&endDateTime={end_datetime}
第二个请求,或后续轮循中的第一个请求:
GET https://outlook.office.com/api/v1.0/{user_context}/calendarview?startDateTime={start_datetime}&endDateTime={end_datetime}&$deltatoken={delta_token}
同一轮循中的第三个或后续请求:
GET https://outlook.office.com/api/v1.0/{user_context}/calendarview?startDateTime={start_datetime}&endDateTime={end_datetime}&$skiptoken={skip_token}
要在特定日历中同步
初始请求:
GET https://outlook.office.com/api/v1.0/{user_context}/calendars('{calendar_id}')/calendarview?startDateTime={start_datetime}&endDateTime={end_datetime}
第二个请求,或后续轮循中的第一个请求:
GET https://outlook.office.com/api/v1.0/{user_context}/calendars('{calendar_id}')/calendarview?startDateTime={start_datetime}&endDateTime={end_datetime}&$deltatoken={delta_token}
同一轮循中的第三个或后续请求:
GET https://outlook.office.com/api/v1.0/{user_context}/calendars('{calendar_id}')/calendarview?startDateTime={start_datetime}&endDateTime={end_datetime}&$skiptoken={skip_token}
参数
参数 | 类型 | 说明 |
---|---|---|
URL 参数 | ||
user_context | 字符串 | 用户上下文。 可以使用“我”的值来指示当前用户的上下文。 也可以使用用户 /{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/v1.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/v1.0/$metadata#Me/CalendarView",
"value": [
{
"@odata.id": "https://outlook.office.com/api/v1.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": "2015-04-05T18:00:00Z",
"StartTimeZone": "Pacific Standard Time",
"End": "2015-04-05T19:00:00Z",
"EndTimeZone": "Pacific Standard Time",
"Reminder": 15,
"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,
"Organizer": {
"EmailAddress": {
"Address": "user0@contoso.com",
"Name": "user0"
}
},
"iCalUId": "040000008200E9888E07599CCFA23",
"WebLink": "https://outlook.office.com/owa/?ItemID=AAAINJAAAAA%3D%3D&exvsurl=1&viewmodel=ICalendarItemDetailsViewModelFactory"
}
],
"@odata.deltaLink": "https://outlook.office.com/api/v1.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/v1.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/v1.0/$metadata#Me/CalendarView/$delta",
"value": [
{
"@odata.id": "https://outlook.office.com/api/v1.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": "2015-04-16T18:00:00Z",
"StartTimeZone": "Pacific Standard Time",
"End": "2015-04-16T19:00:00Z",
"EndTimeZone": "Pacific Standard Time",
"Reminder": 15,
"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,
"Organizer": {
"EmailAddress": {
"Address": "user0@contoso.com",
"Name": "user0"
}
},
"iCalUId": "040000008200E09BB89A316862",
"WebLink": "https://outlook.office.com/owa/?ItemID=AAMkADNkNmVlOAA%3D&exvsurl=1&viewmodel=ICalendarItemDetailsViewModelFactory"
}
],
"@odata.nextLink": "https://outlook.office.com/api/v1.0/me/calendarview/?startdatetime=2015-01-01T00%3a00%3a00Z&enddatetime=2015-08-10T00%3a00%3a00Z&%24skipToken=530c9d02ae1a4d96804538bd4d381546"
}
查找会议时间
获取会议室(预览)
这个功能目前仅在 beta 版中可用。
创建事件
创建日历事件
要求的最小范围
以下各项之一:
- https://outlook.office.com/calendars.readwrite
- wl.calendars_更新
- wl.events_创建
通过发布到日历的 events
端点,在用户的主日历或特定日历中创建活动。 创建事件时,服务器将向所有与会者发送邀请。
默认情况下, 开始 和 结束 时间值均采用 UTC。 可以为 开始 和 结束 指定时区,表示相应时区中的时间,并包含与 UTC 相差的偏移量。
下面的示例演示如何用太平洋标准时间分配时间值。 请注意, 如果指定一个时区, 则还必须为另一个时区指定一个值。
POST https://outlook.office.com/api/v1.0/me/events
POST https://outlook.office.com/api/v1.0/me/calendars/{calendar_id}/events
必需的参数 | 类型 | 说明 |
---|---|---|
URL 参数 | ||
calendar_id | 字符串 | 日历 ID。 |
示例请求
POST https://outlook.office.com/api/v1.0/me/events
Content-Type: application/json
{
"Subject": "Discuss the Calendar REST API",
"Body": {
"ContentType": "HTML",
"Content": "I think it will meet our requirements!"
},
"Start": "2014-02-02T18:00:00-08:00",
"StartTimeZone": "Pacific Standard Time",
"End": "2014-02-02T19:00:00-08:00",
"EndTimeZone": "Pacific Standard Time",
"Attendees": [
{
"EmailAddress": {
"Address": "janets@a830edad9050849NDA1.onmicrosoft.com",
"Name": "Janet Schorr"
},
"Type": "Required"
}
]
}
示例响应
状态代码:201
{
"@odata.context": "https://outlook.office.com/api/v1.0/$metadata#Me/Events/$entity",
"@odata.id": "https://outlook.office.com/api/v1.0/Users('ddfcd489-628b-40d7-b48b-57002df800e5@1717622f-1d94-4d0c-9d74-709fad664b77')/Events('AAMkAGE4v1RAAA=')",
"@odata.etag": "W/\"Jj9S59cHB0Wq4jXUzBgDvQAAFeNheA==\"",
"Id": "AAMkAGE0MGM1Y2M5LWEzMmUtNGVlNy05MjRlLTk0YmJjYzVkN2I5MABGAAAAAAC_0WfqSjt_SqLtNkuO-bj1BwAmP1Ln1wcHRariNdTMGAO9AAAAAAENAAAmP1Ln1wcHRariNdTMGAO9AAAV4v1RAAA=",
"ChangeKey": "Jj9S59cHB0Wq4jXUzBgDvQAAFeNheA==",
"Categories": [],
"DateTimeCreated": "2014-01-22T20:56:10.1058291Z",
"DateTimeLastModified": "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": "2014-02-02T18:00:00-08:00",
"StartTimeZone": "Pacific Standard Time",
"End": "2014-02-02T19:00:00-08:00",
"EndTimeZone": "Pacific Standard Time",
"Location": {
"DisplayName": ""
},
"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,
"Organizer": {
"EmailAddress": {
"Address": "alexd@a830edad9050849NDA1.onmicrosoft.com",
"Name": "alexd"
}
}
}
响应类型
新 事件 。
默认情况下,响应包含新事件的所有属性。 使用 $select
只指定那些需要的性能最佳的属性。 始终返回该 ID 属性。
以下是在响应中仅包含新事件的 开始 和 结束 属性的示例。
POST https://outlook.office.com/api/v1.0/me/events?$Select=Start,End
更新事件
更新日历事件
要求的最小范围
以下各项之一:
- https://outlook.office.com/calendars.readwrite
- wl.calendars_更新
- wl.events_创建
更改事件。 只有指定的属性才会更改。 如果用户是组织者, 则服务器会向所有与会者发送会议更新。
PATCH https://outlook.office.com/api/v1.0/me/events/{event_id}
必需的参数 | 类型 | 说明 |
---|---|---|
URL 参数 | ||
event_id | 字符串 | 事件 ID 。 |
在请求正文中指定任何可写入的 事件 属性。
示例请求
PATCH https://outlook.office.com/api/v1.0/me/events/AAMkAGE0MGM1Y2M5LWEzMmUtNGVlNy05MjRlLTk0YmJjYzVkN2I5MABGAAAAAAC_0WfqSjt_SqLtNkuO-bj1BwAmP1Ln1wcHRariNdTMGAO9AAAAAAENAAAmP1Ln1wcHRariNdTMGAO9AAAV4v1OAAA=
Content-Type: application/json
{
"Location": {
"DisplayName": "Your office"
}
}
示例响应
状态代码:200
{
"@odata.context": "https://outlook.office.com/api/v1.0/$metadata#Me/Events/$entity",
"@odata.id": "https://outlook.office.com/api/v1.0/Users('ddfcd489-628b-40d7-b48b-57002df800e5@1717622f-1d94-4d0c-9d74-709fad664b77')/Events('AAMkAGE4v1RAAA=')",
"@odata.etag": "W/\"Jj9S59cHB0Wq4jXUzBgDvQAAFeNheQ==\"",
"Id": "AAMkAGE0MGM1Y2M5LWEzMmUtNGVlNy05MjRlLTk0YmJjYzVkN2I5MABGAAAAAAC_0WfqSjt_SqLtNkuO-bj1BwAmP1Ln1wcHRariNdTMGAO9AAAAAAENAAAmP1Ln1wcHRariNdTMGAO9AAAV4v1OAAA=",
"ChangeKey": "Jj9S59cHB0Wq4jXUzBgDvQAAFeNheQ==",
"Categories": [],
"DateTimeCreated": "2014-01-22T20:49:05.5657528Z",
"DateTimeLastModified": "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": "2014-02-02T18:00:00-08:00",
"StartTimeZone": "Pacific Standard Time",
"End": "2014-02-02T19:00:00-08:00",
"EndTimeZone": "Pacific Standard Time",
"Location": {
"DisplayName": "Your office"
},
"ShowAs": "Busy",
"IsAllDay": false,
"IsCancelled": false,
"IsOrganizer": true,
"ResponseRequested": true,
"Type": "SingleInstance",
"SeriesMasterId": null,
"Attendees": [],
"Recurrence": null,
"Organizer": {
"EmailAddress": {
"Address": "alexd@a830edad9050849NDA1.onmicrosoft.com",
"Name": "alexd"
}
}
}
响应类型
已更新的 事件 。 如果用户是组织者, 则服务器会向所有与会者发送会议更新。
默认情况下,响应包含已更新事件的所有属性。 使用 $select
只指定那些需要的性能最佳的属性。 始终返回该 ID 属性。
PATCH https://outlook.office.com/api/v1.0/me/events/AAMkAGE1MFKPQWAAA=?$select=Location
响应事件
接受事件
要求的最小范围
以下各项之一:
- https://outlook.office.com/calendars.readwrite
- wl.calendars_更新
- wl.events_创建
接受指定的事件。
POST https://outlook.office.com/api/v1.0/me/events/{event_id}/accept
参数 | 类型 | 说明 |
---|---|---|
URL 参数 | ||
event_id | 字符串 | 事件 ID 。 必需。 |
正文参数 | ||
注释 | 字符串 | 响应中包含的文本。可选。 |
SendResponse | 布尔值 | true 如果将响应发送给组织者;否则为, false 。可选。默认值为 true 。 |
示例请求
POST https://outlook.office.com/api/v1.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/v1.0/me/events/{event_id}/tentativelyaccept
参数 | 类型 | 说明 |
---|---|---|
URL 参数 | ||
event_id | 字符串 | 事件 ID 。 必需。 |
正文参数 | ||
注释 | 字符串 | 响应中包含的文本。可选。 |
SendResponse | 布尔值 | true 如果将响应发送给组织者;否则为, false 。可选。默认值为 true 。 |
示例请求
POST https://outlook.office.com/api/v1.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/v1.0/me/events/{event_id}/decline
参数 | 类型 | 说明 |
---|---|---|
URL 参数 | ||
event_id | 字符串 | 事件 ID 。 必需。 |
正文参数 | ||
注释 | 字符串 | 响应中包含的文本。可选。 |
SendResponse | 布尔值 | true 如果将响应发送给组织者;否则为, false 。可选。默认值为 true 。 |
示例请求
POST https://outlook.office.com/api/v1.0/me/events('AAMkAGE1M2IyNGNmLTI5MT_bs88AAAXDJwEAAA=')/decline
Content-Type: application/json
{
"Comment": "Sorry, maybe next time!",
"SendResponse": "true"
}
响应
一个 HTTP 202 已接受的响应代码表示响应成功。
转发事件(预览)
这个功能目前仅在 beta 版中可用。
删除事件
删除日历事件
要求的最小范围
以下各项之一:
- https://outlook.office.com/calendars.readwrite
- wl.calendars_更新
- wl.events_创建
将事件移动到已登录用户的已删除项文件夹中。 如果事件是会议且已登录用户是组织者,则服务器会向所有与会者发送取消信息。
DELETE https://outlook.office.com/api/v1.0/me/events/{event_id}
必需的参数 | 类型 | 说明 |
---|---|---|
URL 参数 | ||
event_id | 字符串 | 事件 ID 。 |
示例请求
DELETE https://outlook.office.com/api/v1.0/me/events/AAMkAGE0M4v1OAAA=
示例响应
Status code: 204
取消事件(预览)
这个功能目前仅在 beta 版中可用。
获取附件
你可以获取附件集合或获取一个附件。
获取附件集合
要求的最小范围
以下各项之一:
- https://outlook.office.com/calendars.read
- wl.calendars
- wl.contacts_日历
从特定事件获取附件。
备注
请参阅 OData 查询参数 了解筛选、排序和分页参数。
GET https://outlook.office.com/api/v1.0/me/events/{event_id}/attachments
必需的参数 | 类型 | 说明 |
---|---|---|
URL 参数 | ||
event_id | 字符串 | 事件 ID 。 |
响应类型
一个附件集合,其类型可以为 FileAttachment 或 ItemAttachment 。
示例请求
GET https://outlook.office.com/api/v1.0/me/events/AAMkAGI2NGVhZTVlLTI1OGMtNDI4My1iZmE5LTA5OGJiZGEzMTc0YQBGAAAAAADUuTJK1K9aTpCdqXop_4NaBwCd9nJ-tVysQos2hTfspaWRAAAAAAENAACd9nJ-tVysQos2hTfspaWRAAADTG9yAAA=/attachments
示例响应
状态代码:200
{
"@odata.context": "https://outlook.office.com/api/v1.0/$metadata#Me/Events('AAMkAGI2NGVhZTVlLTI1OGMtNDI4My1iZmE5LTA5OGJiZGEzMTc0YQBGAAAAAADUuTJK1K9aTpCdqXop_4NaBwCd9nJ-tVysQos2hTfspaWRAAAAAAENAACd9nJ-tVysQos2hTfspaWRAAADTG9yAAA%3D')/Attachments",
"value": [
{
"@odata.type": "#Microsoft.OutlookServices.FileAttachment",
"@odata.id": "https://outlook.office.com/api/v1.0/Users('ddfcd489-628b-40d7-b48b-57002df800e5@1717622f-1d94-4d0c-9d74-709fad664b77')/Events('AAMkAGI2NGTG9yAAA=')/Attachments('AAMkAGI2NGLwydGuOzcHf1FBlo=')",
"Id": "AAMkAGI2NGLwydGuOzcHf1FBlo=",
"DateTimeLastModified": "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=="
"IsContactPhoto": false
}
]
}
获取附件
要求的最小范围
以下各项之一:
- https://outlook.office.com/calendars.read
- wl.calendars
- wl.contacts_日历
从特定事件获取附件。
GET https://outlook.office.com/api/v1.0/me/events/{event_id}/attachments/{attachment_id}
必需的参数 | 类型 | 说明 |
---|---|---|
URL 参数 | ||
event_id | 字符串 | 事件 ID 。 |
attachment_id | 字符串 | 附件 ID。 |
备注
请参阅 OData 查询参数 了解筛选、排序和分页参数。
响应类型
示例请求
GET https://outlook.office.com/api/v1.0/me/events/AAMkAGI2NGVhZTVlLTI1OGMtNDI4My1iZmE5LTA5OGJiZGEzMTc0YQBGAAAAAADUuTJK1K9aTpCdqXop_4NaBwCd9nJ-tVysQos2hTfspaWRAAAAAAENAACd9nJ-tVysQos2hTfspaWRAAADTG9yAAA=/attachments/AAMkAGI2NGVhZTVlLTI1OGMtNDI4My1iZmE5LTA5OGJiZGEzMTc0YQBGAAAAAADUuTJK1K9aTpCdqXop_4NaBwCd9nJ-tVysQos2hTfspaWRAAAAAAENAACd9nJ-tVysQos2hTfspaWRAAADTG9yAAABEgAQALxJtn1LwydGuOzcHf1FBlo=
示例响应
状态代码:200
{
"@odata.context": "https://outlook.office.com/api/v1.0/$metadata#Me/Events('AAMkAGI2NGVhZTVlLTI1OGMtNDI4My1iZmE5LTA5OGJiZGEzMTc0YQBGAAAAAADUuTJK1K9aTpCdqXop_4NaBwCd9nJ-tVysQos2hTfspaWRAAAAAAENAACd9nJ-tVysQos2hTfspaWRAAADTG9yAAA%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="
"DateTimeLastModified": "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==",
"IsContactPhoto": false
}
创建附件
可以为一个事件创建文件附件或创建项目附件。
创建文件附件
要求的最小范围
以下各项之一:
- https://outlook.office.com/calendars.readwrite
- wl.calendars_更新
- wl.events_创建
向一个事件添加文件附件。
POST https://outlook.office.com/api/v1.0/me/events/{event_id}/attachments
必需的参数 | 类型 | 说明 |
---|---|---|
URL 参数 | ||
event_id | 字符串 | 事件 ID 。 |
正文参数 | ||
@odata.type | 字符串 | #Microsoft.OutlookServices.FileAttachment |
名称 | 字符串 | 附件的名称。 |
ContentBytes | 二进制 | 要附加的文件。 |
响应类型
新 文件附件 。
创建项目附件
要求的最小范围
以下各项之一:
- https://outlook.office.com/calendars.readwrite
- wl.calendars_更新
- wl.events_创建
向一个事件添加项目附件。
POST https://outlook.office.com/api/v1.0/me/events/{event_id}/attachments
必需的参数 | 类型 | 说明 |
---|---|---|
URL 参数 | ||
event_id | 字符串 | 事件 ID 。 |
正文参数 | ||
@odata.type | 字符串 | #Microsoft.OutlookServices.ItemAttachment |
名称 | 字符串 | 附件的名称。 |
项 | 消息、事件或联系人条目。 | 要附加的项。 |
响应类型
新 项附件 。
创建参考附件
要求的最小范围
https://outlook.office.com/calendars.readwrite
向一个事件添加参考附件。
这个功能目前仅在 beta 版中可用。
删除附件
删除事件附件
要求的最小范围
以下各项之一:
- https://outlook.office.com/calendars.readwrite
- wl.calendars_更新
- wl.events_创建
删除一个事件的指定附件。 附件可以是 文件附件 或 项目附件。
DELETE https://outlook.office.com/api/v1.0/me/events/{event_id}/attachments/{attachment_id}
必需的参数 | 类型 | 说明 |
---|---|---|
URL 参数 | ||
event_id | 字符串 | 事件 ID 。 |
attachment_id | 字符串 | 附件 ID。 |
示例请求
DELETE https:/outlook.office.com/api/v1.0/me/events/AAMkAGE0MG4v1OAAA=/attachments/AAMkAGITG9yAAA=
示例响应
Status code: 204
获取提醒
从日历中获取两个日期和时间之间的事件提醒列表。
要求的最小范围
以下各项之一:
- https://outlook.office.com/calendars.read
- wl.calendars
- wl.contacts_日历
暂停提醒
暂停提醒,将提醒推迟到新的时间。
要求的最小范围
以下各项之一:
- https://outlook.office.com/calendars.readwrite
- wl.calendars_更新
- wl.events_创建
消除提醒
消除已触发的提醒。
要求的最小范围
以下各项之一:
- https://outlook.office.com/calendars.readwrite
- wl.calendars_更新
- wl.events_创建
获取日历
可以获取日历集合或获取一个日历。
获取日历集合
要求的最小范围
以下各项之一:
- https://outlook.office.com/calendars.read
- wl.calendars
- wl.contacts_日历
获取所有用户的日历 (calendars
) 或从特定日历组获取日历。
GET https://outlook.office.com/api/v1.0/me/calendars
GET https://outlook.office.com/api/v1.0/me/calendargroups/{calendar_group_id}/calendars
备注
请参阅 OData 查询参数 了解筛选、排序和分页参数。
必需的参数 | 类型 | 说明 |
---|---|---|
URL 参数 | ||
calender_group_id | 字符串 | 日历组 ID。 |
示例请求
GET https://outlook.office.com/api/v1.0/me/calendars
示例响应
状态代码:200
{
"@odata.context": "https://outlook.office.com/api/v1.0/$metadata#Me/Calendars",
"value": [
{
"@odata.id": "https://outlook.office.com/api/v1.0/Users('ddfcd489-628b-40d7-b48b-57002df800e5@1717622f-1d94-4d0c-9d74-709fad664b77')/Events('AAMkAGI2TG9xAAA=')",
"Id": "AAMkAGI2NGVhZTVlLTI1OGMtNDI4My1iZmE5LTA5OGJiZGEzMTc0YQBGAAAAAADUuTJK1K9aTpCdqXop_4NaBwCd9nJ-tVysQos2hTfspaWRAAAAAAEGAACd9nJ-tVysQos2hTfspaWRAAADTGuLAAA=",
"Name": "Calendar",
"Color": "Auto",
"ChangeKey": "nfZyf7VcrEKLNoU37KWlkQAAA0x0+w=="
}
]
}
响应类型
请求的 日历 集合。
获取日历
要求的最小范围
以下各项之一:
- https://outlook.office.com/calendars.read
- wl.calendars
- wl.contacts_日历
通过 ID 获取日历。 可以通过使用 ../me/calendar
端点来获取用户的主日历。
GET https://outlook.office.com/api/v1.0/me/calendars/{calendar_id}
备注
请参阅 OData 查询参数 了解筛选、排序和分页参数。
必需的参数 | 类型 | 说明 |
---|---|---|
URL 参数 | ||
calendar_id | 字符串 | 日历 ID。 |
示例请求
GET https://outlook.office.com/api/v1.0/me/calendars/AAMkAGI2NGVhZTVlLTI1OGMtNDI4My1iZmE5LTA5OGJiZGEzMTc0YQBGAAAAAADUuTJK1K9aTpCdqXop_4NaBwCd9nJ-tVysQos2hTfspaWRAAAAAAEGAACd9nJ-tVysQos2hTfspaWRAAADTGuLAAA=
示例响应
状态代码:200
{
"@odata.context": "https://outlook.office.com/api/v1.0/$metadata#Me/Calendars/$entity",
"@odata.id": "https://outlook.office.com/api/v1.0/Users('ddfcd489-628b-40d7-b48b-57002df800e5@1717622f-1d94-4d0c-9d74-709fad664b77')/Events('AAMkAGI2TG9xAAA=')",
"Id": "AAMkAGI2NGVhZTVlLTI1OGMtNDI4My1iZmE5LTA5OGJiZGEzMTc0YQBGAAAAAADUuTJK1K9aTpCdqXop_4NaBwCd9nJ-tVysQos2hTfspaWRAAAAAAEGAACd9nJ-tVysQos2hTfspaWRAAADTGuLAAA=",
"Name": "Calendar",
"Color": "Auto",
"ChangeKey": "nfZyf7VcrEKLNoU37KWlkQAAA0x0+w=="
}
响应类型
请求的 日历 。
创建日历
创建日历
要求的最小范围
以下各项之一:
- https://outlook.office.com/calendars.readwrite
- wl.calendars_更新
- wl.events_创建
通过使用 ../me/calendars
快捷方式在默认日历组中创建日历,或通过发布到组的 calendars
端点在特定日历组中来创建日历。
POST https://outlook.office.com/api/v1.0/me/calendars
POST https://outlook.office.com/api/v1.0/me/calendargroups/{calendar_group_id}/calendars
必需的参数 | 类型 | 说明 |
---|---|---|
URL 参数 | ||
calender_group_id | 字符串 | 日历组 ID(如果从特定组获取日历)。 |
正文参数 | ||
名称 | 字符串 | 新日历的名称。 |
示例请求
POST https://outlook.office.com/api/v1.0/me/calendars
Content-Type: application/json
{
"Name": "Social"
}
示例响应
状态代码:201
{
"@odata.context": "https://outlook.office.com/api/v1.0/$metadata#Me/Calendars/$entity",
"@odata.id": "https://outlook.office.com/api/v1.0/Users('ddfcd489-628b-40d7-b48b-57002df800e5@1717622f-1d94-4d0c-9d74-709fad664b77')/Events('AAMkAGE4v1RAAA=')",
"@odata.etag": "W/\"Jj9S59cHB0Wq4jXUzBgDvQAAFeN/SQ==\"",
"Id": "AAMkAGE0MGM1Y2M5LWEzMmUtNGVlNy05MjRlLTk0YmJjYzVkN2I5MABGAAAAAAC_0WfqSjt_SqLtNkuO-bj1BwAmP1Ln1wcHRariNdTMGAO9AAAAAAEGAAAmP1Ln1wcHRariNdTMGAO9AAAV4xLHAAA=",
"Name": "Social",
"ChangeKey": "Jj9S59cHB0Wq4jXUzBgDvQAAFeN/SQ=="
}
响应类型
新 日历 。
更新日历
更新日历
要求的最小范围
以下各项之一:
- https://outlook.office.com/calendars.readwrite
- wl.calendars_更新
- wl.events_创建
更改日历的可写属性。
PATCH https://outlook.office.com/api/v1.0/me/calendars/{calendar_id}
必需的参数 | 类型 | 说明 |
---|---|---|
URL 参数 | ||
calendar_id | 字符串 | 日历 ID。 |
正文参数 | ||
名称 | 字符串 | 日历的新名称。 |
示例请求
PATCH https://outlook.office.com/api/v1.0/me/calendars/AAMkAGE0MGM1Y2M5LWEzMmUtNGVlNy05MjRlLTk0YmJjYzVkN2I5MABGAAAAAAC_0WfqSjt_SqLtNkuO-bj1BwAmP1Ln1wcHRariNdTMGAO9AAAAAAEGAAAmP1Ln1wcHRariNdTMGAO9AAAV4xLIAAA=
Content-Type: application/json
{
"Name": "Social events"
}
示例响应
状态代码:200
{
"@odata.context": "https://outlook.office.com/api/v1.0/$metadata#Me/Calendars/$entity",
"@odata.id": "https://outlook.office.com/api/v1.0/Users('ddfcd489-628b-40d7-b48b-57002df800e5@1717622f-1d94-4d0c-9d74-709fad664b77')/Events('AAMkAGE4v1RAAA=')",
"@odata.etag": "W/\"Jj9S59cHB0Wq4jXUzBgDvQAAFeN/Sw==\"",
"Id": "AAMkAGE0MGM1Y2M5LWEzMmUtNGVlNy05MjRlLTk0YmJjYzVkN2I5MABGAAAAAAC_0WfqSjt_SqLtNkuO-bj1BwAmP1Ln1wcHRariNdTMGAO9AAAAAAEGAAAmP1Ln1wcHRariNdTMGAO9AAAV4xLIAAA=",
"Name": "Social events",
"ChangeKey": "Jj9S59cHB0Wq4jXUzBgDvQAAFeN/Sw=="
响应类型
已更新的 日历 。
删除日历
删除日历
要求的最小范围
以下各项之一:
- https://outlook.office.com/calendars.readwrite
- wl.calendars_更新
- wl.events_创建
DELETE https://outlook.office.com/api/v1.0/me/calendars/{calendar_id}
必需的参数 | 类型 | 说明 |
---|---|---|
URL 参数 | ||
calendar_id | 字符串 | 日历 ID。 |
示例请求
DELETE https://outlook.office.com/api/v1.0/me/calendars/{calendar_id}
示例响应
Status code: 204
获取日历组
可以获取日历组集合或获取日历组。
备注
Outlook.com 仅支持可通过 ../me/calendars
快捷方式访问的默认日历组。
获取日历组集合
要求的最小范围
以下各项之一:
- https://outlook.office.com/calendars.read
- wl.calendars
- wl.contacts_日历
获取邮箱中的日历组。
GET https://outlook.office.com/api/v1.0/me/calendargroups
备注
请参阅 OData 查询参数 了解筛选、排序和分页参数。
示例请求
GET https://outlook.office.com/api/v1.0/me/calendargroups
示例响应
状态代码:200
{
"@odata.context": "https://outlook.office.com/api/v1.0/$metadata#Me/CalendarGroups",
"value": [
{
"@odata.id": "https://outlook.office.com/api/v1.0/Users('ddfcd489-628b-40d7-b48b-57002df800e5@1717622f-1d94-4d0c-9d74-709fad664b77')/Events('AAMkAGI2TG9xAAA=')",
"@odata.etag": "W/\"nfZyf7VcrEKLNoU37KWlkQAAA0x0+g==\"",
"Id": "AAMkAGI2NGVhZTVlLTI1OGMtNDI4My1iZmE5LTA5OGJiZGEzMTc0YQBGAAAAAADUuTJK1K9aTpCdqXop_4NaBwCd9nJ-tVysQos2hTfspaWRAAAAAAEGAACd9nJ-tVysQos2hTfspaWRAAADTGuKAAA=",
"Name": "My Calendars",
"ChangeKey": "nfZyf7VcrEKLNoU37KWlkQAAA0x0+g==",
"ClassId": "0006f0b7-0000-0000-c000-000000000046"
},
{
"@odata.id": "https://outlook.office.com/api/v1.0/Users('ddfcd489-628b-40d7-b48b-57002df800e5@1717622f-1d94-4d0c-9d74-709fad664b77')/Events('AAMkAGI2TG9xAAA=')",
"@odata.etag": "W/\"nfZyf7VcrEKLNoU37KWlkQAAA0x0/A==\"",
"Id": "AAMkAGI2NGVhZTVlLTI1OGMtNDI4My1iZmE5LTA5OGJiZGEzMTc0YQBGAAAAAADUuTJK1K9aTpCdqXop_4NaBwCd9nJ-tVysQos2hTfspaWRAAAAAAEGAACd9nJ-tVysQos2hTfspaWRAAADTGuMAAA=",
"Name": "Other Calendars",
"ChangeKey": "nfZyf7VcrEKLNoU37KWlkQAAA0x0/A==",
"ClassId": "0006f0b8-0000-0000-c000-000000000046"
}
]
}
响应类型
请求的 日历组 集合。
获取日历组
要求的最小范围
以下各项之一:
- https://outlook.office.com/calendars.read
- wl.calendars
- wl.contacts_日历
通过 ID 获取日历组。
GET https://outlook.office.com/api/v1.0/me/calendargroups/{calendar_group_id}
备注
请参阅 OData 查询参数 了解筛选、排序和分页参数。
必需的参数 | 类型 | 说明 |
---|---|---|
URL 参数 | ||
calendar_group_id | 字符串 | 日历组 ID。 |
示例请求
GET https://outlook.office.com/api/v1.0/me/calendargroups/AAMkAGI2NGVhZTVlLTI1OGMtNDI4My1iZmE5LTA5OGJiZGEzMTc0YQBGAAAAAADUuTJK1K9aTpCdqXop_4NaBwCd9nJ-tVysQos2hTfspaWRAAAAAAEGAACd9nJ-tVysQos2hTfspaWRAAADTGuKAAA=
示例响应
{
"@odata.context": "https://outlook.office.com/api/v1.0/$metadata#Me/CalendarGroups/$entity",
"@odata.id": "https://outlook.office.com/api/v1.0/Users('ddfcd489-628b-40d7-b48b-57002df800e5@1717622f-1d94-4d0c-9d74-709fad664b77')/Events('AAMkAGI2TG9xAAA=')",
"Id": "AAMkAGI2NGVhZTVlLTI1OGMtNDI4My1iZmE5LTA5OGJiZGEzMTc0YQBGAAAAAADUuTJK1K9aTpCdqXop_4NaBwCd9nJ-tVysQos2hTfspaWRAAAAAAEGAACd9nJ-tVysQos2hTfspaWRAAADTGuKAAA=",
"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/v1.0/me/calendargroups
必需的参数 | 类型 | 描述 |
---|---|---|
URL 参数 | ||
正文参数 | ||
名称 | 字符串 | 日历组的名称。 |
POST https://outlook.office.com/api/v1.0/me/calendargroups
Content-Type: application/json
{
"Name": "Birthdays"
}
示例响应
状态代码:201
{
"@odata.context": "https://outlook.office.com/api/v1.0/$metadata#Me/CalendarGroups/$entity",
"@odata.id": "https://outlook.office.com/api/v1.0/Users('ddfcd489-628b-40d7-b48b-57002df800e5@1717622f-1d94-4d0c-9d74-709fad664b77')/Events('AAMkAGE4v1RAAA=')",
"@odata.etag": "W/\"Jj9S59cHB0Wq4jXUzBgDvQAAFeN/Rw==\"",
"Id": "AAMkAGE0MGM1Y2M5LWEzMmUtNGVlNy05MjRlLTk0YmJjYzVkN2I5MABGAAAAAAC_0WfqSjt_SqLtNkuO-bj1BwAmP1Ln1wcHRariNdTMGAO9AAAAAAEGAAAmP1Ln1wcHRariNdTMGAO9AAAV4xLGAAA=",
"Name": "Birthdays",
"ChangeKey": "Jj9S59cHB0Wq4jXUzBgDvQAAFeN/Rw==",
"ClassId": "4d969bba-8942-42a0-ae33-c7d4410d1e11"
}
响应类型
新 日历组 。
更新日历组
更新日历组
要求的最小范围
以下各项之一:
- https://outlook.office.com/calendars.readwrite
- wl.calendars_更新
- wl.events_创建
更改日历组的名称。 名称 是唯一可写的 日历组 属性。
PATCH https://outlook.office.com/api/v1.0/me/calendargroups/{calendar_group_id}
必需的参数 | 类型 | 说明 |
---|---|---|
URL 参数 | ||
calendar_group_id | 字符串 | 日历组 ID。 |
正文参数 | ||
名称 | 字符串 | 已更新的日历组的名称。 |
PATCH https://outlook.office.com/api/v1.0/me/calendargroups/AAMkAGE0MGM1Y2M5LWEzMmUtNGVlNy05MjRlLTk0YmJjYzVkN2I5MABGAAAAAAC_0WfqSjt_SqLtNkuO-bj1BwAmP1Ln1wcHRariNdTMGAO9AAAAAAEGAAAmP1Ln1wcHRariNdTMGAO9AAAV4xLGAAA=
{
"Name": "Holidays"
}
示例响应
状态代码:200
{
"@odata.context": "https://outlook.office.com/api/v1.0/$metadata#Me/CalendarGroups/$entity",
"@odata.id": "https://https://outlook.office.com/api/v1.0/Users('ddfcd489-628b-40d7-b48b-57002df800e5@1717622f-1d94-4d0c-9d74-709fad664b77')/Events('AAMkAGE4v1RAAA=')",
"@odata.etag": "W/\"Jj9S59cHB0Wq4jXUzBgDvQAAFeN/SA==\"",
"Id": "AAMkAGE0MGM1Y2M5LWEzMmUtNGVlNy05MjRlLTk0YmJjYzVkN2I5MABGAAAAAAC_0WfqSjt_SqLtNkuO-bj1BwAmP1Ln1wcHRariNdTMGAO9AAAAAAEGAAAmP1Ln1wcHRariNdTMGAO9AAAV4xLGAAA=",
"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/v1.0/me/calendargroups/{calendar_group_id}
必需的参数 | 类型 | 说明 |
---|---|---|
URL 参数 | ||
calendar_group_id | 字符串 | 日历组 ID。 |
示例请求
DELETE https://outlook.office.com/api/v1.0/me/calendargroups/AAMkAGE0MGM4xLGAAA=
示例响应
Status code: 204
后续步骤
无论你准备开始构建应用还是只想了解更多信息,我们都已为你考虑周全。
- 开始使用邮件、日历和联系人 REST API 。
- 想要查看一些示例吗? 我们就有。
或者,了解有关使用 Office 365 平台的更多信息: