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 格式的事件体。

获取日历视图

要求的最小范围

以下各项之一:

从用户的主日历 (../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

响应类型

指定时间范围内的扩展 事件

获取系列主事件和单个事件

要求的最小范围

以下各项之一:

从用户的主日历 (../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"
                }
            }
        }
    ]
}

获取事件实例

要求的最小范围

以下各项之一:

可以获取指定时间范围内某事件的实例(执行)。 如果该事件是 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

获取事件

要求的最小范围

以下各项之一:

通过 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"
        }
    }
}

同步事件

要求的最小范围

以下各项之一:

从用户的主日历 (../me/calendarview) 或其他日历同步并获取指定时间范围内新的、已更新的或已删除的事件。 一段时间范围内的这类事件集也被称为日历视图。 返回的事件可能包括一个定期系列以及单个实例的执行和异常。

同步日历视图通常需要一轮两个或更多同步请求,其中每个同步请求都是 GET 调用。 要同步日历视图,请使用与你 获取日历视图 十分类似的 GET 方法,区别在于应包含特定的请求标头和 deltaToken 或者 skipToken (适当的时候)。

请求标头

  • 您必须在所有同步请求中指定 "Prefer: odata.track-changes" 标头,但那些包含从上个同步请求返回的 skipToken 的请求除外。 在第一个响应中,查找 Preference-Applied: odata.track-changes 标头,在继续之前确认资源支持同步。 (以下是有关 示例第二响应数据skipToken 的详细信息 。)

  • 可以指定 "Prefer: odata.maxpagesize = {x}" 标头,以指示同步请求返回的最多事件数。

以下是日历视图中同步事件的典型轮循:

  1. 使用强制性 Prefer: odata.track-changes 标头发出初始 GET 请求。 对同步请求的初始响应始终返回 deltaToken。 (第二个 GET 请求和后续 GET 请求与第一个 GET 请求不同,不同之处在于该请求包括在前一个响应中收到的 deltaTokenskipToken。)

  2. 如果第一个响应返回 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 查询参数。

响应类型

指定时间范围内的扩展 事件 和缩略事件。

示例

以下示例显示了用于同步用户的默认日历的初始和第二个同步请求。 每个请求指定为一次只返回一个完整事件:

  • 初始响应返回一个事件、一个 deltaLinkdeltaToken
  • 第二个请求使用那个 deltatoken 。 第二个响应返回一个事件、一个 nextLinkskipToken

要完成同步,请使用从前一个同步请求返回的 skipToken ,直到同步响应返回一个 deltaLinkdeltaToken ,此时这一轮的同步完成。 保存 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"
}

查找会议时间

此功能是当前在 v2.0beta 版本中可用。

获取会议室(预览)

这个功能目前仅在 beta 版中可用。

创建事件

创建日历事件

要求的最小范围

以下各项之一:

通过发布到日历的 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

更新事件

更新日历事件

要求的最小范围

以下各项之一:

更改事件。 只有指定的属性才会更改。 如果用户是组织者, 则服务器会向所有与会者发送会议更新。

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

响应事件

接受事件

要求的最小范围

以下各项之一:

接受指定的事件。

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 已接受的响应代码表示响应成功。

暂时接受事件

要求的最小范围

以下各项之一:

暂时接受指定的事件。

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 已接受的响应代码表示响应成功。

拒绝事件

要求的最小范围

以下各项之一:

拒绝对指定事件的邀请。

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 版中可用。

删除事件

删除日历事件

要求的最小范围

以下各项之一:

将事件移动到已登录用户的已删除项文件夹中。 如果事件是会议且已登录用户是组织者,则服务器会向所有与会者发送取消信息。

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 版中可用。

获取附件

你可以获取附件集合或获取一个附件。

获取附件集合

要求的最小范围

以下各项之一:

从特定事件获取附件。

备注

请参阅 OData 查询参数 了解筛选、排序和分页参数。

GET https://outlook.office.com/api/v1.0/me/events/{event_id}/attachments
必需的参数 类型 说明
URL 参数
event_id 字符串 事件 ID 。

响应类型

一个附件集合,其类型可以为 FileAttachmentItemAttachment

示例请求

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
        }
    ]
}

获取附件

要求的最小范围

以下各项之一:

从特定事件获取附件。

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
}

创建附件

可以为一个事件创建文件附件或创建项目附件。

创建文件附件

要求的最小范围

以下各项之一:

向一个事件添加文件附件。

POST https://outlook.office.com/api/v1.0/me/events/{event_id}/attachments
必需的参数 类型 说明
URL 参数
event_id 字符串 事件 ID 。
正文参数
@odata.type 字符串 #Microsoft.OutlookServices.FileAttachment
名称 字符串 附件的名称。
ContentBytes 二进制 要附加的文件。

响应类型

文件附件

创建项目附件

要求的最小范围

以下各项之一:

向一个事件添加项目附件。

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 版中可用。

删除附件

删除事件附件

要求的最小范围

以下各项之一:

删除一个事件的指定附件。 附件可以是 文件附件项目附件

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

获取提醒

从日历中获取两个日期和时间之间的事件提醒列表。

要求的最小范围

以下各项之一:

此功能是当前在 v2.0beta 版本中可用。

暂停提醒

暂停提醒,将提醒推迟到新的时间。

要求的最小范围

以下各项之一:

此功能是当前在 v2.0beta 版本中可用。

消除提醒

消除已触发的提醒。

要求的最小范围

以下各项之一:

此功能是当前在 v2.0beta 版本中可用。

获取日历

可以获取日历集合或获取一个日历。

获取日历集合

要求的最小范围

以下各项之一:

获取所有用户的日历 (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=="
        }
    ]
}

响应类型

请求的 日历 集合。

获取日历

要求的最小范围

以下各项之一:

通过 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=="
}

响应类型

请求的 日历

创建日历

创建日历

要求的最小范围

以下各项之一:

通过使用 ../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=="
}

响应类型

日历

更新日历

更新日历

要求的最小范围

以下各项之一:

更改日历的可写属性。

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=="

响应类型

已更新的 日历

删除日历

删除日历

要求的最小范围

以下各项之一:

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 快捷方式访问的默认日历组。

获取日历组集合

要求的最小范围

以下各项之一:

获取邮箱中的日历组。

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"
    }
  ]
}

响应类型

请求的 日历组 集合。

获取日历组

要求的最小范围

以下各项之一:

通过 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 中创建另一个日历组。

创建日历组

要求的最小范围

以下各项之一:

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"
}

响应类型

日历组

更新日历组

更新日历组

要求的最小范围

以下各项之一:

更改日历组的名称。 名称 是唯一可写的 日历组 属性。

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 快捷方式访问的默认日历组。 不要删除此日历组。

不要删除此日历组。

要求的最小范围

以下各项之一:

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

后续步骤

无论你准备开始构建应用还是只想了解更多信息,我们都已为你考虑周全。

或者,了解有关使用 Office 365 平台的更多信息: