{"id":6113,"date":"2017-05-31T15:48:09","date_gmt":"2017-05-31T15:48:09","guid":{"rendered":"http:\/\/www.jitendrazaa.com\/blog\/?p=6113"},"modified":"2022-06-11T11:01:31","modified_gmt":"2022-06-11T15:01:31","slug":"design-continuation-server-in-salesforce","status":"publish","type":"post","link":"https:\/\/www.jitendrazaa.com\/blog\/salesforce\/design-continuation-server-in-salesforce\/","title":{"rendered":"Design Continuation Server in Salesforce"},"content":{"rendered":"<figure id=\"attachment_6115\" aria-describedby=\"caption-attachment-6115\" style=\"width: 1350px\" class=\"wp-caption aligncenter\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" class=\"wp-image-6115 size-full\" src=\"https:\/\/i0.wp.com\/www.jitendrazaa.com\/blog\/wp-content\/uploads\/2017\/05\/Continuation-Server-using-Action-Function.gif?resize=1350%2C720&#038;ssl=1\" alt=\"Continuation Server using ActionFunction in Salesforce\" width=\"1350\" height=\"720\" \/><figcaption id=\"caption-attachment-6115\" class=\"wp-caption-text\">Continuation Server using Action Function in Salesforce<\/figcaption><\/figure>\n<p>Check the below video first if you are planning to use Continuation<\/p>\n<p><iframe loading=\"lazy\" title=\"Continuation not needed anymore in Salesforce - Change My Mind\" width=\"500\" height=\"281\" src=\"https:\/\/www.youtube.com\/embed\/ya2N9EX9dmg?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen><\/iframe><\/p>\n<p style=\"text-align: justify;\">If you are new to <strong>Continuation Object<\/strong> in Salesforce then would suggest to read <a href=\"https:\/\/www.jitendrazaa.com\/blog\/salesforce\/continuation-object-in-apex-asynchronous-callouts-for-long-running-request-live-demo\/\">introduction post<\/a> first. In last post, we discussed how to <a href=\"https:\/\/www.jitendrazaa.com\/blog\/salesforce\/limitless-chaining-of-continuation-object-in-salesforce\/\">implement limitless chaining of Continuation Object using JavaScript remoting<\/a>. In this post, we would try to achieve same, but instead of using JavaScript remoting, we would be using\u00a0<strong>ActionFunction.<\/strong><\/p>\n<p><strong>Why do we need chaining of Continuation Object<\/strong><\/p>\n<ul>\n<li style=\"text-align: justify;\">From Apex, we can only chain 3 Continuation Object<\/li>\n<li style=\"text-align: justify;\">If we call API synchronously, chances are very high that it will run for more than 5 sec and contributing towards\u00a0<strong>Concurrent Apex limit<\/strong><\/li>\n<li style=\"text-align: justify;\">Getting\u00a0<strong>CPU timelimit\u00a0<\/strong>error is also high<\/li>\n<li style=\"text-align: justify;\">Making synchronous call also means risking scalability of Salesforce instance<\/li>\n<li style=\"text-align: justify;\">You don&#8217;t want user to wait till call out completed, let them work and update user interface once response is received<\/li>\n<\/ul>\n<p style=\"text-align: justify;\"><!--more-->Below code is assuming that Salesforce Lightning design system is uploaded as a static resource.<\/p>\n<figure id=\"attachment_6111\" aria-describedby=\"caption-attachment-6111\" style=\"width: 840px\" class=\"wp-caption aligncenter\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" class=\"size-large wp-image-6111\" src=\"https:\/\/i0.wp.com\/www.jitendrazaa.com\/blog\/wp-content\/uploads\/2017\/05\/Salesforce-Continuation-Object-Error-1024x302.png?resize=840%2C248&#038;ssl=1\" alt=\"What happens when we try to chain more than 3 Continuation Object call\" width=\"840\" height=\"248\" srcset=\"https:\/\/i0.wp.com\/www.jitendrazaa.com\/blog\/wp-content\/uploads\/2017\/05\/Salesforce-Continuation-Object-Error.png?resize=1024%2C302&amp;ssl=1 1024w, https:\/\/i0.wp.com\/www.jitendrazaa.com\/blog\/wp-content\/uploads\/2017\/05\/Salesforce-Continuation-Object-Error.png?resize=300%2C88&amp;ssl=1 300w, https:\/\/i0.wp.com\/www.jitendrazaa.com\/blog\/wp-content\/uploads\/2017\/05\/Salesforce-Continuation-Object-Error.png?resize=768%2C226&amp;ssl=1 768w, https:\/\/i0.wp.com\/www.jitendrazaa.com\/blog\/wp-content\/uploads\/2017\/05\/Salesforce-Continuation-Object-Error.png?resize=1200%2C353&amp;ssl=1 1200w, https:\/\/i0.wp.com\/www.jitendrazaa.com\/blog\/wp-content\/uploads\/2017\/05\/Salesforce-Continuation-Object-Error.png?w=1382&amp;ssl=1 1382w\" sizes=\"auto, (max-width: 840px) 100vw, 840px\" \/><figcaption id=\"caption-attachment-6111\" class=\"wp-caption-text\">What happens when we try to chain more than 3 Continuation Object call<\/figcaption><\/figure>\n<figure id=\"attachment_6122\" aria-describedby=\"caption-attachment-6122\" style=\"width: 1342px\" class=\"wp-caption aligncenter\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" class=\"wp-image-6122 size-full\" src=\"https:\/\/i0.wp.com\/www.jitendrazaa.com\/blog\/wp-content\/uploads\/2017\/05\/Continuation-Demo.gif?resize=1342%2C720&#038;ssl=1\" alt=\"Continuation Server in Salesforce - Demo\" width=\"1342\" height=\"720\" \/><figcaption id=\"caption-attachment-6122\" class=\"wp-caption-text\">Continuation Server in Salesforce &#8211; Demo<\/figcaption><\/figure>\n<p><span style=\"text-decoration: underline;\">ContinuationDemoController.class<\/span><\/p>\n<pre><pre class=\"brush: java; title: ; notranslate\" title=\"\">\n\/**\n * @Author\t\t:\t\tJitendra Zaa\n * @Date\t\t:\t\t31 May 2017\n * @Desc\t\t:\t\tDemo of Continuation Server using Action Function\n *\n * *\/\npublic class ContinuationDemoController {  \n\n    public String result {get;set;}\n    private static final String CALLOUT_URL =\n        'https:\/\/node-count.herokuapp.com\/';\n    public String apiCount {get;set;}\n    public String callBackHandlerName {get;set;}\n    String continuationState = '' ;\n    public ContinuationDemoController(){\n        result = '';\n    } \n\n    public Object startRequest() {\n      return constructCallout(callBackHandlerName,CALLOUT_URL, apiCount);\n    } \n\n    public Object callout1Response() {\n        HttpResponse response = Continuation.getResponse(continuationState);\n        result = result + 'API'+ apiCount +' processing completed\n ' ;\n        return null;\n    }    \n\n    private Continuation constructCallout(String callbackMethodName,String endpointURL, String apiCount){\n        Continuation chainedContinuation = null;\n        chainedContinuation = new Continuation(60);\n        chainedContinuation.continuationMethod=callbackMethodName;\n        HttpRequest req = new HttpRequest();\n        req.setMethod('GET');\n        req.setEndpoint(endpointURL+apiCount);\n        continuationState = chainedContinuation.addHttpRequest(req);\n        return chainedContinuation;\n    }\n}\n<\/pre>\n<p><span style=\"text-decoration: underline;\">ContinuationDemo.page<\/span><\/p>\n<pre><pre class=\"brush: xml; title: ; notranslate\" title=\"\">\n&amp;lt;apex:page controller=\"ContinuationDemoController\" standardStylesheets=\"false\" sidebar=\"false\" showHeader=\"false\"\n title=\"Continuation Server Demo\"&amp;gt;\n &amp;lt;!-- &amp;lt;apex:slds \/&amp;gt; --&amp;gt;\n &amp;lt;apex:stylesheet value=\"{!URLFOR($Resource.SLDS2_3_1, 'assets\/styles\/salesforce-lightning-design-system.min.css')}\" \/&amp;gt;\n &amp;lt;div class=\"slds slds-box\"&amp;gt;\n &amp;lt;div class=\" slds-m-top_xx-large slds-m-bottom_xx-large slds-m-left_xx-large slds-m-right_xx-large\"&amp;gt;\n &amp;lt;apex:form &amp;gt;\n Total API calls to make : &amp;lt;input type=\"text\" value=\"3\" placeholder=\"Total API calls to make, Default 3\" id=\"txtAPICallsToMake\" \/&amp;gt;\n &amp;lt;input value=\"Start Request\" type=\"button\" onclick=\"startRequest()\"\/&amp;gt; \n\n &amp;lt;apex:actionFunction name=\"submitAPI\" action=\"{!startRequest}\" reRender=\"panel\" oncomplete=\"apiComplete()\"&amp;gt;\n &amp;lt;apex:param name=\"apiCount\" assignTo=\"{!apiCount}\" value=\"\" \/&amp;gt;\n &amp;lt;apex:param name=\"callBackHandlerName\" assignTo=\"{!callBackHandlerName}\" value=\"\" \/&amp;gt;\n &amp;lt;\/apex:actionFunction&amp;gt; \n\n &amp;lt;br \/&amp;gt; &amp;lt;br \/&amp;gt;\n\n &amp;lt;apex:outputPanel id=\"panel\"&amp;gt;\n &amp;lt;apex:outputText value=\"{!result}\" escape=\"false\" \/&amp;gt;\n &amp;lt;\/apex:outputPanel&amp;gt;\n &amp;lt;\/apex:form&amp;gt;\n &amp;lt;\/div&amp;gt; \n\n &amp;lt;div id=\"modalWindowMsg\" style=\"height:640px;\" class=\"hide\"&amp;gt;\n &amp;lt;section role=\"dialog\" tabindex=\"-1\" aria-labelledby=\"modal-heading-01\" aria-describedby=\"modal-content\" class=\"slds-modal slds-fade-in-open\"&amp;gt;\n &amp;lt;div class=\"slds-modal__container\"&amp;gt;\n &amp;lt;header class=\"slds-modal__header\"&amp;gt;\n &amp;lt;h2 id=\"modal-heading-01\" class=\"slds-text-heading_medium slds-hyphenate\"&amp;gt;API Callout status&amp;lt;\/h2&amp;gt;\n &amp;lt;\/header&amp;gt;\n &amp;lt;div class=\"slds-modal__content slds-p-around_medium\" id=\"modal-content\" &amp;gt;\n &amp;lt;p&amp;gt;\n &amp;lt;span id=\"modal-content-status\"&amp;gt; Callout is in progress&amp;lt;\/span&amp;gt;\n &amp;lt;\/p&amp;gt;\n &amp;lt;p&amp;gt;\n &amp;lt;div class=\"demo-only\" style=\"height:3rem;\"&amp;gt;\n &amp;lt;div role=\"status\" class=\"slds-spinner slds-spinner_medium\"&amp;gt;\n &amp;lt;span class=\"slds-assistive-text\"&amp;gt;Loading&amp;lt;\/span&amp;gt;\n &amp;lt;div class=\"slds-spinner__dot-a\"&amp;gt;&amp;lt;\/div&amp;gt;\n &amp;lt;div class=\"slds-spinner__dot-b\"&amp;gt;&amp;lt;\/div&amp;gt;\n &amp;lt;\/div&amp;gt;\n &amp;lt;\/div&amp;gt;\n &amp;lt;\/p&amp;gt;\n &amp;lt;\/div&amp;gt;\n &amp;lt;footer class=\"slds-modal__footer\"&amp;gt;\n &amp;lt;button class=\"slds-button slds-button_neutral\" onclick=\"cancelModal()\"&amp;gt;Cancel&amp;lt;\/button&amp;gt;\n &amp;lt;\/footer&amp;gt;\n &amp;lt;\/div&amp;gt;\n &amp;lt;\/section&amp;gt;\n &amp;lt;div id=\"modalWindowOverlay\" class=\"slds-backdrop slds-backdrop_open\"&amp;gt;&amp;lt;\/div&amp;gt;\n &amp;lt;\/div&amp;gt; \n\n &amp;lt;\/div&amp;gt;\n\n &amp;lt;style&amp;gt;\n .modal{\n visibility: visible !important;\n opacity: 1 !important;\n transition: opacity 0.4s linear;\n }\n .hide{\n display:none;\n }\n #modal-content{\n padding: 1rem;\n }\n &amp;lt;\/style&amp;gt;\n\n &amp;lt;script&amp;gt;\n var calloutNum = 1 ;\n var totalCallout = 4;\n\n function openModal(){\n document.getElementById(\"modalWindowOverlay\").classList.add('modal');\n document.getElementById(\"modalWindowMsg\").classList.remove('hide');\n }\n function cancelModal(){\n document.getElementById(\"modalWindowOverlay\").classList.remove('modal');\n document.getElementById(\"modalWindowMsg\").classList.add('hide');\n calloutNum = totalCallout+1;\n }\n function startRequest(){\n openModal();\n var callnumbers = document.getElementById(\"txtAPICallsToMake\").value;\n if(callnumbers){\n totalCallout = callnumbers;\n }\n\n document.getElementById(\"modal-content-status\").innerHTML = 'Callout request started for API - '+calloutNum;\n submitAPI(calloutNum,'callout1Response');\n }\n\n function apiComplete(){\n if(calloutNum &amp;lt; totalCallout){\n calloutNum++;\n document.getElementById(\"modal-content-status\").innerHTML = 'Callout request started for API - '+calloutNum;\n submitAPI(calloutNum,'callout1Response');\n }else{\n document.getElementById(\"modalWindowOverlay\").classList.remove('modal');\n document.getElementById(\"modalWindowMsg\").classList.add('hide');\n }\n }\n &amp;lt;\/script&amp;gt;\n&amp;lt;\/apex:page&amp;gt;\n<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>How to implement Continuation Server in Salesforce with the help of Action Function and Continuation Object<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"advanced_seo_description":"","jetpack_seo_html_title":"","jetpack_seo_noindex":false,"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"jz_research_post":"","_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[9],"tags":[297,314,416,417],"class_list":["post-6113","post","type-post","status-publish","format-standard","hentry","category-salesforce","tag-asynchronous-apex","tag-continuation","tag-continuation-object","tag-continuation-server"],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack-related-posts":[{"id":6101,"url":"https:\/\/www.jitendrazaa.com\/blog\/salesforce\/limitless-chaining-of-continuation-object-in-salesforce\/","url_meta":{"origin":6113,"position":0},"title":"Limitless Chaining of Continuation object in Salesforce","author":"Jitendra","date":"May 31, 2017","format":false,"excerpt":"How to create a Continuation Server in Salesforce with the help of JavaScript remoting and Continuation Object","rel":"","context":"In &quot;Salesforce&quot;","block_context":{"text":"Salesforce","link":"https:\/\/www.jitendrazaa.com\/blog\/category\/salesforce\/"},"img":{"alt_text":"Chaining of Continuation Object in Salesforce","src":"https:\/\/i0.wp.com\/www.jitendrazaa.com\/blog\/wp-content\/uploads\/2017\/05\/Continuation-Object-GIF.gif?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.jitendrazaa.com\/blog\/wp-content\/uploads\/2017\/05\/Continuation-Object-GIF.gif?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/www.jitendrazaa.com\/blog\/wp-content\/uploads\/2017\/05\/Continuation-Object-GIF.gif?resize=525%2C300&ssl=1 1.5x, https:\/\/i0.wp.com\/www.jitendrazaa.com\/blog\/wp-content\/uploads\/2017\/05\/Continuation-Object-GIF.gif?resize=700%2C400&ssl=1 2x, https:\/\/i0.wp.com\/www.jitendrazaa.com\/blog\/wp-content\/uploads\/2017\/05\/Continuation-Object-GIF.gif?resize=1050%2C600&ssl=1 3x, https:\/\/i0.wp.com\/www.jitendrazaa.com\/blog\/wp-content\/uploads\/2017\/05\/Continuation-Object-GIF.gif?resize=1400%2C800&ssl=1 4x"},"classes":[]},{"id":4486,"url":"https:\/\/www.jitendrazaa.com\/blog\/salesforce\/continuation-object-in-apex-asynchronous-callouts-for-long-running-request-live-demo\/","url_meta":{"origin":6113,"position":1},"title":"Continuation object in Apex &#8211; Asynchronous callouts for long running request &#8211; Live Demo","author":"Jitendra","date":"May 22, 2015","format":false,"excerpt":"Check the below video first if you are planning to use Continuation https:\/\/youtu.be\/ya2N9EX9dmg We may run into\u00a0scenario in Salesforce project, where we need call external web service but no need to\u00a0wait for response. Response from external web service can be processed asynchronously and once processed it can be presented in\u2026","rel":"","context":"In &quot;Salesforce&quot;","block_context":{"text":"Salesforce","link":"https:\/\/www.jitendrazaa.com\/blog\/category\/salesforce\/"},"img":{"alt_text":"Execution Flow of an Asynchronous Callout - Image from Salesforce documentation","src":"https:\/\/i0.wp.com\/www.jitendrazaa.com\/blog\/wp-content\/uploads\/2015\/05\/apex_continuations_diagram.png?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.jitendrazaa.com\/blog\/wp-content\/uploads\/2015\/05\/apex_continuations_diagram.png?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/www.jitendrazaa.com\/blog\/wp-content\/uploads\/2015\/05\/apex_continuations_diagram.png?resize=525%2C300&ssl=1 1.5x, https:\/\/i0.wp.com\/www.jitendrazaa.com\/blog\/wp-content\/uploads\/2015\/05\/apex_continuations_diagram.png?resize=700%2C400&ssl=1 2x"},"classes":[]},{"id":6244,"url":"https:\/\/www.jitendrazaa.com\/blog\/salesforce\/a-tale-of-governor-limits-and-solutions-in-salesforce\/","url_meta":{"origin":6113,"position":2},"title":"A Tale of Governor Limits and Solutions in Salesforce","author":"Jitendra","date":"November 21, 2017","format":false,"excerpt":"Thrilling story of Salesforce Technical Architect on a quest to solve application problems and avoid governor limit errors","rel":"","context":"In &quot;Salesforce&quot;","block_context":{"text":"Salesforce","link":"https:\/\/www.jitendrazaa.com\/blog\/category\/salesforce\/"},"img":{"alt_text":"A Tale of Governor Limits and Solutions in Salesforce","src":"https:\/\/i0.wp.com\/www.jitendrazaa.com\/blog\/wp-content\/uploads\/2017\/09\/A-Tale-of-Governor-Limits-and-Solutions-in-Salesforce.jpg?fit=900%2C417&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.jitendrazaa.com\/blog\/wp-content\/uploads\/2017\/09\/A-Tale-of-Governor-Limits-and-Solutions-in-Salesforce.jpg?fit=900%2C417&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/www.jitendrazaa.com\/blog\/wp-content\/uploads\/2017\/09\/A-Tale-of-Governor-Limits-and-Solutions-in-Salesforce.jpg?fit=900%2C417&ssl=1&resize=525%2C300 1.5x, https:\/\/i0.wp.com\/www.jitendrazaa.com\/blog\/wp-content\/uploads\/2017\/09\/A-Tale-of-Governor-Limits-and-Solutions-in-Salesforce.jpg?fit=900%2C417&ssl=1&resize=700%2C400 2x"},"classes":[]},{"id":3706,"url":"https:\/\/www.jitendrazaa.com\/blog\/salesforce\/visualforce\/introduction-to-visualforce-remote-objects\/","url_meta":{"origin":6113,"position":3},"title":"Visualforce Remote Objects","author":"Jitendra","date":"February 16, 2014","format":false,"excerpt":"One of the exciting feature of Spring14 release is introduction of \"Visualforce Remote Objects\". You can say its actually replacement of JavaScript Remoting. Why do we need \"Visualforce Remote Objects\" when we already have \"JavaScript Remoting\" ? Well, here are few advantages of \"Visualforce Remote Objects\" : No need to\u2026","rel":"","context":"In &quot;Visualforce&quot;","block_context":{"text":"Visualforce","link":"https:\/\/www.jitendrazaa.com\/blog\/category\/salesforce\/visualforce\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":2874,"url":"https:\/\/www.jitendrazaa.com\/blog\/salesforce\/introduction-to-view-state-in-visualforce\/","url_meta":{"origin":6113,"position":4},"title":"Introduction to View State in Visualforce","author":"Jitendra","date":"June 1, 2012","format":false,"excerpt":"Introduction to View State in Visualforce with example and code walk-through","rel":"","context":"In &quot;Apex&quot;","block_context":{"text":"Apex","link":"https:\/\/www.jitendrazaa.com\/blog\/category\/salesforce\/apex\/"},"img":{"alt_text":"View State in Salesforce before Postback","src":"https:\/\/i0.wp.com\/jitendrazaa.com\/blog\/wp-content\/uploads\/2012\/05\/View-State-in-Salesforce-before-Postback-1024x287.png?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/jitendrazaa.com\/blog\/wp-content\/uploads\/2012\/05\/View-State-in-Salesforce-before-Postback-1024x287.png?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/jitendrazaa.com\/blog\/wp-content\/uploads\/2012\/05\/View-State-in-Salesforce-before-Postback-1024x287.png?resize=525%2C300&ssl=1 1.5x"},"classes":[]},{"id":5562,"url":"https:\/\/www.jitendrazaa.com\/blog\/salesforce\/summer-16-top-features\/","url_meta":{"origin":6113,"position":5},"title":"Salesforce Summer 16 &#8211; My favorite top 20 features","author":"Jitendra","date":"June 28, 2016","format":false,"excerpt":"List of Salesforce Summer 16 features","rel":"","context":"In &quot;Salesforce&quot;","block_context":{"text":"Salesforce","link":"https:\/\/www.jitendrazaa.com\/blog\/category\/salesforce\/"},"img":{"alt_text":"User Switcher in Salesforce Summer 16","src":"https:\/\/i0.wp.com\/www.jitendrazaa.com\/blog\/wp-content\/uploads\/2016\/06\/User-Switcher-in-Salesforce-Summer-16.png?resize=350%2C200&ssl=1","width":350,"height":200},"classes":[]}],"jetpack_likes_enabled":true,"_links":{"self":[{"href":"https:\/\/www.jitendrazaa.com\/blog\/wp-json\/wp\/v2\/posts\/6113","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.jitendrazaa.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.jitendrazaa.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.jitendrazaa.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.jitendrazaa.com\/blog\/wp-json\/wp\/v2\/comments?post=6113"}],"version-history":[{"count":8,"href":"https:\/\/www.jitendrazaa.com\/blog\/wp-json\/wp\/v2\/posts\/6113\/revisions"}],"predecessor-version":[{"id":7609,"href":"https:\/\/www.jitendrazaa.com\/blog\/wp-json\/wp\/v2\/posts\/6113\/revisions\/7609"}],"wp:attachment":[{"href":"https:\/\/www.jitendrazaa.com\/blog\/wp-json\/wp\/v2\/media?parent=6113"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.jitendrazaa.com\/blog\/wp-json\/wp\/v2\/categories?post=6113"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.jitendrazaa.com\/blog\/wp-json\/wp\/v2\/tags?post=6113"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}