Explicitly return NO CONTENT type response for http DELETE request

Change-Id: I920084b92197bb1687e7d978ad350b2e1290ecbc
diff --git a/apps/acl/src/main/java/org/onosproject/acl/AclWebResource.java b/apps/acl/src/main/java/org/onosproject/acl/AclWebResource.java
index 9086f13a..d880121 100644
--- a/apps/acl/src/main/java/org/onosproject/acl/AclWebResource.java
+++ b/apps/acl/src/main/java/org/onosproject/acl/AclWebResource.java
@@ -113,25 +113,25 @@
      * Remove ACL rule.
      *
      * @param id ACL rule id (in hex string format)
-     * @return 200 OK
+     * @return 204 NO CONTENT
      */
     @DELETE
     @Path("{id}")
     public Response removeAclRule(@PathParam("id") String id) {
         RuleId ruleId = new RuleId(Long.parseLong(id.substring(2), 16));
         get(AclService.class).removeAclRule(ruleId);
-        return Response.ok().build();
+        return Response.noContent().build();
     }
 
     /**
      * Remove all ACL rules.
      *
-     * @return 200 OK
+     * @return 204 NO CONTENT
      */
     @DELETE
     public Response clearAcl() {
         get(AclService.class).clearAcl();
-        return Response.ok().build();
+        return Response.noContent().build();
     }
 
     /**
diff --git a/apps/cordvtn/src/main/java/org/onosproject/cordvtn/rest/NeutronMl2NetworksWebResource.java b/apps/cordvtn/src/main/java/org/onosproject/cordvtn/rest/NeutronMl2NetworksWebResource.java
index 57c16d9..ebb3be4 100644
--- a/apps/cordvtn/src/main/java/org/onosproject/cordvtn/rest/NeutronMl2NetworksWebResource.java
+++ b/apps/cordvtn/src/main/java/org/onosproject/cordvtn/rest/NeutronMl2NetworksWebResource.java
@@ -58,10 +58,8 @@
 
     @DELETE
     @Path("{id}")
-    @Consumes(MediaType.APPLICATION_JSON)
-    @Produces(MediaType.APPLICATION_JSON)
     public Response deleteNetwork(@PathParam("id") String id) {
         log.trace(String.format(NETWORKS_MESSAGE, "delete"));
-        return Response.status(Response.Status.OK).build();
+        return Response.noContent().build();
     }
 }
diff --git a/apps/cordvtn/src/main/java/org/onosproject/cordvtn/rest/NeutronMl2PortsWebResource.java b/apps/cordvtn/src/main/java/org/onosproject/cordvtn/rest/NeutronMl2PortsWebResource.java
index 1c37a2d..17d48a5 100644
--- a/apps/cordvtn/src/main/java/org/onosproject/cordvtn/rest/NeutronMl2PortsWebResource.java
+++ b/apps/cordvtn/src/main/java/org/onosproject/cordvtn/rest/NeutronMl2PortsWebResource.java
@@ -108,10 +108,8 @@
 
     @Path("{id}")
     @DELETE
-    @Consumes(MediaType.APPLICATION_JSON)
-    @Produces(MediaType.APPLICATION_JSON)
     public Response deletePorts(@PathParam("id") String id) {
         log.trace(String.format(PORTS_MESSAGE, "delete"));
-        return Response.status(Response.Status.OK).build();
+        return Response.noContent().build();
     }
 }
diff --git a/apps/cordvtn/src/main/java/org/onosproject/cordvtn/rest/NeutronMl2SubnetsWebResource.java b/apps/cordvtn/src/main/java/org/onosproject/cordvtn/rest/NeutronMl2SubnetsWebResource.java
index 75de452..c6b9544 100644
--- a/apps/cordvtn/src/main/java/org/onosproject/cordvtn/rest/NeutronMl2SubnetsWebResource.java
+++ b/apps/cordvtn/src/main/java/org/onosproject/cordvtn/rest/NeutronMl2SubnetsWebResource.java
@@ -60,10 +60,8 @@
 
     @DELETE
     @Path("{id}")
-    @Consumes(MediaType.APPLICATION_JSON)
-    @Produces(MediaType.APPLICATION_JSON)
     public Response deleteSubnet(@PathParam("id") String id) {
         log.trace(String.format(SUBNETS_MESSAGE, "delete"));
-        return Response.status(Response.Status.OK).build();
+        return Response.noContent().build();
     }
 }
diff --git a/apps/cordvtn/src/main/java/org/onosproject/cordvtn/rest/ServiceDependencyWebResource.java b/apps/cordvtn/src/main/java/org/onosproject/cordvtn/rest/ServiceDependencyWebResource.java
index aeebd23..c4b7c52 100644
--- a/apps/cordvtn/src/main/java/org/onosproject/cordvtn/rest/ServiceDependencyWebResource.java
+++ b/apps/cordvtn/src/main/java/org/onosproject/cordvtn/rest/ServiceDependencyWebResource.java
@@ -79,14 +79,13 @@
      *
      * @param tServiceId tenant service id
      * @param pServiceId provider service id
-     * @return 200 OK, or 400 Bad Request
+     * @return 204 NO CONTENT
      */
     @DELETE
     @Path("{tenantServiceId}/{providerServiceId}")
-    @Produces(MediaType.APPLICATION_JSON)
     public Response removeServiceDependency(@PathParam("tenantServiceId") String tServiceId,
                                             @PathParam("providerServiceId") String pServiceId) {
         service.removeServiceDependency(CordServiceId.of(tServiceId), CordServiceId.of(pServiceId));
-        return Response.status(Response.Status.OK).build();
+        return Response.noContent().build();
     }
 }
diff --git a/apps/kafka-integration/src/main/java/org/onosproject/kafkaintegration/rest/EventExporterWebResource.java b/apps/kafka-integration/src/main/java/org/onosproject/kafkaintegration/rest/EventExporterWebResource.java
index e3b7cc6..9677265 100644
--- a/apps/kafka-integration/src/main/java/org/onosproject/kafkaintegration/rest/EventExporterWebResource.java
+++ b/apps/kafka-integration/src/main/java/org/onosproject/kafkaintegration/rest/EventExporterWebResource.java
@@ -14,20 +14,8 @@
  */
 package org.onosproject.kafkaintegration.rest;
 
-import static com.google.common.base.Preconditions.checkNotNull;
-import static javax.ws.rs.core.Response.Status.BAD_REQUEST;
-
-import java.io.IOException;
-import java.io.InputStream;
-
-import javax.ws.rs.Consumes;
-import javax.ws.rs.DELETE;
-import javax.ws.rs.POST;
-import javax.ws.rs.Path;
-import javax.ws.rs.Produces;
-import javax.ws.rs.core.MediaType;
-import javax.ws.rs.core.Response;
-
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.databind.node.ObjectNode;
 import org.onosproject.codec.JsonCodec;
 import org.onosproject.kafkaintegration.api.EventExporterService;
 import org.onosproject.kafkaintegration.api.dto.EventSubscriber;
@@ -36,8 +24,18 @@
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.fasterxml.jackson.databind.node.ObjectNode;
+import javax.ws.rs.Consumes;
+import javax.ws.rs.DELETE;
+import javax.ws.rs.POST;
+import javax.ws.rs.Path;
+import javax.ws.rs.Produces;
+import javax.ws.rs.core.MediaType;
+import javax.ws.rs.core.Response;
+import java.io.IOException;
+import java.io.InputStream;
+
+import static com.google.common.base.Preconditions.checkNotNull;
+import static javax.ws.rs.core.Response.Status.BAD_REQUEST;
 
 /**
  * Rest Interfaces for subscribing/unsubscribing to event notifications.
@@ -85,8 +83,6 @@
      * @onos.rsModel KafkaRegistration
      */
     @DELETE
