diff --git a/apps/dhcp/app/src/main/java/org/onosproject/dhcp/rest/DhcpWebResource.java b/apps/dhcp/app/src/main/java/org/onosproject/dhcp/rest/DhcpWebResource.java
index cd8149e..6265fee 100644
--- a/apps/dhcp/app/src/main/java/org/onosproject/dhcp/rest/DhcpWebResource.java
+++ b/apps/dhcp/app/src/main/java/org/onosproject/dhcp/rest/DhcpWebResource.java
@@ -51,7 +51,7 @@
      * Shows lease, renewal and rebinding times in seconds.
      *
      * @return 200 OK
-     * @rsModel DhcpConfigGet
+     * @onos.rsModel DhcpConfigGet
      */
     @GET
     @Path("config")
@@ -68,7 +68,7 @@
      * Get all MAC/IP mappings.
      * Shows all MAC/IP mappings held by the DHCP server.
      *
-     * @rsModel DhcpConfigGetMappings
+     * @onos.rsModel DhcpConfigGetMappings
      * @return 200 OK
      */
     @GET
@@ -90,7 +90,7 @@
      * Get all available IPs.
      * Shows all the IPs in the free pool of the DHCP Server.
      *
-     * @rsModel DhcpConfigGetAvailable
+     * @onos.rsModel DhcpConfigGetAvailable
      * @return 200 OK
      */
     @GET
@@ -108,7 +108,7 @@
      * Post a new static MAC/IP binding.
      * Registers a static binding to the DHCP server, and displays the current set of bindings.
      *
-     * @rsModel DhcpConfigPut
+     * @onos.rsModel DhcpConfigPut
      * @param stream JSON stream
      * @return 200 OK
      */
diff --git a/docs/external.xml b/docs/external.xml
index d004527..aac47eb 100644
--- a/docs/external.xml
+++ b/docs/external.xml
@@ -71,7 +71,7 @@
                     </groups>
                     <tags>
                         <tag>
-                            <name>rsModel</name>
+                            <name>onos.rsModel</name>
                             <placement>m</placement>
                             <head>Json model for REST api:</head>
                         </tag>
diff --git a/docs/internal.xml b/docs/internal.xml
index f06ca13..569da1b 100644
--- a/docs/internal.xml
+++ b/docs/internal.xml
@@ -127,7 +127,7 @@
                     </groups>
                     <tags>
                         <tag>
-                            <name>rsModel</name>
+                            <name>onos.rsModel</name>
                             <placement>m</placement>
                             <head>Json model for REST api:</head>
                         </tag>
diff --git a/pom.xml b/pom.xml
index 738fb4d..19d3ceb 100644
--- a/pom.xml
+++ b/pom.xml
@@ -556,7 +556,7 @@
                     <configuration>
                         <tags>
                             <tag>
-                                <name>rsModel</name>
+                                <name>onos.rsModel</name>
                                 <placement>m</placement>
                                 <head>Json model for REST api:</head>
                             </tag>
