Skip to content

Issue with getTree function #501

Open
@igitcode

Description

Describe the bug
I'm consistently receiving 404 errors when calling the github.rest.git.getTree API. From my testing it appears the URL parameter ?tree= is causing the issue, as if the API does not support this.

To Reproduce
my GithHub action is configured as:

      - name: Commit Changes
        id: commit-changes
        uses: actions/github-script@v7
        env:
          BRANCH: ${{ inputs.branch }}
        with:
          retries: 3
          github-token: ${{ steps.app-token.outputs.token }}
          script: |
              const tree = await github.rest.git.getTree({
                owner: context.repo.owner,
                repo: context.repo.repo,
                tree: process.env.BRANCH,
              })

where inputs.branch is set to main, and the 404 response is:

RequestError [HttpError]: Not Found
    at /home/runner/work/_actions/actions/github-script/v7/dist/index.js:9537:21
    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
    at async requestWithGraphqlErrorHandling (/home/runner/work/_actions/actions/github-script/v7/dist/index.js:9276:20)
    at async Job.doExecute (/home/runner/work/_actions/actions/github-script/v7/dist/index.js:10275:18) {
  status: 404,
  response: {
    url: 'https://api.github.com/repos/<my_org>/<my_repo>/git/trees/?tree=main',
    status: 404,
    headers: {
    ....
  },
  data: {
      message: 'Not Found',
      documentation_url: 'https://docs.github.com/rest/git/trees#get-a-tree',
      status: '404'
    }

When I test locally with Curl, this is what I see:

export TREE="https://api.github.com/repos/$OWNER/$REPO/git/trees/main"

curl -L \
  -H "Accept: application/vnd.github+json" \
  -H "Authorization: Bearer $TOKEN" \
  -H "X-GitHub-Api-Version: 2022-11-28" \
  "$TREE"

and the output is:

{
  "sha": "ff70bc62cd0fb0a01bd14a2b332b6b106b32ae38",
  "url": "https://api.github.com/repos/<my_org>/<my_repo>/git/trees/ff70bc62cd0fb0a01bd14a2b332b6b106b32ae38",
  "tree": [
    {
      "path": ".github",
      "mode": "040000",
      "type": "tree",
      "sha": "795e917b75291b5c0fa3fa219401bce1801420b5",
      "url": "https://api.github.com/repos/<my_org>/<my_repo>/git/trees/795e917b75291b5c0fa3fa219401bce1801420b5"
    },
    ...

When I run the same test, but include the ?tree= parameter, I get the same 404 error:

export TREE="https://api.github.com/repos/$OWNER/$REPO/git/trees/?tree=main"
curl -L \
  -H "Accept: application/vnd.github+json" \
  -H "Authorization: Bearer $TOKEN" \
  -H "X-GitHub-Api-Version: 2022-11-28" \
  "$TREE

and the output is:

{
  "message": "Not Found",
  "documentation_url": "https://docs.github.com/rest/git/trees#get-a-tree",
  "status": "404"
}

Expected behavior
I expect a tree object to be returned.

Screenshots

RequestError [HttpError]: Not Found
    at /home/runner/work/_actions/actions/github-script/v7/dist/index.js:9537:21
    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
    at async requestWithGraphqlErrorHandling (/home/runner/work/_actions/actions/github-script/v7/dist/index.js:9276:20)
    at async Job.doExecute (/home/runner/work/_actions/actions/github-script/v7/dist/index.js:10275:18) {
  status: 404,
  response: {
    url: 'https://api.github.com/repos/<my_org>/<my_repo>/git/trees/?tree=main',
    status: 404,
    headers: {
    ....
  },
  data: {
      message: 'Not Found',
      documentation_url: 'https://docs.github.com/rest/git/trees#get-a-tree',
      status: '404'
    }

Desktop (please complete the following information):
N/A

Smartphone (please complete the following information):
N/A

Additional context
Unless I'm misunderstanding how to use this API, it appears to be a bug.

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions