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

  1. Include a non-empty 'title' in the request data.
  2. 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.