diff --git a/apps/mcast/web/src/main/java/org/onosproject/mcast/web/McastRouteWebResource.java b/apps/mcast/web/src/main/java/org/onosproject/mcast/web/McastRouteWebResource.java
new file mode 100644
index 0000000..c198a66
--- /dev/null
+++ b/apps/mcast/web/src/main/java/org/onosproject/mcast/web/McastRouteWebResource.java
@@ -0,0 +1,47 @@
+/*
+ * Copyright 2017-present Open Networking Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.onosproject.mcast.web;
+
+import com.google.common.annotations.Beta;
+import org.onosproject.rest.AbstractWebResource;
+
+import javax.ws.rs.GET;
+import javax.ws.rs.Path;
+import javax.ws.rs.Produces;
+import javax.ws.rs.core.MediaType;
+import javax.ws.rs.core.Response;
+
+/**
+ * Manage the multicast routing information.
+ */
+@Beta
+@Path("mcast")
+public class McastRouteWebResource extends AbstractWebResource {
+
+    /**
+     * Get all multicast routes.
+     * Returns array of all known multicast routes.
+     *
+     * @return 200 OK with array of all known multicast routes
+     */
+    @GET
+    @Produces(MediaType.APPLICATION_JSON)
+    public Response getRoutes() {
+        return Response.noContent().build();
+    }
+
+}
