theonedev/onedev · error · NotAcceptableException
Title is required
Error message
Title is required
What it means
Validation during PR creation: the 'title' field was blank/missing after normalizePullRequestData. Title is mandatory for a pull request record, so a validation error is thrown before openNew persists anything. Fix: provide a non-empty title (or let the caller's default title generation fill it).
Source
Thrown at server-core/src/main/java/io/onedev/server/ai/TodResource.java:1155
// Pre-populate baseCommitHash + initial update so title/description can
// be generated from commits below; openNew(...) will keep them as-is.
ObjectId baseCommitId = gitService.getMergeBase(
target.getProject(), target.getObjectId(),
source.getProject(), source.getObjectId());
if (baseCommitId == null)
throw new NotAcceptableException("No common base for source and target branches");
request.setBaseCommitHash(baseCommitId.name());
PullRequestUpdate update = new PullRequestUpdate();
update.setRequest(request);
update.setHeadCommitHash(source.getObjectName());
update.setTargetHeadCommitHash(target.getObjectName());
request.getUpdates().add(update);
var title = (String) data.remove("title");
if (title == null)
throw new NotAcceptableException("Title is required");
request.setTitle(title);
var description = (String) data.remove("description");
if (description != null)
request.setDescription(description);
@SuppressWarnings("unchecked")
var reviewerNames = (List<String>) data.remove("reviewers");
if (reviewerNames != null) {
for (var reviewerName : reviewerNames) {
User reviewer = userService.findByName(reviewerName);
if (reviewer == null)
throw new NotFoundException("Reviewer not found: " + reviewerName);
if (reviewer.equals(request.getSubmitter()))
throw new NotAcceptableException("Pull request submitter cannot be reviewer");
if (request.getReview(reviewer) == null) {View on GitHub (pinned to d44925c47c)
Solutions
- Include a non-empty 'title' in the request data.
- Derive the title from the commit subject if appropriate before calling the endpoint.
Defensive patterns
Strategy: validation
When it happens
Trigger: Thrown at server-core/src/main/java/io/onedev/server/ai/TodResource.java:1155 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of theonedev/onedev@d44925c47c (2026-09-06).
Data as JSON: /api/errors/f5d1ab417b3ba18e.
Report an issue: GitHub.