{"id":283,"date":"2021-11-09T02:32:40","date_gmt":"2021-11-08T13:32:40","guid":{"rendered":"https:\/\/www.howdoiuseacomputer.com\/?p=283"},"modified":"2022-02-01T00:27:00","modified_gmt":"2022-01-31T11:27:00","slug":"runbook-sync-shared-mailbox-accounts-with-an-azure-ad-group","status":"publish","type":"post","link":"https:\/\/www.howdoiuseacomputer.com\/index.php\/2021\/11\/09\/runbook-sync-shared-mailbox-accounts-with-an-azure-ad-group\/","title":{"rendered":"Runbook: Sync Shared Mailbox accounts with an Azure AD Group"},"content":{"rendered":"\n<p><strong>Hey!  I hope you are well..  <\/strong>&#x1f918; &#x1f642; &#x1f918;.  This script was a result of the following ponderings:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>How to monitor and manage the deletion of Blocked (Disabled) and Guest accounts in Azure AD.<\/li><li>I have a Dynamic group for &#8216;Blocked (Disabled) users&#8217;, but members include valid Shared Mailbox accounts.<\/li><li>What about Guest users&#8230; should I just leave them? &#x1f923;  <\/li><\/ul>\n\n\n\n<p><strong>Noooo, I shouldn&#8217;t&#8230; <\/strong>paying monthly subscriptions it&#8217;s important to stay on top of user account maintenance.  There are some reports and sorting you can do, and Power BI, Graph etc, but I wanted to script something!!  In my usual non-perfect PowerShell way of course, but hey it gets the job done. <\/p>\n\n\n\n<p><strong>The Guest users are <\/strong>easy to group using a Azure AD Dynamic Security group with this Rule Syntax:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>(user.userType -eq \"Guest\") and (user.accountEnabled -eq true)<\/code><\/pre>\n\n\n\n<p><strong>Sweet!  <\/strong>My Blocked (or Disabled) users group is Dynamic as well, using this syntax:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>(user.accountEnabled -ne true) and (user.surname -ne \"Shared_Mailbox\")<\/code><\/pre>\n\n\n\n<p><strong>I&#8217;ve only just added<\/strong> (user.surname -ne &#8220;Shared_Mailbox&#8221;) &#8211; the script sets that attribute when it adds an account to the Shared Mailbox group, so that the accounts are excluded from the Dynamic Bocked Users group.  Cool now I can actually review the blocked users knowing my Shared Mailbox accounts are safe!<\/p>\n\n\n\n<p>I could also use <strong>Conditional Access policies <\/strong>to increase the security of those accounts!<\/p>\n\n\n\n<p><strong>Here is the script&#8230;<\/strong> you need to have an Automation account with credential set up (this can be a Synced AD or cloud account that has &#8216;Exchange Recipient&#8217; and &#8216;Group Administrator&#8217; roles assigned.  Make sure you have imported the AzureAD and ExchangeOnlineManagement modules into the Automation account, and have created the Azure AD Group (set the group to &#8216;Assigned&#8217; membership rather than &#8216;Dynamic&#8217;).  From Azure AD navigate to Groups, search for your group and click on it.  You will be able to copy the Object ID from here:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"732\" height=\"86\" src=\"https:\/\/www.howdoiuseacomputer.com\/wp-content\/uploads\/2021\/11\/image.png\" alt=\"\" class=\"wp-image-288\" srcset=\"https:\/\/www.howdoiuseacomputer.com\/wp-content\/uploads\/2021\/11\/image.png 732w, https:\/\/www.howdoiuseacomputer.com\/wp-content\/uploads\/2021\/11\/image-300x35.png 300w\" sizes=\"(max-width: 732px) 100vw, 732px\" \/><\/figure>\n\n\n\n<p>Enter that for <strong>$sharedmailboxgroupid<\/strong> and the &#8216;Name&#8217; of your Automation account credential as  <strong>$runbookcredentialname<\/strong>.  That&#8217;s it &#8211; give it a good testing and whack eem into production mate! <\/p>\n\n\n\n<p>(NB &#8211; following all relevant change control precedures of course!)<\/p>\n\n\n\n<p>See below the code for how the output looks in the Runbook logs&#8230; great for troubleshooting!<\/p>\n\n\n\n<p> See ya! &#x1f37a;<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># use TLS 1.2\n&#91;Net.ServicePointManager]::SecurityProtocol = &#91;Net.SecurityProtocolType]::Tls12\n\n# Sync shared mailbox accounts with an Azure AD group - Simon Burbery - November 2021\n# Update variables with the name of your runbook credential and the Azure AD Object ID displayed on the groups overview page in the AAD portal.\n\n# set variables\n$runbookcredentialname = 'svc_runbookcredential'\n$sharedmailboxgroupid = '12345678-abcd-4321-0987-665544332211'\n\n# get credential for connections\nTry { \n    $CredAzure = Get-AutomationPSCredential -Name $runbookcredentialname\n}\n        Catch {\n            Write-Error \"Failed to get credential!\"\n            Exit\n        }   \nWrite-Output \"Get automation credential - Success\"\n\n# connect Azure AD\nTry {\n    Connect-AzureAD -Credential $CredAzure | Out-Null\n}\n        Catch {    \n            Write-Error \"Failed to connect to Azure AD!\"\n            Exit\n        }\nWrite-Output \"Connect to Azure AD - Success\"\n\n# connect EOL\nTry {\n    Connect-ExchangeOnline -Credential $CredAzure\n}\n        Catch {    \n            Write-Error \"Failed to connect to EOL!\"\n            Exit\n        }\nWrite-Output \"Connect to EOL - Success\"\n\n# get group name\n$groupname = (Get-AzureADGroup -ObjectId $sharedmailboxgroupid).DisplayName\n\n# get all shared mailboxes and group members\nWrite-Output \"Enumerating Shared Mailbox accounts and $groupname membership...\"\nTry {\n    $sharedmailboxaccounts = Get-Mailbox -ResultSize Unlimited | Where-Object { $_.RecipientTypeDetails -eq 'SharedMailbox' } | select ExternalDirectoryObjectID,UserPrincipalName\n    $currentgroupmembers = Get-AzureADGroupMember -All $true -ObjectId $sharedmailboxgroupid | select ObjectID,UserPrincipalName\n}\n        Catch {    \n            Write-Error \"Failed to enumerate Shared Mailbox accounts or $groupname membership!\"\n            Exit\n        }\nWrite-Output \"Enumerate Shared Mailbox accounts and $groupname membership - Success\"\n\n# remove any members that are no longer shared mailboxes\nWrite-Output \"Verify $groupname membership...\"\nTry {\n    foreach ( $groupmember in $currentgroupmembers ) {\n        $groupmemberid = $groupmember.ObjectID\n        $groupmemberupn = $groupmember.UserPrincipalName\n        $checkmember = ( $sharedmailboxaccounts.ExternalDirectoryObjectId -contains $groupmemberid )\n            If ( $checkmember -ne 'True' ) {\n                Write-Output \"Shared Mailbox not found - removing $groupmemberupn from $groupname...\"\n                Remove-AzureADGroupMember -ObjectId $sharedmailboxgroupid -MemberId $groupmemberid\n                Set-AzureADUser -ObjectId $groupmemberid -Surname 'Disabled User'\n            }\n                Else {\n                    Write-Output \"Shared Mailbox found - skipping $groupmemberupn\"\n                }\n    }\n}\n        Catch {    \n            Write-Error \"Error while removing accounts from group!\"\n            Exit\n        }\nWrite-Output \"Verify $groupname membership - Success\"\n\n# add new shared mailbox accounts to Azure AD group\nWrite-Output \"Checking for new Shared Mailboxes...\"\nTry {\n    foreach ( $sharedmailboxaccount in $sharedmailboxaccounts ) {\n        $sharedmailboxaccountid = $sharedmailboxaccount.ExternalDirectoryObjectId\n        $sharedmailboxaccountupn = $sharedmailboxaccount.UserPrincipalName\n        $checkmembersm = ( $currentgroupmembers.ObjectID -contains $sharedmailboxaccountid )\n            If ( $checkmembersm -ne 'True' ) {\n                Write-Output \"New Shared Mailbox - adding $sharedmailboxaccountupn to $groupname...\"\n                Add-AzureADGroupMember -ObjectId $sharedmailboxgroupid -RefObjectId $sharedmailboxaccountid\n                Set-AzureADUser -ObjectId $sharedmailboxaccountid -Surname 'Shared_Mailbox'\n            }\n                else {\n                    Write-Output \"Skipping Shared Mailbox $sharedmailboxaccountupn\"\n                }\n    }\n}\n        Catch {    \n            Write-Error \"Error while adding accounts to group!\"\n            Exit\n        }\nWrite-Output \"Check for new Shared Mailboxes - Success\"\n\n# clean up\nDisconnect-ExchangeOnline -Confirm:$false\nDisconnect-AzureAD -Confirm:$false\n\n# end\n<\/code><\/pre>\n\n\n\n<p>And here is what I really like about using Runbooks &#8211; the output from the script is available to go back and look at when failures occur etc.  Nice!<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1096\" height=\"728\" src=\"https:\/\/www.howdoiuseacomputer.com\/wp-content\/uploads\/2021\/11\/image-1.png\" alt=\"\" class=\"wp-image-292\" srcset=\"https:\/\/www.howdoiuseacomputer.com\/wp-content\/uploads\/2021\/11\/image-1.png 1096w, https:\/\/www.howdoiuseacomputer.com\/wp-content\/uploads\/2021\/11\/image-1-300x199.png 300w, https:\/\/www.howdoiuseacomputer.com\/wp-content\/uploads\/2021\/11\/image-1-768x510.png 768w\" sizes=\"(max-width: 1096px) 100vw, 1096px\" \/><\/figure>\n<div class=\"pvc_clear\"><\/div><p id=\"pvc_stats_283\" class=\"pvc_stats all  \" data-element-id=\"283\" style=\"\"><i class=\"pvc-stats-icon small\" aria-hidden=\"true\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" version=\"1.0\" viewBox=\"0 0 502 315\" preserveAspectRatio=\"xMidYMid meet\"><g transform=\"translate(0,332) scale(0.1,-0.1)\" fill=\"\" stroke=\"none\"><path d=\"M2394 3279 l-29 -30 -3 -207 c-2 -182 0 -211 15 -242 39 -76 157 -76 196 0 15 31 17 60 15 243 l-3 209 -33 29 c-26 23 -41 29 -80 29 -41 0 -53 -5 -78 -31z\"\/><path d=\"M3085 3251 c-45 -19 -58 -50 -96 -229 -47 -217 -49 -260 -13 -295 52 -53 146 -42 177 20 16 31 87 366 87 410 0 70 -86 122 -155 94z\"\/><path d=\"M1751 3234 c-13 -9 -29 -31 -37 -50 -12 -29 -10 -49 21 -204 19 -94 39 -189 45 -210 14 -50 54 -80 110 -80 34 0 48 6 76 34 21 21 34 44 34 59 0 14 -18 113 -40 219 -37 178 -43 195 -70 221 -36 32 -101 37 -139 11z\"\/><path d=\"M1163 3073 c-36 -7 -73 -59 -73 -102 0 -56 133 -378 171 -413 34 -32 83 -37 129 -13 70 36 67 87 -16 290 -86 209 -89 214 -129 231 -35 14 -42 15 -82 7z\"\/><path d=\"M3689 3066 c-15 -9 -33 -30 -42 -48 -48 -103 -147 -355 -147 -375 0 -98 131 -148 192 -74 13 15 57 108 97 206 80 196 84 226 37 273 -30 30 -99 39 -137 18z\"\/><path d=\"M583 2784 c-38 -19 -67 -74 -58 -113 9 -42 211 -354 242 -373 16 -10 45 -18 66 -18 51 0 107 52 107 100 0 39 -1 41 -124 234 -80 126 -108 162 -133 173 -41 17 -61 16 -100 -3z\"\/><path d=\"M4250 2784 c-14 -9 -74 -91 -133 -183 -95 -150 -107 -173 -107 -213 0 -55 33 -94 87 -104 67 -13 90 8 211 198 130 202 137 225 78 284 -27 27 -42 34 -72 34 -22 0 -50 -8 -64 -16z\"\/><path d=\"M2275 2693 c-553 -48 -1095 -270 -1585 -649 -135 -104 -459 -423 -483 -476 -23 -49 -22 -139 2 -186 73 -142 361 -457 571 -626 285 -228 642 -407 990 -497 242 -63 336 -73 660 -74 310 0 370 5 595 52 535 111 1045 392 1455 803 122 121 250 273 275 326 19 41 19 137 0 174 -41 79 -309 363 -465 492 -447 370 -946 591 -1479 653 -113 14 -422 18 -536 8z m395 -428 c171 -34 330 -124 456 -258 112 -119 167 -219 211 -378 27 -96 24 -300 -5 -401 -72 -255 -236 -447 -474 -557 -132 -62 -201 -76 -368 -76 -167 0 -236 14 -368 76 -213 98 -373 271 -451 485 -162 444 86 934 547 1084 153 49 292 57 452 25z m909 -232 c222 -123 408 -262 593 -441 76 -74 138 -139 138 -144 0 -16 -233 -242 -330 -319 -155 -123 -309 -223 -461 -299 l-81 -41 32 46 c18 26 49 83 70 128 143 306 141 649 -6 957 -25 52 -61 116 -79 142 l-34 47 45 -20 c26 -10 76 -36 113 -56z m-2057 25 c-40 -58 -105 -190 -130 -263 -110 -324 -59 -707 132 -981 25 -35 42 -64 37 -64 -19 0 -241 119 -326 174 -188 122 -406 314 -532 468 l-58 71 108 103 c185 178 428 349 672 473 66 33 121 60 123 61 2 0 -10 -19 -26 -42z\"\/><path d=\"M2375 1950 c-198 -44 -350 -190 -395 -379 -18 -76 -8 -221 19 -290 114 -284 457 -406 731 -260 98 52 188 154 231 260 27 69 37 214 19 290 -38 163 -166 304 -326 360 -67 23 -215 33 -279 19z\"\/><\/g><\/svg><\/i> <img loading=\"lazy\" decoding=\"async\" width=\"16\" height=\"16\" alt=\"Loading\" src=\"https:\/\/www.howdoiuseacomputer.com\/wp-content\/plugins\/page-views-count\/ajax-loader-2x.gif\" border=0 \/><\/p><div class=\"pvc_clear\"><\/div>","protected":false},"excerpt":{"rendered":"<p>Hey! I hope you are well.. &#x1f918; &#x1f642; &#x1f918;. This script was a result of the following ponderings: How to monitor and manage the deletion of Blocked (Disabled) and Guest accounts in Azure AD. I have a Dynamic group for &#8216;Blocked (Disabled) users&#8217;, but members include valid Shared Mailbox accounts. What about Guest users&#8230; should [&hellip;]<\/p>\n<div class=\"pvc_clear\"><\/div>\n<p id=\"pvc_stats_283\" class=\"pvc_stats all  \" data-element-id=\"283\" style=\"\"><i class=\"pvc-stats-icon small\" aria-hidden=\"true\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" version=\"1.0\" viewBox=\"0 0 502 315\" preserveAspectRatio=\"xMidYMid meet\"><g transform=\"translate(0,332) scale(0.1,-0.1)\" fill=\"\" stroke=\"none\"><path d=\"M2394 3279 l-29 -30 -3 -207 c-2 -182 0 -211 15 -242 39 -76 157 -76 196 0 15 31 17 60 15 243 l-3 209 -33 29 c-26 23 -41 29 -80 29 -41 0 -53 -5 -78 -31z\"\/><path d=\"M3085 3251 c-45 -19 -58 -50 -96 -229 -47 -217 -49 -260 -13 -295 52 -53 146 -42 177 20 16 31 87 366 87 410 0 70 -86 122 -155 94z\"\/><path d=\"M1751 3234 c-13 -9 -29 -31 -37 -50 -12 -29 -10 -49 21 -204 19 -94 39 -189 45 -210 14 -50 54 -80 110 -80 34 0 48 6 76 34 21 21 34 44 34 59 0 14 -18 113 -40 219 -37 178 -43 195 -70 221 -36 32 -101 37 -139 11z\"\/><path d=\"M1163 3073 c-36 -7 -73 -59 -73 -102 0 -56 133 -378 171 -413 34 -32 83 -37 129 -13 70 36 67 87 -16 290 -86 209 -89 214 -129 231 -35 14 -42 15 -82 7z\"\/><path d=\"M3689 3066 c-15 -9 -33 -30 -42 -48 -48 -103 -147 -355 -147 -375 0 -98 131 -148 192 -74 13 15 57 108 97 206 80 196 84 226 37 273 -30 30 -99 39 -137 18z\"\/><path d=\"M583 2784 c-38 -19 -67 -74 -58 -113 9 -42 211 -354 242 -373 16 -10 45 -18 66 -18 51 0 107 52 107 100 0 39 -1 41 -124 234 -80 126 -108 162 -133 173 -41 17 -61 16 -100 -3z\"\/><path d=\"M4250 2784 c-14 -9 -74 -91 -133 -183 -95 -150 -107 -173 -107 -213 0 -55 33 -94 87 -104 67 -13 90 8 211 198 130 202 137 225 78 284 -27 27 -42 34 -72 34 -22 0 -50 -8 -64 -16z\"\/><path d=\"M2275 2693 c-553 -48 -1095 -270 -1585 -649 -135 -104 -459 -423 -483 -476 -23 -49 -22 -139 2 -186 73 -142 361 -457 571 -626 285 -228 642 -407 990 -497 242 -63 336 -73 660 -74 310 0 370 5 595 52 535 111 1045 392 1455 803 122 121 250 273 275 326 19 41 19 137 0 174 -41 79 -309 363 -465 492 -447 370 -946 591 -1479 653 -113 14 -422 18 -536 8z m395 -428 c171 -34 330 -124 456 -258 112 -119 167 -219 211 -378 27 -96 24 -300 -5 -401 -72 -255 -236 -447 -474 -557 -132 -62 -201 -76 -368 -76 -167 0 -236 14 -368 76 -213 98 -373 271 -451 485 -162 444 86 934 547 1084 153 49 292 57 452 25z m909 -232 c222 -123 408 -262 593 -441 76 -74 138 -139 138 -144 0 -16 -233 -242 -330 -319 -155 -123 -309 -223 -461 -299 l-81 -41 32 46 c18 26 49 83 70 128 143 306 141 649 -6 957 -25 52 -61 116 -79 142 l-34 47 45 -20 c26 -10 76 -36 113 -56z m-2057 25 c-40 -58 -105 -190 -130 -263 -110 -324 -59 -707 132 -981 25 -35 42 -64 37 -64 -19 0 -241 119 -326 174 -188 122 -406 314 -532 468 l-58 71 108 103 c185 178 428 349 672 473 66 33 121 60 123 61 2 0 -10 -19 -26 -42z\"\/><path d=\"M2375 1950 c-198 -44 -350 -190 -395 -379 -18 -76 -8 -221 19 -290 114 -284 457 -406 731 -260 98 52 188 154 231 260 27 69 37 214 19 290 -38 163 -166 304 -326 360 -67 23 -215 33 -279 19z\"\/><\/g><\/svg><\/i> <img loading=\"lazy\" decoding=\"async\" width=\"16\" height=\"16\" alt=\"Loading\" src=\"https:\/\/www.howdoiuseacomputer.com\/wp-content\/plugins\/page-views-count\/ajax-loader-2x.gif\" border=0 \/><\/p>\n<div class=\"pvc_clear\"><\/div>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"categories":[8,9],"tags":[22,58,59,5,27,57,56],"class_list":["post-283","post","type-post","status-publish","format-standard","hentry","category-powershell","category-ramblings","tag-azure-ad","tag-blocked-users","tag-guest-users","tag-powershell","tag-runbook","tag-script","tag-shared-mailbox"],"post_mailing_queue_ids":[],"_links":{"self":[{"href":"https:\/\/www.howdoiuseacomputer.com\/index.php\/wp-json\/wp\/v2\/posts\/283"}],"collection":[{"href":"https:\/\/www.howdoiuseacomputer.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.howdoiuseacomputer.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.howdoiuseacomputer.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.howdoiuseacomputer.com\/index.php\/wp-json\/wp\/v2\/comments?post=283"}],"version-history":[{"count":7,"href":"https:\/\/www.howdoiuseacomputer.com\/index.php\/wp-json\/wp\/v2\/posts\/283\/revisions"}],"predecessor-version":[{"id":323,"href":"https:\/\/www.howdoiuseacomputer.com\/index.php\/wp-json\/wp\/v2\/posts\/283\/revisions\/323"}],"wp:attachment":[{"href":"https:\/\/www.howdoiuseacomputer.com\/index.php\/wp-json\/wp\/v2\/media?parent=283"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.howdoiuseacomputer.com\/index.php\/wp-json\/wp\/v2\/categories?post=283"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.howdoiuseacomputer.com\/index.php\/wp-json\/wp\/v2\/tags?post=283"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}