# AtsCapabilityInfo Properties

- Package: [Aspire.TypeSystem](/reference/api/csharp/aspire.typesystem.md)
- Type: [AtsCapabilityInfo](/reference/api/csharp/aspire.typesystem/atscapabilityinfo.md)
- Kind: `Properties`
- Members: `18`

Represents a discovered [AspireExport] capability.

## CapabilityId

- Name: `CapabilityId`
- Modifiers: `get; init`
- Returns: `string`
- Source: [GitHub](https://github.com/microsoft/aspire/blob/a3766e994fd2cba86c8ac60b8a80268cab7e6383/src/Aspire.TypeSystem/AtsCapabilityInfo.cs)

Gets or sets the capability ID (e.g., "Aspire.Hosting/addRedis").

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

## CapabilityKind

- Name: `CapabilityKind`
- Modifiers: `get; init`
- Returns: [AtsCapabilityKind](/reference/api/csharp/aspire.typesystem/atscapabilitykind.md)
- Source: [GitHub](https://github.com/microsoft/aspire/blob/a3766e994fd2cba86c8ac60b8a80268cab7e6383/src/Aspire.TypeSystem/AtsCapabilityInfo.cs)

Gets or sets the kind of capability (Method, PropertyGetter, PropertySetter, InstanceMethod).

```csharp
public AtsCapabilityKind CapabilityKind { get; init; }
```

## Description

- Name: `Description`
- Modifiers: `nullable` `get; init`
- Returns: `string?`
- Source: [GitHub](https://github.com/microsoft/aspire/blob/a3766e994fd2cba86c8ac60b8a80268cab7e6383/src/Aspire.TypeSystem/AtsCapabilityInfo.cs)

Gets or sets the description of what this capability does.

```csharp
public string? Description { get; init; }
```

## Documentation

- Name: `Documentation`
- Modifiers: `nullable` `get; init`
- Returns: [AtsDocumentationInfo?](/reference/api/csharp/aspire.typesystem/atsdocumentationinfo.md)
- Source: [GitHub](https://github.com/microsoft/aspire/blob/a3766e994fd2cba86c8ac60b8a80268cab7e6383/src/Aspire.TypeSystem/AtsCapabilityInfo.cs)

Gets or sets the XML documentation captured for this capability.

```csharp
public AtsDocumentationInfo? Documentation { get; init; }
```

## ExpandedTargetTypes

- Name: `ExpandedTargetTypes`
- Modifiers: `get; set`
- Returns: [IReadOnlyList<AtsTypeRef>](/reference/api/csharp/aspire.typesystem/atstyperef.md)
- Source: [GitHub](https://github.com/microsoft/aspire/blob/a3766e994fd2cba86c8ac60b8a80268cab7e6383/src/Aspire.TypeSystem/AtsCapabilityInfo.cs)

Gets or sets the expanded list of concrete types this capability applies to. Pre-computed during scanning by resolving interface targets to all implementing types.

```csharp
public IReadOnlyList<AtsTypeRef> ExpandedTargetTypes { get; set; }
```

## Remarks

For flat codegen (Go, C): use this to put methods on each concrete builder. For inheritance codegen (TypeScript, Java): use [AtsCapabilityInfo.TargetTypeId](/reference/api/csharp/aspire.typesystem/atscapabilityinfo/properties.md#targettypeid) instead.

## IsObsolete

- Name: `IsObsolete`
- Modifiers: `get; init`
- Returns: `bool`
- Source: [GitHub](https://github.com/microsoft/aspire/blob/a3766e994fd2cba86c8ac60b8a80268cab7e6383/src/Aspire.TypeSystem/AtsCapabilityInfo.cs)

Gets or sets whether this capability is obsolete.

```csharp
public bool IsObsolete { get; init; }
```

## MethodName

- Name: `MethodName`
- Modifiers: `get; set`
- Returns: `string`
- Source: [GitHub](https://github.com/microsoft/aspire/blob/a3766e994fd2cba86c8ac60b8a80268cab7e6383/src/Aspire.TypeSystem/AtsCapabilityInfo.cs)

Gets or sets the simple method name for generated SDKs (e.g., "addRedis", "isRunMode"). For context type capabilities, this is just the property/method name without the type prefix.

```csharp
public string MethodName { get; set; }
```

## ObsoleteMessage

- Name: `ObsoleteMessage`
- Modifiers: `nullable` `get; init`
- Returns: `string?`
- Source: [GitHub](https://github.com/microsoft/aspire/blob/a3766e994fd2cba86c8ac60b8a80268cab7e6383/src/Aspire.TypeSystem/AtsCapabilityInfo.cs)

Gets or sets the obsolete message for this capability.

```csharp
public string? ObsoleteMessage { get; init; }
```

## OwningTypeName

- Name: `OwningTypeName`
- Modifiers: `nullable` `get; init`
- Returns: `string?`
- Source: [GitHub](https://github.com/microsoft/aspire/blob/a3766e994fd2cba86c8ac60b8a80268cab7e6383/src/Aspire.TypeSystem/AtsCapabilityInfo.cs)

Gets or sets the owning type name for property/method capabilities.

```csharp
public string? OwningTypeName { get; init; }
```

## Remarks

For PropertyGetter, PropertySetter, and InstanceMethod capabilities, this is the type name that owns the property/method (e.g., "ExecutionContext"). For regular Method capabilities, this is null.

## Parameters

- Name: `Parameters`
- Modifiers: `get; init`
- Returns: [IReadOnlyList<AtsParameterInfo>](/reference/api/csharp/aspire.typesystem/atsparameterinfo.md)
- Source: [GitHub](https://github.com/microsoft/aspire/blob/a3766e994fd2cba86c8ac60b8a80268cab7e6383/src/Aspire.TypeSystem/AtsCapabilityInfo.cs)

Gets or sets the parameters for this capability.

```csharp
public IReadOnlyList<AtsParameterInfo> Parameters { get; init; }
```

## QualifiedMethodName

- Name: `QualifiedMethodName`
- Modifiers: `get`
- Returns: `string`
- Source: [GitHub](https://github.com/microsoft/aspire/blob/a3766e994fd2cba86c8ac60b8a80268cab7e6383/src/Aspire.TypeSystem/AtsCapabilityInfo.cs#L278-L280)

Gets the qualified method name combining OwningTypeName and MethodName.

```csharp
public string QualifiedMethodName { get; }
```

## Remarks

Returns "ExecutionContext.isRunMode" for property capabilities, or just "addRedis" for regular method capabilities.

## ReturnsBuilder

- Name: `ReturnsBuilder`
- Modifiers: `get; init`
- Returns: `bool`
- Source: [GitHub](https://github.com/microsoft/aspire/blob/a3766e994fd2cba86c8ac60b8a80268cab7e6383/src/Aspire.TypeSystem/AtsCapabilityInfo.cs)

Gets or sets whether the return type is a builder type.

```csharp
public bool ReturnsBuilder { get; init; }
```

## ReturnType

- Name: `ReturnType`
- Modifiers: `get; init`
- Returns: [AtsTypeRef](/reference/api/csharp/aspire.typesystem/atstyperef.md)
- Source: [GitHub](https://github.com/microsoft/aspire/blob/a3766e994fd2cba86c8ac60b8a80268cab7e6383/src/Aspire.TypeSystem/AtsCapabilityInfo.cs)

Gets or sets the return type reference with full type metadata. Use [AtsConstants.Void](/reference/api/csharp/aspire.typesystem/atsconstants/fields.md#void) TypeId for void return types.

```csharp
public AtsTypeRef ReturnType { get; init; }
```

## RunSyncOnBackgroundThread

- Name: `RunSyncOnBackgroundThread`
- Modifiers: `get; init`
- Returns: `bool`
- Source: [GitHub](https://github.com/microsoft/aspire/blob/a3766e994fd2cba86c8ac60b8a80268cab7e6383/src/Aspire.TypeSystem/AtsCapabilityInfo.cs)

Gets or sets whether this capability's invocation should run on a background thread.

```csharp
public bool RunSyncOnBackgroundThread { get; init; }
```

## SourceLocation

- Name: `SourceLocation`
- Modifiers: `nullable` `get; init`
- Returns: `string?`
- Source: [GitHub](https://github.com/microsoft/aspire/blob/a3766e994fd2cba86c8ac60b8a80268cab7e6383/src/Aspire.TypeSystem/AtsCapabilityInfo.cs)

Gets or sets the source location where this capability is defined.

```csharp
public string? SourceLocation { get; init; }
```

## Remarks

Format: "TypeName.MethodName" or "TypeName.PropertyName" for diagnostics.

## TargetParameterName

- Name: `TargetParameterName`
- Modifiers: `nullable` `get; init`
- Returns: `string?`
- Source: [GitHub](https://github.com/microsoft/aspire/blob/a3766e994fd2cba86c8ac60b8a80268cab7e6383/src/Aspire.TypeSystem/AtsCapabilityInfo.cs)

Gets or sets the name of the target parameter (e.g., "builder", "resource"). This is the first parameter of the method that represents the target/receiver.

```csharp
public string? TargetParameterName { get; init; }
```

## TargetType

- Name: `TargetType`
- Modifiers: `nullable` `get; init`
- Returns: [AtsTypeRef?](/reference/api/csharp/aspire.typesystem/atstyperef.md)
- Source: [GitHub](https://github.com/microsoft/aspire/blob/a3766e994fd2cba86c8ac60b8a80268cab7e6383/src/Aspire.TypeSystem/AtsCapabilityInfo.cs)

Gets or sets the target type reference with full type metadata.

```csharp
public AtsTypeRef? TargetType { get; init; }
```

## TargetTypeId

- Name: `TargetTypeId`
- Modifiers: `nullable` `get; init`
- Returns: `string?`
- Source: [GitHub](https://github.com/microsoft/aspire/blob/a3766e994fd2cba86c8ac60b8a80268cab7e6383/src/Aspire.TypeSystem/AtsCapabilityInfo.cs)

Gets or sets the original (declared) ATS type ID that this capability targets. May be an interface type (e.g., "Aspire.Hosting/IResourceWithEnvironment").

```csharp
public string? TargetTypeId { get; init; }
```
