{"id":3231,"date":"2024-11-14T17:05:16","date_gmt":"2024-11-14T17:05:16","guid":{"rendered":"https:\/\/sankhamtech.com\/index.php\/content\/india\/english\/home\/free-courses\/aem-backend-concepts\/calling-external-api-from-osgi-service\/"},"modified":"2024-11-15T18:21:44","modified_gmt":"2024-11-15T18:21:44","slug":"calling-external-api-from-osgi-service","status":"publish","type":"page","link":"https:\/\/sankhamtech.com\/index.php\/content\/in\/en\/home\/free-courses\/aem-backend-concepts\/calling-external-api-from-osgi-service\/","title":{"rendered":"Calling External API from OSGI Service"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"3231\" class=\"elementor elementor-3231\">\n\t\t\t\t<div class=\"elementor-element elementor-element-0203c68 e-flex e-con-boxed e-con e-parent\" data-id=\"0203c68\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t<div class=\"elementor-element elementor-element-68551e6 e-con-full e-flex e-con e-child\" data-id=\"68551e6\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-007024d elementor-hidden-mobile elementor-widget elementor-widget-text-editor\" data-id=\"007024d\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<h6 style=\"text-align: center;\"><span style=\"text-decoration: underline;\">Lessons<\/span><\/h6>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-d1aaf97 elementor-hidden-desktop elementor-hidden-tablet elementor-widget elementor-widget-text-editor\" data-id=\"d1aaf97\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<h6 style=\"text-align: center;\"><a href=\"https:\/\/sankhamtech.com\/index.php\/content\/india\/english\/home\/free-courses\/aem-backend-concepts\/\"><span style=\"text-decoration: underline;\">Lessons<\/span><\/a><\/h6>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-4f761a4 elementor-hidden-mobile elementor-widget elementor-widget-darsanam_header_menu_widget\" data-id=\"4f761a4\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"darsanam_header_menu_widget.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<div class=\"darsanam-menu-wrapper \"><div class='hamburger-icon'> &nbsp; Menu<\/div><div class=\"menu-container\"><nav class='elementor-menu'><ul class='darsanam-menu-vertical'><li class='darsanam-menu-item'><a href='https:\/\/sankhamtech.com\/index.php\/content\/in\/en\/home\/free-courses\/aem-backend-concepts\/github-link-for-the-entire-course\/'>Github Link for the Entire Course<\/a><i class=\"menu-icon-right fas fa-angle-right\"><\/i><\/li><li class='darsanam-menu-item'><a href='https:\/\/sankhamtech.com\/index.php\/content\/in\/en\/home\/free-courses\/aem-backend-concepts\/video-lesson-how-the-internet-works\/'>[VIDEO LESSON] How the Internet Works<\/a><i class=\"menu-icon-right fas fa-angle-right\"><\/i><\/li><li class='darsanam-menu-item'><a href='https:\/\/sankhamtech.com\/index.php\/content\/in\/en\/home\/free-courses\/aem-backend-concepts\/video-lesson-web-development-architecture-decoded\/'>[VIDEO LESSON] Web Development Architecture Decoded<\/a><i class=\"menu-icon-right fas fa-angle-right\"><\/i><\/li><li class='darsanam-menu-item'><a href='https:\/\/sankhamtech.com\/index.php\/content\/in\/en\/home\/free-courses\/aem-backend-concepts\/introduction-to-content-management-systems\/'>Introduction to Content Management Systems<\/a><i class=\"menu-icon-right fas fa-angle-right\"><\/i><\/li><li class='darsanam-menu-item'><a href='https:\/\/sankhamtech.com\/index.php\/content\/in\/en\/home\/free-courses\/aem-backend-concepts\/content-management-vs-experience-management\/'>Content Management vs Experience Management<\/a><i class=\"menu-icon-right fas fa-angle-right\"><\/i><\/li><li class='darsanam-menu-item'><a href='https:\/\/sankhamtech.com\/index.php\/content\/in\/en\/home\/free-courses\/aem-backend-concepts\/video-lesson-what-is-adobe-experience-manager\/'>[VIDEO LESSON] What is Adobe Experience Manager?<\/a><i class=\"menu-icon-right fas fa-angle-right\"><\/i><\/li><li class='darsanam-menu-item'><a href='https:\/\/sankhamtech.com\/index.php\/content\/in\/en\/home\/free-courses\/aem-backend-concepts\/video-lesson-how-to-obtain-adobe-experience-manager-aem-jar-from-adobe\/'>[VIDEO LESSON] How to Obtain Adobe Experience Manager (AEM) JAR from Adobe<\/a><i class=\"menu-icon-right fas fa-angle-right\"><\/i><\/li><li class='darsanam-menu-item'><a href='https:\/\/sankhamtech.com\/index.php\/content\/in\/en\/home\/free-courses\/aem-backend-concepts\/video-lesson-installing-aem-jar\/'>[VIDEO LESSON] Installing AEM Jar<\/a><i class=\"menu-icon-right fas fa-angle-right\"><\/i><\/li><li class='darsanam-menu-item'><a href='https:\/\/sankhamtech.com\/index.php\/content\/in\/en\/home\/free-courses\/aem-backend-concepts\/troubleshooting-common-issues-in-installing-aem-jar\/'>Troubleshooting Common Issues in Installing AEM JAR<\/a><i class=\"menu-icon-right fas fa-angle-right\"><\/i><\/li><li class='darsanam-menu-item'><a href='https:\/\/sankhamtech.com\/index.php\/content\/in\/en\/home\/free-courses\/aem-backend-concepts\/understanding-author-and-publish-instances\/'>Understanding Author and Publish Instances<\/a><i class=\"menu-icon-right fas fa-angle-right\"><\/i><\/li><li class='darsanam-menu-item'><a href='https:\/\/sankhamtech.com\/index.php\/content\/in\/en\/home\/free-courses\/aem-backend-concepts\/creating-and-editing-a-page-in-aem\/'>Creating and Editing a Page in AEM<\/a><i class=\"menu-icon-right fas fa-angle-right\"><\/i><\/li><li class='darsanam-menu-item'><a href='https:\/\/sankhamtech.com\/index.php\/content\/in\/en\/home\/free-courses\/aem-backend-concepts\/find-where-page-is-saved-in-backend\/'>Find Where Page is Saved in Backend<\/a><i class=\"menu-icon-right fas fa-angle-right\"><\/i><\/li><li class='darsanam-menu-item'><a href='https:\/\/sankhamtech.com\/index.php\/content\/in\/en\/home\/free-courses\/aem-backend-concepts\/aems-sling-framework-understanding-component-resolution-and-rendering\/'>AEM\u2019s Sling Framework: Understanding Component Resolution and Rendering<\/a><i class=\"menu-icon-right fas fa-angle-right\"><\/i><\/li><li class='darsanam-menu-item'><a href='https:\/\/sankhamtech.com\/index.php\/content\/in\/en\/home\/free-courses\/aem-backend-concepts\/video-lesson-creating-a-hello-world-component-in-aem-using-crx-de\/'>[VIDEO LESSON] Creating a \u201cHello World\u201d Component in AEM Using CRX\/DE<\/a><i class=\"menu-icon-right fas fa-angle-right\"><\/i><\/li><li class='darsanam-menu-item'><a href='https:\/\/sankhamtech.com\/index.php\/content\/in\/en\/home\/free-courses\/aem-backend-concepts\/understanding-jcr-in-the-context-of-aem\/'>Understanding JCR in the Context of AEM<\/a><i class=\"menu-icon-right fas fa-angle-right\"><\/i><\/li><li class='darsanam-menu-item'><a href='https:\/\/sankhamtech.com\/index.php\/content\/in\/en\/home\/free-courses\/aem-backend-concepts\/nodes-and-properties-in-jcr\/'>Nodes and Properties in JCR<\/a><i class=\"menu-icon-right fas fa-angle-right\"><\/i><\/li><li class='darsanam-menu-item'><a href='https:\/\/sankhamtech.com\/index.php\/content\/in\/en\/home\/free-courses\/aem-backend-concepts\/jcr-sessions-and-workspaces\/'>JCR Sessions and Workspaces<\/a><i class=\"menu-icon-right fas fa-angle-right\"><\/i><\/li><li class='darsanam-menu-item'><a href='https:\/\/sankhamtech.com\/index.php\/content\/in\/en\/home\/free-courses\/aem-backend-concepts\/understanding-sql2-queries-in-aem\/'>Understanding SQL2 Queries in AEM<\/a><i class=\"menu-icon-right fas fa-angle-right\"><\/i><\/li><li class='darsanam-menu-item'><a href='https:\/\/sankhamtech.com\/index.php\/content\/in\/en\/home\/free-courses\/aem-backend-concepts\/understanding-and-using-aems-querybuilder-tool\/'>Understanding and Using AEM\u2019s QueryBuilder Tool<\/a><i class=\"menu-icon-right fas fa-angle-right\"><\/i><\/li><li class='darsanam-menu-item'><a href='https:\/\/sankhamtech.com\/index.php\/content\/in\/en\/home\/free-courses\/aem-backend-concepts\/import-and-export-jcr-data-using-package-manager\/'>Import and Export JCR Data Using Package Manager<\/a><i class=\"menu-icon-right fas fa-angle-right\"><\/i><\/li><li class='darsanam-menu-item'><a href='https:\/\/sankhamtech.com\/index.php\/content\/in\/en\/home\/free-courses\/aem-backend-concepts\/installing-aem-project-archetype\/'>Installing AEM Project Archetype<\/a><i class=\"menu-icon-right fas fa-angle-right\"><\/i><\/li><li class='darsanam-menu-item'><a href='https:\/\/sankhamtech.com\/index.php\/content\/in\/en\/home\/free-courses\/aem-backend-concepts\/troubleshooting-common-post-deployment-issues-in-aem\/'>Troubleshooting Common Post-Deployment Issues in AEM<\/a><i class=\"menu-icon-right fas fa-angle-right\"><\/i><\/li><li class='darsanam-menu-item'><a href='https:\/\/sankhamtech.com\/index.php\/content\/in\/en\/home\/free-courses\/aem-backend-concepts\/video-lesson-aem-dialog-box-authoring-development\/'>[VIDEO LESSON] AEM Dialog Box Authoring & Development<\/a><i class=\"menu-icon-right fas fa-angle-right\"><\/i><\/li><li class='darsanam-menu-item'><a href='https:\/\/sankhamtech.com\/index.php\/content\/in\/en\/home\/free-courses\/aem-backend-concepts\/video-lesson-aem-htl-language-syntax-practice\/'>[VIDEO LESSON] AEM HTL Language Syntax Practice<\/a><i class=\"menu-icon-right fas fa-angle-right\"><\/i><\/li><li class='darsanam-menu-item'><a href='https:\/\/sankhamtech.com\/index.php\/content\/in\/en\/home\/free-courses\/aem-backend-concepts\/video-lesson-aem-htl-global-objects\/'>[VIDEO LESSON] AEM HTL Global Objects<\/a><i class=\"menu-icon-right fas fa-angle-right\"><\/i><\/li><li class='darsanam-menu-item'><a href='https:\/\/sankhamtech.com\/index.php\/content\/in\/en\/home\/free-courses\/aem-backend-concepts\/video-lesson-aem-htl-global-objects-contd\/'>[VIDEO LESSON] AEM HTL Global Objects (Contd.)<\/a><i class=\"menu-icon-right fas fa-angle-right\"><\/i><\/li><li class='darsanam-menu-item'><a href='https:\/\/sankhamtech.com\/index.php\/content\/in\/en\/home\/free-courses\/aem-backend-concepts\/video-lesson-understanding-aem-dialog-box\/'>[VIDEO LESSON] Understanding AEM Dialog Box<\/a><i class=\"menu-icon-right fas fa-angle-right\"><\/i><\/li><li class='darsanam-menu-item'><a href='https:\/\/sankhamtech.com\/index.php\/content\/in\/en\/home\/free-courses\/aem-backend-concepts\/creating-and-deploying-component-in-aem\/'>Creating and Deploying Component in AEM<\/a><i class=\"menu-icon-right fas fa-angle-right\"><\/i><\/li><li class='darsanam-menu-item'><a href='https:\/\/sankhamtech.com\/index.php\/content\/in\/en\/home\/free-courses\/aem-backend-concepts\/create-various-dialog-box-fields\/'>Create Various Dialog Box Fields<\/a><i class=\"menu-icon-right fas fa-angle-right\"><\/i><\/li><li class='darsanam-menu-item'><a href='https:\/\/sankhamtech.com\/index.php\/content\/in\/en\/home\/free-courses\/aem-backend-concepts\/video-lesson-sling-models-and-sightly-introduction\/'>[VIDEO LESSON] Sling Models and Sightly Introduction<\/a><i class=\"menu-icon-right fas fa-angle-right\"><\/i><\/li><li class='darsanam-menu-item'><a href='https:\/\/sankhamtech.com\/index.php\/content\/in\/en\/home\/free-courses\/aem-backend-concepts\/video-lesson-sling-model-explained-with-real-use-case\/'>[VIDEO LESSON] Sling Model Explained with Real Use Case<\/a><i class=\"menu-icon-right fas fa-angle-right\"><\/i><\/li><li class='darsanam-menu-item'><a href='https:\/\/sankhamtech.com\/index.php\/content\/in\/en\/home\/free-courses\/aem-backend-concepts\/video-lesson-aem-resource-resolver-query-builder\/'>[VIDEO LESSON] AEM Resource Resolver & Query Builder<\/a><i class=\"menu-icon-right fas fa-angle-right\"><\/i><\/li><li class='darsanam-menu-item'><a href='https:\/\/sankhamtech.com\/index.php\/content\/in\/en\/home\/free-courses\/aem-backend-concepts\/video-lesson-aem-query-builder-java-beans\/'>[VIDEO LESSON] AEM Query Builder & Java Beans<\/a><i class=\"menu-icon-right fas fa-angle-right\"><\/i><\/li><li class='darsanam-menu-item'><a href='https:\/\/sankhamtech.com\/index.php\/content\/in\/en\/home\/free-courses\/aem-backend-concepts\/video-lesson-add-css-to-aem-component\/'>[VIDEO LESSON] Add CSS to AEM Component<\/a><i class=\"menu-icon-right fas fa-angle-right\"><\/i><\/li><li class='darsanam-menu-item'><a href='https:\/\/sankhamtech.com\/index.php\/content\/in\/en\/home\/free-courses\/aem-backend-concepts\/video-lesson-aem-templates-components-authoring\/'>[VIDEO LESSON] AEM Templates & Components Authoring<\/a><i class=\"menu-icon-right fas fa-angle-right\"><\/i><\/li><li class='darsanam-menu-item'><a href='https:\/\/sankhamtech.com\/index.php\/content\/in\/en\/home\/free-courses\/aem-backend-concepts\/video-lesson-add-css-variations-to-aem-component\/'>[VIDEO LESSON] Add CSS Variations to AEM Component<\/a><i class=\"menu-icon-right fas fa-angle-right\"><\/i><\/li><li class='darsanam-menu-item'><a href='https:\/\/sankhamtech.com\/index.php\/content\/in\/en\/home\/free-courses\/aem-backend-concepts\/creating-a-multi-field-in-aem\/'>Creating a Multi-Field in AEM<\/a><i class=\"menu-icon-right fas fa-angle-right\"><\/i><\/li><li class='darsanam-menu-item'><a href='https:\/\/sankhamtech.com\/index.php\/content\/in\/en\/home\/free-courses\/aem-backend-concepts\/creating-a-composite-multifield-in-aem\/'>Creating a Composite Multifield in AEM<\/a><i class=\"menu-icon-right fas fa-angle-right\"><\/i><\/li><li class='darsanam-menu-item'><a href='https:\/\/sankhamtech.com\/index.php\/content\/in\/en\/home\/free-courses\/aem-backend-concepts\/implementing-conditional-dialog-fields\/'>Implementing Conditional Dialog Fields<\/a><i class=\"menu-icon-right fas fa-angle-right\"><\/i><\/li><li class='darsanam-menu-item'><a href='https:\/\/sankhamtech.com\/index.php\/content\/in\/en\/home\/free-courses\/aem-backend-concepts\/best-practices-for-creating-sling-models\/'>Best Practices for Creating Sling Models<\/a><i class=\"menu-icon-right fas fa-angle-right\"><\/i><\/li><li class='darsanam-menu-item'><a href='https:\/\/sankhamtech.com\/index.php\/content\/in\/en\/home\/free-courses\/aem-backend-concepts\/video-lesson-introduction-to-aem-sling-servlet\/'>[VIDEO LESSON] Introduction to AEM Sling Servlet<\/a><i class=\"menu-icon-right fas fa-angle-right\"><\/i><\/li><li class='darsanam-menu-item'><a href='https:\/\/sankhamtech.com\/index.php\/content\/in\/en\/home\/free-courses\/aem-backend-concepts\/video-lesson-aem-headless-servlet-implementation\/'>[VIDEO LESSON] AEM Headless \u2013 Servlet Implementation<\/a><i class=\"menu-icon-right fas fa-angle-right\"><\/i><\/li><li class='darsanam-menu-item'><a href='https:\/\/sankhamtech.com\/index.php\/content\/in\/en\/home\/free-courses\/aem-backend-concepts\/video-lesson-osgi-services-introduction\/'>[VIDEO LESSON] OSGI Services Introduction<\/a><i class=\"menu-icon-right fas fa-angle-right\"><\/i><\/li><li class='darsanam-menu-item'><a href='https:\/\/sankhamtech.com\/index.php\/content\/in\/en\/home\/free-courses\/aem-backend-concepts\/video-lesson-aem-osgi-services-implementation\/'>[VIDEO LESSON] AEM OSGI Services Implementation<\/a><i class=\"menu-icon-right fas fa-angle-right\"><\/i><\/li><li class='darsanam-menu-item'><a href='https:\/\/sankhamtech.com\/index.php\/content\/in\/en\/home\/free-courses\/aem-backend-concepts\/video-lesson-filters-in-osgi-services\/'>[VIDEO LESSON] Filters in OSGI Services<\/a><i class=\"menu-icon-right fas fa-angle-right\"><\/i><\/li><li class='darsanam-menu-item'><a href='https:\/\/sankhamtech.com\/index.php\/content\/in\/en\/home\/free-courses\/aem-backend-concepts\/calling-external-api-from-osgi-service\/' style='color: #FF7700 !important'>Calling External API from OSGI Service<\/a><i class=\"menu-icon-right fas fa-angle-right\"><\/i><\/li><li class='darsanam-menu-item'><a href='https:\/\/sankhamtech.com\/index.php\/content\/in\/en\/home\/free-courses\/aem-backend-concepts\/improving-aem-sling-model-with-service-layer-integration\/'>Improving AEM Sling Model with Service Layer Integration<\/a><i class=\"menu-icon-right fas fa-angle-right\"><\/i><\/li><li class='darsanam-menu-item'><a href='https:\/\/sankhamtech.com\/index.php\/content\/in\/en\/home\/free-courses\/aem-backend-concepts\/best-practices-for-secure-and-efficient-resource-access\/'>Best Practices for Secure and Efficient Resource Access<\/a><i class=\"menu-icon-right fas fa-angle-right\"><\/i><\/li><li class='darsanam-menu-item'><a href='https:\/\/sankhamtech.com\/index.php\/content\/in\/en\/home\/free-courses\/aem-backend-concepts\/video-lessonstep-by-step-process-to-get-resource-resolver-from-system-user\/'>[VIDEO LESSON]Step By Step Process to Get Resource Resolver from System User<\/a><i class=\"menu-icon-right fas fa-angle-right\"><\/i><\/li><li class='darsanam-menu-item'><a href='https:\/\/sankhamtech.com\/index.php\/content\/in\/en\/home\/free-courses\/aem-backend-concepts\/the-importance-and-use-cases-of-workflows\/'>The Importance and Use Cases of Workflows<\/a><i class=\"menu-icon-right fas fa-angle-right\"><\/i><\/li><li class='darsanam-menu-item'><a href='https:\/\/sankhamtech.com\/index.php\/content\/in\/en\/home\/free-courses\/aem-backend-concepts\/introduction-to-workflow-creation\/'>Introduction to Workflow Creation<\/a><i class=\"menu-icon-right fas fa-angle-right\"><\/i><\/li><li class='darsanam-menu-item'><a href='https:\/\/sankhamtech.com\/index.php\/content\/in\/en\/home\/free-courses\/aem-backend-concepts\/understanding-participant-step-in-aem\/'>Understanding Participant Step in AEM<\/a><i class=\"menu-icon-right fas fa-angle-right\"><\/i><\/li><li class='darsanam-menu-item'><a href='https:\/\/sankhamtech.com\/index.php\/content\/in\/en\/home\/free-courses\/aem-backend-concepts\/understanding-workflow-steps\/'>Understanding Workflow Steps<\/a><i class=\"menu-icon-right fas fa-angle-right\"><\/i><\/li><li class='darsanam-menu-item'><a href='https:\/\/sankhamtech.com\/index.php\/content\/in\/en\/home\/free-courses\/aem-backend-concepts\/understanding-workflow-steps-contd\/'>Understanding Workflow Steps [Contd.]<\/a><i class=\"menu-icon-right fas fa-angle-right\"><\/i><\/li><li class='darsanam-menu-item'><a href='https:\/\/sankhamtech.com\/index.php\/content\/in\/en\/home\/free-courses\/aem-backend-concepts\/step-1-understand-aem-workflow-use-case\/'>Step 1: Understand AEM Workflow Use Case.<\/a><i class=\"menu-icon-right fas fa-angle-right\"><\/i><\/li><li class='darsanam-menu-item'><a href='https:\/\/sankhamtech.com\/index.php\/content\/in\/en\/home\/free-courses\/aem-backend-concepts\/step-2-create-user-groups-and-assign-users\/'>Step 2: Create User Groups and Assign Users<\/a><i class=\"menu-icon-right fas fa-angle-right\"><\/i><\/li><li class='darsanam-menu-item'><a href='https:\/\/sankhamtech.com\/index.php\/content\/in\/en\/home\/free-courses\/aem-backend-concepts\/step-3-create-new-page-properties\/'>Step 3: Create New Page Properties<\/a><i class=\"menu-icon-right fas fa-angle-right\"><\/i><\/li><li class='darsanam-menu-item'><a href='https:\/\/sankhamtech.com\/index.php\/content\/in\/en\/home\/free-courses\/aem-backend-concepts\/workflow-example-code-below\/'>Workflow Example Code Below<\/a><i class=\"menu-icon-right fas fa-angle-right\"><\/i><\/li><\/ul><\/nav><\/div><\/div>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-d89bc52 e-con-full e-flex e-con e-child\" data-id=\"d89bc52\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-da7e4c9 elementor-widget elementor-widget-text-editor\" data-id=\"da7e4c9\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<h2>Calling External API from OSGI Service<\/h2><p><\/p><p><strong>Introduction:<\/strong> This article demonstrates how to create an OSGi service in Adobe Experience Manager (AEM) to fetch data from an external API and return the response. We&#8217;ll use the example of fetching recipes from a mock JSON API (<a href=\"https:\/\/dummyjson.com\/recipes\">https:\/\/dummyjson.com\/recipes<\/a>). We&#8217;ll also create a servlet to access this service and test the functionality using Postman.<\/p><p> <\/p><h4 class=\"wp-block-heading\"><strong>Step 1: Creating the OSGi Service<\/strong><\/h4><p> <\/p><p><strong>Service Interface:<\/strong> First, define a service interface in AEM. This interface declares a method to make the API call.<\/p><p> <\/p><pre class=\"wp-block-code\"><code>package com.adobe.aem.guides.wknd.core.services;\n\npublic interface RecipeService {\n    String getRecipes();\n}\n<\/code><\/pre><p> <\/p><h5 class=\"wp-block-heading\">Package Declaration<\/h5><p> <\/p><ul class=\"wp-block-list\"><li><code>package com.adobe.aem.guides.wknd.core.services;<\/code><ul class=\"wp-block-list\"><li>This line declares the package name for the interface. Packages in Java are used to group related classes and interfaces together, helping in organizing the code and avoiding naming conflicts. In this case, the package is <code>com.adobe.aem.guides.wknd.core.services<\/code>, which suggests that this interface is part of the Adobe AEM WKND tutorial series, specifically under the <code>core.services<\/code> section.<\/li><\/ul><\/li><\/ul><p> <\/p><h5 class=\"wp-block-heading\">Interface Declaration<\/h5><p> <\/p><ul class=\"wp-block-list\"><li><code>public interface RecipeService { ... }<\/code><ul class=\"wp-block-list\"><li>This line declares a public interface named <code>RecipeService<\/code>.<\/li> <li>In Java, an interface is a reference type, similar to a class, that can contain only constants, method signatures, default methods, static methods, and nested types. Method bodies exist only for default methods and static methods.<\/li> <li>Interfaces are abstract by nature; they cannot be instantiated and can only be implemented by classes or extended by other interfaces.<\/li> <li>The <code>public<\/code> keyword means that the interface can be accessed by any other class.<\/li><\/ul><\/li><\/ul><p> <\/p><h5 class=\"wp-block-heading\">Method Signature in the Interface<\/h5><p> <\/p><ul class=\"wp-block-list\"><li><code>String getRecipes();<\/code><ul class=\"wp-block-list\"><li>This is a method signature within the <code>RecipeService<\/code> interface.<\/li> <li>The method <code>getRecipes<\/code> is declared without an implementation (no method body), which is typical for interface methods.<\/li> <li>The method returns a <code>String<\/code>. The exact nature of this string is not specified here, but the name <code>getRecipes<\/code> suggests it might return a representation (possibly a JSON, XML, or a simple String) of recipes.<\/li> <li>Since there is no implementation, any class that implements the <code>RecipeService<\/code> interface will need to provide its own implementation of the <code>getRecipes<\/code> method.<\/li><\/ul><\/li><\/ul><p> <\/p><h5 class=\"wp-block-heading\">Usage in AEM Context<\/h5><p> <\/p><ul class=\"wp-block-list\"><li>In the context of AEM, this <code>RecipeService<\/code> interface would be implemented by a class that provides the logic for retrieving recipes. This might involve fetching data from a repository, a database, or an external service.<\/li> <li>The interface and its implementation enable a decoupling of the service definition from its implementation, which is a common practice in OSGi and AEM development. This allows for easier testing and maintenance of the code.<\/li><\/ul><p> <\/p><h4 class=\"wp-block-heading\"><strong>Step2: Service Implementation<\/strong><\/h4><p> <\/p><p>Implement the service interface. Here, we use <code>HttpClient<\/code> to make the API call.<\/p><p> <\/p><pre class=\"wp-block-code\"><code>package com.adobe.aem.guides.wknd.core.services.impl;\n\n\nimport org.apache.http.client.methods.HttpGet;\nimport org.apache.http.impl.client.CloseableHttpClient;\nimport org.apache.http.impl.client.HttpClients;\nimport org.apache.http.util.EntityUtils;\nimport org.osgi.service.component.annotations.Component;\nimport java.io.IOException;\nimport com.adobe.aem.guides.wknd.core.services.RecipeService;\nimport org.slf4j.Logger;\nimport org.slf4j.LoggerFactory;\n\n\n\n@Component(service = RecipeService.class)\npublic class RecipeServiceImpl implements RecipeService {\n\n    private static final Logger LOGGER = LoggerFactory.getLogger(RecipeService.class);\n\n    @Override\n    public String getRecipes() {\n        try (CloseableHttpClient httpClient = HttpClients.createDefault()) {\n\n            HttpGet request = new HttpGet(\"https:\/\/dummyjson.com\/recipes\");\n            String response = EntityUtils.toString(httpClient.execute(request).getEntity());\n            LOGGER.debug(response);\n            return response;\n\n        } catch (IOException e) {\n            LOGGER.error(\"IO Error\",e);\n            return null;\n        }\n    }\n}\n<\/code><\/pre><p> <\/p><h5 class=\"wp-block-heading\">Imports<\/h5><p> <\/p><ul class=\"wp-block-list\"><li>The <code>import<\/code> statements bring in external classes and interfaces used in this class. These include classes for HTTP communication (<code>org.apache.http<\/code>), OSGi annotations (<code>org.osgi.service.component.annotations<\/code>), the <code>RecipeService<\/code> interface, and SLF4J logging (<code>org.slf4j<\/code>).<\/li><\/ul><p> <\/p><h5 class=\"wp-block-heading\">Class Declaration<\/h5><p> <\/p><ul class=\"wp-block-list\"><li><code>public class RecipeServiceImpl implements RecipeService { ... }<\/code><ul class=\"wp-block-list\"><li>This is the class definition. <code>RecipeServiceImpl<\/code> is a public class that implements the <code>RecipeService<\/code> interface.<\/li><\/ul><\/li><\/ul><p> <\/p><h5 class=\"wp-block-heading\">Logger<\/h5><p> <\/p><ul class=\"wp-block-list\"><li><code>private static final Logger LOGGER = LoggerFactory.getLogger(RecipeService.class);<\/code><ul class=\"wp-block-list\"><li>This line initializes a logger specifically for this class. The logger is used to log debug and error messages.<\/li><\/ul><\/li><\/ul><p> <\/p><h5 class=\"wp-block-heading\">Component Annotation<\/h5><p> <\/p><ul class=\"wp-block-list\"><li><code>@Component(service = RecipeService.class)<\/code><ul class=\"wp-block-list\"><li>This is an OSGi annotation that registers this class as an OSGi service component. The service it provides is <code>RecipeService<\/code>. This means in the context of AEM\/OSGi, this implementation (<code>RecipeServiceImpl<\/code>) will be used whenever a <code>RecipeService<\/code> is required.<\/li><\/ul><\/li><\/ul><p> <\/p><h5 class=\"wp-block-heading\">Method Implementation<\/h5><p> <\/p><ul class=\"wp-block-list\"><li><code>public String getRecipes() { ... }<\/code><ul class=\"wp-block-list\"><li>This method is an implementation of the <code>getRecipes<\/code> method declared in the <code>RecipeService<\/code> interface. It overrides the interface method to provide the actual functionality.<\/li><\/ul><\/li><\/ul><p> <\/p><h5 class=\"wp-block-heading\">Method Logic<\/h5><p> <\/p><ul class=\"wp-block-list\"><li>The method <code>getRecipes<\/code> uses Apache HTTPClient (<code>CloseableHttpClient<\/code>) to make a GET request to a specified URL (<code>https:\/\/dummyjson.com\/recipes<\/code>).<\/li> <li>It then converts the response entity to a string.<\/li> <li>This string (presumably JSON or some other format representing recipes) is logged at the debug level and then returned.<\/li> <li>The <code>try-with-resources<\/code> statement is used to ensure that the <code>CloseableHttpClient<\/code> is properly closed after the operation is complete.<\/li> <li>If an <code>IOException<\/code> occurs, an error is logged, and <code>null<\/code> is returned. This exception might occur if there&#8217;s a problem with the network connection, the server, or the process of reading the response.<\/li><\/ul><p> <\/p><h4 class=\"wp-block-heading\"><strong>Step 3: Creating the Servlet<\/strong><\/h4><p> <\/p><p><strong>Servlet Implementation:<\/strong> Create a servlet that uses the OSGi service to get the recipe data.<\/p><p> <\/p><pre class=\"wp-block-code\"><code>package com.adobe.aem.guides.wknd.core.servlets;\n\nimport com.adobe.aem.guides.wknd.core.services.RecipeService;\nimport org.apache.sling.api.servlets.HttpConstants;\nimport org.osgi.service.component.annotations.Reference;\nimport org.osgi.service.component.annotations.Component;\nimport javax.servlet.Servlet;\nimport javax.servlet.ServletException;\nimport javax.servlet.http.HttpServlet;\nimport javax.servlet.http.HttpServletRequest;\nimport javax.servlet.http.HttpServletResponse;\nimport java.io.IOException;\n\n@Component(\n        service = Servlet.class,\n        property = {\n                \"sling.servlet.methods=\" + HttpConstants.METHOD_GET,\n                \"sling.servlet.paths=\" + \"\/bin\/recipes\"\n        }\n)\npublic class RecipeServlet extends HttpServlet {\n\n    @Reference\n    private RecipeService recipeService;\n\n    @Override\n    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {\n        resp.setContentType(\"application\/json\");\n        resp.getWriter().write(recipeService.getRecipes());\n    }\n}\n<\/code><\/pre><p> <\/p><h5 class=\"wp-block-heading\">Servlet Annotation (<code>@Component<\/code>)<\/h5><p> <\/p><ul class=\"wp-block-list\"><li>The <code>@Component<\/code> annotation is used to declare this class as an OSGi component. It specifies that this component serves as a <code>Servlet<\/code>.<\/li> <li>The properties:<ul class=\"wp-block-list\"><li><code>\"sling.servlet.methods=\" + HttpConstants.METHOD_GET<\/code> indicates that this servlet will handle HTTP GET requests.<\/li> <li><code>\"sling.servlet.paths=\" + \"\/bin\/recipes\"<\/code> sets the path at which this servlet is accessible, i.e., requests to <code>\/bin\/recipes<\/code> will be handled by this servlet.<\/li><\/ul><\/li><\/ul><p> <\/p><h5 class=\"wp-block-heading\">Class Declaration<\/h5><p> <\/p><ul class=\"wp-block-list\"><li><code>public class RecipeServlet extends HttpServlet<\/code><ul class=\"wp-block-list\"><li><code>RecipeServlet<\/code> is a public class that extends <code>HttpServlet<\/code>, making it a servlet capable of handling HTTP requests.<\/li><\/ul><\/li><\/ul><p> <\/p><h5 class=\"wp-block-heading\">Service Reference (<code>@Reference<\/code>)<\/h5><p> <\/p><ul class=\"wp-block-list\"><li><code>private RecipeService recipeService;<\/code><ul class=\"wp-block-list\"><li>This is a reference to the <code>RecipeService<\/code>, annotated with <code>@Reference<\/code>, which is an OSGi way of dependency injection. The OSGi framework will automatically inject an instance of <code>RecipeService<\/code> when <code>RecipeServlet<\/code> is instantiated.<\/li><\/ul><\/li><\/ul><p> <\/p><h5 class=\"wp-block-heading\">Overridden <code>doGet<\/code> Method<\/h5><p> <\/p><ul class=\"wp-block-list\"><li>The <code>doGet<\/code> method is overridden from <code>HttpServlet<\/code> to provide specific functionality for HTTP GET requests.<\/li> <li><code>resp.setContentType(\"application\/json\");<\/code> sets the content type of the response to JSON, which is appropriate for API responses delivering recipe data.<\/li> <li><code>resp.getWriter().write(recipeService.getRecipes());<\/code> writes the string returned by <code>recipeService.getRecipes()<\/code> to the response. This string is presumably JSON-formatted data containing recipes.<\/li><\/ul><p> <\/p><h4 class=\"wp-block-heading\"><strong>Step 4: Testing with Postman<\/strong><\/h4><p> <\/p><ol class=\"wp-block-list\"><li><strong>Deploy Your Code:<\/strong> Deploy the above code to your AEM instance.<\/li> <li><strong>Testing with Postman:<\/strong> Open Postman and create a new GET request to <code>http:\/\/localhost:4502\/bin\/recipes<\/code>. Replace <code>localhost:4502<\/code> with your AEM instance URL if different. Send the request, and you should receive the JSON response from the external API.<\/li><\/ol><p> <\/p><p><strong>Conclusion:<\/strong> This article covered creating an OSGi service in AEM to fetch data from an external API, integrating this service with a servlet, and testing the end-to-end functionality using Postman. This approach is useful for integrating third-party APIs into AEM projects.<\/p><p><\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Lessons Lessons &nbsp; Menu Github Link for the Entire Course [VIDEO LESSON] How the Internet Works [VIDEO LESSON] Web Development Architecture Decoded Introduction to Content Management Systems Content Management vs Experience Management [VIDEO LESSON] What is Adobe Experience Manager? [VIDEO LESSON] How to Obtain Adobe Experience Manager (AEM) JAR from Adobe [VIDEO LESSON] Installing AEM [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":2868,"menu_order":45,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-3231","page","type-page","status-publish","hentry"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.6 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Calling External API from OSGI Service - Sankham Technologies<\/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:\/\/sankhamtech.com\/index.php\/content\/in\/en\/home\/free-courses\/aem-backend-concepts\/calling-external-api-from-osgi-service\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Calling External API from OSGI Service - Sankham Technologies\" \/>\n<meta property=\"og:description\" content=\"Lessons Lessons &nbsp; Menu Github Link for the Entire Course [VIDEO LESSON] How the Internet Works [VIDEO LESSON] Web Development Architecture Decoded Introduction to Content Management Systems Content Management vs Experience Management [VIDEO LESSON] What is Adobe Experience Manager? [VIDEO LESSON] How to Obtain Adobe Experience Manager (AEM) JAR from Adobe [VIDEO LESSON] Installing AEM [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/sankhamtech.com\/index.php\/content\/in\/en\/home\/free-courses\/aem-backend-concepts\/calling-external-api-from-osgi-service\/\" \/>\n<meta property=\"og:site_name\" content=\"Sankham Technologies\" \/>\n<meta property=\"article:modified_time\" content=\"2024-11-15T18:21:44+00:00\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"8 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/sankhamtech.com\\\/index.php\\\/content\\\/in\\\/en\\\/home\\\/free-courses\\\/aem-backend-concepts\\\/calling-external-api-from-osgi-service\\\/\",\"url\":\"https:\\\/\\\/sankhamtech.com\\\/index.php\\\/content\\\/in\\\/en\\\/home\\\/free-courses\\\/aem-backend-concepts\\\/calling-external-api-from-osgi-service\\\/\",\"name\":\"Calling External API from OSGI Service - Sankham Technologies\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/sankhamtech.com\\\/#website\"},\"datePublished\":\"2024-11-14T17:05:16+00:00\",\"dateModified\":\"2024-11-15T18:21:44+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/sankhamtech.com\\\/index.php\\\/content\\\/in\\\/en\\\/home\\\/free-courses\\\/aem-backend-concepts\\\/calling-external-api-from-osgi-service\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/sankhamtech.com\\\/index.php\\\/content\\\/in\\\/en\\\/home\\\/free-courses\\\/aem-backend-concepts\\\/calling-external-api-from-osgi-service\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/sankhamtech.com\\\/index.php\\\/content\\\/in\\\/en\\\/home\\\/free-courses\\\/aem-backend-concepts\\\/calling-external-api-from-osgi-service\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/sankhamtech.com\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Content\",\"item\":\"https:\\\/\\\/sankhamtech.com\\\/index.php\\\/content\\\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"India\",\"item\":\"https:\\\/\\\/sankhamtech.com\\\/index.php\\\/content\\\/in\\\/\"},{\"@type\":\"ListItem\",\"position\":4,\"name\":\"English\",\"item\":\"https:\\\/\\\/sankhamtech.com\\\/index.php\\\/content\\\/in\\\/en\\\/\"},{\"@type\":\"ListItem\",\"position\":5,\"name\":\"Home\",\"item\":\"https:\\\/\\\/sankhamtech.com\\\/\"},{\"@type\":\"ListItem\",\"position\":6,\"name\":\"Free Courses\",\"item\":\"https:\\\/\\\/sankhamtech.com\\\/index.php\\\/content\\\/in\\\/en\\\/home\\\/free-courses\\\/\"},{\"@type\":\"ListItem\",\"position\":7,\"name\":\"AEM Backend Concepts\",\"item\":\"https:\\\/\\\/sankhamtech.com\\\/indexphp\\\/content\\\/in\\\/en\\\/home\\\/free-courses\\\/aem-backend-concepts\\\/\"},{\"@type\":\"ListItem\",\"position\":8,\"name\":\"Calling External API from OSGI Service\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/sankhamtech.com\\\/#website\",\"url\":\"https:\\\/\\\/sankhamtech.com\\\/\",\"name\":\"Sankham Technologies\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\\\/\\\/sankhamtech.com\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/sankhamtech.com\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/sankhamtech.com\\\/#organization\",\"name\":\"Sankham Technologies\",\"url\":\"https:\\\/\\\/sankhamtech.com\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/sankhamtech.com\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/sankhamtech.com\\\/wp-content\\\/uploads\\\/2023\\\/12\\\/Logo-Dark-1.png\",\"contentUrl\":\"https:\\\/\\\/sankhamtech.com\\\/wp-content\\\/uploads\\\/2023\\\/12\\\/Logo-Dark-1.png\",\"width\":306,\"height\":74,\"caption\":\"Sankham Technologies\"},\"image\":{\"@id\":\"https:\\\/\\\/sankhamtech.com\\\/#\\\/schema\\\/logo\\\/image\\\/\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Calling External API from OSGI Service - Sankham Technologies","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:\/\/sankhamtech.com\/index.php\/content\/in\/en\/home\/free-courses\/aem-backend-concepts\/calling-external-api-from-osgi-service\/","og_locale":"en_US","og_type":"article","og_title":"Calling External API from OSGI Service - Sankham Technologies","og_description":"Lessons Lessons &nbsp; Menu Github Link for the Entire Course [VIDEO LESSON] How the Internet Works [VIDEO LESSON] Web Development Architecture Decoded Introduction to Content Management Systems Content Management vs Experience Management [VIDEO LESSON] What is Adobe Experience Manager? [VIDEO LESSON] How to Obtain Adobe Experience Manager (AEM) JAR from Adobe [VIDEO LESSON] Installing AEM [&hellip;]","og_url":"https:\/\/sankhamtech.com\/index.php\/content\/in\/en\/home\/free-courses\/aem-backend-concepts\/calling-external-api-from-osgi-service\/","og_site_name":"Sankham Technologies","article_modified_time":"2024-11-15T18:21:44+00:00","twitter_card":"summary_large_image","twitter_misc":{"Est. reading time":"8 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/sankhamtech.com\/index.php\/content\/in\/en\/home\/free-courses\/aem-backend-concepts\/calling-external-api-from-osgi-service\/","url":"https:\/\/sankhamtech.com\/index.php\/content\/in\/en\/home\/free-courses\/aem-backend-concepts\/calling-external-api-from-osgi-service\/","name":"Calling External API from OSGI Service - Sankham Technologies","isPartOf":{"@id":"https:\/\/sankhamtech.com\/#website"},"datePublished":"2024-11-14T17:05:16+00:00","dateModified":"2024-11-15T18:21:44+00:00","breadcrumb":{"@id":"https:\/\/sankhamtech.com\/index.php\/content\/in\/en\/home\/free-courses\/aem-backend-concepts\/calling-external-api-from-osgi-service\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/sankhamtech.com\/index.php\/content\/in\/en\/home\/free-courses\/aem-backend-concepts\/calling-external-api-from-osgi-service\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/sankhamtech.com\/index.php\/content\/in\/en\/home\/free-courses\/aem-backend-concepts\/calling-external-api-from-osgi-service\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/sankhamtech.com\/"},{"@type":"ListItem","position":2,"name":"Content","item":"https:\/\/sankhamtech.com\/index.php\/content\/"},{"@type":"ListItem","position":3,"name":"India","item":"https:\/\/sankhamtech.com\/index.php\/content\/in\/"},{"@type":"ListItem","position":4,"name":"English","item":"https:\/\/sankhamtech.com\/index.php\/content\/in\/en\/"},{"@type":"ListItem","position":5,"name":"Home","item":"https:\/\/sankhamtech.com\/"},{"@type":"ListItem","position":6,"name":"Free Courses","item":"https:\/\/sankhamtech.com\/index.php\/content\/in\/en\/home\/free-courses\/"},{"@type":"ListItem","position":7,"name":"AEM Backend Concepts","item":"https:\/\/sankhamtech.com\/indexphp\/content\/in\/en\/home\/free-courses\/aem-backend-concepts\/"},{"@type":"ListItem","position":8,"name":"Calling External API from OSGI Service"}]},{"@type":"WebSite","@id":"https:\/\/sankhamtech.com\/#website","url":"https:\/\/sankhamtech.com\/","name":"Sankham Technologies","description":"","publisher":{"@id":"https:\/\/sankhamtech.com\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/sankhamtech.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/sankhamtech.com\/#organization","name":"Sankham Technologies","url":"https:\/\/sankhamtech.com\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/sankhamtech.com\/#\/schema\/logo\/image\/","url":"https:\/\/sankhamtech.com\/wp-content\/uploads\/2023\/12\/Logo-Dark-1.png","contentUrl":"https:\/\/sankhamtech.com\/wp-content\/uploads\/2023\/12\/Logo-Dark-1.png","width":306,"height":74,"caption":"Sankham Technologies"},"image":{"@id":"https:\/\/sankhamtech.com\/#\/schema\/logo\/image\/"}}]}},"_links":{"self":[{"href":"https:\/\/sankhamtech.com\/index.php\/wp-json\/wp\/v2\/pages\/3231","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/sankhamtech.com\/index.php\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/sankhamtech.com\/index.php\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/sankhamtech.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/sankhamtech.com\/index.php\/wp-json\/wp\/v2\/comments?post=3231"}],"version-history":[{"count":7,"href":"https:\/\/sankhamtech.com\/index.php\/wp-json\/wp\/v2\/pages\/3231\/revisions"}],"predecessor-version":[{"id":3673,"href":"https:\/\/sankhamtech.com\/index.php\/wp-json\/wp\/v2\/pages\/3231\/revisions\/3673"}],"up":[{"embeddable":true,"href":"https:\/\/sankhamtech.com\/index.php\/wp-json\/wp\/v2\/pages\/2868"}],"wp:attachment":[{"href":"https:\/\/sankhamtech.com\/index.php\/wp-json\/wp\/v2\/media?parent=3231"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}