{"record":{"id":"d97af7536f7e6709","repo":"flowable/flowable-engine","slug":"no-deployment-id-provided-d97af7","errorCode":null,"errorMessage":"No deployment id provided","messagePattern":"No deployment id provided","errorType":"validation","errorClass":"FlowableIllegalArgumentException","httpStatus":400,"severity":"error","filePath":"modules/flowable-event-registry-rest/src/main/java/org/flowable/eventregistry/rest/service/api/repository/BaseDeploymentResourceDataResource.java","lineNumber":48,"sourceCode":"\n/**\n * @author Tijs Rademakers\n */\npublic class BaseDeploymentResourceDataResource {\n\n    @Autowired\n    protected ContentTypeResolver contentTypeResolver;\n\n    @Autowired\n    protected EventRepositoryService repositoryService;\n    \n    @Autowired(required=false)\n    protected EventRegistryRestApiInterceptor restApiInterceptor;\n\n    protected byte[] getDeploymentResourceData(String deploymentId, String resourceName, HttpServletResponse response) {\n\n        if (deploymentId == null) {\n            throw new FlowableIllegalArgumentException(\"No deployment id provided\");\n        }\n        if (resourceName == null) {\n            throw new FlowableIllegalArgumentException(\"No resource name provided\");\n        }\n\n        // Check if deployment exists\n        EventDeployment deployment = repositoryService.createDeploymentQuery().deploymentId(deploymentId).singleResult();\n        if (deployment == null) {\n            throw new FlowableObjectNotFoundException(\"Could not find a deployment with id '\" + deploymentId + \"'.\", EventDeployment.class);\n        }\n        \n        if (restApiInterceptor != null) {\n            restApiInterceptor.accessDeploymentById(deployment);\n        }\n\n        List<String> resourceList = repositoryService.getDeploymentResourceNames(deploymentId);\n\n        if (resourceList.contains(resourceName)) {","sourceCodeStart":30,"sourceCodeEnd":66,"githubUrl":"https://github.com/flowable/flowable-engine/blob/d6d39ce1c69ff244f2d9dc6af756a9b95e865586/modules/flowable-event-registry-rest/src/main/java/org/flowable/eventregistry/rest/service/api/repository/BaseDeploymentResourceDataResource.java#L30-L66","documentation":"FlowableIllegalArgumentException thrown by getDeploymentResourceData when the deploymentId path/query parameter is null. The REST layer cannot look up a deployment resource without knowing which deployment to query, so it fails fast before hitting the repository service.","triggerScenarios":"Calling the deployment resource data endpoint (e.g. GET /event-registry-repository/deployments/{deploymentId}/resources/{resourceName}) with a missing or empty deployment id, or invoking getDeploymentResourceData(null, resourceName, response) programmatically.","commonSituations":"URL templates with an unpopulated path variable, HTTP clients stripping empty path segments, proxy rewrites that drop the id, or copied curl commands with the deployment id placeholder left in place.","solutions":["Provide a valid deployment id in the request URL path or query parameter.","Verify the request was actually sent with the id (check the raw URL in client/proxy logs, not just the controller mapping).","List existing deployments first via GET /event-registry-repository/deployments to obtain a valid id."],"exampleFix":"// before\ncurl http://host/flowable-rest/event-registry-repository/deployments//resources/model.json\n// after\nString deploymentId = \"d1c33a80-7f2e-11ea-...\"; // fetch from deployment list, never empty\ncurl http://host/flowable-rest/event-registry-repository/deployments/${deploymentId}/resources/model.json","handlingStrategy":"validation","validationCode":"if (deploymentId == null || deploymentId.isEmpty()) throw new IllegalArgumentException(\"deploymentId required\");","typeGuard":"boolean hasDeploymentId = s != null && !s.trim().isEmpty();","tryCatchPattern":"try { ... } catch (FlowableIllegalArgumentException e) { log.warn(\"bad request: {}\", e.getMessage()); return ResponseEntity.badRequest().build(); }","preventionTips":["Always build URLs from validated non-empty deployment ids","Use typed client wrappers that reject empty path segments"],"tags":["rest-api","missing-parameter","deployment"],"backgroundTag":"missing-required-argument","analyzedSha":"d6d39ce1c69ff244f2d9dc6af756a9b95e865586","analyzedAt":"2026-09-11T06:41:19.413Z","contentChangedAt":"2026-09-11T06:41:19.413Z","schemaVersion":2},"datasetVersion":"2026-09-18T16:30:33.424Z"}