diff --git a/onoscli b/onoscli
index 127ec95..31d47f8 100755
--- a/onoscli
+++ b/onoscli
@@ -207,6 +207,10 @@
 	    Command("show switch", "Show switches"),
 	    #
 	    Command("show switch all", "Show all switches", self.show_switch_all)
+	    #
+	    Command("show topology", "Show network topology"),
+	    #
+	    Command("show topology all", "Show whole network topology", self.show_topology_all)
 	]
 
 	# Sort the commands by the level in the CLI command hierarchy
@@ -298,7 +302,7 @@
     def show_device_all(self, args):
 	"CLI command callback: show device all"
 
-	url = "http://%s:%s/wm/onos/topology/devices/json" % (self.onos_ip, self.onos_port)
+	url = "http://%s:%s/wm/onos/topology/devices" % (self.onos_ip, self.onos_port)
 	result = get_json(url)
 	self.print_json_result(result)
 
@@ -331,7 +335,7 @@
     def show_link_all(self, args):
 	"CLI command callback: show link all"
 
-	url = "http://%s:%s/wm/onos/topology/links/json" % (self.onos_ip, self.onos_port)
+	url = "http://%s:%s/wm/onos/topology/links" % (self.onos_ip, self.onos_port)
 	result = get_json(url)
 	#
 	if (self.output_format == "json"):
@@ -364,7 +368,15 @@
     def show_switch_all(self, args):
 	"CLI command callback: show switch all"
 
-	url = "http://%s:%s/wm/onos/topology/switches/json" % (self.onos_ip, self.onos_port)
+	url = "http://%s:%s/wm/onos/topology/switches" % (self.onos_ip, self.onos_port)
+	result = get_json(url)
+	#
+	self.print_json_result(result)
+
+    def show_topology_all(self, args):
+	"CLI command callback: show topology all"
+
+	url = "http://%s:%s/wm/onos/topology/all" % (self.onos_ip, self.onos_port)
 	result = get_json(url)
 	#
 	self.print_json_result(result)
@@ -577,12 +589,13 @@
     """Make a REST GET call and return the JSON result
        url: the URL to call"""
 
-    parsed_result = ""
+    parsed_result = []
     try:
 	response = urllib2.urlopen(url)
 	result = response.read()
 	response.close()
-	parsed_result = json.loads(result)
+	if len(result) != 0:
+	    parsed_result = json.loads(result)
     except HTTPError as exc:
 	print "ERROR:"
 	print "  REST GET URL: %s" % url
@@ -604,7 +617,7 @@
        url: the URL to call
        data: the data to POST"""
 
-    parsed_result = ""
+    parsed_result = []
     data_json = json.dumps(data)
     try:
 	request = urllib2.Request(url, data_json)
@@ -634,7 +647,7 @@
     """Make a REST DELETE call and return the JSON result
        url: the URL to call"""
 
-    parsed_result = ""
+    parsed_result = []
     try:
 	request = urllib2.Request(url)
 	request.get_method = lambda: 'DELETE'
diff --git a/src/main/java/net/onrc/onos/core/topology/web/TopologyAllResource.java b/src/main/java/net/onrc/onos/core/topology/web/TopologyAllResource.java
new file mode 100644
index 0000000..700ca60
--- /dev/null
+++ b/src/main/java/net/onrc/onos/core/topology/web/TopologyAllResource.java
@@ -0,0 +1,33 @@
+package net.onrc.onos.core.topology.web;
+
+import net.onrc.onos.core.topology.ITopologyService;
+import net.onrc.onos.core.topology.Topology;
+
+import org.restlet.representation.Representation;
+import org.restlet.resource.Get;
+import org.restlet.resource.ServerResource;
+
+/**
+ * A class to access the network topology information.
+ */
+public class TopologyAllResource extends ServerResource {
+    /**
+     * Gets the network topology information.
+     *
+     * @return a Representation of the network topology.
+     */
+    @Get("json")
+    public Representation retrieve() {
+        ITopologyService topologyService =
+            (ITopologyService) getContext().getAttributes()
+                .get(ITopologyService.class.getCanonicalName());
+
+        Topology topology = topologyService.getTopology();
+        topology.acquireReadLock();
+        try {
+            return toRepresentation(topology, null);
+        } finally {
+            topology.releaseReadLock();
+        }
+    }
+}
diff --git a/src/main/java/net/onrc/onos/core/topology/web/TopologyWebRoutable.java b/src/main/java/net/onrc/onos/core/topology/web/TopologyWebRoutable.java
index cef3ac3..9e5dabe 100644
--- a/src/main/java/net/onrc/onos/core/topology/web/TopologyWebRoutable.java
+++ b/src/main/java/net/onrc/onos/core/topology/web/TopologyWebRoutable.java
@@ -17,9 +17,10 @@
         router.attach("/ds/ports/json", DatastorePortsResource.class);
 
         // Topology API
-        router.attach("/switches/json", TopologySwitchesResource.class);
-        router.attach("/links/json", TopologyLinksResource.class);
-        router.attach("/devices/json", TopologyDevicesResource.class);
+        router.attach("/all", TopologyAllResource.class);
+        router.attach("/devices", TopologyDevicesResource.class);
+        router.attach("/links", TopologyLinksResource.class);
+        router.attach("/switches", TopologySwitchesResource.class);
         // TODO: Move the Shortest Path REST API to the Intent framework
         router.attach("/shortest-path/{src-dpid}/{dst-dpid}/json", TopologyShortestPathResource.class);
 
