{"record":{"id":"db39dbcacd420295","repo":"theonedev/onedev","slug":"source-branch-is-required","errorCode":null,"errorMessage":"Source branch is required","messagePattern":"Source branch is required","errorType":"http","errorClass":"NotAcceptableException","httpStatus":406,"severity":"error","filePath":"server-core/src/main/java/io/onedev/server/ai/TodResource.java","lineNumber":1114,"sourceCode":"        } else {\n            return project.findDefaultPullRequestMergeStrategy();\n        }\n    }\n\n    @Path(\"/create-pull-request\")\n    @POST\n    public Map<String, Object> createPullRequest(\n                @QueryParam(\"currentProject\") @NotNull String currentProjectPath, \n                @QueryParam(\"targetProject\") String targetProjectPath,\n                @QueryParam(\"sourceProject\") String sourceProjectPath,\n                @NotNull Map<String, Serializable> data) {\n        normalizePullRequestData(data);\n\n        var targetBranch = (String) data.remove(\"targetBranch\");\n\n        var sourceBranch = (String) data.remove(\"sourceBranch\");\n        if (sourceBranch == null)\n            throw new NotAcceptableException(\"Source branch is required\");\n\n        var createPullRequestEssentialInfo = getCreatePullRequestEssentialInfo(\n            currentProjectPath, targetProjectPath, sourceProjectPath, \n            targetBranch, sourceBranch);\n\n        var currentProject = createPullRequestEssentialInfo.currentProject;\n        var target = createPullRequestEssentialInfo.target;\n        var source = createPullRequestEssentialInfo.source;\n        var submitter = createPullRequestEssentialInfo.submitter;\n\n        var mergeStrategyName = (String) data.remove(\"mergeStrategy\");            \n        var mergeStrategy = getMergeStrategy(target.getProject(), mergeStrategyName);\n\n        var request = pullRequestService.findOpen(target, source);\n        if (request != null)\n            return PullRequestHelper.getDetail(currentProject, request);        \n\n        request = new PullRequest();","sourceCodeStart":1096,"sourceCodeEnd":1132,"githubUrl":"https://github.com/theonedev/onedev/blob/d44925c47c37992c828ea673a5f9620539bc3ff2/server-core/src/main/java/io/onedev/server/ai/TodResource.java#L1096-L1132","documentation":"Input validation in createPullRequest (TodResource): the request omitted the source project and/or source branch, but a pull request needs an explicit source to merge from; the endpoint throws a NotAcceptable/validation error before resolving branches. Fix: supply sourceProject (and source branch) parameters.","triggerScenarios":"Thrown at server-core/src/main/java/io/onedev/server/ai/TodResource.java:1114 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Provide the sourceBranch field in the request data.","Verify the branch name exists in the source project before creating the PR."],"exampleFix":null,"handlingStrategy":"validation","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"d44925c47c37992c828ea673a5f9620539bc3ff2","analyzedAt":"2026-09-06T07:18:27.995Z","contentChangedAt":"2026-09-06T07:18:27.995Z","schemaVersion":2},"datasetVersion":"2026-09-14T05:17:10.506Z"}