diff --git a/tools/package/maven-plugin/src/main/java/org/onosproject/maven/OnosSwaggerMojo.java b/tools/package/maven-plugin/src/main/java/org/onosproject/maven/OnosSwaggerMojo.java
index 593053a..a98557d 100644
--- a/tools/package/maven-plugin/src/main/java/org/onosproject/maven/OnosSwaggerMojo.java
+++ b/tools/package/maven-plugin/src/main/java/org/onosproject/maven/OnosSwaggerMojo.java
@@ -243,7 +243,7 @@
                                    String resourcePath, ArrayNode tagArray, ObjectNode definitions) {
         String fullPath = resourcePath, consumes = "", produces = "",
                 comment = javaMethod.getComment();
-        DocletTag tag = javaMethod.getTagByName("rsModel");
+        DocletTag tag = javaMethod.getTagByName("onos.rsModel");
         for (JavaAnnotation annotation : javaMethod.getAnnotations()) {
             String name = annotation.getType().getName();
             if (name.equals(PATH)) {
diff --git a/web/api/src/main/java/org/onosproject/rest/resources/ApplicationsWebResource.java b/web/api/src/main/java/org/onosproject/rest/resources/ApplicationsWebResource.java
index b38633b..f038334 100644
--- a/web/api/src/main/java/org/onosproject/rest/resources/ApplicationsWebResource.java
+++ b/web/api/src/main/java/org/onosproject/rest/resources/ApplicationsWebResource.java
@@ -44,7 +44,7 @@
      * Get all installed applications.
      * Returns array of all installed applications.
      *
-     * @rsModel Applications
+     * @onos.rsModel Applications
      * @return 200 OK
      */
     @GET
@@ -57,7 +57,7 @@
     /**
      * Get application details.
      * Returns details of the specified application.
-     * @rsModel Application
+     * @onos.rsModel Application
      * @param name application name
      * @return 200 OK; 404; 401
      */
diff --git a/web/api/src/main/java/org/onosproject/rest/resources/ClusterWebResource.java b/web/api/src/main/java/org/onosproject/rest/resources/ClusterWebResource.java
index 16a4dc7..cedbd6b 100644
--- a/web/api/src/main/java/org/onosproject/rest/resources/ClusterWebResource.java
+++ b/web/api/src/main/java/org/onosproject/rest/resources/ClusterWebResource.java
@@ -49,7 +49,7 @@
      * Returns array of all cluster nodes.
      *
      * @return 200 OK
-     * @rsModel Cluster
+     * @onos.rsModel Cluster
      */
     @GET
     public Response getClusterNodes() {
@@ -63,7 +63,7 @@
      *
      * @param id cluster node identifier
      * @return 200 OK
-     * @rsModel ClusterNode
+     * @onos.rsModel ClusterNode
      */
     @GET
     @Path("{id}")
@@ -80,7 +80,7 @@
      * @param config cluster definition
      * @return 200 OK
      * @throws IOException to signify bad request
-     * @rsModel ClusterPost
+     * @onos.rsModel ClusterPost
      */
     @POST
     @Path("configuration")
diff --git a/web/api/src/main/java/org/onosproject/rest/resources/DevicesWebResource.java b/web/api/src/main/java/org/onosproject/rest/resources/DevicesWebResource.java
index 23ca46e..be1e5b6 100644
--- a/web/api/src/main/java/org/onosproject/rest/resources/DevicesWebResource.java
+++ b/web/api/src/main/java/org/onosproject/rest/resources/DevicesWebResource.java
@@ -46,7 +46,7 @@
      * Returns array of all discovered infrastructure devices.
      *
      * @return 200 OK
-     * @rsModel DevicesGet
+     * @onos.rsModel DevicesGet
      */
     @GET
     public Response getDevices() {
@@ -60,7 +60,7 @@
      *
      * @param id device identifier
      * @return 200 OK
-     * @rsModel DeviceGet
+     * @onos.rsModel DeviceGet
      */
     @GET
     @Path("{id}")
@@ -91,7 +91,7 @@
      * Get ports of infrastructure device.
      * Returns details of the specified infrastructure device.
      *
-     * @rsModel DeviceGetPorts
+     * @onos.rsModel DeviceGetPorts
      * @param id device identifier
      * @return 200 OK
      */
diff --git a/web/api/src/main/java/org/onosproject/rest/resources/FlowsWebResource.java b/web/api/src/main/java/org/onosproject/rest/resources/FlowsWebResource.java
index 252a3ba..e5e1dda 100644
--- a/web/api/src/main/java/org/onosproject/rest/resources/FlowsWebResource.java
+++ b/web/api/src/main/java/org/onosproject/rest/resources/FlowsWebResource.java
@@ -58,7 +58,7 @@
 
     /**
      * Get all flow entries. Returns array of all flow rules in the system.
-     * @rsModel Flows
+     * @onos.rsModel Flows
      * @return array of all the intents in the system
      */
     @GET
@@ -80,7 +80,7 @@
     /**
      * Get flow entries of a device. Returns array of all flow rules for the
      * specified device.
-     * @rsModel Flows
+     * @onos.rsModel Flows
      * @param deviceId device identifier
      * @return flow data as an array
      */
@@ -103,7 +103,7 @@
     /**
      * Get flow rule. Returns the flow entry specified by the device id and
      * flow rule id.
-     * @rsModel Flows
+     * @onos.rsModel Flows
      * @param deviceId device identifier
      * @param flowId   flow rule identifier
      * @return flow data as an array
@@ -130,7 +130,7 @@
     /**
      * Create new flow rule. Creates and installs a new flow rule for the
      * specified device.
-     * @rsModel FlowsPost
+     * @onos.rsModel FlowsPost
      * @param deviceId device identifier
      * @param stream   flow rule JSON
      * @return status of the request - CREATED if the JSON is correct,
diff --git a/web/api/src/main/java/org/onosproject/rest/resources/HostsWebResource.java b/web/api/src/main/java/org/onosproject/rest/resources/HostsWebResource.java
index 00cbdf2..8f69c24 100644
--- a/web/api/src/main/java/org/onosproject/rest/resources/HostsWebResource.java
+++ b/web/api/src/main/java/org/onosproject/rest/resources/HostsWebResource.java
@@ -73,7 +73,7 @@
      * Returns array of all known end-station hosts.
      *
      * @return 200 OK
-     * @rsModel Hosts
+     * @onos.rsModel Hosts
      */
     @GET
     @Produces(MediaType.APPLICATION_JSON)
@@ -89,7 +89,7 @@
      *
      * @param id host identifier
      * @return 200 OK
-     * @rsModel Host
+     * @onos.rsModel Host
      */
     @GET
     @Produces(MediaType.APPLICATION_JSON)
@@ -108,7 +108,7 @@
      * @param mac  host MAC address
      * @param vlan host VLAN identifier
      * @return 200 OK
-     * @rsModel Host
+     * @onos.rsModel Host
      */
     @GET
     @Produces(MediaType.APPLICATION_JSON)
@@ -128,7 +128,7 @@
      * @param stream input JSON
      * @return status of the request - CREATED if the JSON is correct,
      * BAD_REQUEST if the JSON is invalid
-     * @rsModel HostPut
+     * @onos.rsModel HostPut
      */
     @POST
     @Consumes(MediaType.APPLICATION_JSON)
diff --git a/web/api/src/main/java/org/onosproject/rest/resources/IntentsWebResource.java b/web/api/src/main/java/org/onosproject/rest/resources/IntentsWebResource.java
index 2c63db9..e695504 100644
--- a/web/api/src/main/java/org/onosproject/rest/resources/IntentsWebResource.java
+++ b/web/api/src/main/java/org/onosproject/rest/resources/IntentsWebResource.java
@@ -70,7 +70,7 @@
     /**
      * Get all intents.
      * Returns array containing all the intents in the system.
-     * @rsModel Intents
+     * @onos.rsModel Intents
      * @return array of all the intents in the system
      */
     @GET
@@ -84,7 +84,7 @@
     /**
      * Get intent by application and key.
      * Returns details of the specified intent.
-     * @rsModel Intents
+     * @onos.rsModel Intents
      * @param appId application identifier
      * @param key   intent key
      * @return intent data
@@ -136,7 +136,7 @@
     /**
      * Submit a new intent.
      * Creates and submits intent from the JSON request.
-     * @rsModel IntentHost
+     * @onos.rsModel IntentHost
      * @param stream input JSON
      * @return status of the request - CREATED if the JSON is correct,
      * BAD_REQUEST if the JSON is invalid
diff --git a/web/api/src/main/java/org/onosproject/rest/resources/LinksWebResource.java b/web/api/src/main/java/org/onosproject/rest/resources/LinksWebResource.java
index e36ea8a..edf9f02 100644
--- a/web/api/src/main/java/org/onosproject/rest/resources/LinksWebResource.java
+++ b/web/api/src/main/java/org/onosproject/rest/resources/LinksWebResource.java
@@ -44,7 +44,7 @@
     /**
      * Get infrastructure links.
      * Returns array of all links, or links for the specified device or port.
-     * @rsModel LinksGet
+     * @onos.rsModel LinksGet
      * @param deviceId  (optional) device identifier
      * @param port      (optional) port number
      * @param direction (optional) direction qualifier
diff --git a/web/api/src/main/java/org/onosproject/rest/resources/PathsWebResource.java b/web/api/src/main/java/org/onosproject/rest/resources/PathsWebResource.java
index c14b4ec..9968d1e 100644
--- a/web/api/src/main/java/org/onosproject/rest/resources/PathsWebResource.java
+++ b/web/api/src/main/java/org/onosproject/rest/resources/PathsWebResource.java
@@ -60,7 +60,7 @@
     /**
      * Get all shortest paths between any two hosts or devices.
      * Returns array of all shortest paths between any two elements.
-     * @rsModel Paths
+     * @onos.rsModel Paths
      * @param src source identifier
      * @param dst destination identifier
      * @return path data
@@ -79,7 +79,7 @@
     /**
      * Get all shortest disjoint paths between any two hosts or devices.
      * Returns array of all shortest disjoint paths between any two elements.
-     * @rsModel Paths
+     * @onos.rsModel Paths
      * @param src source identifier
      * @param dst destination identifier
      * @return path data
diff --git a/web/api/src/main/java/org/onosproject/rest/resources/StatisticsWebResource.java b/web/api/src/main/java/org/onosproject/rest/resources/StatisticsWebResource.java
index 284d377..7c6dd74 100644
--- a/web/api/src/main/java/org/onosproject/rest/resources/StatisticsWebResource.java
+++ b/web/api/src/main/java/org/onosproject/rest/resources/StatisticsWebResource.java
@@ -60,7 +60,7 @@
 
     /**
      * Get load statistics for all links or for a specific link.
-     * @rsModel StatisticsFlowsLink
+     * @onos.rsModel StatisticsFlowsLink
      * @param deviceId (optional) device ID for a specific link
      * @param port (optional) port number for a specified link
      * @return JSON encoded array lof Load objects
@@ -102,7 +102,7 @@
 
     /**
      * Get table statistics for all tables of all devices.
-     * @rsModel StatisticsFlowsTables
+     * @onos.rsModel StatisticsFlowsTables
      * @return JSON encoded array of table statistics
      */
     @GET
@@ -131,7 +131,7 @@
 
     /**
      * Get table statistics for all tables of a specified device.
-     * @rsModel StatisticsFlowsTables
+     * @onos.rsModel StatisticsFlowsTables
      * @param deviceId device ID
      * @return JSON encoded array of table statistics
      */
@@ -157,7 +157,7 @@
 
     /**
      * Get port statistics of all devices.
-     * @rsModel StatisticsPorts
+     * @onos.rsModel StatisticsPorts
      * @return JSON encoded array of port statistics
      */
     @GET
@@ -186,7 +186,7 @@
 
     /**
      * Get port statistics of a specified devices.
-     * @rsModel StatisticsPorts
+     * @onos.rsModel StatisticsPorts
      * @param deviceId device ID
      * @return JSON encoded array of port statistics
      */
diff --git a/web/api/src/main/java/org/onosproject/rest/resources/TopologyWebResource.java b/web/api/src/main/java/org/onosproject/rest/resources/TopologyWebResource.java
index d51bd5a..683f7af 100644
--- a/web/api/src/main/java/org/onosproject/rest/resources/TopologyWebResource.java
+++ b/web/api/src/main/java/org/onosproject/rest/resources/TopologyWebResource.java
@@ -50,7 +50,7 @@
      * Get overview of current topology.
      *
      * @return topology overview
-     * @rsModel Topology
+     * @onos.rsModel Topology
      */
     @GET
     @Produces(MediaType.APPLICATION_JSON)
@@ -64,7 +64,7 @@
      * Get overview of topology SCCs.
      *
      * @return topology clusters overview
-     * @rsModel TopologyClusters
+     * @onos.rsModel TopologyClusters
      */
     @GET
     @Produces(MediaType.APPLICATION_JSON)
@@ -82,7 +82,7 @@
      *
      * @param clusterId id of the cluster to query
      * @return topology cluster details
-     * @rsModel TopologyCluster
+     * @onos.rsModel TopologyCluster
      */
     @GET
     @Produces(MediaType.APPLICATION_JSON)
@@ -106,7 +106,7 @@
      *
      * @param clusterId id of the cluster to query
      * @return topology cluster devices
-     * @rsModel TopologyClustersDevices
+     * @onos.rsModel TopologyClustersDevices
      */
     @GET
     @Produces(MediaType.APPLICATION_JSON)
@@ -130,7 +130,7 @@
      *
      * @param clusterId id of the cluster to query
      * @return topology cluster links
-     * @rsModel LinksGet
+     * @onos.rsModel LinksGet
      */
     @GET
     @Produces(MediaType.APPLICATION_JSON)
@@ -180,7 +180,7 @@
      * @param connectPointString deviceid:portnumber
      * @return JSON representation of true if the connect point is broadcast,
      * false otherwise
-     * @rsModel TopologyBroadcast
+     * @onos.rsModel TopologyBroadcast
      */
     @GET
     @Produces(MediaType.APPLICATION_JSON)
@@ -205,7 +205,7 @@
      * @param connectPointString deviceid:portnumber
      * @return JSON representation of true if the connect point is broadcast,
      * false otherwise
-     * @rsModel TopologyInfrastructure
+     * @onos.rsModel TopologyInfrastructure
      */
     @GET
     @Produces(MediaType.APPLICATION_JSON)
