diff --git a/apps/kubevirt-networking/api/src/main/java/org/onosproject/kubevirtnetworking/api/KubevirtFloatingIp.java b/apps/kubevirt-networking/api/src/main/java/org/onosproject/kubevirtnetworking/api/KubevirtFloatingIp.java
new file mode 100644
index 0000000..f879d2b
--- /dev/null
+++ b/apps/kubevirt-networking/api/src/main/java/org/onosproject/kubevirtnetworking/api/KubevirtFloatingIp.java
@@ -0,0 +1,124 @@
+/*
+ * Copyright 2021-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.kubevirtnetworking.api;
+
+import org.onlab.packet.IpAddress;
+
+/**
+ * Representation of floating IP address.
+ */
+public interface KubevirtFloatingIp {
+
+    /**
+     * Returns the floating IP identifier.
+     *
+     * @return floating IP identifier
+     */
+    String id();
+
+    /**
+     * Returns the name of router where the floating IP is associated.
+     *
+     * @return name of router
+     */
+    String routerName();
+
+    /**
+     * Returns the floating IP address.
+     *
+     * @return floating IP address
+     */
+    IpAddress floatingIp();
+
+    /**
+     * Returns the fixed IP address.
+     *
+     * @return fixed IP address
+     */
+    IpAddress fixedIp();
+
+    /**
+     * Returns the name of POD where this floating IP is associated with.
+     *
+     * @return POD name
+     */
+    String podName();
+
+    /**
+     * Updates the kubevirt floating IP with the supplied fixed IP address.
+     *
+     * @param ip fixed IP address
+     * @return kubevirt floating IP
+     */
+    KubevirtFloatingIp updateFixedIp(IpAddress ip);
+
+    /**
+     * Updates the kubevirt floating IP with the supplied pod Name.
+     *
+     * @param name POD name
+     * @return kubevirt floating IP
+     */
+    KubevirtFloatingIp updatePodName(String name);
+
+    interface Builder {
+        /**
+         * Builds an immutable floaing IP instance.
+         *
+         * @return kubevirt floating IP
+         */
+        KubevirtFloatingIp build();
+
+        /**
+         * Returns kubevirt floating IP builder with supplied identifier.
+         *
+         * @param id floating IP identifier
+         * @return floating IP builder
+         */
+        Builder id(String id);
+
+        /**
+         * Returns kubevirt floating IP builder with supplied router name.
+         *
+         * @param name router name
+         * @return floating IP builder
+         */
+        Builder routerName(String name);
+
+        /**
+         * Returns kubevirt floating IP builder with supplied floating IP address.
+         *
+         * @param ip floating IP address
+         * @return floating IP builder
+         */
+        Builder floatingIp(IpAddress ip);
+
+        /**
+         * Returns kubevirt floating IP builder with supplied fixed IP address.
+         *
+         * @param ip fixed IP address
+         * @return floating IP builder
+         */
+        Builder fixedIp(IpAddress ip);
+
+        /**
+         * Returns kubevirt floating IP builder with supplied POD name.
+         *
+         * @param name POD name
+         * @return floating IP builder
+         */
+        Builder podName(String name);
+    }
+}
