diff --git a/api/src/main/java/org/opencord/bng/PppoeEvent.java b/api/src/main/java/org/opencord/bng/PppoeEvent.java
new file mode 100644
index 0000000..7bccabf
--- /dev/null
+++ b/api/src/main/java/org/opencord/bng/PppoeEvent.java
@@ -0,0 +1,82 @@
+/*
+ * Copyright 2019-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.opencord.bng;
+
+import org.onosproject.event.AbstractEvent;
+
+/**
+ * PPPoE attachment level event. This kind of events are used to advertise
+ * control level attachment events (e.g., attachment creation, successful
+ * authentication etc.)
+ */
+public final class PppoeEvent extends
+        AbstractEvent<PppoeEvent.EventType, PppoeEventSubject> {
+    /**
+     * Creates a new event for the given attachment information.
+     *
+     * @param type    type
+     * @param subject the attachment event
+     */
+    public PppoeEvent(EventType type, PppoeEventSubject subject) {
+        super(type, subject);
+    }
+
+    /**
+     * Type of the event.
+     */
+    public enum EventType {
+        /**
+         * Signals that a PPPoE session has been initiated from the client.
+         */
+        SESSION_INIT,
+
+        /**
+         * Signal that a PPPoE session has been established.
+         */
+        SESSION_CONFIRMATION,
+
+        /**
+         * Signal that the PPPoE session has been terminated.
+         */
+        SESSION_TERMINATION,
+
+        /**
+         * Signals an IPCP configuration acknowledge event.
+         */
+        IPCP_CONF_ACK,
+
+        /**
+         * Signals an IPCP configuration request event.
+         */
+        IPCP_CONF_REQUEST,
+
+        /**
+         * Authentication initiated.
+         */
+        AUTH_REQUEST,
+
+        /**
+         * Authentication confirmation.
+         */
+        AUTH_SUCCESS,
+
+        /**
+         * Failed authentication.
+         */
+        AUTH_FAILURE
+    }
+}
\ No newline at end of file
