Outlook Task REST API 参考(测试版)
适用于:Exchange Online | Office 365 | Hotmail.com | Live.com | MSN.com | Outlook.com | Passport.com
备注
本文档包含任务中参考附件的 API(预览版)。 预览功能在最终确定之前可能会发生变化,并可能会让使用它们的代码无法正常运行。 正因为如此,一般而言,生产代码中只应使用生产版本的 API。 如果可用,2.0 版目前是首选版本。
Outlook Task REST API 让你能在 Office 365 中创建、读取、同步、更新和删除通过 Azure Active Directory 保护的用户任务。 用户的帐户可以是 Office 365 帐户或 Microsoft 帐户(Hotmail.com,Live.com,MSN.com,Outlook.com 和 Passport.com)。
备注
为简便起见,本文的其余部分使用 Outlook.com 来指代这些 Microsoft 帐户域。
对 API 的 beta 版本不感兴趣? 在左侧的目录中,转到 Office 365 REST API 引用部分,然后选择所需的版本。
概述
你可以使用 Outlook 中的任务跟踪工作项。 你可以记录其开始日期、截止日期或实际完成日期;其进度或状态;或者它是否重复发生或或需要提醒。
任务以任务文件夹的形式组织,后者又以任务组的形式组织。 每个邮箱都有一个默认任务文件夹(具有 Name 属性Tasks
)和一个默认任务组(Name 属性为 My Tasks
)。
使用 Task REST API
身份验证
像其他 Outlook REST API 那样,对于 Task REST API 的每个请求,都应该包含有效的访问令牌。 获取访问令牌需要注册和识别应用,并获得适当的授权。
你可以详细了解一些适用于你的简化注册和授权选项。 在 Task REST API 中继续执行特定操作时,请记住这一点。
API 版本
此 API 已从预览升级到正式发布 (GA) 状态。 它在 Outlook REST API 的 2.0 和 beta 版本中得到支持。
目标用户
Task API 请求始终代表登录用户执行。
有关 Outlook REST API 所有子集所共有的更多信息,请参阅 使用 Outlook REST API。
URL 参数
本文中的示例使用以下占位符作为 REST 请求 URL 的参数。
参数 | 类型 | 说明 |
---|---|---|
URL 参数 | ||
attachment_id | string | 附件的数字 ID,在用户邮箱中是唯一的。 |
folder_id | string | 众所周知的默认 Tasks 文件夹名称或任务文件夹的数字 ID,在用户邮箱中是唯一的。 |
group_id | string | 任务组的数字 ID,在用户邮箱中是唯一的。 |
task_id | string | 数字任务 ID,在用户邮箱中是唯一的。 |
指定 StartDateTime 和 DueDateTime 属性
创建任务时:
- StartDateTime 和 DueDateTime 是可选的,但设置 StartDateTime 需要将 DueDateTime 设置为相同或更晚的日期。
- 如果你只设置了 StartDateTime,则 DueDateTime 会自动设置为与 StartDateTime 相同的值。
- 如果将 DueDateTime 设置为
null
,则 StartDateTime 也将自动设置为null
。
如果在创建或更新任务时选择设置 StartDateTime 或 DueDateTime:
- 指定日期和时区信息。
- 不要在这些属性中指定具体时间,因为 POST(或 PATCH)方法始终忽略它并在指定时区内假定为午夜。
- 默认情况下,POST(或 PATCH)方法会将值转换为 UTC,并在响应中以 UTC 形式返回该值。
举例来说,如果在 StartDateTime 中指定东部标准时间 (EST) 4 月 26 日:
"StartDateTime": {
"DateTime": "2016-04-26T09:00:00",
"TimeZone": "Eastern Standard Time"
}
POST(或 PATCH)会忽略时间部分,将 EST 4 月 26 日午夜转换为 UTC,并在响应中以 UTC 形式返回该值:
"StartDateTime": {
"DateTime": "2016-04-26T04:00:00.0000000",
"TimeZone": "UTC"
}
你可以使用 Prefer: outlook.timezone
标头,让响应中的所有日期相关属性以不同于 UTC 的时区表示。
在自定义时区中返回与日期相关的属性
任务资源中与日期相关的属性包括以下各项:
- CompletedDateTime
- CreatedDateTime
- DueDateTime
- LastModifiedDateTime
- ReminderDateTime
- StartDateTime
默认情况下,POST、GET、PATCH 和 Complete 操作在其 REST 响应中以 UTC 形式返回日期相关属性。 你可以使用 Prefer: outlook.timezone
标头,让响应中的所有日期相关属性以不同于 UTC 的时区表示。 以下示例在对应的响应中以 EST 形式返回日期相关属性:
Prefer: outlook.timezone="Eastern Standard Time"
有关 Outlook REST API 所有子集所共有的更多信息,请参阅 使用 Outlook REST API。
创建任务
最低要求的范围
创建一个任务。 有两个主要场景。
你可以在用户邮箱的默认任务组(My Tasks
)和默认任务文件夹(Tasks
)中创建一个任务。 在这种情况下,你不需要指定任何任务组或任务文件夹。
POST https://outlook.office.com/api/beta/me/tasks
你也可以在特定任务文件夹中创建任务:
POST https://outlook.office.com/api/beta/me/taskfolders('{folder_id}')/tasks
在请求正文中,提供要创建的任务的 JSON 表示形式。
查看有关设置 StartDateTime 和 DueDateTime 的更多信息。
了解如何为响应中的所有日期相关属性指定特定时区。
响应
成功状态代码:201 已创建
响应主体:创建的任务。
示例请求
第一个示例在指定任务文件夹中创建一个任务,并在请求主体中以太平洋标准时间 (PST) 形式表示 StartDateTime 和 DueDateTime。
POST https://outlook.office.com/api/beta/me/taskfolders('AAMkADIyAAAhrbPXAAA=')/tasks
Content-Type: application/json
{
"Subject": "Shop for dinner",
"StartDateTime": {
"DateTime": "2016-04-23T18:00:00",
"TimeZone": "Pacific Standard Time"
},
"DueDateTime": {
"DateTime": "2016-04-25T13:00:00",
"TimeZone": "Pacific Standard Time"
}
}
示例响应
POST 方法会忽略请求正文中的时间部分,并假定时间始终是指定时区中的午夜 (PST)。 然后,在默认情况下,POST 方法会转换所有日期相关属性,并在响应中以 UTC 形式显示这些属性。
Status code: 201 Created
{
"@odata.context": "https://outlook.office.com/api/beta/$metadata#Me/TaskFolders('AAMkADIyAAAhrbPXAAA%3D')/Tasks/$entity",
"@odata.id": "https://outlook.office.com/api/beta/Users('dc2d952a-78ff-4609-b3ae-eb66271747bf@8638a6dc-2d66-40dc-aecb-b2436ec47fc0')/Tasks('AAMkADIyAAAhrb_PAAA=')",
"@odata.etag": "W/\"hmM7Eb/jgEec8l3+gkJEawAAIbAOlw==\"",
"Id": "AAMkADIyAAAhrb_PAAA=",
"CreatedDateTime": "2016-04-22T05:44:01.2012012Z",
"LastModifiedDateTime": "2016-04-22T05:44:02.9980882Z",
"ChangeKey": "1/KC9Vmu40G3DwB6Lgs7MAAAIOJMxw==",
"Categories": [ ],
"AssignedTo": null,
"Body": {
"ContentType": "Text",
"Content": ""
},
"CompletedDateTime": null,
"DueDateTime": {
"DateTime": "2016-04-25T07:00:00.0000000",
"TimeZone": "UTC"
},
"HasAttachments":false,
"Importance": "Normal",
"IsReminderOn": false,
"Owner": "Administrator",
"ParentFolderId": "AQMkADA1MTkAAAAIBEgAAAA==",
"Recurrence": null,
"ReminderDateTime": null,
"Sensitivity": "Normal",
"StartDateTime": {
"DateTime": "2016-04-23T07:00:00.0000000",
"TimeZone": "UTC"
},
"Status": "NotStarted",
"Subject": "Shop for dinner"
}
示例请求
为了演示 Prefer: outlook.timezone
标头的工作方式,下一个示例将创建一个任务,以 东部标准时间 (EST) 开头表示 StartDateTime 和 DueDateTime,并包括Prefer
太平洋标准时间 (PST) 的标头。
POST https://outlook.office.com/api/beta/me/tasks HTTP/1.1
Content-Type: application/json
Prefer: outlook.timezone="Pacific Standard Time"
{
"Subject": "Shop for children's weekend",
"StartDateTime": {
"DateTime": "2016-05-03T09:00:00",
"TimeZone": "Eastern Standard Time"
},
"DueDateTime": {
"DateTime": "2016-05-05T16:00:00",
"TimeZone": "Eastern Standard Time"
}
}
示例响应
就像上一个示例中一样,POST 方法会忽略请求正文中 StartDateTime 和 DueDateTime 的时间部分,并假定时间始终为指定时区 (EST) 中的午夜。
由于 Prefer
标头指定 PST,因此 POST 方法会在响应中以 PST 形式表示所有日期相关属性。 特别是,对于 StartDateTime 和 DueDateTime 属性,POST 方法会将 EST 形式的午夜转换为 PST,并在响应中以 PST 形式返回它们。
Status code: 201 Created
{
"@odata.context": "https://outlook.office.com/api/beta/$metadata#Me/Tasks/$entity",
"@odata.id": "https://outlook.office.com/api/beta/Users('86b6ceaf-57f7-4278-97c4-4da0a97f6cdb@70559e59-b378-49ea-8e53-07a3a3d27f5b')/Tasks('AAMkADA1MHgwAAA=')",
"@odata.etag": "W/\"1/KC9Vmu40G3DwB6Lgs7MAAAIW9XXA==\"",
"Id": "AAMkADA1MHgwAAA=",
"CreatedDateTime": "2016-04-22T15:19:18.9526004-07:00",
"LastModifiedDateTime": "2016-04-22T15:19:19.015101-07:00",
"ChangeKey": "1/KC9Vmu40G3DwB6Lgs7MAAAIW9XXA==",
"Categories": [
],
"AssignedTo": null,
"Body": {
"ContentType": "Text",
"Content": ""
},
"CompletedDateTime": null,
"DueDateTime": {
"DateTime": "2016-05-04T21:00:00.0000000",
"TimeZone": "Pacific Standard Time"
},
"HasAttachments":false,
"Importance": "Normal",
"IsReminderOn": false,
"Owner": "Administrator",
"ParentFolderId": "AQMkADA1MTEgAAAA==",
"Recurrence": null,
"ReminderDateTime": null,
"Sensitivity": "Normal",
"StartDateTime": {
"DateTime": "2016-05-02T21:00:00.0000000",
"TimeZone": "Pacific Standard Time"
},
"Status": "NotStarted",
"Subject": "Shop for children's weekend"
}
获取任务
获取所有任务
最低要求的范围
获取多个任务。
你可以获取登录用户邮箱中的所有任务。
GET https://outlook.office.com/api/beta/me/tasks
或者可以获取特定文件夹中的所有任务:
GET https://outlook.office.com/api/beta/me/taskfolders('{folder_id}')/tasks
如果有多个任务组,并且你想要获取特定任务组中的所有任务,请首先获取该任务组中的所有任务文件夹,然后获取其中每个任务文件夹中的任务。
响应
成功状态代码:200 OK
响应正文:任务集合
默认情况下,响应中的日期相关属性以 UTC 形式表示。 了解如何为响应中的所有日期相关属性指定特定时区。
示例请求
以下示例获取用户邮箱中的所有任务。
GET https://outlook.office.com/api/beta/me/tasks
示例响应
Status code: 200 OK
{
"@odata.context": "https://outlook.office.com/api/beta/$metadata#Me/Tasks",
"value": [
{
"@odata.id": "https://outlook.office.com/api/beta/Users('86b6ceaf-57f7-4278-97c4-4da0a97f6cdb@70559e59-b378-49ea-8e53-07a3a3d27f5b')/Tasks('AAMkADA1MTrfAAA=')",
"@odata.etag": "W/\"1/KC9Vmu40G3DwB6Lgs7MAAAIOJMxw==\"",
"Id": "AAMkADA1MTrfAAA=",
"CreatedDateTime": "2016-04-22T05:44:01.2012012Z",
"LastModifiedDateTime": "2016-04-22T05:44:02.9980882Z",
"ChangeKey": "1/KC9Vmu40G3DwB6Lgs7MAAAIOJMxw==",
"Categories": [ ],
"AssignedTo": null,
"Body": {
"ContentType": "Text",
"Content": ""
},
"CompletedDateTime": null,
"DueDateTime": {
"DateTime": "2016-04-25T07:00:00.0000000",
"TimeZone": "UTC"
},
"HasAttachments":false,
"Importance": "Normal",
"IsReminderOn": false,
"Owner": "Administrator",
"ParentFolderId": "AQMkADA1MTBEgAAAA==",
"Recurrence": null,
"ReminderDateTime": null,
"Sensitivity": "Normal",
"StartDateTime": {
"DateTime": "2016-04-23T07:00:00.0000000",
"TimeZone": "UTC"
},
"Status": "NotStarted",
"Subject": "Shop for dinner"
},
{
"@odata.id": "https://outlook.office.com/api/beta/Users('86b6ceaf-57f7-4278-97c4-4da0a97f6cdb@70559e59-b378-49ea-8e53-07a3a3d27f5b')/Tasks('AAMkADA1MTrgAAA=')",
"@odata.etag": "W/\"1/KC9Vmu40G3DwB6Lgs7MAAAIOJMyQ==\"",
"Id": "AAMkADA1MTrgAAA=",
"CreatedDateTime": "2016-04-22T06:03:35.9279794Z",
"LastModifiedDateTime": "2016-04-22T06:03:35.9436052Z",
"ChangeKey": "1/KC9Vmu40G3DwB6Lgs7MAAAIOJMyQ==",
"Categories": [ ],
"AssignedTo": null,
"Body": {
"ContentType": "Text",
"Content": ""
},
"CompletedDateTime": null,
"DueDateTime": {
"DateTime": "2016-04-27T04:00:00.0000000",
"TimeZone": "UTC"
},
"HasAttachments":false,
"Importance": "Normal",
"IsReminderOn": false,
"Owner": "Administrator",
"ParentFolderId": "AQMkADA1MTBEgAAAA==",
"Recurrence": null,
"ReminderDateTime": null,
"Sensitivity": "Normal",
"StartDateTime": {
"DateTime": "2016-04-26T04:00:00.0000000",
"TimeZone": "UTC"
},
"Status": "NotStarted",
"Subject": "Shop for dinner"
}
]
}
获取任务
最低要求的范围
获取特定任务。
GET https://outlook.office.com/api/beta/me/tasks('{task_id}')
响应
成功状态代码:200 OK
响应正文:请求的任务。
默认情况下,响应中的日期相关属性以 UTC 形式表示。 了解如何为响应中的所有日期相关属性指定特定时区。
示例请求
GET https://outlook.office.com/api/beta/me/tasks('AAMkADA1MTrgAAA=')
示例响应
Status code: 200 OK
{
"@odata.context": "https://outlook.office.com/api/beta/$metadata#Me/Tasks/$entity",
"@odata.id": "https://outlook.office.com/api/beta/Users('dc2d952a-78ff-4609-b3ae-eb66271747bf@8638a6dc-2d66-40dc-aecb-b2436ec47fc0')/Tasks('AAMkADA1MTrgAAA=')",
"@odata.etag": "W/\"hmM7Eb/jgEec8l3+gkJEawAAIa/+kw==\"",
"Id": "AAMkADA1MTrgAAA=",
"CreatedDateTime": "2016-04-22T06:03:35.9279794Z",
"LastModifiedDateTime": "2016-04-22T06:03:35.9436052Z",
"ChangeKey": "1/KC9Vmu40G3DwB6Lgs7MAAAIOJMyQ==",
"Categories": [ ],
"AssignedTo": null,
"Body": {
"ContentType": "Text",
"Content": ""
},
"CompletedDateTime": null,
"DueDateTime": {
"DateTime": "2016-04-27T04:00:00.0000000",
"TimeZone": "UTC"
},
"HasAttachments":false,
"Importance": "Normal",
"IsReminderOn": false,
"Owner": "Administrator",
"ParentFolderId": "AQMkADA1MTBEgAAAA==",
"Recurrence": null,
"ReminderDateTime": null,
"Sensitivity": "Normal",
"StartDateTime": {
"DateTime": "2016-04-26T04:00:00.0000000",
"TimeZone": "UTC"
},
"Status": "NotStarted",
"Subject": "Shop for dinner"
}
更新任务
最低要求的范围
更改任务的可写属性。
PATCH https://outlook.office.com/api/beta/me/tasks/{task_id}
在请求正文中,提供可写属性的 JSON 表示形式以在任务中更新。
查看有关设置 StartDateTime 和 DueDateTime 的更多信息。
CompletedDateTime 属性可通过 Complete 操作设置,或通过 PATCH 操作显式设置。 如果使用 PATCH 设置 CompletedDateTime,请确保同样将 Status 设置为 Completed
。
默认情况下,响应中的日期相关属性以 UTC 形式表示。 了解如何为响应中的所有日期相关属性指定自定义时区。
响应
成功状态代码:200 OK
响应正文:更新的任务。
示例请求
以下示例修改 DueDateTime 并使用 Prefer: outlook.timezone
标头指定要在响应中以东部标准时间 (EST) 形式表示的日期相关属性。
PATCH https://outlook.office.com/api/beta/me/tasks('AAMkADA1MTHgwAAA=')
Prefer: outlook.timezone="Eastern Standard Time"
Content-Type: application/json
{
"DueDateTime": {
"DateTime": "2016-05-06T16:00:00",
"TimeZone": "Eastern Standard Time"
}
}
示例响应
Status code: 200 OK
{
"@odata.context": "https://outlook.office.com/api/beta/$metadata#Me/Tasks/$entity",
"@odata.id": "https://outlook.office.com/api/beta/Users('dc2d952a-78ff-4609-b3ae-eb66271747bf@8638a6dc-2d66-40dc-aecb-b2436ec47fc0')/Tasks('AAMkADA1MTHgwAAA=')",
"@odata.etag": "W/\"hmM7Eb/jgEec8l3+gkJEawAAIa/+lg==\"",
"Id": "AAMkADA1MTHgwAAA=",
"CreatedDateTime": "2016-04-22T18:19:18.9526004-04:00",
"LastModifiedDateTime": "2016-04-22T18:38:20.5541528-04:00",
"ChangeKey": "1/KC9Vmu40G3DwB6Lgs7MAAAIW9XXg==",
"Categories": [
],
"AssignedTo": null,
"Body": {
"ContentType": "Text",
"Content": ""
},
"CompletedDateTime": null,
"DueDateTime": {
"DateTime": "2016-05-06T00:00:00.0000000",
"TimeZone": "Eastern Standard Time"
},
"HasAttachments":false,
"Importance": "Normal",
"IsReminderOn": false,
"Owner": "Administrator",
"ParentFolderId": "AQMkADA1MTIBEgAAAA==",
"Recurrence": null,
"ReminderDateTime": null,
"Sensitivity": "Normal",
"StartDateTime": {
"DateTime": "2016-05-03T00:00:00.0000000",
"TimeZone": "Eastern Standard Time"
},
"Status": "NotStarted",
"Subject": "Shop for children's weekend"
}
删除任务
最低要求的范围
删除用户邮箱中的指定任务。
DELETE https://outlook.office.com/api/beta/me/tasks('{task_id}')
响应
成功状态代码:204 无内容
响应正文:无
示例请求
DELETE https://outlook.office365.com/api/beta/me/tasks('AAMkADIyAAAhrb_QAAA=')
示例响应
Status code: 204 No Content
完成任务
最低要求的范围
完成一项任务,并将 CompletedDateTime 属性设置为当前日期,以及将 Status 属性设置为 Completed
。
POST https://outlook.office.com/api/beta/me/tasks('{task_id}')/complete
备注
CompletedDateTime 表示任务完成的日期。 CompletedDateTime 的时间部分默认情况下设置为 UTC 的午夜。
应用可在 Prefer
请求标头中指定自定义时区。 以下示例将 CompletedDateTime 设置为太平洋标准时间 (PST) 时区:
Prefer: outlook.timezone="Pacific Standard Time"
此请求标头将响应中的所有日期相关属性设置为指定时区。
响应
成功状态代码:200 OK
响应正文:任务集合中的已完成任务。 如果以循环序列的形式完成任务,则任务集合将包含序列中的完成的任务和下一个任务。
示例请求
以下示例将指定任务标记为完成。 由于它在 Prefer: outlook.timezone
标头中指定了太平洋标准时间 (PST),因此会在响应中以 PST 形式表示 CompletedDateTime 及其他日期相关属性。
POST https://outlook.office.com/api/beta/me/tasks('AAMkADA1MT15rfAAA=')/complete
Prefer: outlook.timezone="Pacific Standard Time"
示例响应
Status code: 200 OK
{
"@odata.context": "https://outlook.office.com/api/beta/$metadata#Me/Tasks",
"value": [
{
"@odata.id": "https://outlook.office365.com/api/beta/Users('dc2d952a-78ff-4609-b3ae-eb66271747bf@8638a6dc-2d66-40dc-aecb-b2436ec47fc0')/Tasks('AAMkADA1MT15rfAAA=')",
"@odata.etag": "W/\"hmM7Eb/jgEec8l3+gkJEawAAIa/+lw==\"",
"Id": "AAMkADA1MT15rfAAA=",
"CreatedDateTime": "2016-04-21T22:44:01.2012012-07:00",
"LastModifiedDateTime": "2016-04-22T19:28:38.5300447-07:00",
"ChangeKey": "1/KC9Vmu40G3DwB6Lgs7MAAAIW9XYQ==",
"Categories": [
],
"AssignedTo": null,
"Body": {
"ContentType": "Text",
"Content": ""
},
"CompletedDateTime": {
"DateTime": "2016-04-22T00:00:00.0000000",
"TimeZone": "Pacific Standard Time"
},
"DueDateTime": {
"DateTime": "2016-04-25T00:00:00.0000000",
"TimeZone": "Pacific Standard Time"
},
"HasAttachments":false,
"Importance": "Normal",
"IsReminderOn": false,
"Owner": "Administrator",
"ParentFolderId": "AQMkADA1MTIBEgAAAA==",
"Recurrence": null,
"ReminderDateTime": null,
"Sensitivity": "Normal",
"StartDateTime": {
"DateTime": "2016-04-21T00:00:00.0000000",
"TimeZone": "Pacific Standard Time"
},
"Status": "Completed",
"Subject": "Shop for dinner"
}
]
}
同步任务或任务文件夹
最低要求的范围
你可以同步任务文件夹中的任务或用户邮箱中的任务文件夹。 同步任务是按文件夹进行的操作,例如,你可以同步默认任务文件夹 Tasks
中的所有任务。 要同步文件夹层次结构中的任务,你需要分别同步每个任务文件夹。 同步任务或任务文件夹的过程相似,通常需要一轮两次以上的同步请求,每个请求都是 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/beta/me/TaskFolders('{folder_id}')/Tasks
第二个请求,或后续轮次中的第一个请求:
GET https://outlook.office.com/api/beta/me/TaskFolders('{folder_id}')/Tasks/?$deltatoken={delta_token}
同一轮中的第三个或后续请求;在再次使用 deltaToken
获得包含 @odata.deltaLink
标头的响应时停止:
GET https://outlook.office.com/api/beta/me/TaskFolders('{folder_id}')/Tasks/?$skiptoken={skip_token}
同步邮箱中的任务文件夹
初始请求:
GET https://outlook.office.com/api/beta/me/TaskFolders
第二个请求,或后续轮次中的第一个请求:
GET https://outlook.office.com/api/beta/me/TaskFolders/?$deltatoken={delta_token}
同一轮中的第三个或后续请求;在再次使用 deltaToken
获得包含 @odata.deltaLink
标头的响应时停止:
GET https://outlook.office.com/api/beta/me/TaskFolders/?$skiptoken={skip_token}
参数
参数 | 类型 | 说明 |
---|---|---|
标头参数 | ||
Prefer | odata.track-changes | 表示该请求是一个同步请求。 对于一个轮次中的前 2 个 GET 请求为必需。 |
Prefer | odata.maxpagesize | 设置要在每个响应中返回的消息数量。 可选。 |
URL 参数 | ||
deltaToken | string | 作为前一个同步响应中 @odata.deltaLink 值的一部分返回的 deltaToken 字符串。 |
skipToken | string | 作为前一个同步响应中 @odata.nextLink 值的一部分返回的 skipToken 字符串。 |
备注
- 在初始请求中指定
Prefer: odata.track-changes
时,如果响应支持同步,则响应将在标头中包括Preference-applied: odata.track-changes
。 - 如果你尝试同步不支持的资源,或者这不是初始同步请求,你将不会在响应中看到
Preference-applied
标头。 - 为了缩短响应时间,请使用 $select 查询参数,以便只获取对你的应用场景有用的属性。
- 不能使用
$filter
、$orderby
、$search
和$top
查询参数。
响应正文
如果同步任务:集合中请求的 Task 对象。
对象数取决于 Prefer: odata.maxpagesize
请求标头中设置的值。
示例
下面显示了两组示例:
每个示例都显示初始同步请求和第二次同步请求。
- 每个请求都指定
Prefer: odata.maxpagesize=1
,以便一次只返回一个对象(分别为任务或任务文件夹)。 - 初始响应返回一个同步的对象,
deltaLink
和deltaToken
。 - 第二次请求使用该
deltatoken
。 第二个响应返回一个同步的对象,nextLink
和skipToken
。
循环执行同步流程,并在下一个 GET 调用中使用前一个同步请求返回的 skipToken
,直至获得包含 deltaLink
和 deltaToken
的同步请求为止,如下所示:
"@odata.deltaLink": “https://outlook.office.com/api/beta/me/TaskFolders('AQMkAGMw80AAAIBEgAAAA==')/Tasks/?%24deltaToken=294a8f04cc0345c5ae093d484629e186”
如果发生这种情况,则此轮同步完成。 保存 deltaToken
供下一轮同步使用。
示例初始请求(同步任务)
GET https://outlook.office.com/api/beta/me/TaskFolders('AQMkAGMwAAAIBEgAAAA==')/Tasks HTTP/1.1
Prefer: odata.maxpagesize=1
Prefer: odata.track-changes
初始响应数据示例(同步任务)
HTTP/1.1 200 OK
Preference-Applied: odata.track-changes
{
"@odata.context": "https://outlook.office.com/api/beta/$metadata#me/TaskFolders('AQMkAGMwAAAIBEgAAAA%3D%3D')/Tasks",
"value": [
{
"@odata.id": "https://outlook.office.com/api/beta/Users('47ec4680-f443-4f9c-a3e5-f7660f0aceae@b4ffe6c0-e717-4104-acd1-e9dfe38ff5f9')/Tasks('AAMkAGMwQsKVevNAAAG1VNmAAA=')",
"@odata.etag": "W/\"3JfzyLwJe0mPNcULClXrzQAABtYBDw==\"",
"Id": "AAMkAGMwQsKVevNAAAG1VNmAAA=",
"CreatedDateTime": "2016-02-29T20:51:25.2226052Z",
"LastModifiedDateTime": "2016-02-29T20:51:25.2538576Z",
"ChangeKey": "3JfzyLwJe0mPNcULClXrzQAABtYBDw==",
"Categories": [ ],
"AssignedTo": null,
"Body": {
"ContentType": "Text",
"Content": ""
},
"CompletedDateTime": null,
"DueDateTime": null,
"HasAttachments":false,
"Importance": "Normal",
"IsReminderOn": false,
"Owner": "Administrator",
"ParentFolderId": "AQMkAGMwAAAIBEgAAAA==",
"Recurrence": null,
"ReminderDateTime": null,
"Sensitivity": "Normal",
"StartDateTime": null,
"Status": "NotStarted",
"Subject": "another task"
}
],
"@odata.deltaLink": "https://outlook.office.com/api/beta/me/TaskFolders('AQMkAGMwAAAIBEgAAAA==')/Tasks/?%24deltatoken=175e2e04482e431ea96e89145c212f8c"
}
第二次请求示例(同步任务)
GET https://outlook.office.com/api/beta/me/TaskFolders('AQMkAGMwAAAIBEgAAAA==')/Tasks/?%24deltatoken=175e2e04482e431ea96e89145c212f8c HTTP/1.1
Prefer: odata.maxpagesize=1
Prefer: odata.track-changes
第二个响应数据示例(同步任务)
HTTP/1.1 200 OK
{
"@odata.context": "https://outlook.office.com/api/beta/$metadata#me/TaskFolders('AQMkAGMwAAAIBEgAAAA%3D%3D')/Tasks/$delta",
"value": [
{
"@odata.id": "https://outlook.office.com/api/beta/Users('47ec4680-f443-4f9c-a3e5-f7660f0aceae@b4ffe6c0-e717-4104-acd1-e9dfe38ff5f9')/Tasks('AAMkAGMwQsKVevNAAAG1VNlAAA=')",
"@odata.etag": "W/\"3JfzyLwJe0mPNcULClXrzQAABtYBDQ==\"",
"Id": "AAMkAGMwQsKVevNAAAG1VNlAAA=",
"CreatedDateTime": "2016-02-29T20:51:02.5955351Z",
"LastModifiedDateTime": "2016-02-29T20:51:03.9703679Z",
"ChangeKey": "3JfzyLwJe0mPNcULClXrzQAABtYBDQ==",
"Categories": [ ],
"AssignedTo": null,
"Body": {
"ContentType": "Text",
"Content": ""
},
"CompletedDateTime": null,
"DueDateTimeTime": null,
"HasAttachments":false,
"Importance": "Normal",
"IsReminderOn": false,
"Owner": "Administrator",
"ParentFolderId": "AQMkAGMwAAAIBEgAAAA==",
"Recurrence": null,
"ReminderDateTime": null,
"Sensitivity": "Normal",
"StartDateTime": null,
"Status": "NotStarted",
"Subject": "another task"
}
],
"@odata.nextLink": "https://outlook.office.com/api/beta/me/TaskFolders('AQMkAGMw80AAAIBEgAAAA==')/Tasks/?%24skipToken=0fbce2031e844a2f9d13d8bee5ebe2c6"
}
继续同步任务,并在下一次 GET 调用中使用上一个响应的 @odata.nextLink
中返回的 skiptoken
,直至最终响应包含 @odata.deltaLink
和 deltaToken
为止。 保存 deltaToken
供下一轮同步使用。
初始请求示例(同步任务文件夹)
GET https://outlook.office.com/api/beta/me/TaskFolders HTTP/1.1
Prefer: odata.maxpagesize=1
Prefer: odata.track-changes
初始响应数据示例(同步任务文件夹)
HTTP/1.1 200 OK
Preference-Applied: odata.track-changes
{
"@odata.context": "https://outlook.office.com/api/beta/$metadata#me/TaskFolders",
"value": [
{
"@odata.id": "https://outlook.office.com/api/beta/Users('5bcd7334-a6c5-4f95-a370-319e077dfe10@e288a0d0-ab74-431b-9699-a3721aabb08f')/TaskFolders('AAMkAGJiAAAAAAESAAA=')",
"Id": "AAMkAGJiAAAAAAESAAA=",
"ChangeKey": "PG2a661l00Cy9qH3YxmDfwAAAAAAPA==",
"Name": "Tasks",
"IsDefaultFolder":true,
"ParentGroupKey": "0006f0b7-0000-0000-c000-000000000046"
}
],
"@odata.deltaLink": "https://outlook.office.com/api/beta/me/TaskFolders/?%24deltatoken=OyZKBDxtmuutZdNAsvah92MZg38AAAAAZwkBAAAA"
}
第二次请求示例(同步任务文件夹)
GET https://outlook.office.com/api/beta/me/TaskFolders/?%24deltatoken=OyZKBDxtmuutZdNAsvah92MZg38AAAAAZwkBAAAA HTTP/1.1
Prefer: odata.maxpagesize=1
Prefer: odata.track-changes
第二个响应数据示例(同步任务文件夹)
HTTP/1.1 200 OK
{
"@odata.context": "https://outlook.office.com/api/beta/$metadata#me/TaskFolders/$delta",
"value": [
{
"@odata.id": "https://outlook.office.com/api/beta/Users('5bcd7334-a6c5-4f95-a370-319e077dfe10@e288a0d0-ab74-431b-9699-a3721aabb08f')/TaskFolders('AAMkAGI5AAAunDbWAAA=')",
"Id": "AAMkAGI5AAAunDbWAAA=",
"ChangeKey": "PmebZ1wYAUaTmrKkvU9LIQAALqEkaw==",
"Name": "Bingo",
"IsDefaultFolder":false,
"ParentGroupKey": "db0823f2-93bd-4db6-8038-98bbc5f39a45"
}
],
"@odata.nextLink": "https://outlook.office.com/api/beta/me/TaskFolders/?%24skipToken=x_zCAz5nm2dcGAFGk5qypL1PSyEAAC6cRncCAAAA"
}
继续同步,并在下一次 GET 调用中使用上一个响应的 skiptoken
中返回的 @odata.nextLink
,直至最终响应包含 @odata.deltaLink
和 deltaToken
为止。 在此示例中,第三个请求返回 deltaToken
,并且同步在这一轮完成。
第三次请求示例(同步任务文件夹)
GET https://outlook.office.com/api/beta/me/TaskFolders/?%24skipToken=x_zCAz5nm2dcGAFGk5qypL1PSyEAAC6cRncCAAAA HTTP/1.1
Prefer: odata.maxpagesize=1
第三个响应数据示例(同步任务文件夹)
HTTP/1.1 200 OK
{
"@odata.context": "https://outlook.office.com/api/beta/$metadata#me/TaskFolders/$delta",
"value": [
{
"@odata.id": "https://outlook.office.com/api/beta/Users('5bcd7334-a6c5-4f95-a370-319e077dfe10@e288a0d0-ab74-431b-9699-a3721aabb08f')/TaskFolders('AAMkAGI5AAAunDbVAAA=')",
"Id": "AAMkAGI5AAAunDbVAAA=",
"ChangeKey": "PmebZ1wYAUaTmrKkvU9LIQAALqEkZA==",
"Name":"Volunteer",
"IsDefaultFolder":false,
"ParentGroupKey": "db0823f2-93bd-4db6-8038-98bbc5f39a45"
}
],
"@odata.deltaLink":"https://outlook.office.com/api/beta/me/taskfolders/?%24deltaToken=x_zCBD5nm2dcGAFGk5qypL1PSyEAAC6cRncEAAAA"
}
获取附件
获取附件集合
最低要求的范围
从特定任务中获取附件。
GET https://outlook.office.com/api/beta/me/tasks('{task_id}')/attachments
响应类型
一个附加集合,其类型可以为 FileAttachment、ItemAttachment 或 ReferenceAttachment。
示例请求
以下示例返回指定任务的所有附件,其中包括文件、事件项和 OneDrive 上图片的链接。
GET https://outlook.office.com/api/beta/me/tasks('AAMkADNkN3qGAAA=')/attachments
示例响应
状态代码:200
{
"@odata.context":"https://outlook.office.com/api/beta/$metadata#Me/Tasks('AAMkADNkNS3qGAAA%3D')/Attachments",
"value":[
{
"@odata.type":"#Microsoft.OutlookServices.FileAttachment",
"@odata.id":"https://outlook.office.com/api/beta/Users('fdcbcf34-2505-4d07-be5b-0a55b699d157@41a5b830-45ac-4f1b-9bfc-baafa3b7db2e')/Tasks('AAMkADNkNS3qGAAA=')/Attachments('AAMkADNkNRT6JOBs=')",
"Id":"AAMkADNkNRT6JOBs=",
"LastModifiedDateTime":"2016-11-22T02:24:21Z",
"Name":"Holiday notice",
"ContentType":"application/octet-stream",
"Size":244,
"IsInline":false,
"ContentId":null,
"ContentLocation":null,
"ContentBytes":"bWFjIGFuZCBjaGVlc2U="
},
{
"@odata.type":"#Microsoft.OutlookServices.ItemAttachment",
"@odata.id":"https://outlook.office.com/api/beta/Users('fdcbcf34-2505-4d07-be5b-0a55b699d157@41a5b830-45ac-4f1b-9bfc-baafa3b7db2e')/Tasks('AAMkADNkNS3qGAAA=')/Attachments('AAMkADNkNJVnQIe9r0=')",
"Id":"AAMkADNkNJVnQIe9r0=",
"LastModifiedDateTime":"2016-12-01T22:27:13Z",
"Name":"Holiday event",
"ContentType":null,
"Size":2473,
"IsInline":false
},
{
"@odata.type":"#Microsoft.OutlookServices.ReferenceAttachment",
"@odata.id":"https://outlook.office.com/api/beta/Users('fdcbcf34-2505-4d07-be5b-0a55b699d157@41a5b830-45ac-4f1b-9bfc-baafa3b7db2e')/Tasks('AAMkADNkNS3qGAAA=')/Attachments('AAMkADNkNLiMhtEYg=')",
"Id":"AAMkADNkNLiMhtEYg=",
"LastModifiedDateTime":"2016-12-07T21:14:05Z",
"Name":"Hydrangea picture",
"ContentType":null,
"Size":850,
"IsInline":true,
"SourceUrl":"https://contoso-my.sharepoint.com/personal/admin_contoso_onmicrosoft_com/_layouts/15/onedrive.aspx?id=%2Fpersonal%2Fadmin%5Fcontoso%5Fonmicrosoft%5Fcom%2FDocuments%2FHydrangeas%2Ejpg&parent=%2Fpersonal%2Fadmin%5Fcontoso%5Fonmicrosoft%5Fcom%2FDocuments",
"ProviderType":"OneDriveBusiness",
"ThumbnailUrl":null,
"PreviewUrl":null,
"Permission":"Edit",
"IsFolder":false
}
]
}
获取附件
最低要求的范围
获取特定任务的附件。
GET https://outlook.office.com/api/beta/me/tasks('{task_id}')/attachments('{attachment_id}')
响应类型
示例请求(文件附件)
以下示例获取特定任务的附件,该附件是一个文件附件。
GET https://outlook.office.com/api/beta/me/tasks('AAMkADNkNS3qGAAA=')/attachments('AAMkADNkNJVnQIe9r0=')
示例响应
状态代码:200
{
"@odata.context":"https://outlook.office.com/api/beta/$metadata#Me/Tasks('AAMkADNkNS3qGAAA%3D')/Attachments/$entity",
"@odata.type":"#Microsoft.OutlookServices.FileAttachment",
"@odata.id":"https://outlook.office.com/api/beta/Users('fdcbcf34-2505-4d07-be5b-0a55b699d157@41a5b830-45ac-4f1b-9bfc-baafa3b7db2e')/Tasks('AAMkADNkNS3qGAAA=')/Attachments('AAMkADNkNRT6JOBs=')",
"Id":"AAMkADNkNRT6JOBs=",
"LastModifiedDateTime":"2016-11-22T02:24:21Z",
"Name":"Holiday notice",
"ContentType":"application/octet-stream",
"Size":244,
"IsInline":false,
"ContentId":null,
"ContentLocation":null,
"ContentBytes":"bWFjIGFuZCBjaGVlc2U="
}
示例请求(项附件)
以下示例获取特定任务的附件,该任务是一个事件项。
GET https://outlook.office.com/api/beta/me/tasks('AAMkADNkN3qGAAA=')/attachments('AAMkADNkNJVnQIe9r0=')
示例响应
状态代码:200
{
"@odata.context":"https://outlook.office.com/api/beta/$metadata#Me/Tasks('AAMkADNkNS3qGAAA%3D')/Attachments/$entity",
"@odata.type":"#Microsoft.OutlookServices.ItemAttachment",
"@odata.id":"https://outlook.office.com/api/beta/Users('fdcbcf34-2505-4d07-be5b-0a55b699d157@41a5b830-45ac-4f1b-9bfc-baafa3b7db2e')/Tasks('AAMkADNkNS3qGAAA=')/Attachments('AAMkADNkNJVnQIe9r0=')",
"Id":"AAMkADNkNJVnQIe9r0=",
"LastModifiedDateTime":"2016-12-01T22:27:13Z",
"Name":"Holiday event",
"ContentType":null,
"Size":2473,
"IsInline":false
}
示例请求(引用附件)
以下示例获取特定任务的附件,该附件是一个引用附件。
GET https://outlook.office.com/api/beta/me/tasks('AAMkADNkN3qGAAA=')/attachments('AAMkADNkNQG1Lnn5-o=')
示例响应
状态代码:200
{
"@odata.context":"https://outlook.office.com/api/beta/$metadata#Me/Tasks('AAMkADNkN3qGAAA%3D')/Attachments/$entity",
"@odata.type":"#Microsoft.OutlookServices.ReferenceAttachment",
"@odata.id":"https://outlook.office.com/api/beta/Users('fdcbcf34-2505-4d07-be5b-0a55b699d157@41a5b830-45ac-4f1b-9bfc-baafa3b7db2e')/Tasks('AAMkADNkN3qGAAA=')/Attachments('AAMkADNkNQG1Lnn5-o=')",
"Id":"AAMkADNkNQG1Lnn5-o=",
"LastModifiedDateTime":"2016-11-22T02:32:44Z",
"Name":"Hydrangea picture",
"ContentType":null,
"Size":850,
"IsInline":true,
"SourceUrl":"https://contoso-my.sharepoint.com/personal/admin_contoso_onmicrosoft_com/_layouts/15/onedrive.aspx?id=%2Fpersonal%2Fadmin%5Fcontoso%5Fonmicrosoft%5Fcom%2FDocuments%2FHydrangeas%2Ejpg&parent=%2Fpersonal%2Fadmin%5Fcontoso%5Fonmicrosoft%5Fcom%2FDocuments",
"ProviderType":"OneDriveBusiness",
"ThumbnailUrl":null,
"PreviewUrl":null,
"Permission":"Edit",
"IsFolder":false
}
示例请求(在附件上 $expand)
以下示例获取并展开与任务属性一致的文件附件。
GET https://outlook.office.com/api/beta/me/tasks('AAMkADNkN3qGAAA=')?$expand=attachments
示例响应
状态代码:200
{
"@odata.context":"https://outlook.office.com/api/beta/$metadata#Me/Tasks/$entity",
"@odata.id":"https://outlook.office.com/api/beta/Users('fdcbcf34-2505-4d07-be5b-0a55b699d157@41a5b830-45ac-4f1b-9bfc-baafa3b7db2e')/Tasks('AAMkADNkN3qGAAA=')",
"@odata.etag":"W/\"EZ9r3czxY0m2jz8c45czkwAAC052gQ==\"",
"Id":"AAMkADNkN3qGAAA=",
"CreatedDateTime":"2016-11-22T01:27:31.3918881Z",
"LastModifiedDateTime":"2016-11-22T02:40:48.1705747Z",
"ChangeKey":"EZ9r3czxY0m2jz8c45czkwAAC052gQ==",
"Categories":[
],
"AssignedTo":null,
"Body":{
"ContentType":"HTML",
"Content":"<html>\r\n<head>\r\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">\r\n<meta content=\"text/html; charset=iso-8859-1\">\r\n<style type=\"text/css\" style=\"display:none\">\r\n<!--\r\np\r\n\t{margin-top:0;\r\n\tmargin-bottom:0}\r\n-->\r\n</style>\r\n</head>\r\n<body dir=\"ltr\">\r\n<div id=\"divtagdefaultwrapper\" dir=\"ltr\" style=\"font-size:12pt; color:#000000; font-family:Calibri,Arial,Helvetica,sans-serif\">\r\n<p>Prepare for Thanksgiving gathering.<br>\r\n</p>\r\n</div>\r\n</body>\r\n</html>\r\n"
},
"CompletedDateTime":null,
"DueDateTime":{
"DateTime":"2016-11-24T08:00:00.0000000",
"TimeZone":"UTC"
},
"HasAttachments":true,
"Importance":"Normal",
"IsReminderOn":false,
"Owner":"Administrator",
"ParentFolderId":"AQMkADNkNAAAgESAAAA",
"Recurrence":null,
"ReminderDateTime":null,
"Sensitivity":"Normal",
"StartDateTime":{
"DateTime":"2016-11-22T08:00:00.0000000",
"TimeZone":"UTC"
},
"Status":"NotStarted",
"Subject":"Holiday prep",
"Attachments@odata.context":"https://outlook.office.com/api/beta/$metadata#Me/Tasks('AAMkADNkN3qGAAA%3D')/Attachments",
"Attachments":[
{
"@odata.type":"#Microsoft.OutlookServices.FileAttachment",
"@odata.id":"https://outlook.office.com/api/beta/Users('fdcbcf34-2505-4d07-be5b-0a55b699d157@41a5b830-45ac-4f1b-9bfc-baafa3b7db2e')/Tasks('AAMkADNkN3qGAAA=')/Attachments('AAMkADNkNRT6JOBs=')",
"Id":"AAMkADNkNRT6JOBs=",
"LastModifiedDateTime":"2016-11-22T02:24:21Z",
"Name":"Holiday notice",
"ContentType":"application/octet-stream",
"Size":244,
"IsInline":false,
"ContentId":null,
"ContentLocation":null,
"ContentBytes":"bWFjIGFuZCBjaGVlc2U="
}
]
}
添加附件
你可以添加文件、项(消息、事件或联系人)或文件链接作为任务的附件。
添加文件附件
最低要求的范围
向任务中添加文件作为附件。
POST https://outlook.office.com/api/beta/me/tasks('{task_id}')/attachments
必需的正文参数 | 类型 | 说明 |
---|---|---|
@odata.type | string | #Microsoft.OutlookServices.FileAttachment |
名称 | string | 附件的名称。 |
ContentBytes | 二进制 | 要附加的文件的内容(采用 base64 编码)。 |
响应类型
新 文件附件。
示例请求
POST https://outlook.office.com/api/beta/me/tasks('AAMkADNkN3qGAAA=')/attachments
Content-Type: application/json
{
"@odata.type": "#Microsoft.OutlookServices.FileAttachment"",
"Name": "Holiday notice",
"ContentBytes": "bWFjIGFuZCBjaGVlc2U="
}
示例响应
状态代码:201 已创建
{
"@odata.context":"https://outlook.office.com/api/beta/$metadata#Me/Tasks('AAMkADNkN3qGAAA%3D')/Attachments/$entity",
"@odata.type":"#Microsoft.OutlookServices.FileAttachment",
"@odata.id":"https://outlook.office.com/api/beta/Users('fdcbcf34-2505-4d07-be5b-0a55b699d157@41a5b830-45ac-4f1b-9bfc-baafa3b7db2e')/Tasks('AAMkADNkN3qGAAA=')/Attachments('AAMkADNkNRT6JOBs=')",
"Id":"AAMkADNkNRT6JOBs=",
"LastModifiedDateTime":"2016-11-22T02:24:21Z",
"Name":"Holiday notice",
"ContentType":"application/octet-stream",
"Size":244,
"IsInline":false,
"ContentId":null,
"ContentLocation":null,
"ContentBytes":"bWFjIGFuZCBjaGVlc2U="
}
添加项附件
最低要求的范围
添加项(消息、事件或联系人)作为任务的附件。
POST https://outlook.office.com/api/beta/me/tasks('{task_id}')/attachments
必需的正文参数 | 类型 | 说明 |
---|---|---|
@odata.type | string | #Microsoft.OutlookServices.ItemAttachment |
名称 | string | 附件的名称。 |
Item | 消息、事件或联系人条目。 | 要附加的项。 |
响应类型
新 项目附件。
示例请求
POST https://outlook.office.com/api/beta/me/tasks('AAMkADNkN3qGAAA=')/attachments
Content-Type: application/json
{
"@odata.type": "#Microsoft.OutlookServices.ItemAttachment",
"Name": "Holiday event",
"Item": {
"@odata.type": "Microsoft.OutlookServices.Event",
"Subject": "Discuss gifts for children",
"Body": {
"ContentType": "HTML",
"Content": "Let's look for funding!"
},
"Start": {
"DateTime": "2016-12-02T18:00:00",
"TimeZone": "Pacific Standard Time"
},
"End": {
"DateTime": "2016-12-02T19:00:00",
"TimeZone": "Pacific Standard Time"
}
}
}
示例响应
状态代码:201 已创建
{
"@odata.context":"https://outlook.office.com/api/beta/$metadata#Me/Tasks('AAMkADNkN3qGAAA%3D')/Attachments/$entity",
"@odata.type":"#Microsoft.OutlookServices.ItemAttachment",
"@odata.id":"https://outlook.office.com/api/beta/Users('fdcbcf34-2505-4d07-be5b-0a55b699d157@41a5b830-45ac-4f1b-9bfc-baafa3b7db2e')/Tasks('AAMkADNkN23qGAAA=')/Attachments('AAMkADNkN2Jp5JVnQIe9r0=')",
"Id":"AAMkADNkNJp5JVnQIe9r0=",
"LastModifiedDateTime":"2016-12-01T22:27:13Z",
"Name":"Holiday event",
"ContentType":null,
"Size":2473,
"IsInline":false
}
添加引用附件
最低要求的范围
添加文件链接作为任务的引用附件。
POST https://outlook.office.com/api/beta/me/tasks('{task_id}')/attachments
必需的正文参数 | 类型 | 说明 |
---|---|---|
@odata.type | 字符串 | #Microsoft.OutlookServices.ReferenceAttachment |
名称 | 字符串 | 附件的显示名称。 必需。 |
SourceUrl | 字符串 | 用于获取附件内容的 URL。 如果这是文件夹的 URL,为了使文件夹在 Outlook 或 Outlook 网页版中正确显示,请将 IsFolder 设置为 true。 必需。 |
在请求正文中指定 名称 和 SourceUrl 参数以及任何可写 参考附件 属性。
响应类型
参考附件。
示例请求
以下示例将引用附件添加到现有任务。 附件是 OneDrive for Business 上的文件的链接。
POST https://outlook.office.com/api/beta/me/tasks('AAMkADNkN3qGAAA=')/attachments
Content-Type: application/json
{
"@odata.type": "#Microsoft.OutlookServices.ReferenceAttachment",
"Name": "Hydrangea picture",
"SourceUrl": "https://contoso-my.sharepoint.com/personal/admin_contoso_onmicrosoft_com/_layouts/15/onedrive.aspx?id=%2Fpersonal%2Fadmin%5Fcontoso%5Fonmicrosoft%5Fcom%2FDocuments%2FHydrangeas%2Ejpg&parent=%2Fpersonal%2Fadmin%5Fcontoso%5Fonmicrosoft%5Fcom%2FDocuments",
"ProviderType": "oneDriveBusiness",
"Permission": "Edit",
"IsFolder": "False"
}
示例响应
状态代码:201 已创建
{
"@odata.context":"https://outlook.office.com/api/beta/$metadata#Me/Tasks('AAMkADNkN3qGAAA%3D')/Attachments/$entity",
"@odata.type":"#Microsoft.OutlookServices.ReferenceAttachment",
"@odata.id":"https://outlook.office.com/api/beta/Users('fdcbcf34-2505-4d07-be5b-0a55b699d157@41a5b830-45ac-4f1b-9bfc-baafa3b7db2e')/Tasks('AAMkADNkN3qGAAA=')/Attachments('AAMkADNkNQG1Lnn5-o=')",
"Id":"AAMkADNkNQG1Lnn5-o=",
"LastModifiedDateTime":"2016-11-22T02:32:44Z",
"Name":"Hydrangea picture",
"ContentType":null,
"Size":850,
"IsInline":true,
"SourceUrl":"https://contoso-my.sharepoint.com/personal/admin_contoso_onmicrosoft_com/_layouts/15/onedrive.aspx?id=%2Fpersonal%2Fadmin%5Fcontoso%5Fonmicrosoft%5Fcom%2FDocuments%2FHydrangeas%2Ejpg&parent=%2Fpersonal%2Fadmin%5Fcontoso%5Fonmicrosoft%5Fcom%2FDocuments",
"ProviderType":"OneDriveBusiness",
"ThumbnailUrl":null,
"PreviewUrl":null,
"Permission":"Edit",
"IsFolder":false
}
删除附件
删除任务的附件
最低要求的范围
删除任务的指定附件。 附件可以是文件附件、项附件或引用附件。
DELETE https://outlook.office.com/api/beta/me/tasks('{task_id}')/attachments('{attachment_id}')
示例请求
DELETE https:/outlook.office.com/api/beta/me/tasks('AAMkADNkN3qGAAA=')/attachments('AAMkADNkNQG1Lnn5-o=')
示例响应
Status code: 204
创建任务文件夹
最低要求的范围
创建任务文件夹。
你可以在用户邮箱的默认任务组 (My Tasks
) 中创建任务文件夹:
POST https://outlook.office.com/api/beta/me/taskfolders
或者可以在指定任务组下创建任务文件夹:
POST https://outlook.office.com/api/beta/me/taskgroups('{group_id}')/taskfolders
在请求正文中,提供要创建的 TaskFolder 的 JSON 表示形式。
响应
成功状态代码:201 已创建
响应正文:创建的任务文件夹。
示例请求
以下示例在用户邮箱的默认任务组 (My Tasks
) 中创建一个名为 Volunteer
的任务文件夹。
POST https://outlook.office.com/api/beta/me/taskfolders
Content-Type: application/json
{
"Name": "Volunteer"
}
示例响应
Status code: 201
{
"@odata.context": "https://outlook.office.com/api/beta/$metadata#Me/TaskFolders/$entity",
"@odata.id": "https://outlook.office.com/api/beta/Users('dc2d952a-78ff-4609-b3ae-eb66271747bf@8638a6dc-2d66-40dc-aecb-b2436ec47fc0')/TaskFolders('AAMkADIyAAAhrbPWAAA=')",
"Id": "AAMkADIyAAAhrbPWAAA=",
"ChangeKey": "hmM7Eb/jgEec8l3+gkJEawAAIbAGig==",
"IsDefaultFolder": false,
"Name": "Volunteer",
"ParentGroupKey": "0006f0b7-0000-0000-c000-000000000046"
}
示例请求
下一个示例在指定任务组中创建一个名为 Cooking
的任务文件夹。
POST https://outlook.office.com/api/beta/me/taskgroups('AAMkADIyAAAhrbe-AAA')/taskfolders
Content-Type: application/json
{
"Name": "Cooking"
}
示例响应
Status code: 201
{
"@odata.context": "https://outlook.office.com/api/beta/$metadata#Me/TaskGroups('AAMkADIyAAAhrbe-AAA%3D')/TaskFolders/$entity",
"@odata.id": "https://outlook.office.com/api/beta/Users('dc2d952a-78ff-4609-b3ae-eb66271747bf@8638a6dc-2d66-40dc-aecb-b2436ec47fc0')/TaskFolders('AAMkADIyAAAhrbPXAAA=')",
"Id": "AAMkADIyAAAhrbPXAAA=",
"ChangeKey": "hmM7Eb/jgEec8l3+gkJEawAAIbAOlA==",
"IsDefaultFolder": false,
"Name": "Cooking",
"ParentGroupKey": "63d640cf-946f-4734-9c29-60dda7b76acb"
}
获取任务文件夹
最低要求的范围
获取多个任务文件夹。
你可以获取用户邮箱中的所有任务文件夹。
GET https://outlook.office.com/api/beta/me/taskfolders
或者可以获取指定任务组中的任务文件夹:
GET https://outlook.office365.com/api/beta/me/taskgroups('{group_id}')/taskfolders
响应
成功状态代码:200 OK
响应正文:一个任务文件夹集合。
示例请求
以下示例获取用户邮箱中的所有任务文件夹。
GET https://outlook.office.com/api/beta/me/taskfolders
示例响应
Status code: 200 OK
{
"@odata.context": "https://outlook.office.com/api/beta/$metadata#Me/TaskFolders",
"value": [
{
"@odata.id": "https://outlook.office.com/api/beta/Users('dc2d952a-78ff-4609-b3ae-eb66271747bf@8638a6dc-2d66-40dc-aecb-b2436ec47fc0')/TaskFolders('AAMkADIyAAAAABrJAAA=')",
"Id": "AAMkADIyAAAAABrJAAA=",
"ChangeKey": "hmM7Eb/jgEec8l3+gkJEawAAAAAeAA==",
"IsDefaultFolder": false,
"Name": "Monthly tasks",
"ParentGroupKey": "0006f0b7-0000-0000-c000-000000000046"
},
{
"@odata.id": "https://outlook.office.com/api/beta/Users('dc2d952a-78ff-4609-b3ae-eb66271747bf@8638a6dc-2d66-40dc-aecb-b2436ec47fc0')/TaskFolders('AAMkADIyAAAAAAESAAA=')",
"Id": "AAMkADIyAAAAAAESAAA=",
"ChangeKey": "hmM7Eb/jgEec8l3+gkJEawAAAAAAPA==",
"IsDefaultFolder": true,
"Name": "Tasks",
"ParentGroupKey": "0006f0b7-0000-0000-c000-000000000046"
}
]
}
下一个示例获取指定任务组中的所有任务文件夹。
GET https://outlook.office365.com/api/beta/me/taskgroups('AAMkADIyAAAhrbe-AAA=')/taskfolders
示例响应
Status code: 200 OK
{
"@odata.context": "https://outlook.office365.com/api/beta/$metadata#Me/TaskGroups('AAMkADIyAAAhrbe-AAA%3D')/TaskFolders",
"value": [
{
"@odata.id": "https://outlook.office365.com/api/beta/Users('dc2d952a-78ff-4609-b3ae-eb66271747bf@8638a6dc-2d66-40dc-aecb-b2436ec47fc0')/TaskFolders('AAMkADIyAAAhrbPXAAA=')",
"Id": "AAMkADIyAAAhrbPXAAA=",
"ChangeKey": "hmM7Eb/jgEec8l3+gkJEawAAIbAOlA==",
"IsDefaultFolder": false,
"Name": "Cooking",
"ParentGroupKey": "63d640cf-946f-4734-9c29-60dda7b76acb"
}
]
}
更新任务文件夹
最低要求的范围
更新任务文件夹的可写属性。
你无法更改默认任务文件夹 Tasks
的 Name 属性值。
任务文件夹 ID 在用户邮箱中是唯一的。
PATCH https://outlook.office.com/api/beta/me/taskfolders('{folder_id}')
在请求正文中,提供要在任务文件夹中更新的可写属性的 JSON 表示形式。
响应
成功状态代码:200 OK
响应正文:更新的任务文件夹。
示例请求
以下示例将任务文件夹的名称更改为 Charity work
。
PATCH https://outlook.office.com/api/beta/me/taskfolders('AAMkADIyAAAhrbPWAAA=')
Content-Type: application/json
{
"Name": "Charity work"
}
示例响应
Status code: 200 OK
{
"@odata.context": "https://outlook.office.com/api/beta/$metadata#Me/TaskFolders/$entity",
"@odata.id": "https://outlook.office.com/api/beta/Users('dc2d952a-78ff-4609-b3ae-eb66271747bf@8638a6dc-2d66-40dc-aecb-b2436ec47fc0')/TaskFolders('AAMkADIyAAAhrbPWAAA=')",
"Id": "AAMkADIyAAAhrbPWAAA=",
"ChangeKey": "hmM7Eb/jgEec8l3+gkJEawAAIbAKfQ==",
"IsDefaultFolder": false,
"Name": "Charity work",
"ParentGroupKey": "0006f0b7-0000-0000-c000-000000000046"
}
删除任务文件夹
最低要求的范围
删除指定的任务文件夹。
试图删除默认任务文件夹 Tasks
会返回“HTTP 400 错误请求”。
DELETE https://outlook.office.com/api/beta/me/taskfolders('{folder_id}')
响应
成功状态代码:204 无内容
响应正文:无。
示例请求
DELETE https://outlook.office365.com/api/beta/me/taskfolders('AAMkADIyAAAhrbPXAAA=')
示例响应
Status code: 204
创建任务组
最低要求的范围
在用户的邮箱中创建任务组。
POST https://outlook.office.com/api/beta/me/taskgroups
在请求正文中,提供要创建的任务组的 JSON 表示形式。
响应
成功状态代码:201 已创建
响应正文:创建的任务组。
示例请求
POST https://outlook.office.com/api/beta/me/taskgroups
Content-Type: application/json
{
"Name": "Leisure tasks"
}
示例响应
Status code: 201
{
"@odata.context": "https://outlook.office.com/api/beta/$metadata#Me/TaskGroups/$entity",
"@odata.id": "https://outlook.office.com/api/beta/Users('dc2d952a-78ff-4609-b3ae-eb66271747bf@8638a6dc-2d66-40dc-aecb-b2436ec47fc0')/TaskGroups('AAMkADIyAAAhrbe-AAA=')",
"Id": "AAMkADIyAAAhrbe-AAA=",
"ChangeKey": "hmM7Eb/jgEec8l3+gkJEawAAIbAGjg==".
"IsDefaultGroup": false,
"Name": "Leisure tasks",
"GroupKey": "63d640cf-946f-4734-9c29-60dda7b76acb"
}
获取任务组
最低要求的范围
获取用户的邮箱中的所有任务组。
响应始终包含默认任务组 My Tasks
,以及在邮箱中创建的任何其他任务组。
GET https://outlook.office.com/api/beta/me/taskgroups
响应
成功状态代码:200 OK
响应正文:一个任务组集合。
示例请求
GET https://outlook.office.com/api/beta/me/taskgroups
示例响应
Status code: 200
{
"@odata.context": "https://outlook.office365.com/api/beta/$metadata#Me/TaskGroups",
"value": [
{
"@odata.id": "https://outlook.office365.com/api/beta/Users('dc2d952a-78ff-4609-b3ae-eb66271747bf@8638a6dc-2d66-40dc-aecb-b2436ec47fc0')/TaskGroups('AAMkADIyAAADJ5pYAAA=')",
"Id": "AAMkADIyAAADJ5pYAAA=",
"ChangeKey": "hmM7Eb/jgEec8l3+gkJEawAAInHxLA==",
"IsDefaultGroup": true,
"Name": "My Tasks",
"GroupKey": "0006f0b7-0000-0000-c000-000000000046"
},
{
"@odata.id": "https://outlook.office365.com/api/beta/Users('dc2d952a-78ff-4609-b3ae-eb66271747bf@8638a6dc-2d66-40dc-aecb-b2436ec47fc0')/TaskGroups('AAMkADIyAAAhrbe-AAA=')",
"Id": "AAMkADIyAAAhrbe-AAA=",
"ChangeKey": "hmM7Eb/jgEec8l3+gkJEawAAInHxKw==",
"IsDefaultGroup": false,
"Name": "Leisure Tasks",
"GroupKey": "63d640cf-946f-4734-9c29-60dda7b76acb"
}
]
}
更新任务组
最低要求的范围
更新任务组的可写属性。
PATCH https://outlook.office.com/api/beta/me/taskgroups('{group_id}')
在请求正文中,提供要在任务组中更新的可写属性的 JSON 表示形式, 例如 Name 属性。
响应
成功状态代码:200 OK
响应正文:更新的任务。
示例请求
以下示例将任务组的名称更改为“个人任务”。 请注意,你无法修改默认任务组“我的任务”的名称。
PATCH https://outlook.office.com/api/beta/me/taskgroups('AAMkADIyAAAhrbe-AAA=')
Content-Type: application/json
{
"Name": "Personal Tasks"
}
示例响应
Status code: 200
{
"@odata.context": "https://outlook.office.com/api/beta/$metadata#Me/TaskGroups/$entity",
"@odata.id": "https://outlook.office.com/api/beta/Users('dc2d952a-78ff-4609-b3ae-eb66271747bf@8638a6dc-2d66-40dc-aecb-b2436ec47fc0')/TaskGroups('AAMkADIyAAAhrbe-AAA=')",
"Id": "AAMkADIyAAAhrbe-AAA=",
"ChangeKey": "hmM7Eb/jgEec8l3+gkJEawAAIbAGjw==",
"IsDefaultGroup": false,
"Name": "Personal Tasks",
"GroupKey": "63d640cf-946f-4734-9c29-60dda7b76acb"
}
删除任务组
最低要求的范围
删除指定的任务组。
试图删除默认任务组 My Tasks
会返回“HTTP 400 错误请求”。
DELETE https://outlook.office.com/api/beta/me/taskgroups('{group_id}')
响应
成功状态代码:204 无内容
响应正文:更新的任务。
示例请求
DELETE https://outlook.office365.com/api/beta/me/taskgroups('AAMkADIyAAAhrbe-AAA=')
示例响应
Status code: 204
后续步骤
无论你准备开始构建应用还是只想了解更多信息,我们都已为你考虑周全。
- 开始使用邮件、日历和联系人 REST API。
- 想要查看一些示例吗? 我们就有。
或者,了解有关使用 Office 365 平台的更多信息: