Docs
Search docs

Get repository file tree

GET/api/repos/{owner}/{repo}/tree

getRepositoryTree

Returns tree entries for the selected repository path.

Authentication is not described for this operation in the spec — that does not mean it is public. Check tokens and scopes.

curl

curl -X GET 'https://neosource.dev/api/repos/OWNER/REPO/tree'

fetch

fetch("https://neosource.dev/api/repos/OWNER/REPO/tree", {
  method: "GET",
});

Path parameters

ownerrequired

Repository owner or organization slug.

string

reporequired

Repository name.

string

Query parameters

ref

Bookmark name to read from. Defaults to the repository default branch.

string

path

Slash-delimited repository path relative to the selected ref root.

string

Responses

200Repository file tree

application/json

TreeResponse

object

commit_oid

string | null

40-hex id of the commit `ref` resolved to: the address under which this listing can never change. Absent only for an empty repository's root, which has no commit.

entriesrequired

array

items

TreeEntryResponse

object

namerequired

string

oidrequired

string

pathrequired

string

readme
one of
  • ReadmeResponse

    object

    contentrequired

    string

    The README source. Always present: the client renderer's input and the non-markdown `<pre>` branch's input.

    degradedrequired

    boolean

    The content above is not the whole README — it was truncated because the blob is past the render ceiling. A one-line notice for the reader, not a diagnostic: which cap fired is the server's business.

    html

    string | null

    The server's sanitized render, safe to inject. `None` when there is nothing to inject: the file is not markdown, it was truncated, or the render did not finish inside its deadline. In every one of those the client renders `content` itself, so absence is a fallback, never an error.

    namerequired

    string

    Basename, e.g. `README.md` — the chip in the card header.

    pathrequired

    string

    Repo-root-relative path of the README BLOB, e.g. `docs/README.md`. Its *directory* is what the README's relative links resolve against, and that is not the path being browsed: a `.github/README.md` shown on the repo overview resolves `./guide.md` to `.github/guide.md`.

  • null

refrequired

string

304`If-None-Match` names the current `ETag`; the stored listing is still current

Standard errors

Bodies documented once for the whole API — see standard errors.

  • 400Bad Request — one of: invalid_input
  • 403Forbidden — one of: forbidden
  • 404Not Found — one of: not_found
  • 423Locked — one of: busy
  • 429Rate limited — retry after the interval in the `Retry-After` header
  • 500Internal server error
  • 503Service temporarily unavailable / at capacity — retry after the `Retry-After` header
  • 504Gateway timeout — the request exceeded the server's handling budget

Schemas

Referenced above. Listed here rather than expanded inline, so the same definition is not repeated at every level.

TreeEntryKindResponse

string

"blob""tree""commit""tag"