# UmamiBuilderExtensions Methods

- Package: [CommunityToolkit.Aspire.Hosting.Umami](/reference/api/csharp/communitytoolkit.aspire.hosting.umami.md)
- Type: [UmamiBuilderExtensions](/reference/api/csharp/communitytoolkit.aspire.hosting.umami/umamibuilderextensions.md)
- Kind: `Methods`
- Members: `2`

Provides extension methods for adding Umami resources to the application model.

## AddUmami(IDistributedApplicationBuilder, string, IResourceBuilder<ParameterResource>, int?)

- Name: `AddUmami(IDistributedApplicationBuilder, string, IResourceBuilder<ParameterResource>, int?)`
- Modifiers: `extension`
- Returns: `IResourceBuilder<UmamiResource>`
- Source: [GitHub](https://github.com/CommunityToolkit/Aspire/blob/d9dc6fc02412d7398c5722840513d99965a6e98f/src/CommunityToolkit.Aspire.Hosting.Umami/UmamiBuilderExtensions.cs#L52-L68)

Adds a Umami resource to the application model. A container is used for local development. The default image is and the tag is .

```csharp
public static class UmamiBuilderExtensions
{
    public static IResourceBuilder<UmamiResource> AddUmami(
        this IDistributedApplicationBuilder builder,
        string name,
        IResourceBuilder<ParameterResource>? secret = null,
        int? port = null)
    {
        // ...
    }
}
```

## Parameters

- `builder` (`IDistributedApplicationBuilder`)
  The `Hosting.IDistributedApplicationBuilder`.
- `name` (`string`)
  The name of the resource. This name will be used as the connection string name when referenced in a dependency.
- `secret` (`IResourceBuilder<ParameterResource>`) `optional`
  The parameter used to provide the app secret for the Umami resource.
- `port` (`int?`) `optional`
  The host port for the Umami app.

## Returns

`IResourceBuilder<UmamiResource>` -- A reference to the `ApplicationModel.IResourceBuilder`1`.

## Remarks

Add a Umami container to the application model and reference it in a .NET project.

```csharp
var builder = DistributedApplication.CreateBuilder(args);

var db = builder.AddPostgres("postgres")
  .AddDatabase("db");
var umami = builder.AddUmami("umami")
  .WithPostgreSQL(db);

builder.Build().Run();
```

## ATS metadata

### ATS export

- Available to Polyglot AppHosts through the Aspire Type System.

## WithPostgreSQL(IResourceBuilder<UmamiResource>, IResourceBuilder<PostgresDatabaseResource>)

- Name: `WithPostgreSQL(IResourceBuilder<UmamiResource>, IResourceBuilder<PostgresDatabaseResource>)`
- Modifiers: `extension`
- Returns: `IResourceBuilder<UmamiResource>`
- Source: [GitHub](https://github.com/CommunityToolkit/Aspire/blob/d9dc6fc02412d7398c5722840513d99965a6e98f/src/CommunityToolkit.Aspire.Hosting.Umami/UmamiBuilderExtensions.cs#L84-L110)

References a `ApplicationModel.PostgresDatabaseResource` as the storage backend for the [UmamiResource](/reference/api/csharp/communitytoolkit.aspire.hosting.umami/umamiresource.md).

```csharp
public static class UmamiBuilderExtensions
{
    public static IResourceBuilder<UmamiResource> WithPostgreSQL(
        this IResourceBuilder<UmamiResource> builder,
        IResourceBuilder<PostgresDatabaseResource> database)
    {
        // ...
    }
}
```

## Parameters

- `builder` (`IResourceBuilder<UmamiResource>`)
  The Umami resource builder.
- `database` (`IResourceBuilder<PostgresDatabaseResource>`)
  The PostgreSQL database resource builder.

## Returns

`IResourceBuilder<UmamiResource>` -- A reference to the `ApplicationModel.IResourceBuilder`1`.

## ATS metadata

### ATS export

- Available to Polyglot AppHosts through the Aspire Type System.
