diff --git a/src/main/java/net/onrc/onos/apps/segmentrouting/web/SegmentRouterPolicyResource.java b/src/main/java/net/onrc/onos/apps/segmentrouting/web/SegmentRouterPolicyResource.java
new file mode 100644
index 0000000..f91cc7d
--- /dev/null
+++ b/src/main/java/net/onrc/onos/apps/segmentrouting/web/SegmentRouterPolicyResource.java
@@ -0,0 +1,38 @@
+package net.onrc.onos.apps.segmentrouting.web;
+
+import org.restlet.resource.Delete;
+import org.restlet.resource.Get;
+import org.restlet.resource.Post;
+import org.restlet.resource.ServerResource;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * Base class for return router statistics
+ *
+ */
+public class SegmentRouterPolicyResource extends ServerResource {
+    protected final static Logger log =
+            LoggerFactory.getLogger(SegmentRouterPolicyResource.class);
+
+    @Post("json")
+    public String createPolicy(String policyParams) {
+        String reply = "success";
+        log.debug("createPolicy with params {}", policyParams);
+        return reply;
+    }
+
+    @Delete("json")
+    public String deletePolicy(String policyId) {
+        String reply = "deleted";
+        log.debug("deletePolicy with Id {}", policyId);
+        return reply;
+    }
+
+    @Get("json")
+    public String getPolicy() {
+        String reply = "success";
+        log.debug("getPolicy with params");
+        return reply;
+    }
+}
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
new file mode 100644
index 0000000..57e42c7
--- /dev/null
+++ b/src/main/java/net/onrc/onos/apps/segmentrouting/web/SegmentRouterTunnelResource.java
@@ -0,0 +1,38 @@
+package net.onrc.onos.apps.segmentrouting.web;
+
+import org.restlet.resource.Delete;
+import org.restlet.resource.Get;
+import org.restlet.resource.Post;
+import org.restlet.resource.ServerResource;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * Base class for return router statistics
+ *
+ */
+public class SegmentRouterTunnelResource extends ServerResource {
+    protected final static Logger log =
+            LoggerFactory.getLogger(SegmentRouterTunnelResource.class);
+
+    @Post("json")
+    public String createTunnel(String tunnelParams) {
+        String reply = "success";
+        log.debug("createTunnel with params {}", tunnelParams);
+        return reply;
+    }
+
+    @Delete("json")
+    public String deleteTunnel(String tunnelId) {
+        String reply = "deleted";
+        log.debug("deleteTunnel with Id {}", tunnelId);
+        return reply;
+    }
+
+    @Get("json")
+    public String getTunnel() {
+        String reply = "success";
+        log.debug("getTunnel with params");
+        return reply;
+    }
+}
