{"record":{"id":"83d785692ba36c6d","repo":"flowable/flowable-engine","slug":"no-deployment-id-provided-83d785","errorCode":null,"errorMessage":"No deployment id provided","messagePattern":"No deployment id provided","errorType":"validation","errorClass":"FlowableIllegalArgumentException","httpStatus":400,"severity":"error","filePath":"modules/flowable-dmn-rest/src/main/java/org/flowable/dmn/rest/service/api/repository/BaseDmnDeploymentResourceDataResource.java","lineNumber":48,"sourceCode":"\n/**\n * @author Yvo Swillens\n */\npublic class BaseDmnDeploymentResourceDataResource {\n\n    @Autowired\n    protected ContentTypeResolver contentTypeResolver;\n\n    @Autowired\n    protected DmnRepositoryService dmnRepositoryService;\n    \n    @Autowired(required=false)\n    protected DmnRestApiInterceptor restApiInterceptor;\n\n    protected byte[] getDmnDeploymentResourceData(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        DmnDeploymentQuery deploymentQuery = dmnRepositoryService.createDeploymentQuery().deploymentId(deploymentId);\n        \n        DmnDeployment deployment = deploymentQuery.singleResult();\n        if (deployment == null) {\n            throw new FlowableObjectNotFoundException(\"Could not find a DMN deployment with id '\" + deploymentId);\n        }\n        \n        if (restApiInterceptor != null) {\n            restApiInterceptor.accessDeploymentById(deployment);\n        }\n\n        List<String> resourceList = dmnRepositoryService.getDeploymentResourceNames(deploymentId);","sourceCodeStart":30,"sourceCodeEnd":66,"githubUrl":"https://github.com/flowable/flowable-engine/blob/d6d39ce1c69ff244f2d9dc6af756a9b95e865586/modules/flowable-dmn-rest/src/main/java/org/flowable/dmn/rest/service/api/repository/BaseDmnDeploymentResourceDataResource.java#L30-L66","documentation":"BaseDmnDeploymentResourceDataResource.getDmnDeploymentResourceData throws FlowableIllegalArgumentException(\"No deployment id provided\") when the deploymentId parameter is null. This endpoint fetches a deployment resource by NAME, and both deploymentId and resourceName are mandatory; validation happens before any repository query.","triggerScenarios":"GET /dmn-repository/deployments/{deploymentId}/resource-data/{resourceName} with the {deploymentId} path variable null/empty, e.g. an empty interpolated variable in a generated URL or a misbound controller path variable.","commonSituations":"Template-generated URLs where the deploymentId variable was empty; framework routing that matched a shorter path pattern; client code passing null because a previous lookup failed silently.","solutions":["Supply the deployment id in the URL path; obtain it via GET /dmn-repository/deployments if unknown.","Fix URL building code so null/empty ids are caught before the request is sent.","Check controller mappings to ensure the deploymentId path variable is correctly bound."],"exampleFix":"// before\nString url = base + \"/dmn-repository/deployments/\" + deploymentId + \"/resource-data/\" + name; // deploymentId null\n// after\nObjects.requireNonNull(deploymentId, \"deploymentId required\");\nString url = base + \"/dmn-repository/deployments/\" + deploymentId + \"/resource-data/\" + name;","handlingStrategy":"validation","validationCode":"if (deploymentId == null || deploymentId.isEmpty()) throw new IllegalArgumentException(\"deploymentId is required\");","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Fail fast in client code on null/empty path variables","Resolve deployment ids from the deployments list endpoint","Verify controller path-variable bindings when wiring custom endpoints"],"tags":["rest","validation","missing-parameter"],"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-18T11:17:12.947Z"}