{"id":5161,"date":"2020-08-05T14:34:27","date_gmt":"2020-08-05T22:34:27","guid":{"rendered":"https:\/\/officedevblogs.wpengine.com\/?p=5161"},"modified":"2020-08-05T14:34:27","modified_gmt":"2020-08-05T22:34:27","slug":"announcing-general-availability-of-single-sign-on-sso-for-office-add-ins","status":"publish","type":"post","link":"https:\/\/devblogs.microsoft.com\/microsoft365dev\/announcing-general-availability-of-single-sign-on-sso-for-office-add-ins\/","title":{"rendered":"Announcing General Availability of Single Sign-On (SSO) for Office Add-ins"},"content":{"rendered":"<p><span data-contrast=\"auto\">W<\/span><span data-contrast=\"auto\">e are\u00a0<\/span><span data-contrast=\"auto\">excited\u00a0<\/span><span data-contrast=\"auto\">to announce that the\u00a0<\/span><span data-contrast=\"auto\">single sign<\/span><span data-contrast=\"auto\">-on (SSO) functionality\u00a0<\/span><span data-contrast=\"auto\">for<\/span><span data-contrast=\"auto\">\u00a0Office Add-ins is\u00a0<\/span><span data-contrast=\"auto\">moving<\/span><span data-contrast=\"auto\"> to General Availabili<\/span><span data-contrast=\"auto\">ty\u00a0<\/span><span data-contrast=\"auto\">with<\/span><span data-contrast=\"auto\">\u00a0<\/span><span data-contrast=\"auto\">version\u00a0<\/span><span data-contrast=\"auto\">200<\/span><span data-contrast=\"auto\">8<\/span><span data-contrast=\"auto\">.\u00a0<\/span><span data-contrast=\"auto\">This\u00a0<\/span><span data-contrast=\"auto\">authentication service\u00a0<\/span><span data-contrast=\"auto\">allows an add-in to\u00a0<\/span><span data-contrast=\"auto\">automatically\u00a0<\/span><span data-contrast=\"auto\">and securely\u00a0<\/span><span data-contrast=\"auto\">sign<\/span><span data-contrast=\"auto\">\u00a0in<\/span><span data-contrast=\"auto\">\u00a0a user<\/span><span data-contrast=\"auto\">\u00a0after\u00a0<\/span><span data-contrast=\"auto\">being\u00a0<\/span><span data-contrast=\"auto\">granted consen<\/span><span data-contrast=\"auto\">t<\/span><span data-contrast=\"auto\">, providing a\u00a0<\/span><span data-contrast=\"auto\">more convenient\u00a0<\/span><span data-contrast=\"auto\">experience\u00a0<\/span><span data-contrast=\"auto\">by reducing the number of times\u00a0<\/span><span data-contrast=\"auto\">they are requested to\u00a0<\/span><span data-contrast=\"auto\">sign\u00a0<\/span><span data-contrast=\"auto\">in<\/span><span data-contrast=\"auto\">.<\/span><span data-contrast=\"auto\">\u00a0SSO works with both work and school accounts as well as Microsoft accounts.<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259,&quot;469777462&quot;:[1390],&quot;469777927&quot;:[0],&quot;469777928&quot;:[1]}\">\u00a0<\/span><\/p>\n<h3><span data-contrast=\"none\">Updates<\/span><span data-contrast=\"none\">\u00a0from the preview\u00a0<\/span><span data-contrast=\"none\">offering<\/span><span data-contrast=\"none\">\u00a0<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559738&quot;:240,&quot;335559739&quot;:0,&quot;335559740&quot;:259}\">\u00a0<\/span><\/h3>\n<p><span data-contrast=\"auto\">T<\/span><span data-contrast=\"auto\">here are\u00a0<\/span><span data-contrast=\"auto\">a<\/span><span data-contrast=\"auto\">\u00a0few\u00a0<\/span><span data-contrast=\"auto\">change<\/span><span data-contrast=\"auto\">s<\/span><span data-contrast=\"auto\">\u00a0from the<\/span><span data-contrast=\"auto\">\u00a0current<\/span><span data-contrast=\"auto\">\u00a0preview offering.<\/span><span data-contrast=\"auto\">\u00a0<\/span><span data-contrast=\"auto\">Specifically,<\/span><span data-contrast=\"auto\">\u00a0validations<\/span><span data-contrast=\"auto\">\u00a0occur<\/span><span data-contrast=\"auto\">\u00a0when an add-in is submitted to AppSource\u00a0<\/span><span data-contrast=\"auto\">to make sure that the manifest is correctly formatted. Th<\/span><span data-contrast=\"auto\">is<\/span><span data-contrast=\"auto\">\u00a0validation\u00a0<\/span><span data-contrast=\"auto\">verifies\u00a0<\/span><span data-contrast=\"auto\">that:\u00a0<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}\">\u00a0<\/span><\/p>\n<ul>\n<li><span data-contrast=\"auto\">The\u00a0<\/span><span data-contrast=\"auto\">Application ID is\u00a0<\/span><span data-contrast=\"auto\">an appropriately formatted\u00a0<\/span><span data-contrast=\"auto\">GUID.<\/span><span data-ccp-props=\"{&quot;134233279&quot;:true,&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}\">\u00a0<\/span><\/li>\n<li><span data-contrast=\"auto\">The Resource\u00a0<\/span><span data-contrast=\"auto\">URI is\u00a0<\/span><span data-contrast=\"auto\">appropriately formatted<\/span><span data-contrast=\"auto\">, as seen in th<\/span><span data-contrast=\"auto\">is<\/span><span data-contrast=\"auto\">\u00a0<\/span><span data-contrast=\"auto\">example:<\/span>\n<span data-contrast=\"auto\">\u00a0\u00a0\u00a0<\/span><span data-contrast=\"auto\">{<\/span><span data-contrast=\"auto\">https|api<\/span><span data-contrast=\"auto\">}:\/\/add-<\/span><span data-contrast=\"auto\">in_fully_qualified_domain_name<\/span><span data-contrast=\"auto\">\/<\/span><span data-contrast=\"auto\">AppID_GUID<\/span>\n<span data-contrast=\"auto\">w<\/span><span data-contrast=\"auto\">here\u00a0<\/span><span data-contrast=\"auto\">AppID_GUID<\/span><span data-contrast=\"auto\">\u00a0matches the GUID from your App registration in Azure AD.<\/span><span data-ccp-props=\"{&quot;134233279&quot;:true,&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}\">\u00a0<\/span><\/li>\n<li><span data-contrast=\"auto\">The Resource URI\u00a0<\/span><span data-contrast=\"auto\">does not<\/span><span data-contrast=\"auto\">\u00a0contain Unicode\u00a0<\/span><span data-contrast=\"auto\">characters.<\/span><span data-ccp-props=\"{&quot;134233279&quot;:true,&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}\">\u00a0<\/span><\/li>\n<li><span data-contrast=\"auto\">The\u00a0<\/span><span data-contrast=\"auto\">minimum<\/span><span data-contrast=\"auto\">\u00a0required<\/span><span data-contrast=\"auto\">\u00a0scopes are\u00a0<\/span><span data-contrast=\"auto\">listed in the<\/span><span data-contrast=\"auto\">\u00a0Scopes section<\/span><span data-contrast=\"auto\">,\u00a0<\/span><span data-contrast=\"auto\">openID<\/span><span data-contrast=\"auto\">,<\/span><span data-contrast=\"auto\">\u00a0and profil<\/span><span data-contrast=\"auto\">e<\/span><span data-contrast=\"auto\">.<\/span><span data-ccp-props=\"{&quot;134233279&quot;:true,&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}\">\u00a0<\/span><\/li>\n<\/ul>\n<p><span data-contrast=\"auto\">An add-in will be rejected from AppSource if it doe<\/span><span data-contrast=\"auto\">s\u00a0<\/span><span data-contrast=\"auto\">n<\/span><span data-contrast=\"auto\">o<\/span><span data-contrast=\"auto\">t meet\u00a0<\/span><span data-contrast=\"auto\">this<\/span><span data-contrast=\"auto\">\u00a0criteria<\/span><span data-contrast=\"auto\">, and\u00a0<\/span><span data-contrast=\"auto\">AppSource<\/span><span data-contrast=\"auto\">\u00a0will respond to the\u00a0<\/span><span data-contrast=\"auto\">developer\u00a0<\/span><span data-contrast=\"auto\">with the<\/span><span data-contrast=\"auto\">\u00a0reasons why and given documentation how to fix it<\/span><span data-contrast=\"auto\">.<\/span><span data-contrast=\"auto\">\u00a0<\/span><b><span data-contrast=\"auto\">Submission<\/span><\/b><b><span data-contrast=\"auto\">\u00a0of a<\/span><\/b><b><span data-contrast=\"auto\">n<\/span><\/b><b><span data-contrast=\"auto\">\u00a0SSO enabled add-in<\/span><\/b><b><span data-contrast=\"auto\">\u00a0to AppSource will be accepted\u00a0<\/span><\/b><b><span data-contrast=\"auto\">beginning<\/span><\/b><b><span data-contrast=\"auto\">\u00a0<\/span><\/b><b><span data-contrast=\"auto\">Monday<\/span><\/b><b><span data-contrast=\"auto\">\u00a0August\u00a0<\/span><\/b><b><span data-contrast=\"auto\">2<\/span><\/b><b><span data-contrast=\"auto\">4, 2020.<\/span><\/b><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\">The requirement set for\u00a0<\/span><span data-contrast=\"auto\">SSO, the\u00a0<\/span><a href=\"https:\/\/docs.microsoft.com\/en-us\/office\/dev\/add-ins\/reference\/requirement-sets\/identity-api-requirement-sets\"><span data-contrast=\"none\">IdentityAPI<\/span><span data-contrast=\"none\">\u00a0requirement set<\/span><\/a><span data-contrast=\"auto\">,\u00a0<\/span><span data-contrast=\"auto\">will be version\u00a0<\/span><span data-contrast=\"auto\">incremented for GA to version\u00a0<\/span><span data-contrast=\"auto\">1.3.\u00a0<\/span><span data-contrast=\"auto\">Add-ins declaring a requirement set version of the\u00a0<\/span><span data-contrast=\"auto\">IdentityAPI<\/span><span data-contrast=\"auto\">\u00a0that is less than 1.3 will not be able to use SSO after version 2008 reaches the Current\u00a0<\/span><span data-contrast=\"auto\">C<\/span><span data-contrast=\"auto\">hannel<\/span><span data-contrast=\"auto\">.\u00a0<\/span><span data-contrast=\"auto\">IdentityAPI<\/span><span data-contrast=\"auto\">\u00a01.3 is the only supported version.<\/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<\/span><span data-contrast=\"auto\">\u00a0new<\/span><span data-contrast=\"auto\">\u00a0client ID has been added<\/span><span data-contrast=\"auto\">\u00a0that service<\/span><span data-contrast=\"auto\">s<\/span><span data-contrast=\"auto\">\u00a0will be required to preauthorize<\/span><span data-contrast=\"auto\">. If you tried SSO during the preview phase, make sure to add it to your existing application registration in Azure AD. You can find all the client ID\u00a0<\/span><span data-contrast=\"auto\">preauthorizations<\/span><span data-contrast=\"auto\">\u00a0required in our\u00a0<\/span><a href=\"https:\/\/docs.microsoft.com\/en-us\/office\/dev\/add-ins\/develop\/register-sso-add-in-aad-v2\"><span data-contrast=\"none\">documentation<\/span><\/a><span data-contrast=\"auto\">.<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}\">\u00a0<\/span><\/p>\n<h3><span data-contrast=\"none\">S<\/span><span data-contrast=\"none\">ingle\u00a0<\/span><span data-contrast=\"none\">sign<\/span><span data-contrast=\"none\">&#8211;<\/span><span data-contrast=\"none\">o<\/span><span data-contrast=\"none\">n\u00a0<\/span><span data-contrast=\"none\">best practices<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559738&quot;:240,&quot;335559739&quot;:0,&quot;335559740&quot;:259}\">\u00a0<\/span><\/h3>\n<p><span data-contrast=\"auto\">There are some additional best practices that\u00a0<\/span><span data-contrast=\"auto\">developers should follow when enabling SSO in an add-<\/span><span data-contrast=\"auto\">in<\/span><span data-contrast=\"auto\">.<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}\">\u00a0<\/span><\/p>\n<ul>\n<li><span data-contrast=\"auto\">Ensure the add-in has<\/span><span data-contrast=\"auto\">\u00a0a fallback method to sign in a user in case<\/span><span data-contrast=\"auto\">\u00a0an issue is encountered with\u00a0<\/span><span data-contrast=\"auto\">SSO<\/span><span data-contrast=\"auto\">.<\/span><span data-contrast=\"auto\">\u00a0<\/span><span data-contrast=\"auto\">Y<\/span><span data-contrast=\"auto\">ou can find additional details in our\u00a0<\/span><span data-contrast=\"auto\">documentation<\/span><span data-contrast=\"auto\">\u00a0<\/span><span data-contrast=\"auto\">as it can vary by scenario and host<\/span><span data-contrast=\"auto\">.<\/span><span data-ccp-props=\"{&quot;134233279&quot;:true,&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}\">\u00a0<\/span><\/li>\n<li><span data-contrast=\"auto\">If\u00a0<\/span><span data-contrast=\"auto\">the add-in\u00a0<\/span><span data-contrast=\"auto\">access<\/span><span data-contrast=\"auto\">es<\/span><span data-contrast=\"auto\">\u00a0<\/span><span data-contrast=\"auto\">data with\u00a0<\/span><span data-contrast=\"auto\">Microsoft Graph<\/span><span data-contrast=\"auto\">,<\/span><span data-contrast=\"auto\">\u00a0<\/span><span data-contrast=\"auto\">be<\/span><span data-contrast=\"auto\">\u00a0sure\u00a0<\/span><span data-contrast=\"auto\">to<\/span><span data-contrast=\"auto\">\u00a0<\/span><span data-contrast=\"auto\">use\u00a0<\/span><span data-contrast=\"auto\">the\u00a0<\/span><a href=\"https:\/\/docs.microsoft.com\/en-us\/javascript\/api\/office-runtime\/officeruntime.authoptions?view=word-js-preview\"><span data-contrast=\"none\">\u2018<\/span><span data-contrast=\"none\">forMSGraph<\/span><span data-contrast=\"none\">\u2019 property in the\u00a0<\/span><span data-contrast=\"none\">AuthOptions<\/span><\/a><span data-contrast=\"auto\">.\u00a0<\/span><span data-contrast=\"auto\">This<\/span><span data-contrast=\"auto\">\u00a0<\/span><span data-contrast=\"auto\">allows Office to\u00a0<\/span><span data-contrast=\"auto\">return<\/span><span data-contrast=\"auto\">\u00a0<\/span><span data-contrast=\"auto\">immediately\u00a0<\/span><span data-contrast=\"auto\">i<\/span><span data-contrast=\"auto\">f you are on a host that\u00a0<\/span><span data-contrast=\"auto\">doesn\u2019t<\/span><span data-contrast=\"auto\">\u00a0support SSO\u00a0<\/span><span data-contrast=\"auto\">or<\/span><span data-contrast=\"auto\">\u00a0if the\u00a0<\/span><span data-contrast=\"auto\">add-in wasn\u2019t\u00a0<\/span><span data-contrast=\"auto\">deployed via centralized deployment<\/span><span data-contrast=\"auto\">\u00a0and consent to Microsoft Graph hasn\u2019t been granted yet<\/span><span data-contrast=\"auto\">. In these scenarios<\/span><span data-contrast=\"auto\">,<\/span><span data-contrast=\"auto\">\u00a0the\u00a0<\/span><span data-contrast=\"auto\">backup<\/span><span data-contrast=\"auto\">\u00a0auth<\/span><span data-contrast=\"auto\">entication<\/span><span data-contrast=\"auto\">\u00a0method is used<\/span><span data-contrast=\"auto\">\u00a0immediately<\/span><span data-contrast=\"auto\">\u00a0instead of waiting for\u00a0<\/span><span data-contrast=\"auto\">the initial SSO call\u00a0<\/span><span data-contrast=\"auto\">to return with an error<\/span><span data-contrast=\"auto\">.\u00a0<\/span><span data-ccp-props=\"{&quot;134233279&quot;:true,&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}\">\u00a0<\/span><\/li>\n<li><span data-contrast=\"auto\">Always ask for the least amount of privilege<\/span><span data-contrast=\"auto\">\u00a0when requesting scopes.<\/span><span data-ccp-props=\"{&quot;134233279&quot;:true,&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}\">\u00a0<\/span><\/li>\n<li><span data-contrast=\"auto\">Make sure<\/span><span data-contrast=\"auto\">\u00a0to preauth<\/span><span data-contrast=\"auto\">orize\u00a0<\/span><span data-contrast=\"auto\">the\u00a0<\/span><span data-contrast=\"auto\">required\u00a0<\/span><span data-contrast=\"auto\">client IDs<\/span><span data-contrast=\"auto\">.\u00a0<\/span><span data-contrast=\"auto\">Currently,<\/span><span data-contrast=\"auto\">\u00a0there are 5<\/span><span data-contrast=\"auto\">, but<\/span><span data-contrast=\"auto\">\u00a0additional IDs may be added in the future to enable new\u00a0<\/span><span data-contrast=\"auto\">functionality<\/span><span data-contrast=\"auto\">.<\/span><span data-contrast=\"auto\">\u00a0<\/span><a href=\"https:\/\/docs.microsoft.com\/en-us\/office\/dev\/add-ins\/develop\/register-sso-add-in-aad-v2\"><span data-contrast=\"none\">You can find the full list in our documentation.<\/span><\/a><span data-contrast=\"auto\">\u00a0<\/span><span data-ccp-props=\"{&quot;134233279&quot;:true,&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}\">\u00a0<\/span><\/li>\n<\/ul>\n<h3><span data-contrast=\"none\">Getting started<\/span><span data-contrast=\"none\">\u00a0using SSO in your\u00a0<\/span><span data-contrast=\"none\">add-ins<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559738&quot;:240,&quot;335559739&quot;:0,&quot;335559740&quot;:259}\">\u00a0<\/span><\/h3>\n<p><span data-contrast=\"auto\">We\u00a0<\/span><span data-contrast=\"auto\">can\u2019t<\/span><span data-contrast=\"auto\">\u00a0wait to see what add-ins take advantage of SSO with this new capability. There are multiple resources for getting started, including<\/span><span data-contrast=\"auto\">\u00a0<\/span><span data-contrast=\"auto\">samples for\u00a0<\/span><span data-contrast=\"auto\">creating SSO enabled add-ins\u00a0<\/span><span data-contrast=\"auto\">with\u00a0<\/span><a href=\"https:\/\/docs.microsoft.com\/en-us\/office\/dev\/add-ins\/develop\/create-sso-office-add-ins-aspnet\"><span data-contrast=\"none\">ASP.NET<\/span><\/a><span data-contrast=\"auto\">\u00a0and\u00a0<\/span><a href=\"https:\/\/docs.microsoft.com\/en-us\/office\/dev\/add-ins\/develop\/create-sso-office-add-ins-nodejs\"><span data-contrast=\"none\">Node.js<\/span><\/a><span data-contrast=\"auto\">,\u00a0<\/span><span data-contrast=\"auto\">as well as<\/span><span data-contrast=\"auto\">\u00a0a\u00a0<\/span><a href=\"https:\/\/docs.microsoft.com\/en-us\/office\/dev\/add-ins\/quickstarts\/sso-quickstart\"><span data-contrast=\"none\">quick<\/span><span data-contrast=\"none\">\u00a0<\/span><span data-contrast=\"none\">start<\/span><\/a><span data-contrast=\"auto\">\u00a0that\u00a0<\/span><span data-contrast=\"auto\">uses<\/span><span data-contrast=\"auto\">\u00a0the Yeoman Office Add-in\u00a0<\/span><span data-contrast=\"auto\">tooling<\/span><span data-contrast=\"auto\">\u00a0and\u00a0<\/span><span data-contrast=\"auto\">can\u00a0<\/span><span data-contrast=\"auto\">automatically\u00a0<\/span><span data-contrast=\"auto\">register\u00a0<\/span><span data-contrast=\"auto\">you<\/span><span data-contrast=\"auto\">r<\/span><span data-contrast=\"auto\">\u00a0app in Azure<\/span><span data-contrast=\"auto\">. We look forward to seeing the\u00a0<\/span><span data-contrast=\"auto\">SSO enabled\u00a0<\/span><span data-contrast=\"auto\">add-ins you create<\/span><span data-contrast=\"auto\">!<\/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\u00a0excited\u00a0to announce that the\u00a0single sign-on (SSO) functionality\u00a0for\u00a0Office Add-ins is\u00a0moving to General Availability\u00a0with\u00a0version\u00a02008.\u00a0This\u00a0authentication service\u00a0allows an add-in to\u00a0automatically\u00a0and securely\u00a0sign\u00a0in\u00a0a user\u00a0after\u00a0being\u00a0granted consent, providing a\u00a0more convenient\u00a0experience\u00a0by reducing the number of times\u00a0they are requested to\u00a0sign\u00a0in.\u00a0SSO works with both work and school accounts as well as Microsoft accounts.\u00a0<\/p>\n","protected":false},"author":69076,"featured_media":25159,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[11],"tags":[132,64,43],"class_list":["post-5161","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-office-add-ins","tag-add-ins","tag-appsource","tag-sso"],"acf":[],"blog_post_summary":"<p>We are\u00a0excited\u00a0to announce that the\u00a0single sign-on (SSO) functionality\u00a0for\u00a0Office Add-ins is\u00a0moving to General Availability\u00a0with\u00a0version\u00a02008.\u00a0This\u00a0authentication service\u00a0allows an add-in to\u00a0automatically\u00a0and securely\u00a0sign\u00a0in\u00a0a user\u00a0after\u00a0being\u00a0granted consent, providing a\u00a0more convenient\u00a0experience\u00a0by reducing the number of times\u00a0they are requested to\u00a0sign\u00a0in.\u00a0SSO works with both work and school accounts as well as Microsoft accounts.\u00a0<\/p>\n","_links":{"self":[{"href":"https:\/\/devblogs.microsoft.com\/microsoft365dev\/wp-json\/wp\/v2\/posts\/5161","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\/69076"}],"replies":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/microsoft365dev\/wp-json\/wp\/v2\/comments?post=5161"}],"version-history":[{"count":0,"href":"https:\/\/devblogs.microsoft.com\/microsoft365dev\/wp-json\/wp\/v2\/posts\/5161\/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=5161"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/microsoft365dev\/wp-json\/wp\/v2\/categories?post=5161"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/microsoft365dev\/wp-json\/wp\/v2\/tags?post=5161"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}