{"id":12991,"date":"2023-02-24T09:24:21","date_gmt":"2023-02-24T17:24:21","guid":{"rendered":"https:\/\/devblogs.microsoft.com\/microsoft365dev\/?p=12991"},"modified":"2023-02-24T09:24:21","modified_gmt":"2023-02-24T17:24:21","slug":"new-capabilities-available-in-microsoft-graph-to-do-apis","status":"publish","type":"post","link":"https:\/\/devblogs.microsoft.com\/microsoft365dev\/new-capabilities-available-in-microsoft-graph-to-do-apis\/","title":{"rendered":"New capabilities available in Microsoft Graph To Do APIs\u00a0"},"content":{"rendered":"<p><span data-contrast=\"auto\">We strive to provide enhanced capabilities for the Microsoft Graph To Do task APIs while keeping customer needs at the core. <\/span><b><span data-contrast=\"auto\">We are thrilled to announce new capabilities like application permissions support, attachment support and \u2018startDateTime\u2019 property on To Do task APIs.<\/span><\/b><span data-contrast=\"auto\">\u00a0<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}\">\u00a0<\/span><\/p>\n<h2 aria-level=\"1\"><span data-contrast=\"none\">Application permissions<\/span><span data-ccp-props=\"{&quot;134245418&quot;:true,&quot;134245529&quot;:true,&quot;201341983&quot;:0,&quot;335559738&quot;:240,&quot;335559739&quot;:0,&quot;335559740&quot;:259}\">\u00a0<\/span><\/h2>\n<p><span data-contrast=\"auto\">Application permissions has been one of the top asks from customers since we released the To Do task APIs. Recently, we have released application permissions for To Do APIs in Graph v1.0. With application permissions, developers can build daemon services and make To Do part of workflows which will not require any interaction for sign-in or consent. Application permission can also be used to create tools that help tenant admins with To Do tasks usage analytics.\u00a0<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}\">\u00a0<\/span><\/p>\n<p><b><span data-contrast=\"auto\">Please note, tenant admin consent will be required to access APIs with application permissions.<\/span><\/b><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}\">\u00a0<\/span><\/p>\n<table style=\"width: 94.3601%;\" data-tablestyle=\"MsoTable15Grid4Accent1\" data-tablelook=\"1184\" aria-rowcount=\"3\">\n<tbody>\n<tr aria-rowindex=\"1\">\n<td style=\"width: 24.6533%;\" data-celllook=\"4369\"><b><span data-contrast=\"none\">Scope Name<\/span><\/b><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559740&quot;:259}\">\u00a0<\/span><\/td>\n<td style=\"width: 93.4683%;\" data-celllook=\"4369\"><b><span data-contrast=\"none\">Entities\/API covered<\/span><\/b><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559740&quot;:259}\">\u00a0<\/span><\/td>\n<\/tr>\n<tr aria-rowindex=\"2\">\n<td style=\"width: 24.6533%;\" data-celllook=\"65536\"><b><span data-contrast=\"auto\">Tasks.Read.All<\/span><\/b><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559740&quot;:259}\">\u00a0<\/span><\/td>\n<td style=\"width: 93.4683%;\" data-celllook=\"65536\"><span data-contrast=\"auto\">Read operation on <\/span><span data-contrast=\"none\">todoTask, todoTaskList, taskFileAttachment, checklistItems, linkedResource<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559740&quot;:259}\">\u00a0<\/span><\/p>\n<p><span data-contrast=\"auto\">\u00a0\u00a0<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559740&quot;:259}\">\u00a0<\/span><\/td>\n<\/tr>\n<tr aria-rowindex=\"3\">\n<td style=\"width: 24.6533%;\" data-celllook=\"65536\"><b><span data-contrast=\"auto\">Tasks.ReadWrite.All<\/span><\/b><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559740&quot;:259}\">\u00a0<\/span><\/td>\n<td style=\"width: 93.4683%;\" data-celllook=\"65536\"><span data-contrast=\"auto\">Read and write operations on <\/span><span data-contrast=\"none\">todoTask, todoTaskList, taskFileAttachment, checklistItems, linkedResource<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559740&quot;:259}\">\u00a0<\/span><\/p>\n<p><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559740&quot;:259}\">\u00a0<\/span><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p><span data-contrast=\"auto\">Accessing Microsoft Graph APIs using application permissions is an existing pattern. Read more about application permissions in our <\/span><a href=\"https:\/\/learn.microsoft.com\/en-us\/graph\/auth-v2-service\"><span data-contrast=\"none\">documentation<\/span><\/a><span data-contrast=\"auto\">.\u00a0<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}\">\u00a0<\/span><\/p>\n<p><span data-contrast=\"auto\">A sample <\/span><b><span data-contrast=\"auto\">GET <\/span><\/b><span data-contrast=\"auto\">task using app permission: <\/span><a href=\"https:\/\/graph.microsoft.com\/v1.0\/users\/234jk-nse764304-nsfp\/todo\/lists\/AAMkADA1MTHgwAAA=\/tasks\/721a35e2-35e2-721a-e235-1a72e2351a72\"><span data-contrast=\"none\">https:\/\/graph.microsoft.com\/v1.0\/users\/234jk-nse764304-nsfp\/todo\/lists\/AAMkADA1MTHgwAAA=\/tasks\/721a35e2-35e2-721a-e235-1a72e2351a72<\/span><\/a>\n<span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}\">\u00a0<\/span><\/p>\n<p><b><span data-contrast=\"auto\">Response<\/span><\/b><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}\">\u00a0<\/span><\/p>\n<pre class=\"prettyprint language-default\"><code class=\"language-default\">HTTP\/1.1 200 OK \r\n\r\nContent-Type: application\/json \r\n\r\n{ \r\n\r\n    \"@odata.context\": \"https:\/\/graph.microsoft.com\/v1.0\/$metadata#tasks\/$entity\", \r\n\r\n    \"@odata.etag\": \"W\/\\\"s8\/ERWT3WEeFpBGD0bDgAA+TWq9g==\\\"\", \r\n\r\n    \"importance\": \"low\", \r\n\r\n    \"isReminderOn\": false, \r\n\r\n    \"status\": \"notStarted\", \r\n\r\n    \"title\": \"Shop for dinner\", \r\n\r\n    \"createdDateTime\": \"2020-07-22T10:39:03.7937971Z\", \r\n\r\n    \"lastModifiedDateTime\": \"2020-07-22T12:02:10.8835421Z\", \r\n\r\n    \"categories\": [ \r\n\r\n       \"Important\", \r\n\r\n       \"Urgent\" \r\n\r\n            ], \r\n\r\n    \"id\": \"721a35e2-35e2-721a-e235-1a72e2351a72\", \r\n\r\n    \"body\": { \r\n\r\n        \"content\": \"\", \r\n\r\n        \"contentType\": \"text\" \r\n\r\n    }, \r\n\r\n    \"dueDateTime\": { \r\n\r\n        \"dateTime\": \"2020-08-25T04:00:00.0000000\", \r\n\r\n        \"timeZone\": \"UTC\" \r\n\r\n    }, \r\n\r\n    \"startDateTime\": { \r\n\r\n        \"dateTime\": \"2020-06-23T04:00:00.0000000\", \r\n\r\n        \"timeZone\": \"UTC\" \r\n\r\n    } \r\n\r\n} <\/code><\/pre>\n<h2 aria-level=\"1\"><span data-contrast=\"none\">Attachments<\/span><span data-ccp-props=\"{&quot;134245418&quot;:true,&quot;134245529&quot;:true,&quot;201341983&quot;:0,&quot;335559738&quot;:240,&quot;335559739&quot;:0,&quot;335559740&quot;:259}\">\u00a0<\/span><\/h2>\n<p><span data-contrast=\"auto\">We are also announcing attachment support on todoTasks in Microsoft Graph v1.0. Now, you can read, upload, and delete\u202f<\/span><a href=\"https:\/\/docs.microsoft.com\/graph\/api\/resources\/taskfileattachment?view=graph-rest-1.0\"><span data-contrast=\"none\">file attachments<\/span><\/a><span data-contrast=\"auto\">\u202fon a task. There are two methods to upload attachments on a task:<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}\">\u00a0<\/span><\/p>\n<ol>\n<li data-leveltext=\"%1.\" data-font=\"Calibri\" data-listid=\"2\" data-list-defn-props=\"{&quot;335552541&quot;:0,&quot;335559684&quot;:-1,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769242&quot;:[65533,0],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;%1.&quot;,&quot;469777815&quot;:&quot;multilevel&quot;}\" aria-setsize=\"-1\" data-aria-posinset=\"1\" data-aria-level=\"1\"><span data-contrast=\"auto\">To attach files of any size,\u202f<\/span><a href=\"https:\/\/docs.microsoft.com\/graph\/api\/taskfileattachment-createuploadsession?view=graph-rest-1.0\"><span data-contrast=\"none\">create an upload session<\/span><\/a><span data-contrast=\"auto\">, and iteratively use PUT call to upload ranges of bytes of the file until you have uploaded the entire file. See\u202f<\/span><a href=\"https:\/\/docs.microsoft.com\/graph\/todo-attachments\"><span data-contrast=\"none\">attach files to a To Do task<\/span><\/a><span data-contrast=\"auto\">\u202ffor an example.<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}\">\u00a0<\/span><\/li>\n<\/ol>\n<ol>\n<li data-leveltext=\"%1.\" data-font=\"Calibri\" data-listid=\"2\" data-list-defn-props=\"{&quot;335552541&quot;:0,&quot;335559684&quot;:-1,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769242&quot;:[65533,0],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;%1.&quot;,&quot;469777815&quot;:&quot;multilevel&quot;}\" aria-setsize=\"-1\" data-aria-posinset=\"2\" data-aria-level=\"1\"><span data-contrast=\"auto\">If the file size is under 3 MB, you can do a single POST on the attachment\u2019s navigation property of\u202f<\/span><a href=\"https:\/\/docs.microsoft.com\/graph\/api\/resources\/todotask?view=graph-rest-1.0\"><span data-contrast=\"none\">todoTask<\/span><\/a><span data-contrast=\"auto\">; See\u202f<\/span><a href=\"https:\/\/docs.microsoft.com\/graph\/api\/todotask-post-attachments?view=graph-rest-1.0\"><span data-contrast=\"none\">create attachment<\/span><\/a><span data-contrast=\"auto\">\u202ffor an example.<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}\">\u00a0<\/span><\/li>\n<\/ol>\n<p aria-level=\"1\"><span data-contrast=\"none\">StartDateTime<\/span><span data-ccp-props=\"{&quot;134245418&quot;:true,&quot;134245529&quot;:true,&quot;201341983&quot;:0,&quot;335559738&quot;:240,&quot;335559739&quot;:0,&quot;335559740&quot;:259}\">\u00a0<\/span><\/p>\n<p><span data-contrast=\"auto\">startDateTime property on todoTask lets you set the date when tasks would be started. Now, API responses will have startDateTime when querying for users\u2019 task.<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}\">\u00a0<\/span><\/p>\n<p><b><span data-contrast=\"auto\">Example: <\/span><\/b><span data-contrast=\"auto\">A sample for PATCH task (existing task) using app permission is like below.<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}\">\u00a0<\/span><\/p>\n<p><span data-contrast=\"auto\">PATCH <\/span><a href=\"https:\/\/graph.microsoft.com\/v1.0\/me\/todo\/lists\/AAMkADA1MTHgwAAA=\/tasks\/721a35e2-35e2-721a-e235-1a72e2351a72\"><span data-contrast=\"none\">https:\/\/graph.microsoft.com\/v1.0\/me\/todo\/lists\/AAMkADA1MTHgwAAA=\/tasks\/721a35e2-35e2-721a-e235-1a72e2351a72<\/span><\/a><span data-contrast=\"auto\">\u00a0<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}\">\u00a0<\/span><\/p>\n<p><b><span data-contrast=\"auto\">Request<\/span><\/b><span data-contrast=\"auto\">:<\/span><span data-contrast=\"auto\">\u00a0<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}\">\u00a0<\/span><\/p>\n<p><span data-contrast=\"auto\">{<\/span><span data-contrast=\"auto\">\u00a0<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559685&quot;:720,&quot;335559739&quot;:160,&quot;335559740&quot;:259}\">\u00a0<\/span><\/p>\n<p><span data-contrast=\"auto\">&#8220;startDateTime&#8221;: {<\/span><span data-contrast=\"auto\">\u00a0<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559685&quot;:720,&quot;335559739&quot;:160,&quot;335559740&quot;:259}\">\u00a0<\/span><\/p>\n<p><span data-contrast=\"auto\">\u00a0\u00a0\u00a0 &#8220;dateTime&#8221;: &#8220;2020-06-23T04:00:00.0000000&#8221;,<\/span><span data-contrast=\"auto\">\u00a0<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559685&quot;:720,&quot;335559739&quot;:160,&quot;335559740&quot;:259}\">\u00a0<\/span><\/p>\n<p><span data-contrast=\"auto\">\u00a0\u00a0\u00a0 &#8220;timeZone&#8221;: &#8220;UTC&#8221;<\/span><span data-contrast=\"auto\">\u00a0<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559685&quot;:720,&quot;335559739&quot;:160,&quot;335559740&quot;:259}\">\u00a0<\/span><\/p>\n<p><span data-contrast=\"auto\">\u00a0 }<\/span><span data-contrast=\"auto\">\u00a0<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559685&quot;:720,&quot;335559739&quot;:160,&quot;335559740&quot;:259}\">\u00a0<\/span><\/p>\n<p><span data-contrast=\"auto\">}<\/span><span data-contrast=\"auto\">\u00a0<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559685&quot;:720,&quot;335559739&quot;:160,&quot;335559740&quot;:259}\">\u00a0<\/span><\/p>\n<p><b><span data-contrast=\"auto\">Response<\/span><\/b><\/p>\n<pre class=\"prettyprint language-default\"><code class=\"language-default\">{  \r\n\r\n\"startDateTime\": {  \r\n\r\n    \"dateTime\": \"2020-06-23T04:00:00.0000000\",  \r\n\r\n    \"timeZone\": \"UTC\"  \r\n\r\n  }  \r\n\r\n}  \r\n\r\nResponse  \r\nHTTP\/1.1 200 OK \r\n\r\nContent-Type: application\/json \r\n\r\n { \r\n\r\n    \"@odata.context\": \"https:\/\/graph.microsoft.com\/v1.0\/$metadata#tasks\/$entity\", \r\n\r\n    \"@odata.etag\": \"W\/\\\"s8\/ERWT3WEeFpBGD0bDgAA+TWq9g==\\\"\", \r\n\r\n    \"importance\": \"low\", \r\n\r\n    \"isReminderOn\": false, \r\n\r\n    \"status\": \"notStarted\", \r\n\r\n    \"title\": \"Shop for dinner\", \r\n\r\n    \"createdDateTime\": \"2020-07-22T10:39:03.7937971Z\", \r\n\r\n    \"lastModifiedDateTime\": \"2020-07-22T12:02:10.8835421Z\", \r\n\r\n    \"categories\": [ \r\n\r\n       \"Important\", \r\n\r\n       \"Urgent\" \r\n\r\n            ], \r\n\r\n    \"id\": \"721a35e2-35e2-721a-e235-1a72e2351a72\", \r\n\r\n    \"body\": { \r\n\r\n        \"content\": \"\", \r\n\r\n        \"contentType\": \"text\" \r\n\r\n    }, \r\n\r\n    \"dueDateTime\": { \r\n\r\n        \"dateTime\": \"2020-08-25T04:00:00.0000000\", \r\n\r\n        \"timeZone\": \"UTC\" \r\n\r\n    }, \r\n\r\n    \"startDateTime\": { \r\n\r\n        \"dateTime\": \"2020-06-23T04:00:00.0000000\", \r\n\r\n        \"timeZone\": \"UTC\" \r\n\r\n    } \r\n\r\n} <\/code><\/pre>\n<p><span data-contrast=\"none\">We cannot wait for you to try out these APIs. Thank you for continuing with us on this journey as we continue to work towards improving productivity. <\/span><span data-contrast=\"auto\">If you have any feedback, suggestions, or question, <\/span><a href=\"mailto:todofeedback@microsoft.com\"><span data-contrast=\"none\">email us<\/span><\/a><span data-contrast=\"auto\"> or let us know on our <\/span><a href=\"https:\/\/techcommunity.microsoft.com\/t5\/microsoft-365-developer-platform\/idb-p\/Microsoft365DeveloperPlatform\/label-name\/Microsoft%20Graph\"><span data-contrast=\"none\">feedback<\/span><\/a><span data-contrast=\"auto\"> page.<\/span><\/p>\n<p><span data-contrast=\"auto\">Happy coding!<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}\">\u00a0<\/span><\/p>\n","protected":false},"excerpt":{"rendered":"<p>We are thrilled to announce new capabilities like application permissions support, attachment support and \u2018startDateTime\u2019 property on To Do task APIs.\u00a0\u00a0<\/p>\n","protected":false},"author":112780,"featured_media":13015,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[3],"tags":[156],"class_list":["post-12991","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-microsoft-graph","tag-to-do-api"],"acf":[],"blog_post_summary":"<p>We are thrilled to announce new capabilities like application permissions support, attachment support and \u2018startDateTime\u2019 property on To Do task APIs.\u00a0\u00a0<\/p>\n","_links":{"self":[{"href":"https:\/\/devblogs.microsoft.com\/microsoft365dev\/wp-json\/wp\/v2\/posts\/12991","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/devblogs.microsoft.com\/microsoft365dev\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/devblogs.microsoft.com\/microsoft365dev\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/microsoft365dev\/wp-json\/wp\/v2\/users\/112780"}],"replies":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/microsoft365dev\/wp-json\/wp\/v2\/comments?post=12991"}],"version-history":[{"count":0,"href":"https:\/\/devblogs.microsoft.com\/microsoft365dev\/wp-json\/wp\/v2\/posts\/12991\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/microsoft365dev\/wp-json\/wp\/v2\/media\/13015"}],"wp:attachment":[{"href":"https:\/\/devblogs.microsoft.com\/microsoft365dev\/wp-json\/wp\/v2\/media?parent=12991"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/microsoft365dev\/wp-json\/wp\/v2\/categories?post=12991"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/microsoft365dev\/wp-json\/wp\/v2\/tags?post=12991"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}