diff --git a/src/main/java/net/onrc/onos/apps/segmentrouting/ISegmentRoutingService.java b/src/main/java/net/onrc/onos/apps/segmentrouting/ISegmentRoutingService.java
new file mode 100644
index 0000000..d544fc5
--- /dev/null
+++ b/src/main/java/net/onrc/onos/apps/segmentrouting/ISegmentRoutingService.java
@@ -0,0 +1,61 @@
+package net.onrc.onos.apps.segmentrouting;
+
+import java.util.List;
+
+import net.floodlightcontroller.core.module.IFloodlightService;
+import net.floodlightcontroller.util.MACAddress;
+import net.onrc.onos.core.util.Dpid;
+import net.onrc.onos.core.util.IPv4Net;
+
+/**
+ * The API exported by the main SDN-IP class. This is the interface between the
+ * REST handlers and the SDN-IP module.
+ */
+public interface ISegmentRoutingService extends IFloodlightService {
+
+    /**
+     * Create a tunnel for policy routing.
+     *
+     * @param tunnelId ID for the tunnel
+     * @param Ids Node IDs for the tunnel
+     *
+     * @return "true/false" depending tunnel creation status
+     */
+    public boolean createTunnel(String tunnelId, List<Dpid> Ids);
+
+    /**
+     * Remove a Segment Routing tunnel given a tunnel Id.
+     *
+     * @param tunnelId ID for the tunnel
+     *
+     * @return "true/false" depending tunnel deletion status
+     */
+    public boolean removeTunnel(String tunnelId);
+
+    /**
+     * Create a policy for policy based segment routing
+     * 
+     * @param pid Unique Policy Identifier
+     * @param srcIP Source IP address in CIDR format
+     * @param dstIP Destination IP address in CIDR format
+     * @param ipProto IP protocol type
+     * @param srcPort Source L4 port
+     * @param dstPort Destination L4 port
+     * @param priority Priority of the policy
+     * @param tid SR Tunnel Id to be associated with this policy
+     *
+     * @return "true/false" depending tunnel creation status
+     */
+    public boolean createPolicy(String pid, MACAddress srcMac, MACAddress dstMac,
+            Short etherType, IPv4Net srcIp, IPv4Net dstIp, Byte ipProto,
+            Short srcPort, Short dstPort, int priority, String tid);
+
+    /**
+     * Remove a policy given policy Id
+     *
+     * @param pid Unique Policy Identifier
+     *
+     * @return "true/false" depending tunnel deletion status
+     */
+    public boolean removePolicy(String pid);
+}
