Incorporate filters in provider functions
[policy/api.git] / main / src / main / java / org / onap / policy / api / main / rest / LegacyApiRestController.java
index 8e00b43..dbf519e 100644 (file)
@@ -31,6 +31,7 @@ import io.swagger.annotations.Authorization;
 import io.swagger.annotations.Extension;
 import io.swagger.annotations.ExtensionProperty;
 import io.swagger.annotations.ResponseHeader;
+import java.util.Map;
 import java.util.UUID;
 import javax.ws.rs.Consumes;
 import javax.ws.rs.DELETE;
@@ -44,9 +45,11 @@ import javax.ws.rs.core.Response;
 import javax.ws.rs.core.Response.ResponseBuilder;
 import org.onap.policy.api.main.rest.provider.LegacyGuardPolicyProvider;
 import org.onap.policy.api.main.rest.provider.LegacyOperationalPolicyProvider;
-import org.onap.policy.models.tosca.legacy.concepts.LegacyGuardPolicy;
+import org.onap.policy.models.base.PfModelException;
+import org.onap.policy.models.base.PfModelRuntimeException;
+import org.onap.policy.models.tosca.legacy.concepts.LegacyGuardPolicyInput;
+import org.onap.policy.models.tosca.legacy.concepts.LegacyGuardPolicyOutput;
 import org.onap.policy.models.tosca.legacy.concepts.LegacyOperationalPolicy;
-import org.onap.policy.models.tosca.simple.concepts.ToscaServiceTemplate;
 
 /**
  * Class to provide legacy REST API services.
@@ -55,8 +58,8 @@ import org.onap.policy.models.tosca.simple.concepts.ToscaServiceTemplate;
  */
 @Path("/policy/api/v1")
 @Api(value = "Legacy Policy Design API")
