> ## Documentation Index
> Fetch the complete documentation index at: https://docs.mesa.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# content.get()

> Read a file, symlink, or directory listing from a repository.

Read repository content without mounting the filesystem.

**Required scope: `read`**

```python theme={null}
root = await mesa.content.get(repo="app", depth=1)
print(root.type)
print(root.is_dir())

readme = await mesa.content.get(repo="app", path="README.md")
if readme.is_file():
    print(readme.content)  # base64-encoded bytes
```

## Options

<ParamField path="repo" type="str" required>
  Repository name.
</ParamField>

<ParamField path="org" type="str | None">
  Organization override.
</ParamField>

<ParamField path="change_id" type="str | None">
  Change ID to read from. Defaults to the current change at the repository's default bookmark tip.
</ParamField>

<ParamField path="path" type="str | None">
  Repository-relative path. Omit for the repository root.
</ParamField>

<ParamField path="depth" type="int | None">
  Directory traversal depth. `0` returns directory metadata only, `1` returns direct children, and the server maximum is `10`.
</ParamField>

## Response

The method returns one generated model variant. The generated `type_` field
remains available, and `type` is exposed as a read-only alias.

<ResponseField name="is_file()" type="bool">
  Returns `True` when the response is a regular file.
</ResponseField>

<ResponseField name="is_dir()" type="bool">
  Returns `True` when the response is a directory.
</ResponseField>

<ResponseField name="is_symlink()" type="bool">
  Returns `True` when the response is a symlink.
</ResponseField>

<ResponseField name="type: 'file'" type="ContentFile">
  Regular file content.
</ResponseField>

<ResponseField name="type: 'symlink'" type="ContentSymlink">
  Symbolic link content.
</ResponseField>

<ResponseField name="type: 'dir'" type="ContentDirectory">
  Directory listing.
</ResponseField>

### ContentFile

<ResponseField name="type" type="'file'">
  Content variant discriminator.
</ResponseField>

<ResponseField name="name" type="str">
  Base name of the file.
</ResponseField>

<ResponseField name="path" type="str">
  Repository-relative path.
</ResponseField>

<ResponseField name="sha" type="str">
  Git object SHA.
</ResponseField>

<ResponseField name="is_conflicted" type="bool | None">
  Whether this path is conflicted when known.
</ResponseField>

<ResponseField name="size" type="int">
  Size in bytes.
</ResponseField>

<ResponseField name="encoding" type="'base64'">
  Encoding used for `content`.
</ResponseField>

<ResponseField name="content" type="str">
  Base64-encoded file bytes.
</ResponseField>

<ResponseField name="mode" type="'100644' | '100755'">
  POSIX file mode.
</ResponseField>

<ResponseField name="xattrs" type="dict[str, str] | None">
  Extended attributes for this path. Values are base64-encoded.
</ResponseField>

### ContentSymlink

<ResponseField name="type" type="'symlink'">
  Content variant discriminator.
</ResponseField>

<ResponseField name="name" type="str">
  Base name of the symlink.
</ResponseField>

<ResponseField name="path" type="str">
  Repository-relative path.
</ResponseField>

<ResponseField name="sha" type="str">
  Git object SHA.
</ResponseField>

<ResponseField name="is_conflicted" type="bool | None">
  Whether this path is conflicted when known.
</ResponseField>

<ResponseField name="size" type="int">
  Size in bytes.
</ResponseField>

<ResponseField name="encoding" type="'base64'">
  Encoding used for `content`.
</ResponseField>

<ResponseField name="content" type="str">
  Base64-encoded symlink target bytes.
</ResponseField>

<ResponseField name="mode" type="'120000'">
  POSIX symlink mode.
</ResponseField>

<ResponseField name="xattrs" type="dict[str, str] | None">
  Extended attributes for this path. Values are base64-encoded.
</ResponseField>

### ContentDirectory

<ResponseField name="type" type="'dir'">
  Content variant discriminator.
</ResponseField>

<ResponseField name="name" type="str">
  Base name of the directory.
</ResponseField>

<ResponseField name="path" type="str">
  Repository-relative path.
</ResponseField>

<ResponseField name="sha" type="str">
  Git object SHA.
</ResponseField>

<ResponseField name="child_count" type="int">
  Number of direct children in this directory.
</ResponseField>

<ResponseField name="entries" type="list[ContentDirectoryEntry]">
  Directory entries returned for the requested depth.
</ResponseField>

<ResponseField name="xattrs" type="dict[str, str] | None">
  Extended attributes attached to this directory. Values are base64-encoded.
</ResponseField>

### ContentDirectoryEntry

<ResponseField name="type" type="'file' | 'symlink' | 'dir'">
  Entry variant discriminator.
</ResponseField>

<ResponseField name="name" type="str">
  Base name of the entry.
</ResponseField>

<ResponseField name="path" type="str">
  Repository-relative path.
</ResponseField>

<ResponseField name="sha" type="str">
  Git object SHA.
</ResponseField>

<ResponseField name="size" type="int | None">
  Size in bytes for file and symlink entries.
</ResponseField>

<ResponseField name="mode" type="'100644' | '100755' | '120000' | None">
  POSIX mode for file and symlink entries.
</ResponseField>
