{"id":1755,"date":"2017-06-05T04:04:16","date_gmt":"2017-06-05T04:04:16","guid":{"rendered":"https:\/\/www.enprowess.com\/blogs\/?p=1755"},"modified":"2022-04-27T15:54:06","modified_gmt":"2022-04-27T10:24:06","slug":"dxp-model-listener-hook","status":"publish","type":"post","link":"https:\/\/www.enprowess.com\/blogs\/dxp-model-listener-hook\/","title":{"rendered":"Learn Model Listener Hook in Liferay DXP\/7"},"content":{"rendered":"<p>In this \u2018How to?\u2019 series of posts, we discussed about JSP hook last time. In this post, I am going to describe about Model Listener Hook and how to implement it in Liferay 7\/DXP.<br \/>\n<br \/>\nFollowing are the list of hooks available in Liferay 7\/DXP and we have already discussed about hyperlinked item in list.<\/p>\n<ul>\n<li><a href=\"https:\/\/www.enprowess.com\/blogs\/struts-action-hook-dxp\/\">Struts Action Hook<\/a><\/li>\n<li><a href=\"https:\/\/www.enprowess.com\/blogs\/liferay7dxp-filter-hook\/\">Filter Hook<\/a><\/li>\n<li><a href=\"https:\/\/www.enprowess.com\/blogs\/jsp-hook-liferay-dxp\/\">JSP Hook<\/a><\/li>\n<li>Language properties Hook<\/li>\n<li>Model Listener hook<\/li>\n<li>Service Wrapper Hook<\/li>\n<\/ul>\n<p>Let\u2019s first understand model when listener hooks are useful.<br \/>\n<br \/>\nModel Listener hook are designed to listen for events performed during changes in Model object. Ex. on delete of user from Liferay, you may want to perform some business logic or other desire operations.<br \/>\n<br \/>\nFollowing are the list of events Liferay supports for model listener hook,<\/p>\n<ol>\n<li>onAfterAddAssociation<\/li>\n<li>onAfterCreate<\/li>\n<li>onAfterRemove<\/li>\n<li>onAfterRemoveAssociation<\/li>\n<li>onAfterUpdate<\/li>\n<li>onBeforeAddAssociation<\/li>\n<li>onBeforeCreate<\/li>\n<li>onBeforeRemove<\/li>\n<li>onBeforeRemoveAssociation<\/li>\n<li>onBeforeUpdate<\/li>\n<\/ol>\n<p>Unlike previous versions of Liferay, DXP does not support XML bases configuration. During implementation exercise, we will understand substitute of XML based configuration in Liferay DXP\/7.<br \/>\n<br \/>\nHere I assume that you have already read previous posts and you have your development environment and other prerequisite configured to start with model even listener hook.<br \/>\n<br \/>\nIn this post, I have taken example to demonstrates how model listener can be implemented for user delete event. Let\u2019s understand steps to configure model listener as follow,<\/p>\n<ol>\n<li>\n<h4><strong>Create Liferay Workspace<\/strong> <strong>Project:<\/strong><\/h4>\n<p>To create a Liferay Workspace in IDE follow the following steps:<\/li>\n<\/ol>\n<p>Select File menu \u2192 click New \u2192 select Liferay Workspace Project. Upon creation of the workspace, the structure should look like below:<\/p>\n<p style=\"padding-left: 30px;\"><img loading=\"lazy\" class=\"size-full wp-image-1756 alignnone\" src=\"https:\/\/www.enprowess.com\/blogs\/wp-content\/uploads\/2017\/05\/modellistener1.png\" alt=\"Create Liferay Workspace Project\" width=\"252\" height=\"300\" \/><\/p>\n<ol start=\"2\">\n<li>\n<h4><strong>Create a Liferay Module Project: <\/strong><\/h4>\n<\/ol>\n<p>Following the following steps to create Liferay Module Project in workspace.<\/li>\n<p>\nOpen\u00a0File Menu \u2192 Click New \u2192 Select Liferay Module Project and Provide project name as ModelListenerHook. Select run time name accordingly and click Next. Please see following snapshot for reference,<\/p>\n<p style=\"padding-left: 30px;\"><img loading=\"lazy\" class=\"size-full wp-image-1757 alignnone\" src=\"https:\/\/www.enprowess.com\/blogs\/wp-content\/uploads\/2017\/05\/modellistener2.png\" alt=\"Create a Liferay Module Project\" width=\"546\" height=\"412\" \/><\/p>\n<ol start=\"3\">\n<li>\n<h4><strong>Enter Component Name: <\/strong><\/h4>\n<\/li>\n<\/ol>\n<p>As you see in following snapshot, provide appropriate Component Class name and package. For this example I am providing class name as UserModelListener and package as com.enprowess.model.listener,<\/p>\n<p style=\"padding-left: 30px;\">\n<img loading=\"lazy\" class=\" wp-image-1758 alignnone\" src=\"https:\/\/www.enprowess.com\/blogs\/wp-content\/uploads\/2017\/05\/modellistener3.png\" alt=\"Enter Component Name\" width=\"541\" height=\"408\" \/>\n<\/p>\n<p>On click of Finish, you should see folder structure as following snapshot,<\/p>\n<p style=\"padding-left: 30px;\"><img loading=\"lazy\" class=\"size-full wp-image-1759 alignnone\" src=\"https:\/\/www.enprowess.com\/blogs\/wp-content\/uploads\/2017\/05\/modellistener4.png\" alt=\"folder structure \" width=\"327\" height=\"208\" \/><\/p>\n<ol start=\"4\">\n<li>\n<h4><strong>Modify Component class: <\/strong><\/h4>\n<\/li>\n<\/ol>\n<p>Component class must extend BaseModelListener&lt;User&gt; abstract class. Provide appropriate generic based on model listener you are planning to implement. In this example, I am adding model listener for User class so I have mentioned \u2018User\u2019 as genetic.<br \/>\n<br \/>\nNow override \u2018OnAfterRemove()\u2019 method to add logger. Here in this example I am printing log on User delete event. Please see following screenshot for reference,<\/p>\n<p style=\"padding-left: 30px;\">\n<img loading=\"lazy\" class=\"size-full wp-image-1760 alignnone\" src=\"https:\/\/www.enprowess.com\/blogs\/wp-content\/uploads\/2017\/05\/modellistener5.png\" alt=\"Modify Component class\" width=\"752\" height=\"231\" \/>\n<\/p>\n<p>Now add component annotation block in UserModelListener class to mark it as model listener component as follow,<\/p>\n<p style=\"padding-left: 30px;\"><img loading=\"lazy\" class=\"size-full wp-image-1761 alignnone\" src=\"https:\/\/www.enprowess.com\/blogs\/wp-content\/uploads\/2017\/05\/modellistener6.png\" alt=\" add component annotation block in UserModelListene\" width=\"439\" height=\"93\" \/><\/p>\n<p>With above steps, you have successfully implemented Model listener hook. You can deploy this hook in Liferay DXP\/7 and check log on user delete event. In my next blog, I will talk about another implementation in Liferay 7\/DXP. Till then happy learning!<\/p>\n<p>Blog By,<br \/>\n<br \/>\nMaitrik Panchal<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In this \u2018How to?\u2019 series of posts, we discussed about JSP hook last time. In this post, I am going to describe about Model Listener Hook and how to implement it in Liferay 7\/DXP. Following are the list of hooks available in Liferay 7\/DXP and we have already discussed about hyperlinked item in list. Struts&hellip; <a class=\"more-link\" href=\"https:\/\/www.enprowess.com\/blogs\/dxp-model-listener-hook\/\">Continue reading <span class=\"screen-reader-text\">Learn Model Listener Hook in Liferay DXP\/7<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":1764,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[8,46],"tags":[15,38,39,9,18,19,10,49,16],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v17.9 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Learn Model Listener Hook in Liferay DXP\/7 - EnProwess Blog<\/title>\n<meta name=\"description\" content=\"Do you want to learn hook development in Liferay 7\/DXP? Learn Model Listener hook in 4 simple steps\" \/>\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.enprowess.com\/blogs\/dxp-model-listener-hook\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Quick steps for Model Listener Hook in Liferay 7\/DXP\" \/>\n<meta property=\"og:description\" content=\"Do you want to learn hook development in Liferay 7\/DXP? Learn Model Listener hook in 4 simple steps\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.enprowess.com\/blogs\/dxp-model-listener-hook\/\" \/>\n<meta property=\"og:site_name\" content=\"EnProwess Blog\" \/>\n<meta property=\"article:published_time\" content=\"2017-06-05T04:04:16+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2022-04-27T10:24:06+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.enprowess.com\/blogs\/wp-content\/uploads\/2017\/05\/howto-modellistener.jpg\" \/>\n<meta name=\"twitter:card\" content=\"summary\" \/>\n<meta name=\"twitter:title\" content=\"Quick steps for Model Listener Hook in Liferay 7\/DXP\" \/>\n<meta name=\"twitter:description\" content=\"Do you want to learn hook development in Liferay 7\/DXP? Learn Model Listener hook in 4 simple steps\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/www.enprowess.com\/blogs\/wp-content\/uploads\/2017\/05\/howto-modellistener.jpg\" \/>\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=\"2 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.enprowess.com\/blogs\/#organization\",\"name\":\"EnProwess\",\"url\":\"https:\/\/www.enprowess.com\/blogs\/\",\"sameAs\":[],\"logo\":{\"@type\":\"ImageObject\",\"@id\":\"https:\/\/www.enprowess.com\/blogs\/#logo\",\"inLanguage\":\"en-US\",\"url\":\"https:\/\/www.enprowess.com\/blogs\/wp-content\/uploads\/2021\/07\/enprowess_logo.jpg\",\"contentUrl\":\"https:\/\/www.enprowess.com\/blogs\/wp-content\/uploads\/2021\/07\/enprowess_logo.jpg\",\"width\":1057,\"height\":697,\"caption\":\"EnProwess\"},\"image\":{\"@id\":\"https:\/\/www.enprowess.com\/blogs\/#logo\"}},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.enprowess.com\/blogs\/#website\",\"url\":\"https:\/\/www.enprowess.com\/blogs\/\",\"name\":\"EnProwess Blog\",\"description\":\"Your Enterprise solution partner\",\"publisher\":{\"@id\":\"https:\/\/www.enprowess.com\/blogs\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.enprowess.com\/blogs\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"en-US\"},{\"@type\":\"ImageObject\",\"@id\":\"https:\/\/www.enprowess.com\/blogs\/dxp-model-listener-hook\/#primaryimage\",\"inLanguage\":\"en-US\",\"url\":\"\",\"contentUrl\":\"\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.enprowess.com\/blogs\/dxp-model-listener-hook\/#webpage\",\"url\":\"https:\/\/www.enprowess.com\/blogs\/dxp-model-listener-hook\/\",\"name\":\"Learn Model Listener Hook in Liferay DXP\/7 - EnProwess Blog\",\"isPartOf\":{\"@id\":\"https:\/\/www.enprowess.com\/blogs\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.enprowess.com\/blogs\/dxp-model-listener-hook\/#primaryimage\"},\"datePublished\":\"2017-06-05T04:04:16+00:00\",\"dateModified\":\"2022-04-27T10:24:06+00:00\",\"description\":\"Do you want to learn hook development in Liferay 7\/DXP? Learn Model Listener hook in 4 simple steps\",\"breadcrumb\":{\"@id\":\"https:\/\/www.enprowess.com\/blogs\/dxp-model-listener-hook\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.enprowess.com\/blogs\/dxp-model-listener-hook\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.enprowess.com\/blogs\/dxp-model-listener-hook\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Blog\",\"item\":\"https:\/\/www.enprowess.com\/blogs\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Liferay\",\"item\":\"https:\/\/www.enprowess.com\/blogs\/category\/liferay\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Learn Model Listener Hook in Liferay DXP\/7\"}]},{\"@type\":\"TechArticle\",\"@id\":\"https:\/\/www.enprowess.com\/blogs\/dxp-model-listener-hook\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.enprowess.com\/blogs\/dxp-model-listener-hook\/#webpage\"},\"author\":{\"@id\":\"https:\/\/www.enprowess.com\/blogs\/#\/schema\/person\/cb84840e7dba202419065ea1c9fe7f11\"},\"headline\":\"Learn Model Listener Hook in Liferay DXP\/7\",\"datePublished\":\"2017-06-05T04:04:16+00:00\",\"dateModified\":\"2022-04-27T10:24:06+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.enprowess.com\/blogs\/dxp-model-listener-hook\/#webpage\"},\"wordCount\":481,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.enprowess.com\/blogs\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.enprowess.com\/blogs\/dxp-model-listener-hook\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.enprowess.com\/blogs\/wp-content\/uploads\/2017\/05\/howto-modellistener.jpg\",\"keywords\":[\"BestPractice\",\"Code in Liferay\",\"Hook\",\"liferay\",\"Liferay 7\",\"Liferay DXP\",\"liferay7\",\"Model Listener\",\"OSGI\"],\"articleSection\":[\"Liferay\",\"Liferay DXP\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.enprowess.com\/blogs\/dxp-model-listener-hook\/#respond\"]}]},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.enprowess.com\/blogs\/#\/schema\/person\/cb84840e7dba202419065ea1c9fe7f11\",\"name\":\"admin\",\"image\":{\"@type\":\"ImageObject\",\"@id\":\"https:\/\/www.enprowess.com\/blogs\/#personlogo\",\"inLanguage\":\"en-US\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/b43445b202a083f6e4a2f2e7d6f43d62?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/b43445b202a083f6e4a2f2e7d6f43d62?s=96&d=mm&r=g\",\"caption\":\"admin\"},\"url\":\"https:\/\/www.enprowess.com\/blogs\/author\/admin\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Learn Model Listener Hook in Liferay DXP\/7 - EnProwess Blog","description":"Do you want to learn hook development in Liferay 7\/DXP? Learn Model Listener hook in 4 simple steps","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.enprowess.com\/blogs\/dxp-model-listener-hook\/","og_locale":"en_US","og_type":"article","og_title":"Quick steps for Model Listener Hook in Liferay 7\/DXP","og_description":"Do you want to learn hook development in Liferay 7\/DXP? Learn Model Listener hook in 4 simple steps","og_url":"https:\/\/www.enprowess.com\/blogs\/dxp-model-listener-hook\/","og_site_name":"EnProwess Blog","article_published_time":"2017-06-05T04:04:16+00:00","article_modified_time":"2022-04-27T10:24:06+00:00","og_image":[{"url":"https:\/\/www.enprowess.com\/blogs\/wp-content\/uploads\/2017\/05\/howto-modellistener.jpg"}],"twitter_card":"summary","twitter_title":"Quick steps for Model Listener Hook in Liferay 7\/DXP","twitter_description":"Do you want to learn hook development in Liferay 7\/DXP? Learn Model Listener hook in 4 simple steps","twitter_image":"https:\/\/www.enprowess.com\/blogs\/wp-content\/uploads\/2017\/05\/howto-modellistener.jpg","twitter_misc":{"Written by":"admin","Est. reading time":"2 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Organization","@id":"https:\/\/www.enprowess.com\/blogs\/#organization","name":"EnProwess","url":"https:\/\/www.enprowess.com\/blogs\/","sameAs":[],"logo":{"@type":"ImageObject","@id":"https:\/\/www.enprowess.com\/blogs\/#logo","inLanguage":"en-US","url":"https:\/\/www.enprowess.com\/blogs\/wp-content\/uploads\/2021\/07\/enprowess_logo.jpg","contentUrl":"https:\/\/www.enprowess.com\/blogs\/wp-content\/uploads\/2021\/07\/enprowess_logo.jpg","width":1057,"height":697,"caption":"EnProwess"},"image":{"@id":"https:\/\/www.enprowess.com\/blogs\/#logo"}},{"@type":"WebSite","@id":"https:\/\/www.enprowess.com\/blogs\/#website","url":"https:\/\/www.enprowess.com\/blogs\/","name":"EnProwess Blog","description":"Your Enterprise solution partner","publisher":{"@id":"https:\/\/www.enprowess.com\/blogs\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.enprowess.com\/blogs\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"en-US"},{"@type":"ImageObject","@id":"https:\/\/www.enprowess.com\/blogs\/dxp-model-listener-hook\/#primaryimage","inLanguage":"en-US","url":"","contentUrl":""},{"@type":"WebPage","@id":"https:\/\/www.enprowess.com\/blogs\/dxp-model-listener-hook\/#webpage","url":"https:\/\/www.enprowess.com\/blogs\/dxp-model-listener-hook\/","name":"Learn Model Listener Hook in Liferay DXP\/7 - EnProwess Blog","isPartOf":{"@id":"https:\/\/www.enprowess.com\/blogs\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.enprowess.com\/blogs\/dxp-model-listener-hook\/#primaryimage"},"datePublished":"2017-06-05T04:04:16+00:00","dateModified":"2022-04-27T10:24:06+00:00","description":"Do you want to learn hook development in Liferay 7\/DXP? Learn Model Listener hook in 4 simple steps","breadcrumb":{"@id":"https:\/\/www.enprowess.com\/blogs\/dxp-model-listener-hook\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.enprowess.com\/blogs\/dxp-model-listener-hook\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.enprowess.com\/blogs\/dxp-model-listener-hook\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Blog","item":"https:\/\/www.enprowess.com\/blogs\/"},{"@type":"ListItem","position":2,"name":"Liferay","item":"https:\/\/www.enprowess.com\/blogs\/category\/liferay\/"},{"@type":"ListItem","position":3,"name":"Learn Model Listener Hook in Liferay DXP\/7"}]},{"@type":"TechArticle","@id":"https:\/\/www.enprowess.com\/blogs\/dxp-model-listener-hook\/#article","isPartOf":{"@id":"https:\/\/www.enprowess.com\/blogs\/dxp-model-listener-hook\/#webpage"},"author":{"@id":"https:\/\/www.enprowess.com\/blogs\/#\/schema\/person\/cb84840e7dba202419065ea1c9fe7f11"},"headline":"Learn Model Listener Hook in Liferay DXP\/7","datePublished":"2017-06-05T04:04:16+00:00","dateModified":"2022-04-27T10:24:06+00:00","mainEntityOfPage":{"@id":"https:\/\/www.enprowess.com\/blogs\/dxp-model-listener-hook\/#webpage"},"wordCount":481,"commentCount":0,"publisher":{"@id":"https:\/\/www.enprowess.com\/blogs\/#organization"},"image":{"@id":"https:\/\/www.enprowess.com\/blogs\/dxp-model-listener-hook\/#primaryimage"},"thumbnailUrl":"https:\/\/www.enprowess.com\/blogs\/wp-content\/uploads\/2017\/05\/howto-modellistener.jpg","keywords":["BestPractice","Code in Liferay","Hook","liferay","Liferay 7","Liferay DXP","liferay7","Model Listener","OSGI"],"articleSection":["Liferay","Liferay DXP"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.enprowess.com\/blogs\/dxp-model-listener-hook\/#respond"]}]},{"@type":"Person","@id":"https:\/\/www.enprowess.com\/blogs\/#\/schema\/person\/cb84840e7dba202419065ea1c9fe7f11","name":"admin","image":{"@type":"ImageObject","@id":"https:\/\/www.enprowess.com\/blogs\/#personlogo","inLanguage":"en-US","url":"https:\/\/secure.gravatar.com\/avatar\/b43445b202a083f6e4a2f2e7d6f43d62?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/b43445b202a083f6e4a2f2e7d6f43d62?s=96&d=mm&r=g","caption":"admin"},"url":"https:\/\/www.enprowess.com\/blogs\/author\/admin\/"}]}},"_links":{"self":[{"href":"https:\/\/www.enprowess.com\/blogs\/wp-json\/wp\/v2\/posts\/1755"}],"collection":[{"href":"https:\/\/www.enprowess.com\/blogs\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.enprowess.com\/blogs\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.enprowess.com\/blogs\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.enprowess.com\/blogs\/wp-json\/wp\/v2\/comments?post=1755"}],"version-history":[{"count":8,"href":"https:\/\/www.enprowess.com\/blogs\/wp-json\/wp\/v2\/posts\/1755\/revisions"}],"predecessor-version":[{"id":3210,"href":"https:\/\/www.enprowess.com\/blogs\/wp-json\/wp\/v2\/posts\/1755\/revisions\/3210"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.enprowess.com\/blogs\/wp-json\/wp\/v2\/media\/1764"}],"wp:attachment":[{"href":"https:\/\/www.enprowess.com\/blogs\/wp-json\/wp\/v2\/media?parent=1755"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.enprowess.com\/blogs\/wp-json\/wp\/v2\/categories?post=1755"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.enprowess.com\/blogs\/wp-json\/wp\/v2\/tags?post=1755"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}