{"id":809,"date":"2019-01-02T06:30:01","date_gmt":"2019-01-02T06:30:01","guid":{"rendered":"http:\/\/blog.softreeconsulting.com\/?p=809"},"modified":"2019-01-02T06:30:01","modified_gmt":"2019-01-02T06:30:01","slug":"identify-modern-pages-copy-another-site-collection","status":"publish","type":"post","link":"https:\/\/softreetechnology.com\/blog\/all\/identify-modern-pages-copy-another-site-collection\/","title":{"rendered":"Identify The Modern Pages And Copy Them To Another Site Collection"},"content":{"rendered":"<p>In this blog, I am going to perform two actions &#8211;<\/p>\n<ol>\n<li>Identify if a page is a modern page or not.<\/li>\n<li>Migrate or copy that modern page (including its content) to another site collection or site (destination location)<\/li>\n<\/ol>\n<p>I am going to accomplish these tasks by using CSOM (Client Object Model). After identifying the modern page, I will copy the modern page into another site collection (destination location) and then, will migrate all the page contents of this modern page (including web parts and other properties of source modern page) to a destination web using CSOM.<\/p>\n<p>We are using a console application to achieve the above functionality using CSOM. In the below-mentioned code logic, we will get all pages from \u2018Site Pages\u2019 page library which is present in the source web and looping each page to check if that is a modern page or not.<\/p>\n<p>If the page is found to be a modern page, then we are migrating that page to the destination web \u2018Site Pages\u2019 library.<\/p>\n<div>Please have a look at the below code. The code is self-explanatory because of the comments.<\/div>\n<p>[code lang=&#8221;c&#8221;]<\/p>\n<p>using System;<br \/>\nusing System.Net;<br \/>\nusing System.Security;<br \/>\nusing System.Text.RegularExpressions;<br \/>\nusing Microsoft.SharePoint.Client;<br \/>\nnamespace ConsoleApp1 {<br \/>\nclass Program {<br \/>\nstatic void Main(string[] args) {<br \/>\nClientContext sourceContext = null;<br \/>\nList sourceList = null;<br \/>\nListItemCollection srcItemCollection = null;<br \/>\nListItem sourceItem = null;<br \/>\nstring userName = string.Empty;<br \/>\nstring password = string.Empty;<br \/>\nSecureString srcSiteSecurePassword = new SecureString();<br \/>\nSharePointOnlineCredentials sourceOnlineCredentials = null;<br \/>\ntry {<br \/>\nusing(sourceContext = new ClientContext(&#8220;http:\/\/sourcesiteurl&#8221;)) {<br \/>\nuserName = &#8220;TestUser&#8221;;<br \/>\npassword = &#8220;Password&#8221;;<br \/>\nif (!string.IsNullOrEmpty(password)) {<br \/>\nforeach(char c in password.ToCharArray())<br \/>\nsrcSiteSecurePassword.AppendChar(c);<br \/>\n}<br \/>\n\/\/ Setting credential for the above site<br \/>\nsourceOnlineCredentials = new SharePointOnlineCredentials(userName, srcSiteSecurePassword);<br \/>\nsourceContext.Credentials = sourceOnlineCredentials;<br \/>\nsourceContext.Load(sourceContext.Web);<br \/>\nsourceContext.ExecuteQuery();<br \/>\n\/\/ Getting source list by Title<br \/>\nsourceList = sourceContext.Web.Lists.GetByTitle(&#8220;Site Pages&#8221;);<br \/>\n\/\/ Getting all items from source list using caml query<br \/>\nsrcItemCollection = sourceList.GetItems(CamlQuery.CreateAllItemsQuery());<br \/>\n\/\/Loading source items<br \/>\nsourceContext.Load(srcItemCollection, IC =&gt; IC.Include(I =&gt; I.Id, I =&gt; I.DisplayName));<br \/>\nsourceContext.ExecuteQuery();<br \/>\nif (srcItemCollection != null &amp;&amp; srcItemCollection.Count &gt; 0) {<br \/>\nfor (int iCount = 0; iCount &lt; srcItemCollection.Count; iCount++) {<br \/>\ntry {<br \/>\nsourceItem = srcItemCollection[iCount];<br \/>\n\/\/Checking if current page is modern page or not<br \/>\nif (IsModernPage(sourceContext, sourceItem)) {<br \/>\n\/\/ Migrate modern page to anothen site<br \/>\nMigrateModernPageToAnotherWeb(sourceContext, sourceItem);<br \/>\n}<br \/>\n} catch (Exception ex) {}<br \/>\n}<br \/>\n}<br \/>\n}<br \/>\n} catch (Exception ex) {}<br \/>\n}<br \/>\n\/\/ Checking if the selected page is a modern page or not<br \/>\nprivate static bool IsModernPage(ClientContext sourceContext, ListItem sourceItem) {<br \/>\nbool isModernPage = false;<br \/>\ntry {<br \/>\nsourceContext.Load(sourceItem, srcItm =&gt; srcItm[&#8220;CanvasContent1&#8221;], srcItm =&gt; srcItm[&#8220;LayoutWebpartsContent&#8221;]);<br \/>\nsourceContext.ExecuteQuery();<br \/>\n\/\/ Check if modern page<br \/>\nif (!string.IsNullOrEmpty(sourceItem[&#8220;CanvasContent1&#8221;].ToString()) || !string.IsNullOrEmpty(sourceItem[&#8220;LayoutWebpartsContent&#8221;].ToString())) isModernPage = true;<br \/>\n} catch {<br \/>\nisModernPage = false;<br \/>\n}<br \/>\nreturn isModernPage;<br \/>\n}<br \/>\n\/\/ Migrating the modern page from source site to destination site<br \/>\nprivate static void MigrateModernPageToAnotherWeb(ClientContext sourceContext, ListItem sourceItem) {<br \/>\nClientContext destSiteContext = null;<br \/>\nList destList = null;<br \/>\nListItem destItem = null;<br \/>\nstring userName = string.Empty;<br \/>\nstring password = string.Empty;<br \/>\nSecureString destSiteSecurePassword = new SecureString();<br \/>\nSharePointOnlineCredentials destOnlineCredentials = null;<br \/>\nstring canvasContent = string.Empty;<br \/>\nstring metaInfo = string.Empty;<br \/>\nstring layoutWebpartsContent = string.Empty;<br \/>\ntry {<br \/>\nusing(destSiteContext = new ClientContext(&#8220;http:\/\/destinationsiteurl&#8221;)) {<br \/>\nuserName = &#8220;TestUser&#8221;;<br \/>\npassword = &#8220;Password&#8221;;<br \/>\nif (!string.IsNullOrEmpty(password)) {<br \/>\nforeach(char c in password.ToCharArray())<br \/>\ndestSiteSecurePassword.AppendChar(c);<br \/>\n}<br \/>\n\/\/ Setting credential for the above site<br \/>\ndestOnlineCredentials = new SharePointOnlineCredentials(userName, destSiteSecurePassword);<br \/>\ndestSiteContext.Credentials = destOnlineCredentials;<br \/>\ndestSiteContext.Load(destSiteContext.Web);<br \/>\ndestSiteContext.ExecuteQuery();<br \/>\n\/\/ Getting destination list by Title<br \/>\ndestList = destSiteContext.Web.Lists.GetByTitle(&#8220;Site Pages&#8221;);<br \/>\n\/\/ Loading destination list<br \/>\ndestSiteContext.Load(destList, L =&gt; L.RootFolder.ServerRelativeUrl);<br \/>\ndestSiteContext.ExecuteQuery();<br \/>\n\/\/ Creating modern page in destination site<br \/>\ndestItem = destList.RootFolder.Files.AddTemplateFile(destList.RootFolder.ServerRelativeUrl.TrimEnd(&#8216;\/&#8217;) + &#8220;\/&#8221; + sourceItem.DisplayName + &#8220;.aspx&#8221;, TemplateFileType.ClientSidePage).ListItemAllFields;<br \/>\ndestSiteContext.Load(destItem);<br \/>\ndestSiteContext.ExecuteQuery();<br \/>\n\/\/ Loading source item properties<br \/>\nsourceContext.Load(sourceItem, i =&gt; i.ContentType.Id, i =&gt; i[&#8220;CanvasContent1&#8221;], i =&gt; i[&#8220;MetaInfo&#8221;], i =&gt; i[&#8220;LayoutWebpartsContent&#8221;]);<br \/>\nsourceContext.ExecuteQuery();<br \/>\ntry {<br \/>\ndestItem[&#8220;ContentTypeId&#8221;] = sourceItem.ContentType.Id.ToString();<br \/>\ncanvasContent = sourceItem[&#8220;CanvasContent1&#8221;].ToString();<br \/>\n\/\/ Replacing source Web ID with destination Web ID<br \/>\nif (!string.IsNullOrEmpty(canvasContent) &amp;&amp; canvasContent.Length &gt; 0 &amp;&amp; canvasContent.ToLower().Contains(sourceContext.Web.Id.ToString().ToLower())) canvasContent = Regex.Replace(canvasContent, sourceContext.Web.Id.ToString(), destSiteContext.Web.Id.ToString(), RegexOptions.IgnoreCase);<br \/>\n} catch (Exception ex) {}<br \/>\ntry {<br \/>\nmetaInfo = sourceItem[&#8220;MetaInfo&#8221;].ToString();<br \/>\n\/\/ Replacing source Web ID with destination Web ID<br \/>\nif (!string.IsNullOrEmpty(metaInfo) &amp;&amp; metaInfo.Length &gt; 0 &amp;&amp; metaInfo.ToLower().Contains(sourceContext.Web.Id.ToString().ToLower())) metaInfo = Regex.Replace(metaInfo, sourceContext.Web.Id.ToString(), destSiteContext.Web.Id.ToString(), RegexOptions.IgnoreCase);<br \/>\n} catch (Exception ex) {}<br \/>\ntry {<br \/>\nlayoutWebpartsContent = sourceItem[&#8220;LayoutWebpartsContent&#8221;].ToString();<br \/>\n\/\/ Replacing source Web ID with destination Web ID<br \/>\nif (!string.IsNullOrEmpty(layoutWebpartsContent) &amp;&amp; layoutWebpartsContent.Length &gt; 0 &amp;&amp; layoutWebpartsContent.ToLower().Contains(sourceContext.Web.Id.ToString().ToLower())) layoutWebpartsContent = Regex.Replace(layoutWebpartsContent, sourceContext.Web.Id.ToString(), destSiteContext.Web.Id.ToString(), RegexOptions.IgnoreCase);<br \/>\n} catch (Exception ex) {}<br \/>\n\/\/ Setting source page canvas content to destination page<br \/>\nif (!string.IsNullOrEmpty(canvasContent) &amp;&amp; canvasContent.Length &gt; 0) destItem[&#8220;CanvasContent1&#8221;] = canvasContent;<br \/>\n\/\/ Setting source page metaInfo content to destination page<br \/>\nif (!string.IsNullOrEmpty(metaInfo) &amp;&amp; metaInfo.Length &gt; 0) destItem[&#8220;MetaInfo&#8221;] = metaInfo;<br \/>\n\/\/ Setting source page layout webparts content to destination page<br \/>\nif (!string.IsNullOrEmpty(layoutWebpartsContent) &amp;&amp; layoutWebpartsContent.Length &gt; 0) destItem[&#8220;LayoutWebpartsContent&#8221;] = layoutWebpartsContent;<br \/>\n\/\/ Updating the destination page<br \/>\ndestItem.Update();<br \/>\ndestSiteContext.ExecuteQuery();<br \/>\n}<br \/>\n} catch (Exception ex) {}<br \/>\n}<br \/>\n}<br \/>\n}<\/p>\n<p>[\/code]<\/p>\n<p><strong>Destination Page Library Before Migration: &#8211;<a href=\"http:\/\/blog.softreeconsulting.com\/wp-content\/uploads\/2019\/01\/Destination-Page-Library-Before-Migration.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-813\" src=\"https:\/\/blog.softreeconsulting.com\/wp-content\/uploads\/2019\/01\/Destination-Page-Library-Before-Migration.png\" alt=\"destination-page-library-before-migration\" width=\"960\" height=\"504\" \/><\/a><\/strong><\/p>\n<p><strong>Destination Page Library after Migration:-<\/strong><\/p>\n<p><a href=\"http:\/\/blog.softreeconsulting.com\/wp-content\/uploads\/2019\/01\/Destionation-Page-Library-after-Migration.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-814\" src=\"https:\/\/blog.softreeconsulting.com\/wp-content\/uploads\/2019\/01\/Destionation-Page-Library-after-Migration.png\" alt=\"destionation-page-library-after-migration\" width=\"1020\" height=\"520\" \/><\/a><\/p>\n<p>After executing the above code behind, you can find the newly created modern page in the destination web &#8216;Site Pages&#8217; library with the same page contents and &#8220;web parts&#8221; as they were in the source page.<\/p>\n<p><strong>This solution is brought to you by our SharePoint professionals.<\/strong><\/p>\n<p><a href=\"http:\/\/www.softreeconsulting.com\/\"><strong>Softree Consulting<\/strong><\/a>\u00a0employs SharePoint consultants; we are a technology services provider with the aim to help companies achieve exceptional performance through SharePoint. Our dedicated team of SharePoint consultants has the right bent of mind to understand and execute customer requirements.<\/p>\n<p>Be it SPFx or SharePoint add-in developments,\u00a0<a href=\"http:\/\/www.softreeconsulting.com\/sharepoint-2019\/\"><strong>SharePoint 2019 developments<\/strong><\/a>, web part developments, migrating from SharePoint 2010\/2013 to SharePoint 2013\/2016\/Office 365, Office 365,\u00a0SharePoint hosted apps development\u00a0or something else in SharePoint, we strive to deliver the best<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In this blog, I am going to perform two actions &#8211; Identify if a page is a modern page or not. Migrate or copy that modern page (including its content) to another site collection or site (destination location) I am going to accomplish these tasks by using CSOM (Client Object Model). After identifying the modern page, I will copy the [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[129],"tags":[197,198,199,200,170,201,202],"class_list":["post-809","post","type-post","status-publish","format-standard","hentry","category-all","tag-copying-modern-pages","tag-migrating-modern-pages","tag-modern-pages-migration","tag-office-365-modern-pages","tag-sharepoint-modern-pages","tag-sharepoint-online-modern-pages","tag-spo-modern-pages"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v24.6 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Identify The Modern Pages And Copy Them To Another Site Collection - Softree Technology<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/softreetechnology.com\/blog\/all\/identify-modern-pages-copy-another-site-collection\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Identify The Modern Pages And Copy Them To Another Site Collection - Softree Technology\" \/>\n<meta property=\"og:description\" content=\"In this blog, I am going to perform two actions &#8211; Identify if a page is a modern page or not. Migrate or copy that modern page (including its content) to another site collection or site (destination location) I am going to accomplish these tasks by using CSOM (Client Object Model). After identifying the modern page, I will copy the [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/softreetechnology.com\/blog\/all\/identify-modern-pages-copy-another-site-collection\/\" \/>\n<meta property=\"og:site_name\" content=\"Softree Technology\" \/>\n<meta property=\"article:published_time\" content=\"2019-01-02T06:30:01+00:00\" \/>\n<meta name=\"author\" content=\"admin\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"admin\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"5 minutes\" \/>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Identify The Modern Pages And Copy Them To Another Site Collection - Softree Technology","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/softreetechnology.com\/blog\/all\/identify-modern-pages-copy-another-site-collection\/","og_locale":"en_US","og_type":"article","og_title":"Identify The Modern Pages And Copy Them To Another Site Collection - Softree Technology","og_description":"In this blog, I am going to perform two actions &#8211; Identify if a page is a modern page or not. Migrate or copy that modern page (including its content) to another site collection or site (destination location) I am going to accomplish these tasks by using CSOM (Client Object Model). After identifying the modern page, I will copy the [&hellip;]","og_url":"https:\/\/softreetechnology.com\/blog\/all\/identify-modern-pages-copy-another-site-collection\/","og_site_name":"Softree Technology","article_published_time":"2019-01-02T06:30:01+00:00","author":"admin","twitter_card":"summary_large_image","twitter_misc":{"Written by":"admin","Est. reading time":"5 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/softreetechnology.com\/blog\/all\/identify-modern-pages-copy-another-site-collection\/#article","isPartOf":{"@id":"https:\/\/softreetechnology.com\/blog\/all\/identify-modern-pages-copy-another-site-collection\/"},"author":{"name":"admin","@id":"https:\/\/softreetechnology.com\/blog\/#\/schema\/person\/98740297642f06debccdcee2de84086b"},"headline":"Identify The Modern Pages And Copy Them To Another Site Collection","datePublished":"2019-01-02T06:30:01+00:00","mainEntityOfPage":{"@id":"https:\/\/softreetechnology.com\/blog\/all\/identify-modern-pages-copy-another-site-collection\/"},"wordCount":981,"commentCount":0,"publisher":{"@id":"https:\/\/softreetechnology.com\/blog\/#organization"},"image":{"@id":"https:\/\/softreetechnology.com\/blog\/all\/identify-modern-pages-copy-another-site-collection\/#primaryimage"},"thumbnailUrl":"https:\/\/blog.softreeconsulting.com\/wp-content\/uploads\/2019\/01\/Destination-Page-Library-Before-Migration.png","keywords":["Copying Modern Pages","Migrating Modern Pages","Modern Pages Migration","Office 365 Modern Pages","sharepoint modern pages","SharePoint Online Modern Pages","SPO Modern Pages"],"articleSection":["All"],"inLanguage":"en","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/softreetechnology.com\/blog\/all\/identify-modern-pages-copy-another-site-collection\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/softreetechnology.com\/blog\/all\/identify-modern-pages-copy-another-site-collection\/","url":"https:\/\/softreetechnology.com\/blog\/all\/identify-modern-pages-copy-another-site-collection\/","name":"Identify The Modern Pages And Copy Them To Another Site Collection - Softree Technology","isPartOf":{"@id":"https:\/\/softreetechnology.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/softreetechnology.com\/blog\/all\/identify-modern-pages-copy-another-site-collection\/#primaryimage"},"image":{"@id":"https:\/\/softreetechnology.com\/blog\/all\/identify-modern-pages-copy-another-site-collection\/#primaryimage"},"thumbnailUrl":"https:\/\/blog.softreeconsulting.com\/wp-content\/uploads\/2019\/01\/Destination-Page-Library-Before-Migration.png","datePublished":"2019-01-02T06:30:01+00:00","breadcrumb":{"@id":"https:\/\/softreetechnology.com\/blog\/all\/identify-modern-pages-copy-another-site-collection\/#breadcrumb"},"inLanguage":"en","potentialAction":[{"@type":"ReadAction","target":["https:\/\/softreetechnology.com\/blog\/all\/identify-modern-pages-copy-another-site-collection\/"]}]},{"@type":"ImageObject","inLanguage":"en","@id":"https:\/\/softreetechnology.com\/blog\/all\/identify-modern-pages-copy-another-site-collection\/#primaryimage","url":"https:\/\/blog.softreeconsulting.com\/wp-content\/uploads\/2019\/01\/Destination-Page-Library-Before-Migration.png","contentUrl":"https:\/\/blog.softreeconsulting.com\/wp-content\/uploads\/2019\/01\/Destination-Page-Library-Before-Migration.png"},{"@type":"BreadcrumbList","@id":"https:\/\/softreetechnology.com\/blog\/all\/identify-modern-pages-copy-another-site-collection\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/softreetechnology.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Identify The Modern Pages And Copy Them To Another Site Collection"}]},{"@type":"WebSite","@id":"https:\/\/softreetechnology.com\/blog\/#website","url":"https:\/\/softreetechnology.com\/blog\/","name":"Softree Technology","description":"Celebrating 10+ Years in SharePoint Consulting !","publisher":{"@id":"https:\/\/softreetechnology.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/softreetechnology.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en"},{"@type":"Organization","@id":"https:\/\/softreetechnology.com\/blog\/#organization","name":"Softree Technology","url":"https:\/\/softreetechnology.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en","@id":"https:\/\/softreetechnology.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/softreetechnology.com\/blog\/wp-content\/uploads\/2023\/03\/cropped-white-logo-soft.png","contentUrl":"https:\/\/softreetechnology.com\/blog\/wp-content\/uploads\/2023\/03\/cropped-white-logo-soft.png","width":844,"height":230,"caption":"Softree Technology"},"image":{"@id":"https:\/\/softreetechnology.com\/blog\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/softreetechnology.com\/blog\/#\/schema\/person\/98740297642f06debccdcee2de84086b","name":"admin","image":{"@type":"ImageObject","inLanguage":"en","@id":"https:\/\/softreetechnology.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/6fc78c8a7aa3fb0bf43c3b9a2e3962d7?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/6fc78c8a7aa3fb0bf43c3b9a2e3962d7?s=96&d=mm&r=g","caption":"admin"},"sameAs":["https:\/\/softreeconsulting.com"],"url":"https:\/\/softreetechnology.com\/blog\/author\/admin\/"}]}},"_links":{"self":[{"href":"https:\/\/softreetechnology.com\/blog\/wp-json\/wp\/v2\/posts\/809","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/softreetechnology.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/softreetechnology.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/softreetechnology.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/softreetechnology.com\/blog\/wp-json\/wp\/v2\/comments?post=809"}],"version-history":[{"count":0,"href":"https:\/\/softreetechnology.com\/blog\/wp-json\/wp\/v2\/posts\/809\/revisions"}],"wp:attachment":[{"href":"https:\/\/softreetechnology.com\/blog\/wp-json\/wp\/v2\/media?parent=809"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/softreetechnology.com\/blog\/wp-json\/wp\/v2\/categories?post=809"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/softreetechnology.com\/blog\/wp-json\/wp\/v2\/tags?post=809"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}