diff --git a/src/main/java/net/onrc/onos/apps/segmentrouting/ISegmentRoutingService.java b/src/main/java/net/onrc/onos/apps/segmentrouting/ISegmentRoutingService.java
index d544fc5..e2efa42 100644
--- a/src/main/java/net/onrc/onos/apps/segmentrouting/ISegmentRoutingService.java
+++ b/src/main/java/net/onrc/onos/apps/segmentrouting/ISegmentRoutingService.java
@@ -1,9 +1,11 @@
 package net.onrc.onos.apps.segmentrouting;
 
+import java.util.Collection;
 import java.util.List;
 
 import net.floodlightcontroller.core.module.IFloodlightService;
 import net.floodlightcontroller.util.MACAddress;
+import net.onrc.onos.apps.segmentrouting.SegmentRoutingManager.TunnelInfo;
 import net.onrc.onos.core.util.Dpid;
 import net.onrc.onos.core.util.IPv4Net;
 
@@ -58,4 +60,11 @@
      * @return "true/false" depending tunnel deletion status
      */
     public boolean removePolicy(String pid);
+    /**
+     * Return the collection of TunnelInfo which contains
+     * info about tunnels
+     * @return Collection<TunnelInfo>
+     */
+    
+    public Collection<TunnelInfo> getTunnelTable();
 }
diff --git a/src/main/java/net/onrc/onos/apps/segmentrouting/SegmentRoutingManager.java b/src/main/java/net/onrc/onos/apps/segmentrouting/SegmentRoutingManager.java
index 9380e94..1b8a450 100644
--- a/src/main/java/net/onrc/onos/apps/segmentrouting/SegmentRoutingManager.java
+++ b/src/main/java/net/onrc/onos/apps/segmentrouting/SegmentRoutingManager.java
@@ -937,14 +937,14 @@
     // Policy routing classes and functions
     // ************************************
 
