{"id":3902,"date":"2013-05-15T06:40:06","date_gmt":"2013-05-15T06:40:06","guid":{"rendered":"http:\/\/www.greytrix.com\/blogs\/sagecrm\/?p=3902"},"modified":"2013-05-15T06:40:06","modified_gmt":"2013-05-15T06:40:06","slug":"net-api-validate-method-for-screen-level-validations","status":"publish","type":"post","link":"https:\/\/www.greytrix.com\/blogs\/sagecrm\/2013\/05\/15\/net-api-validate-method-for-screen-level-validations\/","title":{"rendered":".Net API Validate method for Screen level validations"},"content":{"rendered":"<p>First let us see what happens when the Validate method is not used for the .NET API screen validation.<br \/>\nBelow is the new entry screen designed with API and with no validate method implemented.<\/p>\n<p style=\"text-align: center;\"><a href=\"https:\/\/www.greytrix.com\/blogs\/sagecrm\/wp-content\/uploads\/2013\/05\/Image-1.jpg\" target=\"_blank\"><img fetchpriority=\"high\" decoding=\"async\" class=\"aligncenter size-full wp-image-3903\" title=\"Image-1\" src=\"https:\/\/www.greytrix.com\/blogs\/sagecrm\/wp-content\/uploads\/2013\/05\/Image-1.jpg\" alt=\"\" width=\"895\" height=\"135\" \/><\/a><\/p>\n<p>On clicking <strong>Save<\/strong> button leaving all required fields blank, validations must be fired to warn user to enter required values in appropriate fields as follows which will not happen.<\/p>\n<p style=\"text-align: center;\"><a href=\"https:\/\/www.greytrix.com\/blogs\/sagecrm\/wp-content\/uploads\/2013\/05\/Image-2.jpg\" target=\"_blank\"><img decoding=\"async\" class=\"aligncenter size-full wp-image-3904\" title=\"Image-2\" src=\"https:\/\/www.greytrix.com\/blogs\/sagecrm\/wp-content\/uploads\/2013\/05\/Image-2.jpg\" alt=\"\" width=\"901\" height=\"136\" \/><\/a><\/p>\n<p>What will happen is, the blank record will get saved to database and displayed on list page as follows.<\/p>\n<p style=\"text-align: center;\"><a href=\"https:\/\/www.greytrix.com\/blogs\/sagecrm\/wp-content\/uploads\/2013\/05\/Image-4.jpg\" target=\"_blank\"><img decoding=\"async\" class=\"aligncenter size-full wp-image-3905\" title=\"Image-4\" src=\"https:\/\/www.greytrix.com\/blogs\/sagecrm\/wp-content\/uploads\/2013\/05\/Image-4.jpg\" alt=\"\" width=\"897\" height=\"100\" \/><\/a><\/p>\n<p>This is certainly not what you want right?<br \/>\nFor validating the screen, <strong>Validate() <\/strong>method is provided in .NET API for <strong>EntryGroup<\/strong> object. This method validates the screen and fires the validations similar to that of COM API Validate method. Method returns <strong>True<\/strong> when all the validations are passed else returns <strong>False<\/strong>. If method returns <strong>False<\/strong> we have to retain the edit mode of the screen through code. Also in .NET API when validate returns false, new values entered on screen are lost which is not the expected behavior. This can be fixed through the code.<br \/>\nBelow is the code snippet which handles the validations, navigations, mode as well as the retention of values on screen properly.<br \/>\n<span style=\"color: #3366ff;\"><em>AddContent(HTML.StartTable());<\/em><\/span><br \/>\n<span style=\"color: #3366ff;\"><em>AddContent(HTML.Form());<\/em><\/span><br \/>\n<span style=\"color: #3366ff;\"><em>EntryGroup scrProductLine = new EntryGroup(&#8220;ProductLinesNewEntry&#8221;);<\/em><\/span><br \/>\n<span style=\"color: #3366ff;\"><em>string hMode = Dispatch.EitherField(&#8220;HiddenMode&#8221;);<\/em><\/span><br \/>\n<span style=\"color: #3366ff;\"><em>scrProductLine.Title = &#8220;New Product Line&#8221;;<\/em><\/span><br \/>\n<span style=\"color: #3366ff;\"><em>if (hMode == &#8220;Save&#8221;)<\/em><\/span><br \/>\n<span style=\"color: #3366ff;\"><em>{<\/em><\/span><br \/>\n<span style=\"color: #3366ff;\"><em>\u00a0if (scrProductLine.Validate())<\/em><\/span><br \/>\n<span style=\"color: #3366ff;\"><em>\u00a0{<\/em><\/span><br \/>\n<span style=\"color: #3366ff;\"><em>\u00a0\u00a0Record recProductLine = new Record(&#8220;ProductLine&#8221;);<\/em><\/span><br \/>\n<span style=\"color: #3366ff;\"><em>\u00a0\u00a0scrProductLine.FillEntityFromContent(recProductLine);<\/em><\/span><br \/>\n<span style=\"color: #3366ff;\"><em>\u00a0\u00a0recProductLine.SaveChanges();<\/em><\/span><br \/>\n<span style=\"color: #3366ff;\"><em>\u00a0\u00a0<\/em><\/span><br \/>\n<span style=\"color: #3366ff;\"><em>\u00a0\u00a0Dispatch.Redirect(UrlDotNet(ThisDotNetDll, &#8220;RunListPage&#8221;));<\/em><\/span><br \/>\n<span style=\"color: #3366ff;\"><em>\u00a0}<\/em><\/span><br \/>\n<span style=\"color: #3366ff;\"><em>\u00a0else<\/em><\/span><br \/>\n<span style=\"color: #3366ff;\"><em>\u00a0{<\/em><\/span><br \/>\n<span style=\"color: #3366ff;\"><em>\u00a0\u00a0AddContent(HTML.InputHidden(&#8220;HiddenMode&#8221;, &#8220;&#8221;));<\/em><\/span><br \/>\n<span style=\"color: #3366ff;\"><em>\u00a0\u00a0AddContent(HTML.StartTable());<\/em><\/span><br \/>\n<span style=\"color: #3366ff;\"><em>\u00a0\u00a0Entity eProductLine = new Entity(&#8220;ProductLine&#8221;);<\/em><\/span><br \/>\n<span style=\"color: #3366ff;\"><em>\u00a0\u00a0scrProductLine.Fill(eProductLine);\u00a0\u00a0<\/em><\/span><br \/>\n<span style=\"color: #3366ff;\"><em>\u00a0\u00a0AddContent((scrProductLine.GetHtmlInEditMode()));<\/em><\/span><br \/>\n<span style=\"color: #3366ff;\"><em>\u00a0\u00a0string sUrl = &#8220;javascript:document.EntryForm.HiddenMode.value=&#8217;Save&#8217;;&#8221;;<\/em><\/span><br \/>\n<span style=\"color: #3366ff;\"><em>\u00a0\u00a0AddSubmitButton(&#8220;Save&#8221;, &#8220;save.gif&#8221;, sUrl);<\/em><\/span><br \/>\n<span style=\"color: #3366ff;\"><em>\u00a0\u00a0AddUrlButton(&#8220;Cancel&#8221;, &#8220;cancel.gif&#8221;, UrlDotNet(ThisDotNetDll, &#8220;RunListPage&#8221;));<\/em><\/span><br \/>\n<span style=\"color: #3366ff;\"><em>\u00a0\u00a0AddContent(HTML.EndTable());<\/em><\/span><br \/>\n<span style=\"color: #3366ff;\"><em>\u00a0}<\/em><\/span><br \/>\n<span style=\"color: #3366ff;\"><em>}<\/em><\/span><br \/>\n<span style=\"color: #3366ff;\"><em>else<\/em><\/span><br \/>\n<span style=\"color: #3366ff;\"><em>{<\/em><\/span><br \/>\n<span style=\"color: #3366ff;\"><em>\u00a0AddContent(HTML.InputHidden(&#8220;HiddenMode&#8221;, &#8220;&#8221;));<\/em><\/span><br \/>\n<span style=\"color: #3366ff;\"><em>\u00a0AddContent(HTML.StartTable());<\/em><\/span><br \/>\n<span style=\"color: #3366ff;\"><em>\u00a0AddContent((scrProductLine.GetHtmlInEditMode()));<\/em><\/span><br \/>\n<span style=\"color: #3366ff;\"><em>\u00a0string sUrl = &#8220;javascript:document.EntryForm.HiddenMode.value=&#8217;Save&#8217;;&#8221;;<\/em><\/span><br \/>\n<span style=\"color: #3366ff;\"><em>\u00a0AddSubmitButton(&#8220;Save&#8221;, &#8220;save.gif&#8221;, sUrl);<\/em><\/span><br \/>\n<span style=\"color: #3366ff;\"><em>\u00a0AddUrlButton(&#8220;Cancel&#8221;, &#8220;cancel.gif&#8221;, UrlDotNet(ThisDotNetDll, &#8220;RunListPage&#8221;));<\/em><\/span><br \/>\n<span style=\"color: #3366ff;\"><em>\u00a0AddContent(HTML.EndTable());<\/em><\/span><br \/>\n<span style=\"color: #3366ff;\"><em>}<\/em><\/span><\/p>\n","protected":false},"excerpt":{"rendered":"<p>First let us see what happens when the Validate method is not used for the .NET API screen validation. Below is the new entry screen designed with API and with no validate method implemented. On clicking Save button leaving all required fields blank, validations must be fired to warn user to enter required values in\u2026 <span class=\"read-more\"><a href=\"https:\/\/www.greytrix.com\/blogs\/sagecrm\/2013\/05\/15\/net-api-validate-method-for-screen-level-validations\/\">Read More &raquo;<\/a><\/span><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[2,125,155,332,351,1,421],"tags":[],"class_list":["post-3902","post","type-post","status-publish","format-standard","hentry","category-net-api","category-dot-net","category-fields","category-sage-crm","category-screen-sage-crm","category-uncategorized","category-validate-script"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.3 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>.Net API Validate method for Screen level validations - Sage CRM \u2013 Tips, Tricks and Components<\/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:\/\/www.greytrix.com\/blogs\/sagecrm\/2013\/05\/15\/net-api-validate-method-for-screen-level-validations\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\".Net API Validate method for Screen level validations - Sage CRM \u2013 Tips, Tricks and Components\" \/>\n<meta property=\"og:description\" content=\"First let us see what happens when the Validate method is not used for the .NET API screen validation. Below is the new entry screen designed with API and with no validate method implemented. On clicking Save button leaving all required fields blank, validations must be fired to warn user to enter required values in\u2026 Read More &raquo;\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.greytrix.com\/blogs\/sagecrm\/2013\/05\/15\/net-api-validate-method-for-screen-level-validations\/\" \/>\n<meta property=\"og:site_name\" content=\"Sage CRM \u2013 Tips, Tricks and Components\" \/>\n<meta property=\"article:published_time\" content=\"2013-05-15T06:40:06+00:00\" \/>\n<meta property=\"og:image\" content=\"http:\/\/www.greytrix.com\/blogs\/sagecrm\/wp-content\/uploads\/2013\/05\/Image-1.jpg\" \/>\n<meta name=\"author\" content=\"greysagecrm\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"greysagecrm\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"2 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.greytrix.com\/blogs\/sagecrm\/2013\/05\/15\/net-api-validate-method-for-screen-level-validations\/\",\"url\":\"https:\/\/www.greytrix.com\/blogs\/sagecrm\/2013\/05\/15\/net-api-validate-method-for-screen-level-validations\/\",\"name\":\".Net API Validate method for Screen level validations - Sage CRM \u2013 Tips, Tricks and Components\",\"isPartOf\":{\"@id\":\"https:\/\/www.greytrix.com\/blogs\/sagecrm\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.greytrix.com\/blogs\/sagecrm\/2013\/05\/15\/net-api-validate-method-for-screen-level-validations\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.greytrix.com\/blogs\/sagecrm\/2013\/05\/15\/net-api-validate-method-for-screen-level-validations\/#primaryimage\"},\"thumbnailUrl\":\"http:\/\/www.greytrix.com\/blogs\/sagecrm\/wp-content\/uploads\/2013\/05\/Image-1.jpg\",\"datePublished\":\"2013-05-15T06:40:06+00:00\",\"author\":{\"@id\":\"https:\/\/www.greytrix.com\/blogs\/sagecrm\/#\/schema\/person\/e7ff1c8f4763b47730d6bc5e74d59c1f\"},\"breadcrumb\":{\"@id\":\"https:\/\/www.greytrix.com\/blogs\/sagecrm\/2013\/05\/15\/net-api-validate-method-for-screen-level-validations\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.greytrix.com\/blogs\/sagecrm\/2013\/05\/15\/net-api-validate-method-for-screen-level-validations\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.greytrix.com\/blogs\/sagecrm\/2013\/05\/15\/net-api-validate-method-for-screen-level-validations\/#primaryimage\",\"url\":\"http:\/\/www.greytrix.com\/blogs\/sagecrm\/wp-content\/uploads\/2013\/05\/Image-1.jpg\",\"contentUrl\":\"http:\/\/www.greytrix.com\/blogs\/sagecrm\/wp-content\/uploads\/2013\/05\/Image-1.jpg\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.greytrix.com\/blogs\/sagecrm\/2013\/05\/15\/net-api-validate-method-for-screen-level-validations\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.greytrix.com\/blogs\/sagecrm\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\".Net API Validate method for Screen level validations\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.greytrix.com\/blogs\/sagecrm\/#website\",\"url\":\"https:\/\/www.greytrix.com\/blogs\/sagecrm\/\",\"name\":\"Sage CRM \u2013 Tips, Tricks and Components\",\"description\":\"Explore the possibilities with Sage CRM insights through our comprehensive blogs. As a leading Sage partner, Greytrix helps businesses maximize their Sage CRM potential with its rich expertise and immense knowledge. Here, you will find blogs that feature expert advice, tips &amp; tricks, best practices, and comprehensive guides on customizing and configuring Sage CRM for your business. Stay informed with our regular updates and expert insights!\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.greytrix.com\/blogs\/sagecrm\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.greytrix.com\/blogs\/sagecrm\/#\/schema\/person\/e7ff1c8f4763b47730d6bc5e74d59c1f\",\"name\":\"greysagecrm\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.greytrix.com\/blogs\/sagecrm\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/c3b4325cb326e36467f945b9b9adf2bb85e907fe092d42eb36b39743b492e626?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/c3b4325cb326e36467f945b9b9adf2bb85e907fe092d42eb36b39743b492e626?s=96&d=mm&r=g\",\"caption\":\"greysagecrm\"},\"url\":\"https:\/\/www.greytrix.com\/blogs\/sagecrm\/author\/greysagecrm\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":".Net API Validate method for Screen level validations - Sage CRM \u2013 Tips, Tricks and Components","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:\/\/www.greytrix.com\/blogs\/sagecrm\/2013\/05\/15\/net-api-validate-method-for-screen-level-validations\/","og_locale":"en_US","og_type":"article","og_title":".Net API Validate method for Screen level validations - Sage CRM \u2013 Tips, Tricks and Components","og_description":"First let us see what happens when the Validate method is not used for the .NET API screen validation. Below is the new entry screen designed with API and with no validate method implemented. On clicking Save button leaving all required fields blank, validations must be fired to warn user to enter required values in\u2026 Read More &raquo;","og_url":"https:\/\/www.greytrix.com\/blogs\/sagecrm\/2013\/05\/15\/net-api-validate-method-for-screen-level-validations\/","og_site_name":"Sage CRM \u2013 Tips, Tricks and Components","article_published_time":"2013-05-15T06:40:06+00:00","og_image":[{"url":"http:\/\/www.greytrix.com\/blogs\/sagecrm\/wp-content\/uploads\/2013\/05\/Image-1.jpg","type":"","width":"","height":""}],"author":"greysagecrm","twitter_card":"summary_large_image","twitter_misc":{"Written by":"greysagecrm","Est. reading time":"2 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.greytrix.com\/blogs\/sagecrm\/2013\/05\/15\/net-api-validate-method-for-screen-level-validations\/","url":"https:\/\/www.greytrix.com\/blogs\/sagecrm\/2013\/05\/15\/net-api-validate-method-for-screen-level-validations\/","name":".Net API Validate method for Screen level validations - Sage CRM \u2013 Tips, Tricks and Components","isPartOf":{"@id":"https:\/\/www.greytrix.com\/blogs\/sagecrm\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.greytrix.com\/blogs\/sagecrm\/2013\/05\/15\/net-api-validate-method-for-screen-level-validations\/#primaryimage"},"image":{"@id":"https:\/\/www.greytrix.com\/blogs\/sagecrm\/2013\/05\/15\/net-api-validate-method-for-screen-level-validations\/#primaryimage"},"thumbnailUrl":"http:\/\/www.greytrix.com\/blogs\/sagecrm\/wp-content\/uploads\/2013\/05\/Image-1.jpg","datePublished":"2013-05-15T06:40:06+00:00","author":{"@id":"https:\/\/www.greytrix.com\/blogs\/sagecrm\/#\/schema\/person\/e7ff1c8f4763b47730d6bc5e74d59c1f"},"breadcrumb":{"@id":"https:\/\/www.greytrix.com\/blogs\/sagecrm\/2013\/05\/15\/net-api-validate-method-for-screen-level-validations\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.greytrix.com\/blogs\/sagecrm\/2013\/05\/15\/net-api-validate-method-for-screen-level-validations\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.greytrix.com\/blogs\/sagecrm\/2013\/05\/15\/net-api-validate-method-for-screen-level-validations\/#primaryimage","url":"http:\/\/www.greytrix.com\/blogs\/sagecrm\/wp-content\/uploads\/2013\/05\/Image-1.jpg","contentUrl":"http:\/\/www.greytrix.com\/blogs\/sagecrm\/wp-content\/uploads\/2013\/05\/Image-1.jpg"},{"@type":"BreadcrumbList","@id":"https:\/\/www.greytrix.com\/blogs\/sagecrm\/2013\/05\/15\/net-api-validate-method-for-screen-level-validations\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.greytrix.com\/blogs\/sagecrm\/"},{"@type":"ListItem","position":2,"name":".Net API Validate method for Screen level validations"}]},{"@type":"WebSite","@id":"https:\/\/www.greytrix.com\/blogs\/sagecrm\/#website","url":"https:\/\/www.greytrix.com\/blogs\/sagecrm\/","name":"Sage CRM \u2013 Tips, Tricks and Components","description":"Explore the possibilities with Sage CRM insights through our comprehensive blogs. As a leading Sage partner, Greytrix helps businesses maximize their Sage CRM potential with its rich expertise and immense knowledge. Here, you will find blogs that feature expert advice, tips &amp; tricks, best practices, and comprehensive guides on customizing and configuring Sage CRM for your business. Stay informed with our regular updates and expert insights!","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.greytrix.com\/blogs\/sagecrm\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/www.greytrix.com\/blogs\/sagecrm\/#\/schema\/person\/e7ff1c8f4763b47730d6bc5e74d59c1f","name":"greysagecrm","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.greytrix.com\/blogs\/sagecrm\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/c3b4325cb326e36467f945b9b9adf2bb85e907fe092d42eb36b39743b492e626?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/c3b4325cb326e36467f945b9b9adf2bb85e907fe092d42eb36b39743b492e626?s=96&d=mm&r=g","caption":"greysagecrm"},"url":"https:\/\/www.greytrix.com\/blogs\/sagecrm\/author\/greysagecrm\/"}]}},"_links":{"self":[{"href":"https:\/\/www.greytrix.com\/blogs\/sagecrm\/wp-json\/wp\/v2\/posts\/3902","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.greytrix.com\/blogs\/sagecrm\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.greytrix.com\/blogs\/sagecrm\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.greytrix.com\/blogs\/sagecrm\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.greytrix.com\/blogs\/sagecrm\/wp-json\/wp\/v2\/comments?post=3902"}],"version-history":[{"count":0,"href":"https:\/\/www.greytrix.com\/blogs\/sagecrm\/wp-json\/wp\/v2\/posts\/3902\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.greytrix.com\/blogs\/sagecrm\/wp-json\/wp\/v2\/media?parent=3902"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.greytrix.com\/blogs\/sagecrm\/wp-json\/wp\/v2\/categories?post=3902"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.greytrix.com\/blogs\/sagecrm\/wp-json\/wp\/v2\/tags?post=3902"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}