diff --git a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/TeTopologyEvent.java b/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/TeTopologyEvent.java
new file mode 100644
index 0000000..25bca39
--- /dev/null
+++ b/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/TeTopologyEvent.java
@@ -0,0 +1,157 @@
+/*
+ * Copyright 2016 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.tetopology.management.api;
+
+import org.onosproject.event.AbstractEvent;
+
+/**
+ * TE topology event.
+ */
+public class TeTopologyEvent
+        extends AbstractEvent<TeTopologyEvent.Type, TeTopologyEventSubject> {
+
+    /**
+     * Type of TE topology events.
+     */
+    public enum Type {
+        /**
+         * Designates addition of a network.
+         */
+        NETWORK_ADDED,
+
+        /**
+         * Designates update of a network.
+         */
+        NETWORK_UPDATED,
+
+        /**
+         * Designates removal of a network.
+         */
+        NETWORK_REMOVED,
+
+        /**
+         * Designates addition of a network node.
+         */
+        NODE_ADDED,
+
+        /**
+         * Designates update of a network node.
+         */
+        NODE_UPDATED,
+
+        /**
+         * Designates removal of a network node.
+         */
+        NODE_REMOVED,
+
+        /**
+         * Designates addition of a termination point.
+         */
+        TP_ADDED,
+
+        /**
+         * Designates update of a termination point.
+         */
+        TP_UPDATED,
+
+        /**
+         * Designates removal of a termination point.
+         */
+        TP_REMOVED,
+
+        /**
+         * Designates addition of a network link.
+         */
+        LINK_ADDED,
+
+        /**
+         * Designates update of a network link.
+         */
+        LINK_UPDATED,
+
+        /**
+         * Designates removal of a network link.
+         */
+        LINK_REMOVED,
+
+        /**
+         * Designates addition of a TE topology.
+         */
+        TE_TOPOLOGY_ADDED,
+
+        /**
+         * Designates update of a TE topology.
+         */
+        TE_TOPOLOGY_UPDATED,
+
+        /**
+         * Designates removal of a TE topology.
+         */
+        TE_TOPOLOGY_REMOVED,
+
+        /**
+         * Designates addition of a TE node.
+         */
+        TE_NODE_ADDED,
+
+        /**
+         * Designates update of a TE node.
+         */
+        TE_NODE_UPDATED,
+
+        /**
+         * Designates removal of a TE node.
+         */
+        TE_NODE_REMOVED,
+
+        /**
+         * Designates addition of a TE link.
+         */
+        TE_LINK_ADDED,
+
+        /**
+         * Designates update of a TE link.
+         */
+        TE_LINK_UPDATED,
+
+        /**
+         * Designates removal of a TE link.
+         */
+        TE_LINK_REMOVED;
+    }
+
+    /**
+     * Constructor for TeTopologyEvent.
+     *
+     * @param type    type of topology event
+     * @param subject event subject interface
+     */
+    public TeTopologyEvent(Type type, TeTopologyEventSubject subject) {
+        super(type, subject);
+    }
+
+    /**
+     * Constructor for TeTopologyEvent.
+     *
+     * @param type    type of topology event
+     * @param subject event subject interface
+     * @param time    event time
+     */
+    public TeTopologyEvent(Type type, TeTopologyEventSubject subject, long time) {
+        super(type, subject, time);
+    }
+
+}