-    class PolicyInfo {
+    public class PolicyInfo {
 
-        String policyId;
-        PacketMatch match;
-        int priority;
-        String tunnelId;
+        private String policyId;
+        private PacketMatch match;
+        private int priority;
+        private String tunnelId;
 
-        PolicyInfo(String pid, PacketMatch match, int priority, String tid) {
+        public PolicyInfo(String pid, PacketMatch match, int priority, String tid) {
             this.policyId = pid;
             this.match = match;
             this.priority = priority;
@@ -952,54 +952,63 @@
         }
     }
 
-    class TunnelInfo {
-        String tunnelId;
-        List<Dpid> dpids;
-        List<TunnelRouteInfo> routes;
+    public class TunnelInfo {
+        private String tunnelId;
+        private List<Dpid> dpids;
+        private List<TunnelRouteInfo> routes;
 
-        TunnelInfo(String tid, List<Dpid> dpids, List<TunnelRouteInfo> routes) {
+        public TunnelInfo(String tid, List<Dpid> dpids, List<TunnelRouteInfo> routes) {
             this.tunnelId = tid;
             this.dpids = dpids;
             this.routes = routes;
         }
+        public String getTunnelId(){
+            return this.tunnelId;
+        }
+        public List<Dpid> getDpids(){
+            return this.dpids;
+        }
+        public List<TunnelRouteInfo> getRoutes(){
+            return this.routes;
+        }
     }
 
-    class TunnelRouteInfo {
+    public class TunnelRouteInfo {
 
-        String srcSwDpid;
-        List<Dpid> fwdSwDpids;
-        List<String> route;
+        private String srcSwDpid;
+        private List<Dpid> fwdSwDpids;
+        private List<String> route;
 
-        TunnelRouteInfo() {
+        public TunnelRouteInfo() {
             fwdSwDpids = new ArrayList<Dpid>();
             route = new ArrayList<String>();
         }
 
-        void setSrcDpid(String dpid) {
+        private void setSrcDpid(String dpid) {
             this.srcSwDpid = dpid;
         }
 
-        void setFwdSwDpid(List<Dpid> dpid) {
+        private void setFwdSwDpid(List<Dpid> dpid) {
             this.fwdSwDpids = dpid;
         }
 
-        void addRoute(String id) {
+        private void addRoute(String id) {
             route.add(id);
         }
 
-        void setRoute(List<String> r) {
+        private void setRoute(List<String> r) {
             this.route = r;
         }
 
-        String getSrcSwDpid() {
+        public String getSrcSwDpid() {
             return this.srcSwDpid;
         }
 
-        List<Dpid> getFwdSwDpid() {
+        public List<Dpid> getFwdSwDpid() {
             return this.fwdSwDpids;
         }
 
-        List<String> getRoute() {
+        public List<String> getRoute() {
             return this.route;
         }
     }
@@ -1010,7 +1019,7 @@
      * @return collection of TunnelInfo
      */
     public Collection<TunnelInfo> getTunnelTable() {
-        return tunnelTable.values();
+        return this.tunnelTable.values();
     }
 
     /**
diff --git a/src/main/java/net/onrc/onos/apps/segmentrouting/web/SegmentRouterTunnelInfo.java b/src/main/java/net/onrc/onos/apps/segmentrouting/web/SegmentRouterTunnelInfo.java
new file mode 100644
index 0000000..785dde7
--- /dev/null
+++ b/src/main/java/net/onrc/onos/apps/segmentrouting/web/SegmentRouterTunnelInfo.java
@@ -0,0 +1,32 @@
+package net.onrc.onos.apps.segmentrouting.web;
+
+import java.util.List;
+
+import net.onrc.onos.apps.segmentrouting.SegmentRoutingManager.TunnelRouteInfo;
+import net.onrc.onos.core.util.Dpid;
+
+/**
+ * This class contains tunnel info of ONOS Segement Routing App
+ * Used for rest API
+ */
+public class SegmentRouterTunnelInfo {
+    private String tunnelId;
+    private List<Dpid> nodes;
+    private List<List<String>> labelStack;
+    
+    public SegmentRouterTunnelInfo (String tId, List<Dpid> dpids, 
+            List<List<String>> tunnelRoutes){
+        this.tunnelId = tId;
+        this.nodes = dpids;
+        this.labelStack = tunnelRoutes;
+    }
+    public String getTunnelId (){
+        return this.tunnelId;
+    }
+    public List<Dpid> getnodes (){
+        return this.nodes;
+    }
+    public List<List<String>> getLabelStack (){
+        return this.labelStack;
+    }
+}
diff --git a/src/main/java/net/onrc/onos/apps/segmentrouting/web/SegmentRouterTunnelResource.java b/src/main/java/net/onrc/onos/apps/segmentrouting/web/SegmentRouterTunnelResource.java
index 7bcdfa6..71cfc05 100644
--- a/src/main/java/net/onrc/onos/apps/segmentrouting/web/SegmentRouterTunnelResource.java
+++ b/src/main/java/net/onrc/onos/apps/segmentrouting/web/SegmentRouterTunnelResource.java
@@ -15,6 +15,16 @@
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+
+import net.onrc.onos.apps.segmentrouting.ISegmentRoutingService;
+import net.onrc.onos.apps.segmentrouting.SegmentRoutingManager;
+import net.onrc.onos.apps.segmentrouting.SegmentRoutingManager.TunnelInfo;
+import net.onrc.onos.apps.segmentrouting.SegmentRoutingManager.TunnelRouteInfo;
 /**
  * Base class for return router statistics
  *
@@ -57,9 +67,30 @@
     }
 
     @Get("json")
-    public String getTunnel() {
-        String reply = "success";
+    public Object getTunnel() {
+        System.out.println("Got into getTunnel");
+        ISegmentRoutingService segmentRoutingService =
+                (ISegmentRoutingService) getContext().getAttributes().
+                        get(ISegmentRoutingService.class.getCanonicalName());
+        Iterator<TunnelInfo> ttI = segmentRoutingService.getTunnelTable().iterator();
+        List<SegmentRouterTunnelInfo> infoList = new ArrayList<SegmentRouterTunnelInfo>();
+        while(ttI.hasNext()){
+           TunnelInfo tunnelInfo = ttI.next();
+           Iterator<TunnelRouteInfo>trI = tunnelInfo.getRoutes().iterator();
+           List<List<String>> labelStack = new ArrayList<List<String>>();
+           while(trI.hasNext()){
+               TunnelRouteInfo label = trI.next();
+               labelStack.add(label.getRoute());
+           }
+           SegmentRouterTunnelInfo info = new SegmentRouterTunnelInfo(tunnelInfo.getTunnelId(),
+                   tunnelInfo.getDpids(), labelStack );
+           infoList.add(info);
+           //TODO Add Group/DPID
+           
+        }
         log.debug("getTunnel with params");
-        return reply;
+        Map <String,List<SegmentRouterTunnelInfo>>result = new HashMap<String,List<SegmentRouterTunnelInfo>>();
+        result.put("tunnels", infoList);
+        return infoList;
     }
 }
diff --git a/src/main/java/net/onrc/onos/apps/segmentrouting/web/SegmentRoutingWebRoutable.java b/src/main/java/net/onrc/onos/apps/segmentrouting/web/SegmentRoutingWebRoutable.java
index 119df92..e19df8d 100644
--- a/src/main/java/net/onrc/onos/apps/segmentrouting/web/SegmentRoutingWebRoutable.java
+++ b/src/main/java/net/onrc/onos/apps/segmentrouting/web/SegmentRoutingWebRoutable.java
@@ -1,6 +1,9 @@
 package net.onrc.onos.apps.segmentrouting.web;
 
+import java.util.Iterator;
+
 import net.floodlightcontroller.restserver.RestletRoutable;
+import net.onrc.onos.apps.segmentrouting.SegmentRoutingManager;
 
 import org.restlet.Context;
 import org.restlet.Restlet;
