theonedev/onedev · error · UnauthorizedException

No permission to write code in pull request source project

Error message

No permission to write code in pull request source project

What it means

When get-pull-request is called with forWrite=true, the endpoint additionally requires the caller to have code-write permission in the pull request's source project; lacking it, the request is rejected before returning write-oriented data.

Source

Thrown at server-core/src/main/java/io/onedev/server/ai/TodResource.java:1017

    @Path("/get-pull-request")
    @GET
    public Map<String, Object> getPullRequestDetail(
                @QueryParam("currentProject") @NotNull String currentProjectPath, 
                @QueryParam("reference") @NotNull String pullRequestReference, 
                @QueryParam("forWrite") Boolean forWrite) {
        if (SecurityUtils.getUser() == null)
            throw new UnauthenticatedException();

        var currentProject = getProject(currentProjectPath);
        var pullRequest = getPullRequest(currentProject, pullRequestReference);

        if (forWrite != null && forWrite) {
            if (pullRequest.getSourceProject() == null)
                throw new NotAcceptableException("Pull request source project no longer exists");

            if (!SecurityUtils.canWriteCode(pullRequest.getSourceProject()))            
                throw new UnauthorizedException("No permission to write code in pull request source project");
        }

        return PullRequestHelper.getDetail(currentProject, pullRequest);
    }

    @Path("/get-pull-request-comments")
    @GET
    public List<Map<String, Object>> getPullRequestComments(
                @QueryParam("currentProject") @NotNull String currentProjectPath, 
                @QueryParam("reference") @NotNull String pullRequestReference) {
        if (SecurityUtils.getUser() == null)
            throw new UnauthenticatedException();

        var currentProject = getProject(currentProjectPath);
        var pullRequest = getPullRequest(currentProject, pullRequestReference);
                
        return PullRequestHelper.getComments(pullRequest);
    }

View on GitHub (pinned to d44925c47c)

Solutions

  1. Request forWrite=false if only read data is needed.
  2. Obtain code write permission (commit authorizations) in the source project.
Defensive patterns

Strategy: fallback

When it happens

Trigger: Thrown at server-core/src/main/java/io/onedev/server/ai/TodResource.java:1017 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/2633985b90f0d613. Report an issue: GitHub.