{"id":4961,"date":"2020-07-02T12:40:14","date_gmt":"2020-07-02T19:40:14","guid":{"rendered":"https:\/\/officedevblogs.wpengine.com\/?p=4961"},"modified":"2020-07-02T12:40:14","modified_gmt":"2020-07-02T19:40:14","slug":"breaking-changes-for-microsoft-teams-beta-apis-permissions-for-installing-personal-apps-removing-unused-properties-from-code-snippets","status":"publish","type":"post","link":"https:\/\/devblogs.microsoft.com\/microsoft365dev\/breaking-changes-for-microsoft-teams-beta-apis-permissions-for-installing-personal-apps-removing-unused-properties-from-code-snippets\/","title":{"rendered":"Breaking changes for Microsoft Teams beta APIs &#8211; permissions for installing personal apps, removing unused properties from code snippets"},"content":{"rendered":"<p>At the end of July, we will make the following changes to the beta endpoint. APIs on the v1.0 endpoint are not affected. Changes include:<\/p>\n<ul>\n<li><strong>Different permissions for app installations for a user <\/strong>\u2013 To improve security by running with least privilege, we have created new permission scopes for <strong>\/users\/{id}\/teamwork\/installedApps<\/strong>, and are dropping support for overly broad permissions. See below for details.<\/li>\n<li><strong>Removing redundant data from code snippets inside chatMessages<\/strong> \u2013 In order to simplify the developer experience and reduce payload size, we are removing some unused properties from code snippets. See below for details.<\/li>\n<\/ul>\n<h3>Different permissions for \/users\/{id}\/teamwork\/installedApps<\/h3>\n<p>We are removing support for User.Read.All, User.ReadWrite.All, Directory.Read.All, and Directory.ReadWrite.All permissions from these APIs:<\/p>\n<table width=\"366\">\n<tbody>\n<tr>\n<td width=\"69\">GET<\/td>\n<td width=\"297\">\/users\/{id}\/teamwork\/installedApps<\/td>\n<\/tr>\n<tr>\n<td width=\"69\">POST<\/td>\n<td width=\"297\">\/users\/{id}\/teamwork\/installedApps<\/td>\n<\/tr>\n<tr>\n<td width=\"69\">DELETE<\/td>\n<td width=\"297\">\/users\/{id}\/teamwork\/installedApps\/{id}<\/td>\n<\/tr>\n<tr>\n<td width=\"69\">POST<\/td>\n<td width=\"297\">\/users\/{id}\/teamwork\/installedApps\/{id}\/upgrade<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>Instead, use one of these permissions:<\/p>\n<ul>\n<li>TeamsAppInstallation.ReadForUser (delegated)<\/li>\n<li>TeamsAppInstallation.ReadWriteForUser (delegated)<\/li>\n<li>TeamsAppInstallation.ReadForUser.All (application)<\/li>\n<li>TeamsAppInstallation.ReadWriteForUser.All (application)<\/li>\n<\/ul>\n<h3>Removing redundant data from code snippets inside chatMessages<\/h3>\n<p>Some chatMessages have code snippet cards inside them, embedded in the content property of an attachment. That content itself has a bunch of properties, we are removing some properties that are redundant.<\/p>\n<p>For example, GET \/teams\/{id}\/channels\/{id}\/messages\/{id} returns something like this, we are\u00a0simplifying\u00a0the bolded part:<\/p>\n<blockquote>\n<div>\n<div>{<\/div>\n<div>\u00a0\u00a0\u00a0\u00a0&#8220;@odata.context&#8221;:\u00a0&#8220;https:\/\/graph.microsoft.com\/beta\/$metadata#teams(&#8216;bdb7bcda-9c3b-4341-b9a9-f52bf9a23407&#8217;)\/channels(&#8216;19%3A786524f437c042b68bac5c0511ad6be2%40thread.skype&#8217;)\/messages\/$entity&#8221;,<\/div>\n<div>\u00a0\u00a0\u00a0\u00a0&#8220;id&#8221;:\u00a0&#8220;1584126765017&#8221;,<\/div>\n<div>\u00a0\u00a0\u00a0\u00a0&#8220;replyToId&#8221;:\u00a0null,<\/div>\n<div>\u00a0\u00a0\u00a0\u00a0&#8220;etag&#8221;:\u00a0&#8220;1584126765017&#8221;,<\/div>\n<div>\u00a0\u00a0\u00a0\u00a0&#8220;messageType&#8221;:\u00a0&#8220;message&#8221;,<\/div>\n<div>\u00a0\u00a0\u00a0\u00a0&#8220;createdDateTime&#8221;:\u00a0&#8220;2020-03-13T19:12:45.017Z&#8221;,<\/div>\n<div>\u00a0\u00a0\u00a0\u00a0&#8220;lastModifiedDateTime&#8221;:\u00a0null,<\/div>\n<div>\u00a0\u00a0\u00a0\u00a0&#8220;deletedDateTime&#8221;:\u00a0null,<\/div>\n<div>\u00a0\u00a0\u00a0\u00a0&#8220;subject&#8221;:\u00a0null,<\/div>\n<div>\u00a0\u00a0\u00a0\u00a0&#8220;summary&#8221;:\u00a0null,<\/div>\n<div>\u00a0\u00a0\u00a0\u00a0&#8220;importance&#8221;:\u00a0&#8220;normal&#8221;,<\/div>\n<div>\u00a0\u00a0\u00a0\u00a0&#8220;locale&#8221;:\u00a0&#8220;en-us&#8221;,<\/div>\n<div>\u00a0\u00a0\u00a0\u00a0&#8220;webUrl&#8221;:\u00a0&#8220;https:\/\/teams.microsoft.com\/l\/message\/19%3A786524f437c042b68bac5c0511ad6be2%40thread.skype\/1584126765017?groupId=bdb7bcda-9c3b-4341-b9a9-f52bf9a23407&amp;tenantId=72f988bf-86f1-41af-91ab-2d7cd011db47&amp;createdTime=1584126765017&amp;parentMessageId=1584126765017&#8221;,<\/div>\n<div>\u00a0\u00a0\u00a0\u00a0&#8220;policyViolation&#8221;:\u00a0null,<\/div>\n<div>\u00a0\u00a0\u00a0\u00a0&#8220;from&#8221;:\u00a0{<\/div>\n<div>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&#8220;application&#8221;:\u00a0null,<\/div>\n<div>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&#8220;device&#8221;:\u00a0null,<\/div>\n<div>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&#8220;conversation&#8221;:\u00a0null,<\/div>\n<div>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&#8220;user&#8221;:\u00a0{<\/div>\n<div>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&#8220;id&#8221;:\u00a0&#8220;\u2026&#8221;,<\/div>\n<div>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&#8220;displayName&#8221;:\u00a0&#8220;\u2026&#8221;,<\/div>\n<div>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&#8220;userIdentityType&#8221;:\u00a0&#8220;aadUser&#8221;<\/div>\n<div>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}<\/div>\n<div>\u00a0\u00a0\u00a0\u00a0},<\/div>\n<div>\u00a0\u00a0\u00a0\u00a0&#8220;body&#8221;:\u00a0{<\/div>\n<div>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&#8220;contentType&#8221;:\u00a0&#8220;html&#8221;,<\/div>\n<div>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&#8220;content&#8221;:\u00a0&#8220;&lt;div&gt;&lt;div&gt;Test&lt;\/div&gt;\\n\\n&lt;div&gt;&amp;nbsp;&lt;\/div&gt;\\n\\n&lt;div&gt;&lt;attachment\u00a0id=\\&#8221;8c984810e000471c80fe624a2755444f\\&#8221;&gt;&lt;\/attachment&gt;&lt;\/div&gt;\\n&lt;\/div&gt;&#8221;<\/div>\n<div>\u00a0\u00a0\u00a0\u00a0},<\/div>\n<div>\u00a0\u00a0\u00a0\u00a0&#8220;attachments&#8221;:\u00a0[<\/div>\n<div>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0{<\/div>\n<div>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&#8220;id&#8221;:\u00a0&#8220;8c984810e000471c80fe624a2755444f&#8221;,<\/div>\n<div>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&#8220;contentType&#8221;:\u00a0&#8220;application\/vnd.microsoft.card.codesnippet&#8221;,<\/div>\n<div>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&#8220;contentUrl&#8221;:\u00a0null,<\/div>\n<div>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&#8220;content&#8221;:\u00a0<strong>&#8220;{\\r\\n\u00a0\u202f\\&#8221;observers\\&#8221;:\u00a0[],\\r\\n\u00a0\u202f\\&#8221;type\\&#8221;:\u00a0\\&#8221;application\/vnd.microsoft.card.codesnippet\\&#8221;,\\r\\n\u00a0\u202f\\&#8221;cardButtons\\&#8221;:\u00a0[],\\r\\n\u00a0\u202f\\&#8221;tapButton\\&#8221;:\u00a0null,\\r\\n\u00a0\u202f\\&#8221;cardSender\\&#8221;:\u00a0null,\\r\\n\u00a0\u202f\\&#8221;replyChainId\\&#8221;:\u00a0\\&#8221;\\&#8221;,\\r\\n\u00a0\u202f\\&#8221;conversationId\\&#8221;:\u00a0\\&#8221;\\&#8221;,\\r\\n\u00a0\u202f\\&#8221;alwaysExpand\\&#8221;:\u00a0false,\\r\\n\u00a0\u202f\\&#8221;viewOnly\\&#8221;:\u00a0false,\\r\\n\u00a0\u202f\\&#8221;clientMessageId\\&#8221;:\u00a0\\&#8221;\\&#8221;,\\r\\n\u00a0\u202f\\&#8221;serverMessageId\\&#8221;:\u00a0\\&#8221;\\&#8221;,\\r\\n\u00a0\u202f\\&#8221;messageType\\&#8221;:\u00a0\\&#8221;\\&#8221;,\\r\\n\u00a0\u202f\\&#8221;isInputExtension\\&#8221;:\u00a0false,\\r\\n\u00a0\u202f\\&#8221;hasMentions\\&#8221;:\u00a0false,\\r\\n\u00a0\u202f\\&#8221;handler\\&#8221;:\u00a0\\&#8221;codeSnippetDialog_496bb293-6fa6-42c3-a2d8-521fcbd8afff\\&#8221;,\\r\\n\u00a0\u202f\\&#8221;editable\\&#8221;:\u00a0true,\\r\\n\u00a0\u202f\\&#8221;id\\&#8221;:\u00a0\\&#8221;8c984810e000471c80fe624a2755444f\\&#8221;,\\r\\n\u00a0\u202f\\&#8221;name\\&#8221;:\u00a0\\&#8221;\\&#8221;,\\r\\n\u00a0\u202f\\&#8221;language\\&#8221;:\u00a0\\&#8221;Text\\&#8221;,\\r\\n\u00a0\u202f\\&#8221;lines\\&#8221;:\u00a01,\\r\\n\u00a0\u202f\\&#8221;cardClientId\\&#8221;:\u00a0\\&#8221;8c984810e000471c80fe624a2755444f\\&#8221;,\\r\\n\u00a0\u202f\\&#8221;wrap\\&#8221;:\u00a0false,\\r\\n\u00a0\u202f\\&#8221;codeSnippetUrl\\&#8221;:\u00a0\\&#8221;https:\/\/graph.microsoft.com\/beta\/teams\/bdb7bcda-9c3b-4341-b9a9-f52bf9a23407\/channels\/19:786524f437c042b68bac5c0511ad6be2@thread.skype\/messages\/1584126765017\/hostedContents\/aWQ9MC1jdXMtZDEtOGM4MzUzZjkzNjkxNTc2ZjRmMjJlZTRmYTFlMDA3OTYsdHlwZT0wLHVybD0=\/$value\\&#8221;\\r\\n}&#8221;,<\/strong><\/div>\n<div>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&#8220;name&#8221;:\u00a0null,<\/div>\n<div>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&#8220;thumbnailUrl&#8221;:\u00a0null<\/div>\n<div>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}<\/div>\n<div>\u00a0\u00a0\u00a0\u00a0],<\/div>\n<div>\u00a0\u00a0\u00a0\u00a0&#8220;mentions&#8221;:\u00a0[],<\/div>\n<div>\u00a0\u00a0\u00a0\u00a0&#8220;reactions&#8221;:\u00a0[]<\/div>\n<div>}<\/div>\n<\/div>\n<\/blockquote>\n<p>Here&#8217;s what that bolded part looks like today when reformatted to be readable:<\/p>\n<blockquote>\n<div>\n<div>{<\/div>\n<div>\n<div>\u00a0\u00a0\u00a0\u00a0&#8220;name&#8221;:\u00a0&#8220;&#8221;,<\/div>\n<div>\u00a0\u00a0\u00a0\u00a0&#8220;language&#8221;:\u00a0&#8220;Text&#8221;,<\/div>\n<div>\u00a0\u00a0\u00a0\u00a0&#8220;lines&#8221;:\u00a08,<\/div>\n<div>\u00a0\u00a0\u00a0\u00a0&#8220;wrap&#8221;:\u00a0false,<\/div>\n<div>\u00a0\u00a0\u00a0\u00a0&#8220;codeSnippetUrl&#8221;: &#8220;https:\/\/graph.microsoft.com\/beta\/chats\/19:07ad17ad-ada5-4f1f-a650-7a963886a8a7_2de87aaf-844d-4def-9dee-2c317f0be1b3@unq.gbl.spaces\/messages\/1583878505774\/hostedContents\/aWQ9MC1jdXMtZDQtMmY0MTY0MmYwZmE1NGQ0MmYxMWY4Mjc3ZTk3NjA0YzAsdHlwZT0wLHVybD0=\/$value&#8221; ,<\/div>\n<p><strong>\u00a0\u00a0\u00a0\u00a0&#8220;observers&#8221;:\u00a0[],\u00a0\/\/\u00a0going\u00a0away<\/strong><\/p>\n<\/div>\n<div><strong>\u00a0\u00a0\u00a0\u00a0&#8220;type&#8221;:\u00a0&#8220;application\/vnd.microsoft.card.codesnippet&#8221;,\u00a0\/\/\u00a0going\u00a0away<\/strong><\/div>\n<div><strong>\u00a0\u00a0\u00a0\u00a0&#8220;cardButtons&#8221;:\u00a0[],\u00a0\/\/\u00a0going\u00a0away<\/strong><\/div>\n<div><strong>\u00a0\u00a0\u00a0\u00a0&#8220;tapButton&#8221;:\u00a0null,\u00a0\/\/\u00a0going\u00a0away<\/strong><\/div>\n<div><strong>\u00a0\u00a0\u00a0\u00a0&#8220;cardSender&#8221;:\u00a0null,\u00a0\/\/\u00a0going\u00a0away<\/strong><\/div>\n<div><strong>\u00a0\u00a0\u00a0\u00a0&#8220;replyChainId&#8221;:\u00a0&#8220;&#8221;,\u00a0\/\/\u00a0going\u00a0away<\/strong><\/div>\n<div><strong>\u00a0\u00a0\u00a0\u00a0&#8220;conversationId&#8221;:\u00a0&#8220;&#8221;,\u00a0\/\/\u00a0going\u00a0away<\/strong><\/div>\n<div><strong>\u00a0\u00a0\u00a0\u00a0&#8220;alwaysExpand&#8221;:\u00a0false,\u00a0\/\/\u00a0going\u00a0away<\/strong><\/div>\n<div><strong>\u00a0\u00a0\u00a0\u00a0&#8220;viewOnly&#8221;:\u00a0false,\u00a0\/\/\u00a0going\u00a0away<\/strong><\/div>\n<div><strong>\u00a0\u00a0\u00a0\u00a0&#8220;clientMessageId&#8221;:\u00a0&#8220;&#8221;,\u00a0\/\/\u00a0going\u00a0away<\/strong><\/div>\n<div><strong>\u00a0\u00a0\u00a0\u00a0&#8220;serverMessageId&#8221;:\u00a0&#8220;&#8221;,\u00a0\/\/\u00a0going\u00a0away<\/strong><\/div>\n<div><strong>\u00a0\u00a0\u00a0\u00a0&#8220;messageType&#8221;:\u00a0&#8220;&#8221;,\u00a0\/\/\u00a0going\u00a0away<\/strong><\/div>\n<div><strong>\u00a0\u00a0\u00a0\u00a0&#8220;isInputExtension&#8221;:\u00a0false,\u00a0\/\/\u00a0going\u00a0away<\/strong><\/div>\n<div><strong>\u00a0\u00a0\u00a0\u00a0&#8220;hasMentions&#8221;:\u00a0false,\u00a0\/\/\u00a0going\u00a0away<\/strong><\/div>\n<div><strong>\u00a0\u00a0\u00a0\u00a0&#8220;handler&#8221;:\u00a0&#8220;codeSnippetDialog_c4f35431-2b9b-4158-aef4-b377bdc82357&#8221;,\u00a0\/\/\u00a0going\u00a0away<\/strong><\/div>\n<div><strong>\u00a0\u00a0\u00a0\u00a0&#8220;editable&#8221;:\u00a0true,\u00a0\/\/\u00a0going\u00a0away<\/strong><\/div>\n<div><strong>\u00a0\u00a0\u00a0\u00a0&#8220;id&#8221;:\u00a0&#8220;ddd76144c464484ba8c1f42975cfe1ac&#8221;,\u00a0\/\/\u00a0going\u00a0away<\/strong><\/div>\n<div><strong>\u00a0\u00a0\u00a0\u00a0&#8220;cardClientId&#8221;: &#8220;ddd76144c464484ba8c1f42975cfe1ac&#8221;\u00a0 \/\/ going away<\/strong><\/div>\n<div>}<\/div>\n<\/div>\n<\/blockquote>\n<p>Here&#8217;s what it will look like after we remove the redundant fields:<\/p>\n<blockquote><p>{\n&#8220;name&#8221;: &#8220;&#8221;,\n&#8220;language&#8221;: &#8220;Text&#8221;,\n&#8220;lines&#8221;: 8,\n&#8220;wrap&#8221;: false,\n&#8220;codeSnippetUrl&#8221;: &#8220;<a href=\"https:\/\/graph.microsoft.com\/beta\/chats\/19:07ad17ad-ada5-4f1f-a650-7a963886a8a7_2de87aaf-844d-4def-9dee-2c317f0be1b3@unq.gbl.spaces\/messages\/1583878505774\/hostedContents\/aWQ9MC1jdXMtZDQtMmY0MTY0MmYwZmE1NGQ0MmYxMWY4Mjc3ZTk3NjA0YzAsdHlwZT0wLHVybD0=\/$value%22\">https:\/\/graph.microsoft.com\/beta\/chats\/19:07ad17ad-ada5-4f1f-a650-7a963886a8a7_2de87aaf-844d-4def-9dee-2c317f0be1b3@unq.gbl.spaces\/messages\/1583878505774\/hostedContents\/aWQ9MC1jdXMtZDQtMmY0MTY0MmYwZmE1NGQ0MmYxMWY4Mjc3ZTk3NjA0YzAsdHlwZT0wLHVybD0=\/$value&#8221;\n<\/a>}<\/p><\/blockquote>\n<h3>Tell us what you think<\/h3>\n<p>We welcome your feedback. If you have further questions, you can reach out to\u00a0us on\u00a0<a href=\"https:\/\/stackoverflow.com\/questions\/tagged\/microsoft-teams+microsoft-graph\">StackOverflow<\/a>.<\/p>\n<p>-Microsoft Teams<\/p>\n","protected":false},"excerpt":{"rendered":"<p>At the end of July, we will make breaking changes to the beta endpoint that include different permissions for app installations for a user and removing redundant data from code snippets inside chatMessages. APIs on the v1.0 endpoint will not be affected. <\/p>\n","protected":false},"author":69096,"featured_media":25159,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[3,128],"tags":[],"class_list":["post-4961","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-microsoft-graph","category-microsoft-teams"],"acf":[],"blog_post_summary":"<p>At the end of July, we will make breaking changes to the beta endpoint that include different permissions for app installations for a user and removing redundant data from code snippets inside chatMessages. APIs on the v1.0 endpoint will not be affected. <\/p>\n","_links":{"self":[{"href":"https:\/\/devblogs.microsoft.com\/microsoft365dev\/wp-json\/wp\/v2\/posts\/4961","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\/69096"}],"replies":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/microsoft365dev\/wp-json\/wp\/v2\/comments?post=4961"}],"version-history":[{"count":0,"href":"https:\/\/devblogs.microsoft.com\/microsoft365dev\/wp-json\/wp\/v2\/posts\/4961\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/microsoft365dev\/wp-json\/wp\/v2\/media\/25159"}],"wp:attachment":[{"href":"https:\/\/devblogs.microsoft.com\/microsoft365dev\/wp-json\/wp\/v2\/media?parent=4961"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/microsoft365dev\/wp-json\/wp\/v2\/categories?post=4961"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/microsoft365dev\/wp-json\/wp\/v2\/tags?post=4961"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}