# ContainerFileSystemCallbackAnnotation Properties

- Package: [Aspire.Hosting](/reference/api/csharp/aspire.hosting.md)
- Type: [ContainerFileSystemCallbackAnnotation](/reference/api/csharp/aspire.hosting/containerfilesystemcallbackannotation.md)
- Kind: `Properties`
- Members: `5`

Represents a callback annotation that specifies files and folders that should be created or updated in a container.

## Callback

- Name: `Callback`
- Modifiers: `get; init`
- Returns: `Func<ContainerFileSystemCallbackContext, CancellationToken, Task<IEnumerable<ContainerFileSystemItem>>>`
- Source: [GitHub](https://github.com/microsoft/aspire/blob/bd20f904cde09ecb9c9ae5116a6f13614bf2d7c2/src/Aspire.Hosting/ApplicationModel/ContainerFileSystemCallbackAnnotation.cs)

The callback to be executed when the container is created. Should return a tree of [ContainerFileSystemItem](/reference/api/csharp/aspire.hosting/containerfilesystemitem.md) entries to create (or update) in the container.

```csharp
public Func<ContainerFileSystemCallbackContext, CancellationToken, Task<IEnumerable<ContainerFileSystemItem>>> Callback { get; init; }
```

## DefaultGroup

- Name: `DefaultGroup`
- Modifiers: `nullable` `get; init`
- Returns: `int?`
- Source: [GitHub](https://github.com/microsoft/aspire/blob/bd20f904cde09ecb9c9ae5116a6f13614bf2d7c2/src/Aspire.Hosting/ApplicationModel/ContainerFileSystemCallbackAnnotation.cs)

The GID of the default group for files/directories to be created or updated in the container. The GID defaults to 0 for root if null.

```csharp
public int? DefaultGroup { get; init; }
```

## DefaultOwner

- Name: `DefaultOwner`
- Modifiers: `nullable` `get; init`
- Returns: `int?`
- Source: [GitHub](https://github.com/microsoft/aspire/blob/bd20f904cde09ecb9c9ae5116a6f13614bf2d7c2/src/Aspire.Hosting/ApplicationModel/ContainerFileSystemCallbackAnnotation.cs)

The UID of the default owner for files/directories to be created or updated in the container. The UID defaults to 0 for root if null.

```csharp
public int? DefaultOwner { get; init; }
```

## DestinationPath

- Name: `DestinationPath`
- Modifiers: `get; init`
- Returns: `string`
- Source: [GitHub](https://github.com/microsoft/aspire/blob/bd20f904cde09ecb9c9ae5116a6f13614bf2d7c2/src/Aspire.Hosting/ApplicationModel/ContainerFileSystemCallbackAnnotation.cs)

The (absolute) base path to create the new file (and any parent directories) in the container. This path should already exist in the container.

```csharp
public string DestinationPath { get; init; }
```

## Umask

- Name: `Umask`
- Modifiers: `nullable` `get; set`
- Returns: `UnixFileMode?`
- Source: [GitHub](https://github.com/microsoft/aspire/blob/bd20f904cde09ecb9c9ae5116a6f13614bf2d7c2/src/Aspire.Hosting/ApplicationModel/ContainerFileSystemCallbackAnnotation.cs)

The umask to apply to files or folders without an explicit mode permission. If set to null, a default umask value of 0022 (octal) will be used. The umask takes away permissions from the default permission set (rather than granting them).

```csharp
public UnixFileMode? Umask { get; set; }
```

## Remarks

The umask is a bitmask that determines the default permissions for newly created files and directories. The umask value is subtracted (bitwise masked) from the maximum possible default permissions to determine the final permissions. For directories, the umask is subtracted from 0777 (rwxrwxrwx) to get the final permissions and for files it is subtracted from 0666 (rw-rw-rw-). For a umask of 0022, this gives a default folder permission of 0755 (rwxr-xr-x) and a default file permission of 0644 (rw-r--r--).