-    @Produces(MediaType.APPLICATION_JSON)
-    @Consumes(MediaType.APPLICATION_JSON)
     @Path("unregister")
     public Response removeKafkaListener(String appName) {
         EventExporterService service = get(EventExporterService.class);
@@ -148,7 +144,7 @@
      * @onos.rsModel KafkaSubscription
      */
     @DELETE
-    @Produces(MediaType.APPLICATION_JSON)
+    @Consumes(MediaType.APPLICATION_JSON)
     @Path("unsubscribe")
     public Response unsubscribe(InputStream input) {
 
diff --git a/apps/olt/app/src/main/java/org/onosproject/olt/rest/OltWebResource.java b/apps/olt/app/src/main/java/org/onosproject/olt/rest/OltWebResource.java
index 2e6248e4..84536ac 100644
--- a/apps/olt/app/src/main/java/org/onosproject/olt/rest/OltWebResource.java
+++ b/apps/olt/app/src/main/java/org/onosproject/olt/rest/OltWebResource.java
@@ -66,10 +66,9 @@
      *
      * @param device device id
      * @param port port number
-     * @return 200 OK
+     * @return 204 NO CONTENT
      */
     @DELETE
-    @Produces(MediaType.APPLICATION_JSON)
     @Path("{device}/{port}")
     public Response removeSubscriber(
             @PathParam("device")String device,
@@ -79,6 +78,6 @@
         PortNumber portNumber = PortNumber.portNumber(port);
         ConnectPoint connectPoint = new ConnectPoint(deviceId, portNumber);
         service.removeSubscriber(connectPoint);
-        return ok("").build();
+        return Response.noContent().build();
     }
 }
diff --git a/apps/openstacknetworking/web/src/main/java/org/onosproject/openstacknetworking/web/OpensatckRouterWebResource.java b/apps/openstacknetworking/web/src/main/java/org/onosproject/openstacknetworking/web/OpensatckRouterWebResource.java
index 3ad0791..d73ff4f 100644
--- a/apps/openstacknetworking/web/src/main/java/org/onosproject/openstacknetworking/web/OpensatckRouterWebResource.java
+++ b/apps/openstacknetworking/web/src/main/java/org/onosproject/openstacknetworking/web/OpensatckRouterWebResource.java
@@ -143,7 +143,6 @@
 
     @DELETE
     @Path("{id}")
-    @Produces(MediaType.APPLICATION_JSON)
     public Response deleteRouter(@PathParam("id") String id) {
         checkNotNull(id);
         OpenstackRoutingService routingService
@@ -151,7 +150,7 @@
         routingService.deleteRouter(id);
 
         log.debug("REST API DELETE routers is called {}", id);
-        return Response.status(Response.Status.OK).build();
+        return Response.noContent().build();
     }
 
     @PUT
diff --git a/apps/openstacknetworking/web/src/main/java/org/onosproject/openstacknetworking/web/OpenstackFloatingIpWebResource.java b/apps/openstacknetworking/web/src/main/java/org/onosproject/openstacknetworking/web/OpenstackFloatingIpWebResource.java
index 8940463..bd6c2c9 100644
--- a/apps/openstacknetworking/web/src/main/java/org/onosproject/openstacknetworking/web/OpenstackFloatingIpWebResource.java
+++ b/apps/openstacknetworking/web/src/main/java/org/onosproject/openstacknetworking/web/OpenstackFloatingIpWebResource.java
@@ -125,7 +125,7 @@
      * Delete FloatingIP.
      *
      * @param id FloatingIP identifier
-     * @return 200 OK
+     * @return 204 OK
      */
     @DELETE
     @Path("{id}")
@@ -139,7 +139,7 @@
 
         log.debug("REST API DELETE floatingip is called {}", id);
 
-        return Response.status(Response.Status.OK).build();
+        return Response.noContent().build();
     }
 
 }
diff --git a/apps/openstacknetworking/web/src/main/java/org/onosproject/openstacknetworking/web/OpenstackNetworkWebResource.java b/apps/openstacknetworking/web/src/main/java/org/onosproject/openstacknetworking/web/OpenstackNetworkWebResource.java
index d2a0c8b..c547b2e 100644
--- a/apps/openstacknetworking/web/src/main/java/org/onosproject/openstacknetworking/web/OpenstackNetworkWebResource.java
+++ b/apps/openstacknetworking/web/src/main/java/org/onosproject/openstacknetworking/web/OpenstackNetworkWebResource.java
@@ -57,9 +57,8 @@
     @DELETE
     @Path("{id}")
     @Consumes(MediaType.APPLICATION_JSON)
-    @Produces(MediaType.APPLICATION_JSON)
     public Response deleteNetwork(InputStream input) {
         log.debug("REST API networks is called {}", input.toString());
-        return Response.status(Response.Status.OK).build();
+        return Response.noContent().build();
     }
 }
diff --git a/apps/openstacknetworking/web/src/main/java/org/onosproject/openstacknetworking/web/OpenstackPortWebResource.java b/apps/openstacknetworking/web/src/main/java/org/onosproject/openstacknetworking/web/OpenstackPortWebResource.java
index a4f4ccb..af46e7b 100644
--- a/apps/openstacknetworking/web/src/main/java/org/onosproject/openstacknetworking/web/OpenstackPortWebResource.java
+++ b/apps/openstacknetworking/web/src/main/java/org/onosproject/openstacknetworking/web/OpenstackPortWebResource.java
@@ -72,7 +72,6 @@
     }
 
     @Path("{portUUID}")
-    @Produces(MediaType.APPLICATION_JSON)
     @DELETE
     public Response deletePorts(@PathParam("portUUID") String id) {
         OpenstackSwitchingService switchingService =
@@ -85,7 +84,7 @@
 
         switchingService.removePort(id);
 
-        return Response.status(Response.Status.OK).build();
+        return Response.noContent().build();
     }
 
     @PUT
diff --git a/apps/openstacknetworking/web/src/main/java/org/onosproject/openstacknetworking/web/OpenstackSubnetWebResource.java b/apps/openstacknetworking/web/src/main/java/org/onosproject/openstacknetworking/web/OpenstackSubnetWebResource.java
index d2a1f4c..d87021d 100644
--- a/apps/openstacknetworking/web/src/main/java/org/onosproject/openstacknetworking/web/OpenstackSubnetWebResource.java
+++ b/apps/openstacknetworking/web/src/main/java/org/onosproject/openstacknetworking/web/OpenstackSubnetWebResource.java
@@ -57,10 +57,7 @@
 
     @DELETE
     @Path("{subnetId}")
-    @Produces(MediaType.APPLICATION_JSON)
     public Response deleteSubnet(@PathParam("subnetId") String id) {
-        return Response.status(Response.Status.OK).build();
+        return Response.noContent().build();
     }
-
-
 }
diff --git a/apps/segmentrouting/src/main/java/org/onosproject/segmentrouting/web/PolicyWebResource.java b/apps/segmentrouting/src/main/java/org/onosproject/segmentrouting/web/PolicyWebResource.java
index 45af70e..9a19c37 100644
--- a/apps/segmentrouting/src/main/java/org/onosproject/segmentrouting/web/PolicyWebResource.java
+++ b/apps/segmentrouting/src/main/java/org/onosproject/segmentrouting/web/PolicyWebResource.java
@@ -64,7 +64,6 @@
      *
      * @param input JSON stream for policy to create
      * @return status of the request - OK if the policy is created,
-     * INTERNAL_SERVER_ERROR if the JSON is invalid or the policy cannot be created
      * @throws IOException if JSON processing fails
      */
     @POST
@@ -87,8 +86,7 @@
      * Delete a segment routing policy.
      *
      * @param input JSON stream for policy to delete
