@RequestMapping(value = { "/{cfInstanceId}/v2/service_instances/{instanceId}", "/v2/service_instances/{instanceId}" }, method = RequestMethod.DELETE) public ResponseEntity<?> deleteServiceInstance(@PathVariable Map<String, String> pathVariables, @PathVariable("instanceId") String serviceInstanceId, @RequestParam("service_id") String serviceDefinitionId, @RequestParam("plan_id") String planId, @RequestParam(value = ASYNC_REQUEST_PARAMETER, required = false) boolean acceptsIncomplete, @RequestHeader(value = API_INFO_LOCATION_HEADER, required = false) String apiInfoLocation, @RequestHeader(value = ORIGINATING_IDENTITY_HEADER, required = false) String originatingIdentityString) { DeleteServiceInstanceRequest request = new DeleteServiceInstanceRequest(serviceInstanceId, serviceDefinitionId, planId, getServiceDefinition(serviceDefinitionId)) .withAsyncAccepted(acceptsIncomplete) .withCfInstanceId(pathVariables.get("cfInstanceId")) .withApiInfoLocation(apiInfoLocation) .withOriginatingIdentity(parseOriginatingIdentity(originatingIdentityString)); log.debug("Deleting a service instance: request={}", request); try { DeleteServiceInstanceResponse response = service.deleteServiceInstance(request); log.debug("Deleting a service instance succeeded: serviceInstanceId={}, response={}", serviceInstanceId, response); return new ResponseEntity<>(response, response.isAsync() ? HttpStatus.ACCEPTED : HttpStatus.OK); } catch (ServiceInstanceDoesNotExistException e) { log.debug("Service instance does not exist: ", e); return new ResponseEntity<>("{}", HttpStatus.GONE); } }