diff --git a/web/api/src/main/java/org/onosproject/rest/resources/StatisticsWebResource.java b/web/api/src/main/java/org/onosproject/rest/resources/StatisticsWebResource.java
index 7a45204..284d377 100644
--- a/web/api/src/main/java/org/onosproject/rest/resources/StatisticsWebResource.java
+++ b/web/api/src/main/java/org/onosproject/rest/resources/StatisticsWebResource.java
@@ -36,6 +36,7 @@
 import org.onosproject.net.DeviceId;
 import org.onosproject.net.Link;
 import org.onosproject.net.device.DeviceService;
+import org.onosproject.net.device.PortStatistics;
 import org.onosproject.net.flow.FlowRuleService;
 import org.onosproject.net.flow.TableStatisticsEntry;
 import org.onosproject.net.link.LinkService;
@@ -153,4 +154,62 @@
         rootArrayNode.add(deviceStatsNode);
         return ok(root).build();
     }
+
+    /**
+     * Get port statistics of all devices.
+     * @rsModel StatisticsPorts
+     * @return JSON encoded array of port statistics
+     */
+    @GET
+    @Path("ports")
+    @Produces(MediaType.APPLICATION_JSON)
+    public Response getPortStatistics() {
+        final DeviceService service = get(DeviceService.class);
+        final Iterable<Device> devices = service.getDevices();
+        final ObjectNode root = mapper().createObjectNode();
+        final ArrayNode rootArrayNode = root.putArray("statistics");
+        for (final Device device : devices) {
+            final ObjectNode deviceStatsNode = mapper().createObjectNode();
+            deviceStatsNode.put("device", device.id().toString());
+            final ArrayNode statisticsNode = deviceStatsNode.putArray("ports");
+            final Iterable<PortStatistics> portStatsEntries = service.getPortStatistics(device.id());
+            if (portStatsEntries != null) {
+                for (final PortStatistics entry : portStatsEntries) {
+                    statisticsNode.add(codec(PortStatistics.class).encode(entry, this));
+                }
+            }
+            rootArrayNode.add(deviceStatsNode);
+        }
+
+        return ok(root).build();
+    }
+
+    /**
+     * Get port statistics of a specified devices.
+     * @rsModel StatisticsPorts
+     * @param deviceId device ID
+     * @return JSON encoded array of port statistics
+     */
+    @GET
+    @Path("ports/{deviceId}")
+    @Produces(MediaType.APPLICATION_JSON)
+    public Response getPortStatisticsByDeviceId(@PathParam("deviceId") String deviceId) {
+        final DeviceService service = get(DeviceService.class);
+        final Iterable<PortStatistics> portStatsEntries =
+                service.getPortStatistics(DeviceId.deviceId(deviceId));
+        final ObjectNode root = mapper().createObjectNode();
+        final ArrayNode rootArrayNode = root.putArray("statistics");
+        final ObjectNode deviceStatsNode = mapper().createObjectNode();
+        deviceStatsNode.put("device", deviceId);
+        final ArrayNode statisticsNode = deviceStatsNode.putArray("ports");
+        if (portStatsEntries != null) {
+            for (final PortStatistics entry : portStatsEntries) {
+                statisticsNode.add(codec(PortStatistics.class).encode(entry, this));
+            }
+        }
+        rootArrayNode.add(deviceStatsNode);
+
+        return ok(root).build();
+    }
+
 }
diff --git a/web/api/src/main/resources/definitions/Flows.json b/web/api/src/main/resources/definitions/Flows.json
index 8879629..ed0767c 100644
--- a/web/api/src/main/resources/definitions/Flows.json
+++ b/web/api/src/main/resources/definitions/Flows.json
@@ -16,6 +16,7 @@
         "title": "flow",
         "required": [
           "id",
+          "tableId",
           "appId",
           "groupId",
           "priority",
@@ -33,6 +34,11 @@
             "type": "string",
             "example": "12103425214920339"
           },
+          "tableId": {
+            "type": "integer",
+            "format": "int64",
+            "example": 3
+          },
           "appId": {
             "type": "string",
             "example": "org.onosproject.core"
diff --git a/web/api/src/main/resources/definitions/StatisticsPorts.json b/web/api/src/main/resources/definitions/StatisticsPorts.json
new file mode 100644
index 0000000..e3ed71f
--- /dev/null
+++ b/web/api/src/main/resources/definitions/StatisticsPorts.json
@@ -0,0 +1,107 @@
+{
+  "type": "object",
+  "title": "all-port-statistics",
+  "required": [
+    "statistics"
+  ],
+  "properties": {
+    "statistics": {
+      "type": "array",
+      "required": [
+        "statistics"
+      ],
+      "xml": {
+        "name": "statistics",
+        "wrapped": true
+      },
+      "items": {
+        "type": "object",
+        "title": "statistics",
+        "required": [
+          "ports"
+        ],
+        "properties": {
+          "deviceId": {
+            "type": "string",
+            "example": "of:0000000000000001"
+          },
+          "ports": {
+            "type": "array",
+            "xml": {
+              "name": "ports",
+              "wrapped": true
+            },
+            "items": {
+              "type": "object",
+              "title": "ports",
+              "required": [
+                "port",
+                "packetsReceived",
+                "packetsSent",
+                "bytesReceived",
+                "bytesSent",
+                "packetsRxDropped",
+                "packetsTxDropped",
+                "packetsRxErrors",
+                "packetsTxErrors",
+                "durationSec"
+              ],
+              "properties": {
+                "port": {
+                  "type": "integer",
+                  "format": "int64",
+                  "example": 1
+                },
+                "packetsReceived": {
+                  "type": "integer",
+                  "format": "int64",
+                  "example": 98
+                },
+                "packetsSent": {
+                  "type": "integer",
+                  "format": "int64",
+                  "example": 98
+                },
+                "bytesReceived": {
+                  "type": "integer",
+                  "format": "int64",
+                  "example": 9162
+                },
+                "bytesSent": {
+                  "type": "integer",
+                  "format": "int64",
+                  "example": 9162
+                },
+                "packetsRxDropped": {
+                  "type": "integer",
+                  "format": "int64",
+                  "example": 0
+                },
+                "packetsTxDropped": {
+                  "type": "integer",
+                  "format": "int64",
+                  "example": 0
+                },
+                "packetsRxErrors": {
+                  "type": "integer",
+                  "format": "int64",
+                  "example": 0
+                },
+                "packetsTxErrors": {
+                  "type": "integer",
+                  "format": "int64",
+                  "example": 0
+                },
+                "durationSec": {
+                  "type": "integer",
+                  "format": "int64",
+                  "example": 90
+                }
+              }
+            }
+          }
+        }
+      }
+    }
+  }
+}
\ No newline at end of file