-     * @return status of the request - OK if the policy is removed,
-     * INTERNAL_SERVER_ERROR otherwise
+     * @return 204 NO CONTENT if the policy is removed
      * @throws IOException if JSON is invalid
      */
     @DELETE
@@ -101,8 +99,7 @@
         // TODO: Check the result
         srService.removePolicy(policyInfo);
 
-        return Response.ok().build();
-
+        return Response.noContent().build();
     }
 
 }
diff --git a/apps/segmentrouting/src/main/java/org/onosproject/segmentrouting/web/TunnelWebResource.java b/apps/segmentrouting/src/main/java/org/onosproject/segmentrouting/web/TunnelWebResource.java
index 217a6b9..94fcd69 100644
--- a/apps/segmentrouting/src/main/java/org/onosproject/segmentrouting/web/TunnelWebResource.java
+++ b/apps/segmentrouting/src/main/java/org/onosproject/segmentrouting/web/TunnelWebResource.java
@@ -64,7 +64,6 @@
      *
      * @param input JSON stream for tunnel to create
      * @return status of the request - OK if the tunnel is created,
-     * INTERNAL_SERVER_ERROR if the JSON is invalid or the tunnel cannot be created
      * @throws IOException if the JSON is invalid
      */
     @POST
@@ -83,8 +82,7 @@
      * Delete a segment routing tunnel.
      *
      * @param input JSON stream for tunnel to delete
-     * @return status of the request - OK if the tunnel is removed,
-     * INTERNAL_SERVER_ERROR otherwise
+     * @return 204 NO CONTENT, if the tunnel is removed
      * @throws IOException if JSON is invalid
      */
     @DELETE
@@ -96,7 +94,7 @@
         Tunnel tunnelInfo = TUNNEL_CODEC.decode(tunnelJson, this);
         srService.removeTunnel(tunnelInfo);
 
-        return Response.ok().build();
+        return Response.noContent().build();
     }
 
 }
diff --git a/apps/virtualbng/src/main/java/org/onosproject/virtualbng/VbngResource.java b/apps/virtualbng/src/main/java/org/onosproject/virtualbng/VbngResource.java
index 9f42191..72f2d3d 100644
--- a/apps/virtualbng/src/main/java/org/onosproject/virtualbng/VbngResource.java
+++ b/apps/virtualbng/src/main/java/org/onosproject/virtualbng/VbngResource.java
@@ -89,15 +89,16 @@
      * Delete a virtual BNG connection.
      *
      * @param privateIp IP Address for the BNG private network
-     * @return public IP address for the new connection
+     * @return 200 OK
      */
     @DELETE
     @Path("{privateip}")