-@Produces({"application/json; vnd.onap.guard", "application/json; vnd.onap.operational"})
-@Consumes({"application/json; vnd.onap.guard", "application/json; vnd.onap.operational"})
+@Produces("application/json")
+@Consumes("application/json")
 public class LegacyApiRestController {
 
     /**
@@ -66,10 +69,9 @@ public class LegacyApiRestController {
      */
     @GET
     @Path("/policytypes/onap.policy.controlloop.guard/versions/1.0.0/policies")
-    @Produces("application/json; vnd.onap.guard")
     @ApiOperation(value = "Retrieve all versions of guard policies",
             notes = "Returns a list of all versions of guard policies",
-            response = ToscaServiceTemplate.class,
+            response = LegacyGuardPolicyOutput.class, responseContainer = "Map",
             responseHeaders = {
                     @ResponseHeader(name = "X-MinorVersion",
                                     description = "Used to request or communicate a MINOR version back from the client"
@@ -102,8 +104,17 @@ public class LegacyApiRestController {
         })
     public Response getAllGuardPolicies(
             @HeaderParam("X-ONAP-RequestID") @ApiParam("RequestID for http transaction") UUID requestId) {
-        return addLoggingHeaders(addVersionControlHeaders(Response.status(Response.Status.OK)), requestId)
-            .entity(new LegacyGuardPolicyProvider().fetchGuardPolicies(null, null)).build();
+
+        try {
+            Map<String, LegacyGuardPolicyOutput> policies = new LegacyGuardPolicyProvider()
+                    .fetchGuardPolicy(null, null);
+            return addLoggingHeaders(addVersionControlHeaders(Response.status(Response.Status.OK)), requestId)
+                    .entity(policies).build();
+        } catch (PfModelException | PfModelRuntimeException pfme) {
+            return addLoggingHeaders(addVersionControlHeaders(
+                    Response.status(pfme.getErrorResponse().getResponseCode())), requestId)
+                    .entity(pfme.getErrorResponse()).build();
+        }
     }
 
     /**
@@ -115,10 +126,9 @@ public class LegacyApiRestController {
      */
     @GET
     @Path("/policytypes/onap.policy.controlloop.guard/versions/1.0.0/policies/{policyId}")
-    @Produces("application/json; vnd.onap.guard")
     @ApiOperation(value = "Retrieve all versions of a particular guard policy",
             notes = "Returns a list of all versions of the specified guard policy",
-            response = ToscaServiceTemplate.class,
+            response = LegacyGuardPolicyOutput.class, responseContainer = "Map",
             responseHeaders = {
                     @ResponseHeader(name = "X-MinorVersion",
                                     description = "Used to request or communicate a MINOR version back from the client"
@@ -153,8 +163,17 @@ public class LegacyApiRestController {
     public Response getAllVersionsOfGuardPolicy(
             @PathParam("policyId") @ApiParam(value = "ID of policy", required = true) String policyId,
             @HeaderParam("X-ONAP-RequestID") @ApiParam("RequestID for http transaction") UUID requestId) {
-        return addLoggingHeaders(addVersionControlHeaders(Response.status(Response.Status.OK)), requestId)
-            .entity(new LegacyGuardPolicyProvider().fetchGuardPolicies(policyId, null)).build();
+
+        try {
+            Map<String, LegacyGuardPolicyOutput> policies = new LegacyGuardPolicyProvider()
+                    .fetchGuardPolicy(policyId, null);
+            return addLoggingHeaders(addVersionControlHeaders(Response.status(Response.Status.OK)), requestId)
+                    .entity(policies).build();
+        } catch (PfModelException | PfModelRuntimeException pfme) {
+            return addLoggingHeaders(addVersionControlHeaders(
+                    Response.status(pfme.getErrorResponse().getResponseCode())), requestId)
+                    .entity(pfme.getErrorResponse()).build();
+        }
     }
 
     /**
@@ -167,10 +186,9 @@ public class LegacyApiRestController {
      */
     @GET
     @Path("/policytypes/onap.policy.controlloop.guard/versions/1.0.0/policies/{policyId}/versions/{policyVersion}")
-    @Produces("application/json; vnd.onap.guard")
     @ApiOperation(value = "Retrieve one version of a particular guard policy",
             notes = "Returns a particular version of a specified guard policy",
-            response = ToscaServiceTemplate.class,
+            response = LegacyGuardPolicyOutput.class, responseContainer = "Map",
             responseHeaders = {
                     @ResponseHeader(name = "X-MinorVersion",
                                     description = "Used to request or communicate a MINOR version back from the client"
@@ -206,8 +224,17 @@ public class LegacyApiRestController {
             @PathParam("policyId") @ApiParam(value = "ID of policy", required = true) String policyId,
             @PathParam("policyVersion") @ApiParam(value = "Version of policy", required = true) String policyVersion,
             @HeaderParam("X-ONAP-RequestID") @ApiParam("RequestID for http transaction") UUID requestId) {
-        return addLoggingHeaders(addVersionControlHeaders(Response.status(Response.Status.OK)), requestId)
-            .entity(new LegacyGuardPolicyProvider().fetchGuardPolicies(policyId, policyVersion)).build();
+
+        try {
+            Map<String, LegacyGuardPolicyOutput> policies = new LegacyGuardPolicyProvider()
+                    .fetchGuardPolicy(policyId, policyVersion);
+            return addLoggingHeaders(addVersionControlHeaders(Response.status(Response.Status.OK)), requestId)
+                    .entity(policies).build();
+        } catch (PfModelException | PfModelRuntimeException pfme) {
+            return addLoggingHeaders(addVersionControlHeaders(
+                    Response.status(pfme.getErrorResponse().getResponseCode())), requestId)
+                    .entity(pfme.getErrorResponse()).build();
+        }
     }
 
     /**
@@ -219,13 +246,11 @@ public class LegacyApiRestController {
      */
     @POST
     @Path("/policytypes/onap.policy.controlloop.guard/versions/1.0.0/policies")
-    @Consumes("application/json; vnd.onap.guard")
-    @Produces("application/json; vnd.onap.guard")
     @ApiOperation(value = "Create a new guard policy",
             notes = "Client should provide entity body of the new guard policy",
             authorizations = @Authorization(value = "basicAuth"),
             tags = { "Legacy Guard Policy", },
-            response = ToscaServiceTemplate.class,
+            response = LegacyGuardPolicyOutput.class, responseContainer = "Map",
             responseHeaders = {
                     @ResponseHeader(name = "X-MinorVersion",
                                     description = "Used to request or communicate a MINOR version back from the client"
@@ -257,32 +282,34 @@ public class LegacyApiRestController {
         })
     public Response createGuardPolicy(
             @HeaderParam("X-ONAP-RequestID") @ApiParam("RequestID for http transaction") UUID requestId,
-            @ApiParam(value = "Entity body of policy", required = true) LegacyGuardPolicy body) {
-        return addLoggingHeaders(addVersionControlHeaders(Response.status(Response.Status.OK)), requestId)
-            .entity(new LegacyGuardPolicyProvider().createGuardPolicy(body)).build();
+            @ApiParam(value = "Entity body of policy", required = true) LegacyGuardPolicyInput body) {
+
+        try {
+            Map<String, LegacyGuardPolicyOutput> policy = new LegacyGuardPolicyProvider().createGuardPolicy(body);
+            return addLoggingHeaders(addVersionControlHeaders(Response.status(Response.Status.OK)), requestId)
+                    .entity(policy).build();
+        } catch (PfModelException | PfModelRuntimeException pfme) {
+            return addLoggingHeaders(addVersionControlHeaders(
+                    Response.status(pfme.getErrorResponse().getResponseCode())), requestId)
+                    .entity(pfme.getErrorResponse()).build();
+        }
     }
 
     /**
-     * Deletes all versions of a particular guard policy.
+     * Deletes the specified version of a particular guard policy.
      *
      * @param policyId the ID of specified policy
+     * @param policyVersion the version of specified policy
      *
      * @return the Response object containing the results of the API operation
      */
     @DELETE
-    @Path("/policytypes/onap.policy.controlloop.guard/versions/1.0.0/policies/{policyId}")
-    @ApiOperation(value = "Delete all versions of a guard policy",
+    @Path("/policytypes/onap.policy.controlloop.guard/versions/1.0.0/policies/{policyId}/versions/{policyVersion}")
+    @ApiOperation(value = "Delete a particular version of a guard policy",
             notes = "Rule: the version that has been deployed in PDP group(s) cannot be deleted",
             authorizations = @Authorization(value = "basicAuth"),
             tags = { "Legacy Guard Policy", },
-            extensions = {
-                    @Extension(name = "interface info", properties = {
-                            @ExtensionProperty(name = "api-version", value = "1.0.0"),
-                            @ExtensionProperty(name = "last-mod-release", value = "Dublin")
-                    })
-            })
-    @ApiResponses(value = {
-            @ApiResponse(code = 204, message = "Resources successfully deleted, no content returned",
+            response = LegacyGuardPolicyOutput.class, responseContainer = "Map",
             responseHeaders = {
                     @ResponseHeader(name = "X-MinorVersion",
                                     description = "Used to request or communicate a MINOR version back from the client"
@@ -299,34 +326,7 @@ public class LegacyApiRestController {
                     @ResponseHeader(name = "X-ONAP-RequestID",
                                     description = "Used to track REST transactions for logging purpose",
                                     response = UUID.class)
-            }),
-            @ApiResponse(code = 401, message = "Authentication Error"),
-            @ApiResponse(code = 403, message = "Authorization Error"),
-            @ApiResponse(code = 404, message = "Resource Not Found"),
-            @ApiResponse(code = 409, message = "Delete Conflict, Rule Violation"),
-            @ApiResponse(code = 500, message = "Internal Server Error")
-        })
-    public Response deleteAllVersionsOfGuardPolicy(
-            @PathParam("policyId") @ApiParam(value = "ID of policy", required = true) String policyId,
-            @HeaderParam("X-ONAP-RequestID") @ApiParam("RequestID for http transaction") UUID requestId) {
-        return addLoggingHeaders(addVersionControlHeaders(Response.status(Response.Status.OK)), requestId)
-            .entity(new LegacyGuardPolicyProvider().deleteGuardPolicies(policyId, null)).build();
-    }
-
-    /**
-     * Deletes the specified version of a particular guard policy.
-     *
-     * @param policyId the ID of specified policy
-     * @param policyVersion the version of specified policy
-     *
-     * @return the Response object containing the results of the API operation
-     */
-    @DELETE
-    @Path("/policytypes/onap.policy.controlloop.guard/versions/1.0.0/policies/{policyId}/versions/{policyVersion}")
-    @ApiOperation(value = "Delete a particular version of a guard policy",
-            notes = "Rule: the version that has been deployed in PDP group(s) cannot be deleted",
-            authorizations = @Authorization(value = "basicAuth"),
-            tags = { "Legacy Guard Policy", },
+            },
             extensions = {
                     @Extension(name = "interface info", properties = {
                             @ExtensionProperty(name = "api-version", value = "1.0.0"),
@@ -334,24 +334,6 @@ public class LegacyApiRestController {
                     })
             })
     @ApiResponses(value = {
-            @ApiResponse(code = 204, message = "Resource successfully deleted, no content returned",
-            responseHeaders = {
-                    @ResponseHeader(name = "X-MinorVersion",
-                                    description = "Used to request or communicate a MINOR version back from the client"
-                                                + " to the server, and from the server back to the client",
-                                    response = String.class),
-                    @ResponseHeader(name = "X-PatchVersion",
-                                    description = "Used only to communicate a PATCH version in a response for"
-                                                + " troubleshooting purposes only, and will not be provided by"
-                                                + " the client on request",
-                                    response = String.class),
-                    @ResponseHeader(name = "X-LatestVersion",
-                                    description = "Used only to communicate an API's latest version",
-                                    response = String.class),
-                    @ResponseHeader(name = "X-ONAP-RequestID",
-                                    description = "Used to track REST transactions for logging purpose",
-                                    response = UUID.class)
-            }),
             @ApiResponse(code = 401, message = "Authentication Error"),
             @ApiResponse(code = 403, message = "Authorization Error"),
             @ApiResponse(code = 404, message = "Resource Not Found"),
@@ -362,8 +344,17 @@ public class LegacyApiRestController {
             @PathParam("policyId") @ApiParam(value = "ID of policy", required = true) String policyId,
             @PathParam("policyVersion") @ApiParam(value = "Version of policy", required = true) String policyVersion,
             @HeaderParam("X-ONAP-RequestID") @ApiParam("RequestID for http transaction") UUID requestId) {
-        return addLoggingHeaders(addVersionControlHeaders(Response.status(Response.Status.OK)), requestId)
-            .entity(new LegacyGuardPolicyProvider().deleteGuardPolicies(policyId, policyVersion)).build();
+
+        try {
+            Map<String, LegacyGuardPolicyOutput> policies = new LegacyGuardPolicyProvider()
+                    .deleteGuardPolicy(policyId, policyVersion);
+            return addLoggingHeaders(addVersionControlHeaders(Response.status(Response.Status.OK)), requestId)
+                    .entity(policies).build();
+        } catch (PfModelException | PfModelRuntimeException pfme) {
+            return addLoggingHeaders(addVersionControlHeaders(
+                    Response.status(pfme.getErrorResponse().getResponseCode())), requestId)
+                    .entity(pfme.getErrorResponse()).build();
+        }
     }
 
     /**
@@ -373,10 +364,9 @@ public class LegacyApiRestController {
      */
     @GET
     @Path("/policytypes/onap.policy.controlloop.operational/versions/1.0.0/policies")
-    @Produces("application/json; vnd.onap.operational")
     @ApiOperation(value = "Retrieve all versions of operational policies",
             notes = "Returns a list of all versions of operational policies",
-            response = ToscaServiceTemplate.class,
+            response = LegacyOperationalPolicy.class,
             responseHeaders = {
                     @ResponseHeader(name = "X-MinorVersion",
                                     description = "Used to request or communicate a MINOR version back from the client"
@@ -409,8 +399,17 @@ public class LegacyApiRestController {
         })
     public Response getAllOperationalPolicies(
             @HeaderParam("X-ONAP-RequestID") @ApiParam("RequestID for http transaction") UUID requestId) {
-        return addLoggingHeaders(addVersionControlHeaders(Response.status(Response.Status.OK)), requestId)
-            .entity(new LegacyOperationalPolicyProvider().fetchOperationalPolicies(null, null)).build();
+
+        try {
+            LegacyOperationalPolicy policy = new LegacyOperationalPolicyProvider()
+                    .fetchOperationalPolicy(null, null);
+            return addLoggingHeaders(addVersionControlHeaders(Response.status(Response.Status.OK)), requestId)
+                    .entity(policy).build();
+        } catch (PfModelException | PfModelRuntimeException pfme) {
+            return addLoggingHeaders(addVersionControlHeaders(
+                    Response.status(pfme.getErrorResponse().getResponseCode())), requestId)
+                    .entity(pfme.getErrorResponse()).build();
+        }
     }
 
     /**
@@ -422,10 +421,9 @@ public class LegacyApiRestController {
      */
     @GET
     @Path("/policytypes/onap.policy.controlloop.operational/versions/1.0.0/policies/{policyId}")
-    @Produces("application/json; vnd.onap.operational")
     @ApiOperation(value = "Retrieve all versions of a particular operational policy",
             notes = "Returns a list of all versions of the specified operational policy",
-            response = ToscaServiceTemplate.class,
+            response = LegacyOperationalPolicy.class,
             responseHeaders = {
                     @ResponseHeader(name = "X-MinorVersion",
                                     description = "Used to request or communicate a MINOR version back from the client"
@@ -460,8 +458,17 @@ public class LegacyApiRestController {
     public Response getAllVersionsOfOperationalPolicy(
             @PathParam("policyId") @ApiParam(value = "ID of policy", required = true) String policyId,
             @HeaderParam("X-ONAP-RequestID") @ApiParam("RequestID for http transaction") UUID requestId) {
-        return addLoggingHeaders(addVersionControlHeaders(Response.status(Response.Status.OK)), requestId)
-            .entity(new LegacyOperationalPolicyProvider().fetchOperationalPolicies(policyId, null)).build();
+
+        try {
+            LegacyOperationalPolicy policy = new LegacyOperationalPolicyProvider()
+                    .fetchOperationalPolicy(policyId, null);
+            return addLoggingHeaders(addVersionControlHeaders(Response.status(Response.Status.OK)), requestId)
+                    .entity(policy).build();
+        } catch (PfModelException | PfModelRuntimeException pfme) {
+            return addLoggingHeaders(addVersionControlHeaders(
+                    Response.status(pfme.getErrorResponse().getResponseCode())), requestId)
+                    .entity(pfme.getErrorResponse()).build();
+        }
     }
 
     /**
@@ -475,10 +482,9 @@ public class LegacyApiRestController {
     @GET
     @Path("/policytypes/onap.policy.controlloop.operational/versions/1.0.0/"
          + "policies/{policyId}/versions/{policyVersion}")
-    @Produces("application/json; vnd.onap.operational")
     @ApiOperation(value = "Retrieve one version of a particular operational policy",
             notes = "Returns a particular version of a specified operational policy",
-            response = ToscaServiceTemplate.class,
+            response = LegacyOperationalPolicy.class,
             responseHeaders = {
                     @ResponseHeader(name = "X-MinorVersion",
                                     description = "Used to request or communicate a MINOR version back from the client"
@@ -514,8 +520,17 @@ public class LegacyApiRestController {
             @PathParam("policyId") @ApiParam(value = "ID of policy", required = true) String policyId,
             @PathParam("policyVersion") @ApiParam(value = "Version of policy", required = true) String policyVersion,
             @HeaderParam("X-ONAP-RequestID") @ApiParam("RequestID for http transaction") UUID requestId) {
-        return addLoggingHeaders(addVersionControlHeaders(Response.status(Response.Status.OK)), requestId)
-            .entity(new LegacyOperationalPolicyProvider().fetchOperationalPolicies(policyId, policyVersion)).build();
+
+        try {
+            LegacyOperationalPolicy policy = new LegacyOperationalPolicyProvider()
+                    .fetchOperationalPolicy(policyId, policyVersion);
+            return addLoggingHeaders(addVersionControlHeaders(Response.status(Response.Status.OK)), requestId)
+                    .entity(policy).build();
+        } catch (PfModelException | PfModelRuntimeException pfme) {
+            return addLoggingHeaders(addVersionControlHeaders(
+                    Response.status(pfme.getErrorResponse().getResponseCode())), requestId)
+                    .entity(pfme.getErrorResponse()).build();
+        }
     }
 
     /**
@@ -527,13 +542,11 @@ public class LegacyApiRestController {
      */
     @POST
     @Path("/policytypes/onap.policy.controlloop.operational/versions/1.0.0/policies")
-    @Consumes("application/json; vnd.onap.operational")
-    @Produces("application/json; vnd.onap.operational")
     @ApiOperation(value = "Create a new operational policy",
             notes = "Client should provide entity body of the new operational policy",
             authorizations = @Authorization(value = "basicAuth"),
             tags = { "Legacy Operational Policy", },
-            response = ToscaServiceTemplate.class,
+            response = LegacyOperationalPolicy.class,
             responseHeaders = {
                     @ResponseHeader(name = "X-MinorVersion",
                                     description = "Used to request or communicate a MINOR version back from the client"
@@ -566,31 +579,35 @@ public class LegacyApiRestController {
     public Response createOperationalPolicy(
             @HeaderParam("X-ONAP-RequestID") @ApiParam("RequestID for http transaction") UUID requestId,
             @ApiParam(value = "Entity body of policy", required = true) LegacyOperationalPolicy body) {
-        return addLoggingHeaders(addVersionControlHeaders(Response.status(Response.Status.OK)), requestId)
-            .entity(new LegacyOperationalPolicyProvider().createOperationalPolicy(body)).build();
+
+        try {
+            LegacyOperationalPolicy policy = new LegacyOperationalPolicyProvider()
+                    .createOperationalPolicy(body);
+            return addLoggingHeaders(addVersionControlHeaders(Response.status(Response.Status.OK)), requestId)
+                    .entity(policy).build();
+        } catch (PfModelException | PfModelRuntimeException pfme) {
+            return addLoggingHeaders(addVersionControlHeaders(
+                    Response.status(pfme.getErrorResponse().getResponseCode())), requestId)
+                    .entity(pfme.getErrorResponse()).build();
+        }
     }
 
     /**
-     * Deletes all versions of a particular operational policy.
+     * Deletes the specified version of a particular operational policy.
      *
      * @param policyId the ID of specified policy
+     * @param policyVersion the version of specified policy
      *
      * @return the Response object containing the results of the API operation
      */
     @DELETE
-    @Path("/policytypes/onap.policy.controlloop.operational/versions/1.0.0/policies/{policyId}")
-    @ApiOperation(value = "Delete all versions of a operational policy",
+    @Path("/policytypes/onap.policy.controlloop.operational/versions/1.0.0/"
+         + "policies/{policyId}/versions/{policyVersion}")
+    @ApiOperation(value = "Delete a particular version of a specified operational policy",
             notes = "Rule: the version that has been deployed in PDP group(s) cannot be deleted",
             authorizations = @Authorization(value = "basicAuth"),
             tags = { "Legacy Operational Policy", },
-            extensions = {
-                    @Extension(name = "interface info", properties = {
-                            @ExtensionProperty(name = "api-version", value = "1.0.0"),
-                            @ExtensionProperty(name = "last-mod-release", value = "Dublin")
-                    })
-            })
-    @ApiResponses(value = {
-            @ApiResponse(code = 204, message = "Resources successfully deleted, no content returned",
+            response = LegacyOperationalPolicy.class,
             responseHeaders = {
                     @ResponseHeader(name = "X-MinorVersion",
                                     description = "Used to request or communicate a MINOR version back from the client"
@@ -607,35 +624,7 @@ public class LegacyApiRestController {
                     @ResponseHeader(name = "X-ONAP-RequestID",
                                     description = "Used to track REST transactions for logging purpose",
                                     response = UUID.class)
-            }),
-            @ApiResponse(code = 401, message = "Authentication Error"),
-            @ApiResponse(code = 403, message = "Authorization Error"),
-            @ApiResponse(code = 404, message = "Resource Not Found"),
-            @ApiResponse(code = 409, message = "Delete Conflict, Rule Violation"),
-            @ApiResponse(code = 500, message = "Internal Server Error")
-        })
-    public Response deleteAllVersionsOfOperationalPolicy(
-            @PathParam("policyId") @ApiParam(value = "ID of policy", required = true) String policyId,
-            @HeaderParam("X-ONAP-RequestID") @ApiParam("RequestID for http transaction") UUID requestId) {
-        return addLoggingHeaders(addVersionControlHeaders(Response.status(Response.Status.OK)), requestId)
-            .entity(new LegacyOperationalPolicyProvider().deleteOperationalPolicies(policyId, null)).build();
-    }
-
-    /**
-     * Deletes the specified version of a particular operational policy.
-     *
-     * @param policyId the ID of specified policy
-     * @param policyVersion the version of specified policy
-     *
-     * @return the Response object containing the results of the API operation
-     */
-    @DELETE
-    @Path("/policytypes/onap.policy.controlloop.operational/versions/1.0.0/"
-         + "policies/{policyId}/versions/{policyVersion}")
-    @ApiOperation(value = "Delete a particular version of a specified operational policy",
-            notes = "Rule: the version that has been deployed in PDP group(s) cannot be deleted",
-            authorizations = @Authorization(value = "basicAuth"),
-            tags = { "Legacy Operational Policy", },
+            },
             extensions = {
                     @Extension(name = "interface info", properties = {
                             @ExtensionProperty(name = "api-version", value = "1.0.0"),
@@ -643,24 +632,6 @@ public class LegacyApiRestController {
                     })
             })
     @ApiResponses(value = {
-            @ApiResponse(code = 204, message = "Resource successfully deleted, no content returned",
-            responseHeaders = {
-                    @ResponseHeader(name = "X-MinorVersion",
-                                    description = "Used to request or communicate a MINOR version back from the client"
-                                                + " to the server, and from the server back to the client",
-                                    response = String.class),
-                    @ResponseHeader(name = "X-PatchVersion",
-                                    description = "Used only to communicate a PATCH version in a response for"
-                                                + " troubleshooting purposes only, and will not be provided by"
-                                                + " the client on request",
-                                    response = String.class),
-                    @ResponseHeader(name = "X-LatestVersion",
-                                    description = "Used only to communicate an API's latest version",
-                                    response = String.class),
-                    @ResponseHeader(name = "X-ONAP-RequestID",
-                                    description = "Used to track REST transactions for logging purpose",
-                                    response = UUID.class)
-            }),
             @ApiResponse(code = 401, message = "Authentication Error"),
             @ApiResponse(code = 403, message = "Authorization Error"),
             @ApiResponse(code = 404, message = "Resource Not Found"),
@@ -671,8 +642,17 @@ public class LegacyApiRestController {
             @PathParam("policyId") @ApiParam(value = "ID of policy", required = true) String policyId,
             @PathParam("policyVersion") @ApiParam(value = "Version of policy", required = true) String policyVersion,
             @HeaderParam("X-ONAP-RequestID") @ApiParam("RequestID for http transaction") UUID requestId) {
-        return addLoggingHeaders(addVersionControlHeaders(Response.status(Response.Status.OK)), requestId)
-            .entity(new LegacyOperationalPolicyProvider().deleteOperationalPolicies(policyId, policyVersion)).build();
+
+        try {
+            LegacyOperationalPolicy policy = new LegacyOperationalPolicyProvider()
+                    .deleteOperationalPolicy(policyId, policyVersion);
+            return addLoggingHeaders(addVersionControlHeaders(Response.status(Response.Status.OK)), requestId)
+                    .entity(policy).build();
+        } catch (PfModelException | PfModelRuntimeException pfme) {
+            return addLoggingHeaders(addVersionControlHeaders(
+                    Response.status(pfme.getErrorResponse().getResponseCode())), requestId)
+                    .entity(pfme.getErrorResponse()).build();
+        }
     }
 
     private ResponseBuilder addVersionControlHeaders(ResponseBuilder rb) {