# ZitadelHostingExtensions Methods

- Package: [CommunityToolkit.Aspire.Hosting.Zitadel](/reference/api/csharp/communitytoolkit.aspire.hosting.zitadel.md)
- Type: [ZitadelHostingExtensions](/reference/api/csharp/communitytoolkit.aspire.hosting.zitadel/zitadelhostingextensions.md)
- Kind: `Methods`
- Members: `4`

Provides extension methods for adding Zitadel to an `Hosting.IDistributedApplicationBuilder`.

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

- Name: `AddZitadel(IDistributedApplicationBuilder, string, int?, IResourceBuilder<ParameterResource>, IResourceBuilder<ParameterResource>, IResourceBuilder<ParameterResource>)`
- Modifiers: `extension`
- Returns: `IResourceBuilder<ZitadelResource>`
- Source: [GitHub](https://github.com/CommunityToolkit/Aspire/blob/d9dc6fc02412d7398c5722840513d99965a6e98f/src/CommunityToolkit.Aspire.Hosting.Zitadel/ZitadelHostingExtensions.cs#L34-L138)

Adds a Zitadel container resource to the `Hosting.IDistributedApplicationBuilder`.

```csharp
public static class ZitadelHostingExtensions
{
    public static IResourceBuilder<ZitadelResource> AddZitadel(
        this IDistributedApplicationBuilder builder,
        string name,
        int? port = null,
        IResourceBuilder<ParameterResource>? username = null,
        IResourceBuilder<ParameterResource>? password = null,
        IResourceBuilder<ParameterResource>? masterKey = null)
    {
        // ...
    }
}
```

## Parameters

- `builder` (`IDistributedApplicationBuilder`)
  The `Hosting.IDistributedApplicationBuilder` to add the Zitadel container to.
- `name` (`string`)
  The name of the resource. This name will be used as the connection string name when referenced in a dependency.
- `port` (`int?`) `optional`
  The host port used when launching the container. If `null` a random port will be assigned
- `username` (`IResourceBuilder<ParameterResource>`) `optional`
  An optional parameter to set a username for the admin account, if `null` will auto generate one.
- `password` (`IResourceBuilder<ParameterResource>`) `optional`
  An optional parameter to set a password for the admin account, if `null` will auto generate one.
- `masterKey` (`IResourceBuilder<ParameterResource>`) `optional`
  An optional parameter to set the masterkey, if `null` will auto generate one.

## ATS metadata

### ATS export

- Available to Polyglot AppHosts through the Aspire Type System.

## WithDatabase(IResourceBuilder<ZitadelResource>, IResourceBuilder<PostgresServerResource>, string?)

- Name: `WithDatabase(IResourceBuilder<ZitadelResource>, IResourceBuilder<PostgresServerResource>, string?)`
- Modifiers: `extension`
- Returns: `IResourceBuilder<ZitadelResource>`
- Source: [GitHub](https://github.com/CommunityToolkit/Aspire/blob/d9dc6fc02412d7398c5722840513d99965a6e98f/src/CommunityToolkit.Aspire.Hosting.Zitadel/ZitadelHostingExtensions.cs#L154-L157)

Adds database support to the Zitadel resource.

```csharp
public static class ZitadelHostingExtensions
{
    public static IResourceBuilder<ZitadelResource> WithDatabase(
        this IResourceBuilder<ZitadelResource> builder,
        IResourceBuilder<PostgresServerResource> server,
        string? databaseName = null)
    {
        // ...
    }
}
```

## Parameters

- `builder` (`IResourceBuilder<ZitadelResource>`)
  The Zitadel resource to add database support to.
- `server` (`IResourceBuilder<PostgresServerResource>`)
  The Postgres server resource to use for the database.
- `databaseName` (`string?`) `optional`
  An optional name for the database Zitadel will use, if left empty will default to `"zitadel-db"`.

## ATS metadata

### ATS export

- Available to Polyglot AppHosts through the Aspire Type System.

## WithDatabase(IResourceBuilder<ZitadelResource>, IResourceBuilder<PostgresDatabaseResource>)

- Name: `WithDatabase(IResourceBuilder<ZitadelResource>, IResourceBuilder<PostgresDatabaseResource>)`
- Modifiers: `extension`
- Returns: `IResourceBuilder<ZitadelResource>`
- Source: [GitHub](https://github.com/CommunityToolkit/Aspire/blob/d9dc6fc02412d7398c5722840513d99965a6e98f/src/CommunityToolkit.Aspire.Hosting.Zitadel/ZitadelHostingExtensions.cs#L168-L181)

Adds database support to the Zitadel resource.

```csharp
public static class ZitadelHostingExtensions
{
    public static IResourceBuilder<ZitadelResource> WithDatabase(
        this IResourceBuilder<ZitadelResource> builder,
        IResourceBuilder<PostgresDatabaseResource> database)
    {
        // ...
    }
}
```

## Parameters

- `builder` (`IResourceBuilder<ZitadelResource>`)
  The Zitadel resource to add database support to.
- `database` (`IResourceBuilder<PostgresDatabaseResource>`)
  The Postgres database resource to use for the database.

## ATS metadata

### ATS export

- Available to Polyglot AppHosts through the Aspire Type System.

## WithExternalDomain(IResourceBuilder<ZitadelResource>, string)

- Name: `WithExternalDomain(IResourceBuilder<ZitadelResource>, string)`
- Modifiers: `extension`
- Returns: `IResourceBuilder<ZitadelResource>`
- Source: [GitHub](https://github.com/CommunityToolkit/Aspire/blob/d9dc6fc02412d7398c5722840513d99965a6e98f/src/CommunityToolkit.Aspire.Hosting.Zitadel/ZitadelHostingExtensions.cs#L197-L199)

Configures the external domain for the Zitadel resource. This overrides the default domain set in [ZitadelHostingExtensions.AddZitadel(IDistributedApplicationBuilder, string, int?, IResourceBuilder<ParameterResource>, IResourceBuilder<ParameterResource>, IResourceBuilder<ParameterResource>)](/reference/api/csharp/communitytoolkit.aspire.hosting.zitadel/zitadelhostingextensions/methods.md#addzitadel-idistributedapplicationbuilder-string-int-iresourcebuilder-parameterresource-iresourcebuilder-parameterresource-iresourcebuilder-parameterresource).

```csharp
public static class ZitadelHostingExtensions
{
    public static IResourceBuilder<ZitadelResource> WithExternalDomain(
        this IResourceBuilder<ZitadelResource> builder,
        string externalDomain)
    {
        // ...
    }
}
```

## Parameters

- `builder` (`IResourceBuilder<ZitadelResource>`)
  The Zitadel resource builder.
- `externalDomain` (`string`)
  The external domain to use (e.g., "auth.example.com"). Cannot be null or empty.

## Returns

`IResourceBuilder<ZitadelResource>` -- The resource builder for chaining.

## Exceptions

- `ArgumentException` -- Thrown if `externalDomain` is null or whitespace.

## ATS metadata

### ATS export

- Available to Polyglot AppHosts through the Aspire Type System.
