diff --git a/apps/bgpmonitoring/api/src/main/java/org/onosproject/bgpmonitoring/RouteMirroringMessage.java b/apps/bgpmonitoring/api/src/main/java/org/onosproject/bgpmonitoring/RouteMirroringMessage.java
new file mode 100644
index 0000000..7e9e154
--- /dev/null
+++ b/apps/bgpmonitoring/api/src/main/java/org/onosproject/bgpmonitoring/RouteMirroringMessage.java
@@ -0,0 +1,56 @@
+/*
+ * Copyright 2024-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.onosproject.bgpmonitoring;
+
+import org.onosproject.bgpio.protocol.BgpMessage;
+
+/**
+ * Abstraction of an BMP route mirroring message.
+ */
+public abstract class RouteMirroringMessage extends BmpMessage {
+
+    public static final int ROUTE_MIRRORING_HEADER_MIN_LENGTH = 4;
+
+    /**
+     * Returns Bgp route mirroring type.
+     *
+     * @return Bgp route mirroring type
+     */
+    public abstract MirroringType getMirroringType();
+
+    /**
+     * Returns Bgp route mirroring length.
+     *
+     * @return Bgp route mirroring length
+     */
+    public abstract int getMirroringLength();
+
+    /**
+     * Returns Bgp message.
+     *
+     * @return Bgp message
+     */
+    public abstract BgpMessage getBgpMessage();
+
+    /**
+     * Returns BMP per peer header.
+     *
+     * @return BMP per peer header
+     */
+    public abstract PerPeer getPerPeer();
+
+}
\ No newline at end of file
diff --git a/apps/bgpmonitoring/api/src/main/java/org/onosproject/bgpmonitoring/RouteMonitoringMessage.java b/apps/bgpmonitoring/api/src/main/java/org/onosproject/bgpmonitoring/RouteMonitoringMessage.java
new file mode 100644
index 0000000..4a96697
--- /dev/null
+++ b/apps/bgpmonitoring/api/src/main/java/org/onosproject/bgpmonitoring/RouteMonitoringMessage.java
@@ -0,0 +1,42 @@
+/*
+ * Copyright 2024-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.onosproject.bgpmonitoring;
+
+import org.onosproject.bgpio.protocol.BgpMessage;
+
+/**
+ * Abstraction of an BMP route monitoring message.
+ */
+public abstract class RouteMonitoringMessage extends BmpMessage {
+
+    public static final int ROUTE_MONITORING_HEADER_MIN_LENGTH = 19;
+
+    /**
+     * Returns Bgp message.
+     *
+     * @return Bgp message
+     */
+    public abstract BgpMessage getBgpMessage();
+
+    /**
+     * Returns BMP per peer header.
+     *
+     * @return BMP per peer header
+     */
+    public abstract PerPeer getPerPeer();
+
+}
\ No newline at end of file
diff --git a/apps/bgpmonitoring/api/src/main/java/org/onosproject/bgpmonitoring/TerminationMessage.java b/apps/bgpmonitoring/api/src/main/java/org/onosproject/bgpmonitoring/TerminationMessage.java
new file mode 100644
index 0000000..b380542
--- /dev/null
+++ b/apps/bgpmonitoring/api/src/main/java/org/onosproject/bgpmonitoring/TerminationMessage.java
@@ -0,0 +1,48 @@
+/*
+ * Copyright 2024-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.onosproject.bgpmonitoring;
+
+
+/**
+ * Abstraction of an BMP termination message.
+ */
+public abstract class TerminationMessage extends BmpMessage {
+
+    public static final int TERMINATION_HEADER_MIN_LENGTH = 4;
+
+    /**
+     * Returns BMP session termination type.
+     *
+     * @return BMP session termination type
+     */
+    public abstract TerminationType getTerminationType();
+
+    /**
+     * Returns BMP session termination message length.
+     *
+     * @return BMP session termination message length
+     */
+    public abstract int getInformationLength();
+
+    /**
+     * Returns BMP session termination message.
+     *
+     * @return BMP session termination message
+     */
+    public abstract String getInformation();
+
+}
\ No newline at end of file