-    public String privateIpDeleteNotification(@PathParam("privateip")
+    public Response privateIpDeleteNotification(@PathParam("privateip")
             String privateIp) {
+        String result;
         if (privateIp == null) {
             log.info("Private IP address to delete is null");
-            return "0";
+            result = "0";
         }
         log.info("Received a private IP address : {} to delete", privateIp);
         IpAddress privateIpAddress = IpAddress.valueOf(privateIp);
@@ -109,10 +110,11 @@
         assignedPublicIpAddress = vbngService.deleteVbng(privateIpAddress);
 
         if (assignedPublicIpAddress != null) {
-            return assignedPublicIpAddress.toString();
+            result = assignedPublicIpAddress.toString();
         } else {
-            return "0";
+            result = "0";
         }
+        return Response.ok().entity(result).build();
     }
 
     /**
diff --git a/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/resources/FloatingIpWebResource.java b/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/resources/FloatingIpWebResource.java
index d4b269c..c5ddb07 100644
--- a/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/resources/FloatingIpWebResource.java
+++ b/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/resources/FloatingIpWebResource.java
@@ -15,21 +15,25 @@
  */
 package org.onosproject.vtnweb.resources;
 
-import static com.google.common.base.Preconditions.checkNotNull;
-import static javax.ws.rs.core.Response.Status.BAD_REQUEST;
-import static javax.ws.rs.core.Response.Status.NOT_FOUND;
-import static javax.ws.rs.core.Response.Status.CREATED;
-import static javax.ws.rs.core.Response.Status.CONFLICT;
-import static javax.ws.rs.core.Response.Status.NO_CONTENT;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
+import com.fasterxml.jackson.databind.JsonNode;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.databind.node.ObjectNode;
+import com.google.common.collect.Sets;
+import org.onlab.packet.IpAddress;
+import org.onlab.util.ItemNotFoundException;
+import org.onosproject.rest.AbstractWebResource;
+import org.onosproject.vtnrsc.DefaultFloatingIp;
+import org.onosproject.vtnrsc.FloatingIp;
+import org.onosproject.vtnrsc.FloatingIp.Status;
+import org.onosproject.vtnrsc.FloatingIpId;
+import org.onosproject.vtnrsc.RouterId;
+import org.onosproject.vtnrsc.TenantId;
+import org.onosproject.vtnrsc.TenantNetworkId;
+import org.onosproject.vtnrsc.VirtualPortId;
+import org.onosproject.vtnrsc.floatingip.FloatingIpService;
+import org.onosproject.vtnweb.web.FloatingIpCodec;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 import javax.ws.rs.Consumes;
 import javax.ws.rs.DELETE;
@@ -42,27 +46,20 @@
 import javax.ws.rs.QueryParam;
 import javax.ws.rs.core.MediaType;
 import javax.ws.rs.core.Response;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
 
-import org.onlab.packet.IpAddress;
-import org.onlab.util.ItemNotFoundException;
-import org.onosproject.rest.AbstractWebResource;
-import org.onosproject.vtnrsc.DefaultFloatingIp;
-import org.onosproject.vtnrsc.FloatingIp;
-import org.onosproject.vtnrsc.FloatingIpId;
-import org.onosproject.vtnrsc.TenantId;
-import org.onosproject.vtnrsc.TenantNetworkId;
-import org.onosproject.vtnrsc.VirtualPortId;
-import org.onosproject.vtnrsc.RouterId;
-import org.onosproject.vtnrsc.FloatingIp.Status;
-import org.onosproject.vtnrsc.floatingip.FloatingIpService;
-import org.onosproject.vtnweb.web.FloatingIpCodec;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import com.fasterxml.jackson.databind.JsonNode;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.fasterxml.jackson.databind.node.ObjectNode;
-import com.google.common.collect.Sets;
+import static com.google.common.base.Preconditions.checkNotNull;
+import static javax.ws.rs.core.Response.Status.BAD_REQUEST;
+import static javax.ws.rs.core.Response.Status.CONFLICT;
+import static javax.ws.rs.core.Response.Status.CREATED;
+import static javax.ws.rs.core.Response.Status.NOT_FOUND;
 
 @Path("floatingips")
 public class FloatingIpWebResource extends AbstractWebResource {
@@ -165,7 +162,7 @@
             if (!result) {
                 return Response.status(CONFLICT).entity(DELETE_FAIL).build();
             }
-            return Response.status(NO_CONTENT).entity(DELETE_SUCCESS).build();
+            return Response.noContent().entity(DELETE_SUCCESS).build();
         } catch (Exception e) {
             return Response.status(NOT_FOUND).entity(e.getMessage()).build();
         }
diff --git a/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/resources/FlowClassifierWebResource.java b/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/resources/FlowClassifierWebResource.java
index 6099769..10cb399 100644
--- a/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/resources/FlowClassifierWebResource.java
+++ b/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/resources/FlowClassifierWebResource.java
@@ -149,16 +149,16 @@
     /**
      * Delete details of a flow classifier.
      *
-     * @param id
-     *            flow classifier id
+     * @param id flow classifier id
+     * @return 204 NO CONTENT
      */
     @Path("{flow_id}")
     @DELETE
-    public void deleteFlowClassifier(@PathParam("flow_id") String id) {
+    public Response deleteFlowClassifier(@PathParam("flow_id") String id) {
         log.debug("Deletes flow classifier by identifier {}.", id);
         FlowClassifierId flowClassifierId = FlowClassifierId.of(id);
         Boolean issuccess = nullIsNotFound(get(FlowClassifierService.class).removeFlowClassifier(flowClassifierId),
                                            FLOW_CLASSIFIER_NOT_FOUND);
-
+        return Response.noContent().build();
     }
 }
diff --git a/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/resources/PortChainWebResource.java b/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/resources/PortChainWebResource.java
index 81e2940..d5948cc 100644
--- a/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/resources/PortChainWebResource.java
+++ b/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/resources/PortChainWebResource.java
@@ -146,10 +146,11 @@
      * Delete details of a specified port chain id.
      *
      * @param id port chain id
+     * @return 204 NO CONTENT
      */
     @Path("{chain_id}")
     @DELETE
-    public void deletePortPain(@PathParam("chain_id") String id) {
+    public Response deletePortPain(@PathParam("chain_id") String id) {
         log.debug("Deletes port chain by identifier {}.", id);
         PortChainId portChainId = PortChainId.of(id);
 
@@ -158,5 +159,6 @@
         if (!issuccess) {
             log.debug("Port Chain identifier {} does not exist", id);
         }
+        return Response.noContent().build();
     }
 }
diff --git a/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/resources/PortPairGroupWebResource.java b/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/resources/PortPairGroupWebResource.java
index 34fe255..68fc6bd 100644
--- a/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/resources/PortPairGroupWebResource.java
+++ b/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/resources/PortPairGroupWebResource.java
@@ -153,10 +153,11 @@
      * Delete details of a specified port pair group id.
      *
      * @param id port pair group id
+     * @return 204 NO CONTENT
      */
     @Path("{group_id}")
     @DELETE
-    public void deletePortPairGroup(@PathParam("group_id") String id) {
+    public Response deletePortPairGroup(@PathParam("group_id") String id) {
         log.debug("Deletes port pair group by identifier {}.", id);
         PortPairGroupId portPairGroupId = PortPairGroupId.of(id);
         Boolean issuccess = nullIsNotFound(get(PortPairGroupService.class).removePortPairGroup(portPairGroupId),
@@ -164,5 +165,7 @@
         if (!issuccess) {
             log.debug("Port pair group identifier {} does not exist", id);
         }
+
+        return Response.noContent().build();
     }
 }
diff --git a/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/resources/PortPairWebResource.java b/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/resources/PortPairWebResource.java
index 5b4945c..34bea37 100644
--- a/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/resources/PortPairWebResource.java
+++ b/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/resources/PortPairWebResource.java
@@ -145,15 +145,17 @@
      * Delete details of a specified port pair id.
      *
      * @param id port pair id
+     * @return 204 NO CONTENT
      */
     @Path("{pair_id}")
     @DELETE
-    public void deletePortPair(@PathParam("pair_id") String id) {
+    public Response deletePortPair(@PathParam("pair_id") String id) {
 
         PortPairId portPairId = PortPairId.of(id);
         Boolean isSuccess = nullIsNotFound(get(PortPairService.class).removePortPair(portPairId), PORT_PAIR_NOT_FOUND);
         if (!isSuccess) {
             log.debug("Port pair identifier {} does not exist", id);
         }
+        return Response.noContent().build();
     }
 }
diff --git a/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/resources/RouterWebResource.java b/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/resources/RouterWebResource.java
index d7389b7..f8b87cc 100644
--- a/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/resources/RouterWebResource.java
+++ b/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/resources/RouterWebResource.java
@@ -15,37 +15,11 @@
  */
 package org.onosproject.vtnweb.resources;
 
-import static com.google.common.base.Preconditions.checkArgument;
-import static com.google.common.base.Preconditions.checkNotNull;
-import static javax.ws.rs.core.Response.Status.BAD_REQUEST;
-import static javax.ws.rs.core.Response.Status.CONFLICT;
-import static javax.ws.rs.core.Response.Status.CREATED;
-import static javax.ws.rs.core.Response.Status.NOT_FOUND;
-import static javax.ws.rs.core.Response.Status.NO_CONTENT;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-import java.util.concurrent.ConcurrentMap;
-
-import javax.ws.rs.Consumes;
-import javax.ws.rs.DELETE;
-import javax.ws.rs.GET;
-import javax.ws.rs.POST;
-import javax.ws.rs.PUT;
-import javax.ws.rs.Path;
-import javax.ws.rs.PathParam;
-import javax.ws.rs.Produces;
-import javax.ws.rs.QueryParam;
-import javax.ws.rs.core.MediaType;
-import javax.ws.rs.core.Response;
-
+import com.fasterxml.jackson.databind.JsonNode;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.databind.node.ObjectNode;
+import com.google.common.collect.Maps;
+import com.google.common.collect.Sets;
 import org.onlab.packet.IpAddress;
 import org.onlab.util.ItemNotFoundException;
 import org.onosproject.rest.AbstractWebResource;
@@ -66,11 +40,34 @@
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import com.fasterxml.jackson.databind.JsonNode;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.fasterxml.jackson.databind.node.ObjectNode;
-import com.google.common.collect.Maps;
-import com.google.common.collect.Sets;
+import javax.ws.rs.Consumes;
+import javax.ws.rs.DELETE;
+import javax.ws.rs.GET;
+import javax.ws.rs.POST;
+import javax.ws.rs.PUT;
+import javax.ws.rs.Path;
+import javax.ws.rs.PathParam;
+import javax.ws.rs.Produces;
+import javax.ws.rs.QueryParam;
+import javax.ws.rs.core.MediaType;
+import javax.ws.rs.core.Response;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.concurrent.ConcurrentMap;
+
+import static com.google.common.base.Preconditions.checkArgument;
+import static com.google.common.base.Preconditions.checkNotNull;
+import static javax.ws.rs.core.Response.Status.BAD_REQUEST;
+import static javax.ws.rs.core.Response.Status.CONFLICT;
+import static javax.ws.rs.core.Response.Status.CREATED;
+import static javax.ws.rs.core.Response.Status.NOT_FOUND;
 
 @Path("routers")
 public class RouterWebResource extends AbstractWebResource {
@@ -168,7 +165,7 @@
             RouterId routerId = RouterId.valueOf(id);
             Set<RouterId> routerIds = Sets.newHashSet(routerId);
             get(RouterService.class).removeRouters(routerIds);
-            return Response.status(NO_CONTENT).entity(DELETE_SUCCESS).build();
+            return Response.noContent().entity(DELETE_SUCCESS).build();
         } catch (Exception e) {
             return Response.status(BAD_REQUEST).entity(e.getMessage()).build();
         }
diff --git a/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/resources/SubnetWebResource.java b/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/resources/SubnetWebResource.java
index 5d1ccad..e77358d 100644
--- a/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/resources/SubnetWebResource.java
+++ b/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/resources/SubnetWebResource.java
@@ -158,7 +158,7 @@
             Set<SubnetId> subIds = new HashSet<>();
             subIds.add(subId);
             get(SubnetService.class).removeSubnets(subIds);
-            return Response.status(201).entity("SUCCESS").build();
+            return Response.noContent().entity("SUCCESS").build();
         } catch (Exception e) {
             return Response.status(INTERNAL_SERVER_ERROR).entity(e.toString())
                     .build();
diff --git a/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/resources/TenantNetworkWebResource.java b/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/resources/TenantNetworkWebResource.java
index f32b131..cf17985 100644
--- a/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/resources/TenantNetworkWebResource.java
+++ b/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/resources/TenantNetworkWebResource.java
@@ -15,18 +15,24 @@
  */
 package org.onosproject.vtnweb.resources;
 
-import static com.google.common.base.Preconditions.checkNotNull;
-import static com.google.common.base.Preconditions.checkArgument;
-import static javax.ws.rs.core.Response.Status.INTERNAL_SERVER_ERROR;
-import static javax.ws.rs.core.Response.Status.OK;
-import static javax.ws.rs.core.Response.Status.NOT_FOUND;
-
-import java.io.InputStream;
-import java.util.Collections;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.Set;
-import java.util.concurrent.ConcurrentMap;
+import com.fasterxml.jackson.databind.JsonNode;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.databind.node.ObjectNode;
+import com.google.common.collect.Maps;
+import org.onlab.util.ItemNotFoundException;
+import org.onosproject.rest.AbstractWebResource;
+import org.onosproject.vtnrsc.DefaultTenantNetwork;
+import org.onosproject.vtnrsc.PhysicalNetwork;
+import org.onosproject.vtnrsc.SegmentationId;
+import org.onosproject.vtnrsc.TenantId;
+import org.onosproject.vtnrsc.TenantNetwork;
+import org.onosproject.vtnrsc.TenantNetwork.State;
+import org.onosproject.vtnrsc.TenantNetwork.Type;
+import org.onosproject.vtnrsc.TenantNetworkId;
+import org.onosproject.vtnrsc.tenantnetwork.TenantNetworkService;
+import org.onosproject.vtnweb.web.TenantNetworkCodec;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 import javax.ws.rs.Consumes;
 import javax.ws.rs.DELETE;
@@ -39,26 +45,18 @@
 import javax.ws.rs.QueryParam;
 import javax.ws.rs.core.MediaType;
 import javax.ws.rs.core.Response;
+import java.io.InputStream;
+import java.util.Collections;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.Set;
+import java.util.concurrent.ConcurrentMap;
 
-import org.onlab.util.ItemNotFoundException;
-import org.onosproject.rest.AbstractWebResource;
-import org.onosproject.vtnrsc.DefaultTenantNetwork;
-import org.onosproject.vtnrsc.PhysicalNetwork;
-import org.onosproject.vtnrsc.SegmentationId;
-import org.onosproject.vtnrsc.TenantId;
-import org.onosproject.vtnrsc.TenantNetwork;
-import org.onosproject.vtnrsc.TenantNetworkId;
-import org.onosproject.vtnrsc.TenantNetwork.State;
-import org.onosproject.vtnrsc.TenantNetwork.Type;
-import org.onosproject.vtnrsc.tenantnetwork.TenantNetworkService;
-import org.onosproject.vtnweb.web.TenantNetworkCodec;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import com.fasterxml.jackson.databind.JsonNode;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.fasterxml.jackson.databind.node.ObjectNode;
-import com.google.common.collect.Maps;
+import static com.google.common.base.Preconditions.checkArgument;
+import static com.google.common.base.Preconditions.checkNotNull;
+import static javax.ws.rs.core.Response.Status.INTERNAL_SERVER_ERROR;
+import static javax.ws.rs.core.Response.Status.NOT_FOUND;
+import static javax.ws.rs.core.Response.Status.OK;
 
 /**
  * REST resource for interacting with the inventory of networks.
@@ -253,7 +251,7 @@
             return Response.status(INTERNAL_SERVER_ERROR)
                     .entity(NETWORK_ID_NOT_EXIST).build();
         }
-        return Response.status(OK).entity(issuccess.toString()).build();
+        return ok(issuccess.toString()).build();
     }
 
     /**
diff --git a/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/resources/VirtualPortWebResource.java b/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/resources/VirtualPortWebResource.java
index f99192c..a635c11 100644
--- a/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/resources/VirtualPortWebResource.java
+++ b/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/resources/VirtualPortWebResource.java
@@ -15,32 +15,11 @@
  */
 package org.onosproject.vtnweb.resources;
 
-import static com.google.common.base.Preconditions.checkArgument;
-import static com.google.common.base.Preconditions.checkNotNull;
-import static javax.ws.rs.core.Response.Status.INTERNAL_SERVER_ERROR;
-import static javax.ws.rs.core.Response.Status.OK;
-import static javax.ws.rs.core.Response.Status.NOT_FOUND;
-
-import java.io.InputStream;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Map;
-import java.util.Set;
-import java.util.concurrent.ConcurrentMap;
-
-import javax.ws.rs.Consumes;
-import javax.ws.rs.DELETE;
-import javax.ws.rs.GET;
-import javax.ws.rs.POST;
-import javax.ws.rs.PUT;
-import javax.ws.rs.Path;
-import javax.ws.rs.PathParam;
-import javax.ws.rs.Produces;
-import javax.ws.rs.core.MediaType;
-import javax.ws.rs.core.Response;
-
+import com.fasterxml.jackson.databind.JsonNode;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.databind.node.ObjectNode;
+import com.google.common.collect.Maps;
+import com.google.common.collect.Sets;
 import org.onlab.packet.IpAddress;
 import org.onlab.packet.MacAddress;
 import org.onlab.util.ItemNotFoundException;
@@ -62,11 +41,30 @@
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import com.fasterxml.jackson.databind.JsonNode;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.fasterxml.jackson.databind.node.ObjectNode;
-import com.google.common.collect.Maps;
-import com.google.common.collect.Sets;
+import javax.ws.rs.Consumes;
+import javax.ws.rs.DELETE;
+import javax.ws.rs.GET;
+import javax.ws.rs.POST;
+import javax.ws.rs.PUT;
+import javax.ws.rs.Path;
+import javax.ws.rs.PathParam;
+import javax.ws.rs.Produces;
+import javax.ws.rs.core.MediaType;
+import javax.ws.rs.core.Response;
+import java.io.InputStream;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Map;
+import java.util.Set;
+import java.util.concurrent.ConcurrentMap;
+
+import static com.google.common.base.Preconditions.checkArgument;
+import static com.google.common.base.Preconditions.checkNotNull;
+import static javax.ws.rs.core.Response.Status.INTERNAL_SERVER_ERROR;
+import static javax.ws.rs.core.Response.Status.NOT_FOUND;
+import static javax.ws.rs.core.Response.Status.OK;
 
 /**
  * REST resource for interacting with the inventory of infrastructure
@@ -146,7 +144,7 @@
                 return Response.status(INTERNAL_SERVER_ERROR)
                         .entity(VPORT_ID_NOT_EXIST).build();
             }
-            return Response.status(OK).entity(issuccess.toString()).build();
+            return ok(issuccess.toString()).build();
         } catch (Exception e) {
             log.error("Deletes VirtualPort failed because of exception {}",
                       e.toString());
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 8d0bc3e..5c63035 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
@@ -104,16 +104,15 @@
      * Uninstalls the specified application deactivating it first if necessary.
      *
      * @param name application name
-     * @return 200 OK; 404; 401
+     * @return 204 NO CONTENT
      */
     @DELETE
-    @Produces(MediaType.APPLICATION_JSON)
     @Path("{name}")
     public Response uninstallApp(@PathParam("name") String name) {
         ApplicationAdminService service = get(ApplicationAdminService.class);
         ApplicationId appId = service.getId(name);
         service.uninstall(appId);
-        return Response.ok().build();
+        return Response.noContent().build();
     }
 
     /**
diff --git a/web/api/src/main/java/org/onosproject/rest/resources/ComponentConfigWebResource.java b/web/api/src/main/java/org/onosproject/rest/resources/ComponentConfigWebResource.java
index 0002c3a..cc57581 100644
--- a/web/api/src/main/java/org/onosproject/rest/resources/ComponentConfigWebResource.java
+++ b/web/api/src/main/java/org/onosproject/rest/resources/ComponentConfigWebResource.java
@@ -20,11 +20,13 @@
 import org.onosproject.cfg.ConfigProperty;
 import org.onosproject.rest.AbstractWebResource;
 
+import javax.ws.rs.Consumes;
 import javax.ws.rs.DELETE;
 import javax.ws.rs.GET;
 import javax.ws.rs.POST;
 import javax.ws.rs.Path;
 import javax.ws.rs.PathParam;
+import javax.ws.rs.core.MediaType;
 import javax.ws.rs.core.Response;
 import java.io.IOException;
 import java.io.InputStream;
@@ -87,6 +89,7 @@
      * @throws IOException to signify bad request
      */
     @POST
+    @Consumes(MediaType.APPLICATION_JSON)
     @Path("{component}")
     public Response setConfigs(@PathParam("component") String component,
                                InputStream request) throws IOException {
@@ -103,10 +106,11 @@
      *
      * @param component component name
      * @param request   JSON configuration
-     * @return 200 OK
+     * @return 204 NO CONTENT
      * @throws IOException to signify bad request
      */
     @DELETE
+    @Consumes(MediaType.APPLICATION_JSON)
     @Path("{component}")
     public Response unsetConfigs(@PathParam("component") String component,
                                  InputStream request) throws IOException {
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 1fdb060..ec32b20 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
@@ -224,11 +224,12 @@
      *
      * @param deviceId device identifier
      * @param flowId   flow rule identifier
+     * @return 204 NO CONTENT
      */
     @DELETE
     @Produces(MediaType.APPLICATION_JSON)
     @Path("{deviceId}/{flowId}")
-    public void deleteFlowByDeviceIdAndFlowId(@PathParam("deviceId") String deviceId,
+    public Response deleteFlowByDeviceIdAndFlowId(@PathParam("deviceId") String deviceId,
                                               @PathParam("flowId") long flowId) {
         final Iterable<FlowEntry> flowEntries =
                 service.getFlowEntries(DeviceId.deviceId(deviceId));
@@ -240,16 +241,18 @@
         StreamSupport.stream(flowEntries.spliterator(), false)
                 .filter(entry -> entry.id().value() == flowId)
                 .forEach(service::removeFlowRules);
+        return Response.noContent().build();
     }
 
     /**
      * Removes a batch of flow rules.
      *
      * @param stream stream for posted JSON
+     * @return NO CONTENT
      */
     @DELETE
     @Produces(MediaType.APPLICATION_JSON)
-    public void deleteFlows(InputStream stream) {
+    public Response deleteFlows(InputStream stream) {
         ListMultimap<DeviceId, Long> deviceMap = ArrayListMultimap.create();
         List<FlowEntry> rulesToRemove = new ArrayList<>();
 
@@ -283,6 +286,7 @@
         });
 
         service.removeFlowRules(rulesToRemove.toArray(new FlowEntry[0]));
+        return Response.noContent().build();
     }
 
 }
diff --git a/web/api/src/main/java/org/onosproject/rest/resources/GroupsWebResource.java b/web/api/src/main/java/org/onosproject/rest/resources/GroupsWebResource.java
index ad9c64e..65a1a2f 100644
--- a/web/api/src/main/java/org/onosproject/rest/resources/GroupsWebResource.java
+++ b/web/api/src/main/java/org/onosproject/rest/resources/GroupsWebResource.java
@@ -172,15 +172,17 @@
      *
      * @param deviceId  device identifier
      * @param appCookie application cookie to be used for lookup
+     * @return 204 NO CONTENT
      */
     @DELETE
     @Produces(MediaType.APPLICATION_JSON)
     @Path("{deviceId}/{appCookie}")
-    public void deleteGroupByDeviceIdAndAppCookie(@PathParam("deviceId") String deviceId,
-                                                  @PathParam("appCookie") String appCookie) {
+    public Response deleteGroupByDeviceIdAndAppCookie(@PathParam("deviceId") String deviceId,
+                                                      @PathParam("appCookie") String appCookie) {
         DeviceId deviceIdInstance = DeviceId.deviceId(deviceId);
         GroupKey appCookieInstance = new DefaultGroupKey(appCookie.getBytes());
 
         groupService.removeGroup(deviceIdInstance, appCookieInstance, null);
+        return Response.noContent().build();
     }
 }
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 d275599..3199bcc 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
@@ -15,25 +15,7 @@
  */
 package org.onosproject.rest.resources;
 
-import java.io.IOException;
-import java.io.InputStream;
-import java.util.Objects;
-import java.util.concurrent.CountDownLatch;
-import java.util.concurrent.TimeUnit;
-
-import javax.ws.rs.Consumes;
-import javax.ws.rs.DELETE;
-import javax.ws.rs.GET;
-import javax.ws.rs.POST;
-import javax.ws.rs.Path;
-import javax.ws.rs.PathParam;
-import javax.ws.rs.Produces;
-import javax.ws.rs.core.Context;
-import javax.ws.rs.core.MediaType;
-import javax.ws.rs.core.Response;
-import javax.ws.rs.core.UriBuilder;
-import javax.ws.rs.core.UriInfo;
-
+import com.fasterxml.jackson.databind.node.ObjectNode;
 import org.onosproject.core.ApplicationId;
 import org.onosproject.core.CoreService;
 import org.onosproject.net.intent.HostToHostIntent;
@@ -47,7 +29,23 @@
 import org.onosproject.rest.AbstractWebResource;
 import org.slf4j.Logger;
 
-import com.fasterxml.jackson.databind.node.ObjectNode;
+import javax.ws.rs.Consumes;
+import javax.ws.rs.DELETE;
+import javax.ws.rs.GET;
+import javax.ws.rs.POST;
+import javax.ws.rs.Path;
+import javax.ws.rs.PathParam;
+import javax.ws.rs.Produces;
+import javax.ws.rs.core.Context;
+import javax.ws.rs.core.MediaType;
+import javax.ws.rs.core.Response;
+import javax.ws.rs.core.UriBuilder;
+import javax.ws.rs.core.UriInfo;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.Objects;
+import java.util.concurrent.CountDownLatch;
+import java.util.concurrent.TimeUnit;
 
 import static org.onlab.util.Tools.nullIsNotFound;
 import static org.onosproject.net.intent.IntentState.FAILED;
@@ -168,10 +166,11 @@
      *
      * @param appId application identifier
      * @param key   intent key
+     * @return 204 NO CONTENT
      */
     @DELETE
     @Path("{appId}/{key}")
-    public void deleteIntentById(@PathParam("appId") String appId,
+    public Response deleteIntentById(@PathParam("appId") String appId,
                                  @PathParam("key") String key) {
         final ApplicationId app = get(CoreService.class).getAppId(appId);
 
@@ -185,10 +184,9 @@
         if (intent == null) {
             // No such intent.  REST standards recommend a positive status code
             // in this case.
-            return;
+            return Response.noContent().build();
         }
 
-
         Key k = intent.key();
 
         // set up latch and listener to track uninstall progress
@@ -216,6 +214,7 @@
             // clean up the listener
             service.removeListener(listener);
         }
+        return Response.noContent().build();
     }
 
 }
diff --git a/web/api/src/main/java/org/onosproject/rest/resources/MetersWebResource.java b/web/api/src/main/java/org/onosproject/rest/resources/MetersWebResource.java
index 4e675f6..34a014f 100644
--- a/web/api/src/main/java/org/onosproject/rest/resources/MetersWebResource.java
+++ b/web/api/src/main/java/org/onosproject/rest/resources/MetersWebResource.java
@@ -165,11 +165,11 @@
      *
      * @param deviceId device identifier
      * @param meterId  meter identifier
+     * @return 204 NO CONTENT
      */
     @DELETE
-    @Produces(MediaType.APPLICATION_JSON)
     @Path("{deviceId}/{meterId}")
-    public void deleteMeterByDeviceIdAndMeterId(@PathParam("deviceId") String deviceId,
+    public Response deleteMeterByDeviceIdAndMeterId(@PathParam("deviceId") String deviceId,
                                                 @PathParam("meterId") String meterId) {
         DeviceId did = DeviceId.deviceId(deviceId);
         MeterId mid = MeterId.meterId(Long.valueOf(meterId));
@@ -178,6 +178,7 @@
             final MeterRequest meterRequest = meterToMeterRequest(tmpMeter, "REMOVE");
             meterService.withdraw(meterRequest, tmpMeter.id());
         }
+        return Response.noContent().build();
     }
 
     /**
diff --git a/web/api/src/main/java/org/onosproject/rest/resources/MulticastRouteWebResource.java b/web/api/src/main/java/org/onosproject/rest/resources/MulticastRouteWebResource.java
index f87351e..2a3cd8d 100644
--- a/web/api/src/main/java/org/onosproject/rest/resources/MulticastRouteWebResource.java
+++ b/web/api/src/main/java/org/onosproject/rest/resources/MulticastRouteWebResource.java
@@ -87,12 +87,12 @@
      * Removes a route from the multicast RIB.
      *
      * @param stream multicast route JSON
+     * @return 204 NO CONTENT
      * @onos.rsModel McastRoutePost
      */
     @DELETE
     @Consumes(MediaType.APPLICATION_JSON)
-    @Produces(MediaType.APPLICATION_JSON)
-    public void deleteRoute(InputStream stream) {
+    public Response deleteRoute(InputStream stream) {
         MulticastRouteService service = get(MulticastRouteService.class);
         try {
             ObjectNode jsonTree = (ObjectNode) mapper().readTree(stream);
@@ -101,5 +101,6 @@
         } catch (IOException ex) {
             throw new IllegalArgumentException(ex);
         }
+        return Response.noContent().build();
     }
 }
diff --git a/web/api/src/main/java/org/onosproject/rest/resources/NetworkConfigWebResource.java b/web/api/src/main/java/org/onosproject/rest/resources/NetworkConfigWebResource.java
index 81e77a9..a39d81c 100644
--- a/web/api/src/main/java/org/onosproject/rest/resources/NetworkConfigWebResource.java
+++ b/web/api/src/main/java/org/onosproject/rest/resources/NetworkConfigWebResource.java
@@ -289,7 +289,7 @@
     /**
      * Clear entire network configuration base.
      *
-     * @return empty response
+     * @return 204 NO CONTENT
      */
     @DELETE
     @SuppressWarnings("unchecked")
@@ -299,22 +299,24 @@
                 .forEach(subjectClass -> service.getSubjects(subjectClass)
                         .forEach(subject -> service.getConfigs(subject)
                                 .forEach(config -> service.removeConfig(subject, config.getClass()))));
-        return Response.ok().build();
+        return Response.noContent().build();
     }
 
     /**
      * Clear all network configurations for a subject class.
      *
      * @param subjectClassKey subject class key
+     * @return 204 NO CONTENT
      */
     @DELETE
     @Path("{subjectClassKey}")
     @SuppressWarnings("unchecked")
-    public void delete(@PathParam("subjectClassKey") String subjectClassKey) {
+    public Response delete(@PathParam("subjectClassKey") String subjectClassKey) {
         NetworkConfigService service = get(NetworkConfigService.class);
         service.getSubjects(service.getSubjectFactory(subjectClassKey).subjectClass())
                 .forEach(subject -> service.getConfigs(subject)
                         .forEach(config -> service.removeConfig(subject, config.getClass())));
+        return Response.noContent().build();
     }
 
     /**
@@ -322,15 +324,17 @@
      *
      * @param subjectClassKey subjectKey class key
      * @param subjectKey      subjectKey key
+     * @return 204 NO CONTENT
      */
     @DELETE
     @Path("{subjectClassKey}/{subjectKey}")
     @SuppressWarnings("unchecked")
-    public void delete(@PathParam("subjectClassKey") String subjectClassKey,
+    public Response delete(@PathParam("subjectClassKey") String subjectClassKey,
                            @PathParam("subjectKey") String subjectKey) {
         NetworkConfigService service = get(NetworkConfigService.class);
         Object s = service.getSubjectFactory(subjectClassKey).createSubject(subjectKey);
         service.getConfigs(s).forEach(c -> service.removeConfig(s, c.getClass()));
+        return Response.noContent().build();
     }
 
     /**
@@ -339,16 +343,18 @@
      * @param subjectClassKey subjectKey class key
      * @param subjectKey      subjectKey key
      * @param configKey       configuration class key
+     * @return 204 NO CONTENT
      */
     @DELETE
     @Path("{subjectClassKey}/{subjectKey}/{configKey}")
     @SuppressWarnings("unchecked")
-    public void delete(@PathParam("subjectClassKey") String subjectClassKey,
+    public Response delete(@PathParam("subjectClassKey") String subjectClassKey,
                            @PathParam("subjectKey") String subjectKey,
                            @PathParam("configKey") String configKey) {
         NetworkConfigService service = get(NetworkConfigService.class);
         service.removeConfig(service.getSubjectFactory(subjectClassKey).createSubject(subjectKey),
                              service.getConfigClass(subjectClassKey, configKey));
+        return Response.noContent().build();
     }
 
 }
diff --git a/web/api/src/main/java/org/onosproject/rest/resources/RegionsWebResource.java b/web/api/src/main/java/org/onosproject/rest/resources/RegionsWebResource.java
index 3a54eb4..20c080a 100644
--- a/web/api/src/main/java/org/onosproject/rest/resources/RegionsWebResource.java
+++ b/web/api/src/main/java/org/onosproject/rest/resources/RegionsWebResource.java
@@ -173,11 +173,10 @@
      */
     @DELETE
     @Path("{regionId}")
-    @Produces(MediaType.APPLICATION_JSON)
     public Response removeRegion(@PathParam("regionId") String regionId) {
         final RegionId rid = RegionId.regionId(regionId);
         regionAdminService.removeRegion(rid);
-        return Response.ok().build();
+        return Response.noContent().build();
     }
 
     /**
@@ -213,13 +212,12 @@
      *
      * @param regionId region identifier
      * @param stream deviceIds JSON stream
-     * @return 200 OK, 404 not found
+     * @return 204 NO CONTENT
      * @onos.rsModel RegionDeviceIds
      */
     @DELETE
     @Path("{regionId}/devices")
     @Consumes(MediaType.APPLICATION_JSON)
-    @Produces(MediaType.APPLICATION_JSON)
     public Response removeDevices(@PathParam("regionId") String regionId,
                                   InputStream stream) {
         final RegionId rid = RegionId.regionId(regionId);
@@ -230,7 +228,7 @@
             throw new IllegalArgumentException(e);
         }
 
-        return Response.ok().build();
+        return Response.noContent().build();
     }
 
     /**
diff --git a/web/api/src/main/java/org/onosproject/rest/resources/TenantWebResource.java b/web/api/src/main/java/org/onosproject/rest/resources/TenantWebResource.java
index afef7a7..83c6c4d 100755
--- a/web/api/src/main/java/org/onosproject/rest/resources/TenantWebResource.java
+++ b/web/api/src/main/java/org/onosproject/rest/resources/TenantWebResource.java
@@ -97,7 +97,7 @@
      * Removes the specified tenant with the specified tenant identifier.
      *
      * @param tenantId tenant identifier
-     * @return 200 OK, 404 not found
+     * @return 204 NO CONTENT
      */
     @DELETE
     @Path("{tenantId}")
@@ -105,7 +105,7 @@
         final TenantId tid = TenantId.tenantId(tenantId);
         final TenantId existingTid = getExistingTenantId(vnetAdminService, tid);
         vnetAdminService.unregisterTenantId(existingTid);
-        return Response.ok().build();
+        return Response.noContent().build();
     }
 
     /**
diff --git a/web/api/src/main/java/org/onosproject/rest/resources/VirtualNetworkWebResource.java b/web/api/src/main/java/org/onosproject/rest/resources/VirtualNetworkWebResource.java
index 22078c2..252ca53 100755
--- a/web/api/src/main/java/org/onosproject/rest/resources/VirtualNetworkWebResource.java
+++ b/web/api/src/main/java/org/onosproject/rest/resources/VirtualNetworkWebResource.java
@@ -135,14 +135,14 @@
      * Removes the virtual network with the specified network identifier.
      *
      * @param networkId network identifier
-     * @return 200 OK, 404 not found
+     * @return 204 NO CONTENT
      */
     @DELETE
     @Path("{networkId}")
     public Response removeVirtualNetwork(@PathParam("networkId") long networkId) {
         NetworkId nid = NetworkId.networkId(networkId);
         vnetAdminService.removeVirtualNetwork(nid);
-        return Response.ok().build();
+        return Response.noContent().build();
     }
 
     // VirtualDevice
@@ -203,7 +203,7 @@
      *
      * @param networkId network identifier
      * @param deviceId  device identifier
-     * @return 200 OK, 404 not found
+     * @return 204 NO CONTENT
      */
     @DELETE
     @Path("{networkId}/devices/{deviceId}")
@@ -212,7 +212,7 @@
         NetworkId nid = NetworkId.networkId(networkId);
         DeviceId did = DeviceId.deviceId(deviceId);
         vnetAdminService.removeVirtualDevice(nid, did);
-        return Response.ok().build();
+        return Response.noContent().build();
     }
 
     // VirtualPort
