diff --git a/web/api/src/main/java/org/onosproject/codec/impl/CodecManager.java b/web/api/src/main/java/org/onosproject/codec/impl/CodecManager.java
index 562cdc0..6980a34 100644
--- a/web/api/src/main/java/org/onosproject/codec/impl/CodecManager.java
+++ b/web/api/src/main/java/org/onosproject/codec/impl/CodecManager.java
@@ -29,6 +29,9 @@
 import org.onosproject.net.HostLocation;
 import org.onosproject.net.Link;
 import org.onosproject.net.Port;
+import org.onosproject.net.flow.FlowEntry;
+import org.onosproject.net.flow.TrafficSelector;
+import org.onosproject.net.flow.TrafficTreatment;
 import org.onosproject.net.intent.Intent;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -59,6 +62,9 @@
         registerCodec(Host.class, new HostCodec());
         registerCodec(HostLocation.class, new HostLocationCodec());
         registerCodec(Intent.class, new IntentCodec());
+        registerCodec(FlowEntry.class, new FlowEntryCodec());
+        registerCodec(TrafficTreatment.class, new TrafficTreatmentCodec());
+        registerCodec(TrafficSelector.class, new TrafficSelectorCodec());
         log.info("Started");
     }
 
diff --git a/web/api/src/main/java/org/onosproject/codec/impl/FlowEntryCodec.java b/web/api/src/main/java/org/onosproject/codec/impl/FlowEntryCodec.java
new file mode 100644
index 0000000..1a1aafe
--- /dev/null
+++ b/web/api/src/main/java/org/onosproject/codec/impl/FlowEntryCodec.java
@@ -0,0 +1,67 @@
+/*
+ * Copyright 2014 Open Networking Laboratory
+ *
+ * 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.codec.impl;
+
+import org.onosproject.codec.CodecContext;
+import org.onosproject.codec.JsonCodec;
+import org.onosproject.net.flow.FlowEntry;
+import org.onosproject.net.flow.TrafficSelector;
+import org.onosproject.net.flow.TrafficTreatment;
+
+import com.fasterxml.jackson.databind.node.ObjectNode;
+
+import static com.google.common.base.Preconditions.checkNotNull;
+
+/**
+ * Flow entry JSON codec.
+ */
+public class FlowEntryCodec extends JsonCodec<FlowEntry> {
+
+    @Override
+    public ObjectNode encode(FlowEntry flowEntry, CodecContext context) {
+        checkNotNull(flowEntry, "Flow entry cannot be null");
+
+        final ObjectNode result = context.mapper().createObjectNode()
+                .put("id", Long.toString(flowEntry.id().value()))
+                .put("appId", flowEntry.appId())
+                .put("groupId", flowEntry.groupId().id())
+                .put("priority", flowEntry.priority())
+                .put("timeout", flowEntry.timeout())
+                .put("isPermanent", flowEntry.isPermanent())
+                .put("deviceId", flowEntry.deviceId().toString())
+                .put("state", flowEntry.state().toString())
+                .put("life", flowEntry.life())
+                .put("packets", flowEntry.packets())
+                .put("bytes", flowEntry.bytes())
+                .put("lastSeen", flowEntry.lastSeen());
+
+        if (flowEntry.treatment() != null) {
+            final JsonCodec<TrafficTreatment> treatmentCodec =
+                    new TrafficTreatmentCodec();
+            result.set("treatment", treatmentCodec.encode(flowEntry.treatment(), context));
+        }
+
+        if (flowEntry.selector() != null) {
+            final JsonCodec<TrafficSelector> selectorCodec =
+                    new TrafficSelectorCodec();
+            result.set("selector", selectorCodec.encode(flowEntry.selector(), context));
+        }
+
+        return result;
+    }
+
+}
+
diff --git a/web/api/src/main/java/org/onosproject/codec/impl/TrafficSelectorCodec.java b/web/api/src/main/java/org/onosproject/codec/impl/TrafficSelectorCodec.java
new file mode 100644
index 0000000..f7d788a
--- /dev/null
+++ b/web/api/src/main/java/org/onosproject/codec/impl/TrafficSelectorCodec.java
@@ -0,0 +1,48 @@
+/*
+ * Copyright 2014 Open Networking Laboratory
+ *
+ * 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.codec.impl;
+
+import org.onosproject.codec.CodecContext;
+import org.onosproject.codec.JsonCodec;
+import org.onosproject.net.flow.TrafficSelector;
+import org.onosproject.net.flow.criteria.Criterion;
+
+import com.fasterxml.jackson.databind.node.ArrayNode;
+import com.fasterxml.jackson.databind.node.ObjectNode;
+
+import static com.google.common.base.Preconditions.checkNotNull;
+
+/**
+ * Traffic selector codec.
+ */
+public class TrafficSelectorCodec extends JsonCodec<TrafficSelector> {
+    @Override
+    public ObjectNode encode(TrafficSelector selector, CodecContext context) {
+        checkNotNull(selector, "Traffic selector cannot be null");
+
+        final ObjectNode result = context.mapper().createObjectNode();
+        final ArrayNode jsonCriteria = result.putArray("criteria");
+
+        if (selector.criteria() != null) {
+            for (final Criterion criterion :selector.criteria()) {
+                // TODO: would be better to have a codec that understands criteria
+                jsonCriteria.add(criterion.toString());
+            }
+        }
+
+        return result;
+    }
+}
diff --git a/web/api/src/main/java/org/onosproject/codec/impl/TrafficTreatmentCodec.java b/web/api/src/main/java/org/onosproject/codec/impl/TrafficTreatmentCodec.java
new file mode 100644
index 0000000..c2a9a78
--- /dev/null
+++ b/web/api/src/main/java/org/onosproject/codec/impl/TrafficTreatmentCodec.java
@@ -0,0 +1,48 @@
+/*
+ * Copyright 2014 Open Networking Laboratory
+ *
+ * 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.codec.impl;
+
+import org.onosproject.codec.CodecContext;
+import org.onosproject.codec.JsonCodec;
+import org.onosproject.net.flow.TrafficTreatment;
+import org.onosproject.net.flow.instructions.Instruction;
+
+import com.fasterxml.jackson.databind.node.ArrayNode;
+import com.fasterxml.jackson.databind.node.ObjectNode;
+
+import static com.google.common.base.Preconditions.checkNotNull;
+
+/**
+ * Traffic treatment codec.
+ */
+public class TrafficTreatmentCodec extends JsonCodec<TrafficTreatment> {
+    @Override
+    public ObjectNode encode(TrafficTreatment treatment, CodecContext context) {
+        checkNotNull(treatment, "Traffic treatment cannot be null");
+
+        final ObjectNode result = context.mapper().createObjectNode();
+        final ArrayNode jsonInstructions = result.putArray("instructions");
+
+        if (treatment.instructions() != null) {
+            for (final Instruction instruction : treatment.instructions()) {
+                // TODO: would be better to have a codec that understands instructions
+                jsonInstructions.add(instruction.toString());
+            }
+        }
+
+        return result;
+    }
+}