@@ -293,7 +293,7 @@
      * @param networkId network identifier
      * @param deviceId  virtual device identifier
      * @param portNum   virtual port number
-     * @return 200 OK, 404 not found
+     * @return 204 NO CONTENT
      */
     @DELETE
     @Path("{networkId}/devices/{deviceId}/ports/{portNum}")
@@ -303,7 +303,7 @@
         NetworkId nid = NetworkId.networkId(networkId);
         vnetAdminService.removeVirtualPort(nid, DeviceId.deviceId(deviceId),
                                            PortNumber.portNumber(portNum));
-        return Response.ok().build();
+        return Response.noContent().build();
     }
 
     // VirtualLink
@@ -364,7 +364,7 @@
      *
      * @param networkId network identifier
      * @param stream    virtual link JSON stream
-     * @return 200 OK, 404 not found
+     * @return 204 NO CONTENT
      * @onos.rsModel VirtualLink
      */
     @DELETE
@@ -386,7 +386,7 @@
             throw new IllegalArgumentException(e);
         }
 
-        return Response.ok().build();
+        return Response.noContent().build();
     }
 
     /**
diff --git a/web/api/src/test/java/org/onosproject/rest/resources/RegionsResourceTest.java b/web/api/src/test/java/org/onosproject/rest/resources/RegionsResourceTest.java
index 155cbd9..574f7e0 100644
--- a/web/api/src/test/java/org/onosproject/rest/resources/RegionsResourceTest.java
+++ b/web/api/src/test/java/org/onosproject/rest/resources/RegionsResourceTest.java
@@ -21,6 +21,7 @@
 import com.google.common.collect.ImmutableList;
 import com.google.common.collect.ImmutableSet;
 import com.google.common.collect.Sets;
+import org.glassfish.jersey.client.ClientProperties;
 import org.hamcrest.Description;
 import org.hamcrest.TypeSafeMatcher;
 import org.junit.Before;
@@ -383,7 +384,7 @@
         WebTarget wt = target();
         Response response = wt.path("regions/" + region1.id().toString())
                 .request().delete();
-        assertThat(response.getStatus(), is(HttpURLConnection.HTTP_OK));
+        assertThat(response.getStatus(), is(HttpURLConnection.HTTP_NO_CONTENT));
 
         verify(mockRegionAdminService);
     }
@@ -452,16 +453,16 @@
         replay(mockRegionAdminService);
 
 
-        WebTarget wt = target();
+        WebTarget wt = target()
+                .property(ClientProperties.SUPPRESS_HTTP_COMPLIANCE_VALIDATION, true);
         InputStream jsonStream = RegionsResourceTest.class
                 .getResourceAsStream("region-deviceIds.json");
 
         // FIXME: need to consider whether to use jsonStream for entry deletion
         Response response = wt.path("regions/" +
                 region1.id().toString() + "/devices")
-                .request(MediaType.APPLICATION_JSON_TYPE)
-                .delete();
-        // assertThat(response.getStatus(), is(HttpURLConnection.HTTP_OK));
-        // verify(mockRegionAdminService);
+                .request().method("DELETE", Entity.json(jsonStream));
+        assertThat(response.getStatus(), is(HttpURLConnection.HTTP_NO_CONTENT));
+        verify(mockRegionAdminService);
     }
 }
diff --git a/web/api/src/test/java/org/onosproject/rest/resources/TenantWebResourceTest.java b/web/api/src/test/java/org/onosproject/rest/resources/TenantWebResourceTest.java
index 2f4d65b..eac37d7 100644
--- a/web/api/src/test/java/org/onosproject/rest/resources/TenantWebResourceTest.java
+++ b/web/api/src/test/java/org/onosproject/rest/resources/TenantWebResourceTest.java
@@ -289,7 +289,7 @@
                 .request(MediaType.APPLICATION_JSON_TYPE)
                 .delete();
 
-        assertThat(response.getStatus(), is(HttpURLConnection.HTTP_OK));
+        assertThat(response.getStatus(), is(HttpURLConnection.HTTP_NO_CONTENT));
 
         verify(mockVnetAdminService);
     }
diff --git a/web/api/src/test/java/org/onosproject/rest/resources/VirtualNetworkWebResourceTest.java b/web/api/src/test/java/org/onosproject/rest/resources/VirtualNetworkWebResourceTest.java
index dcf2f0b..7c00e55 100644
--- a/web/api/src/test/java/org/onosproject/rest/resources/VirtualNetworkWebResourceTest.java
+++ b/web/api/src/test/java/org/onosproject/rest/resources/VirtualNetworkWebResourceTest.java
@@ -486,7 +486,7 @@
                 .request(MediaType.APPLICATION_JSON_TYPE)
                 .delete();
 
-        assertThat(response.getStatus(), is(HttpURLConnection.HTTP_OK));
+        assertThat(response.getStatus(), is(HttpURLConnection.HTTP_NO_CONTENT));
 
         verify(mockVnetAdminService);
     }
@@ -662,7 +662,7 @@
                 .request(MediaType.APPLICATION_JSON_TYPE)
                 .delete();
 
-        assertThat(response.getStatus(), is(HttpURLConnection.HTTP_OK));
+        assertThat(response.getStatus(), is(HttpURLConnection.HTTP_NO_CONTENT));
 
         verify(mockVnetAdminService);
     }
@@ -828,7 +828,7 @@
                 .request(MediaType.APPLICATION_JSON_TYPE)
                 .delete();
 
-        assertThat(response.getStatus(), is(HttpURLConnection.HTTP_OK));
+        assertThat(response.getStatus(), is(HttpURLConnection.HTTP_NO_CONTENT));
 
         verify(mockVnetAdminService);
     }
@@ -1034,7 +1034,7 @@
         String reqLocation = "vnets/" + networkId.toString() + "/links";
         Response response = wt.path(reqLocation).request().method("DELETE", Entity.json(jsonStream));
 
-        assertThat(response.getStatus(), is(HttpURLConnection.HTTP_OK));
+        assertThat(response.getStatus(), is(HttpURLConnection.HTTP_NO_CONTENT));
         verify(mockVnetAdminService);
     }
 }