-
+
Docs
diff --git a/src/frontend/src/content/docs/community/translation-guide.mdx b/src/frontend/src/content/docs/community/translation-guide.mdx
index f3760706a..616cab481 100644
--- a/src/frontend/src/content/docs/community/translation-guide.mdx
+++ b/src/frontend/src/content/docs/community/translation-guide.mdx
@@ -1,5 +1,6 @@
---
title: Translation guide for aspire.dev
+description: "Learn how to translate aspire.dev pages: set up your locale, run Lunaria locally, follow the style guide, and open localization pull requests for the Aspire docs."
tableOfContents:
minHeadingLevel: 2
maxHeadingLevel: 3
diff --git a/src/frontend/src/content/docs/community/videos.mdx b/src/frontend/src/content/docs/community/videos.mdx
index 4a2c00e91..0def8abcd 100644
--- a/src/frontend/src/content/docs/community/videos.mdx
+++ b/src/frontend/src/content/docs/community/videos.mdx
@@ -1,6 +1,7 @@
---
-title: Community Videos 📺
-description: A collection of community videos showcasing Aspire in action.
+title: Community Videos 📺
+seoTitle: Aspire community videos, AspiriFridays, and tutorials
+description: Watch community videos, AspiriFridays livestreams, and developer-led walkthroughs showing Aspire integrations, dashboards, and deployment workflows in action.
tableOfContents: true
lastUpdated: false
editUrl: false
diff --git a/src/frontend/src/content/docs/da/index.mdx b/src/frontend/src/content/docs/da/index.mdx
index d9ca51b85..8ef96e4f7 100644
--- a/src/frontend/src/content/docs/da/index.mdx
+++ b/src/frontend/src/content/docs/da/index.mdx
@@ -11,7 +11,7 @@ prev: false
next: false
banner:
content: |
- 🚀 Aspire 13.3 er udgivet! — Se hvad der er nyt i Aspire 13.3.
+
🚀 Aspire 13.4 er udgivet! —
Se hvad der er nyt i Aspire 13.4.
hero:
tagline: Din stack, forenklet.
Orkestrér frontends, APIs, containere og databaser ubesværet—ingen omskrivninger, ingen grænser. Udvid Aspire til at drive ethvert projekt.
image:
diff --git a/src/frontend/src/content/docs/dashboard/ai-coding-agents.mdx b/src/frontend/src/content/docs/dashboard/ai-coding-agents.mdx
index 09e89ce91..57862efee 100644
--- a/src/frontend/src/content/docs/dashboard/ai-coding-agents.mdx
+++ b/src/frontend/src/content/docs/dashboard/ai-coding-agents.mdx
@@ -1,6 +1,7 @@
---
title: Dashboard and AI coding agents
-description: Learn how AI coding agents use the Aspire CLI and MCP server to fetch logs and telemetry from the Aspire dashboard when adding features and fixing bugs.
+seoTitle: Aspire dashboard and AI coding agents for distributed apps
+description: Learn how AI coding agents use the Aspire CLI and MCP server to read logs and telemetry from the Aspire dashboard, diagnose failures, and propose code changes.
---
import { Aside, Steps } from '@astrojs/starlight/components';
diff --git a/src/frontend/src/content/docs/dashboard/apis.mdx b/src/frontend/src/content/docs/dashboard/apis.mdx
index 3c951dc43..a6e1e205a 100644
--- a/src/frontend/src/content/docs/dashboard/apis.mdx
+++ b/src/frontend/src/content/docs/dashboard/apis.mdx
@@ -1,6 +1,7 @@
---
title: APIs and data access
-description: Reference for the Aspire dashboard write and read APIs, including OTLP endpoints, HTTP telemetry API, and Aspire CLI commands.
+seoTitle: Aspire dashboard APIs and OpenTelemetry data access
+description: Reference for the Aspire dashboard read and write APIs — OTLP endpoints, HTTP telemetry APIs, gRPC resource service, and authentication for programmatic access.
---
import { Aside } from '@astrojs/starlight/components';
diff --git a/src/frontend/src/content/docs/dashboard/configuration.mdx b/src/frontend/src/content/docs/dashboard/configuration.mdx
index 68d0f5d74..2ea5a498a 100644
--- a/src/frontend/src/content/docs/dashboard/configuration.mdx
+++ b/src/frontend/src/content/docs/dashboard/configuration.mdx
@@ -1,6 +1,6 @@
---
-title: Aspire dashboard configuration
-description: Aspire dashboard configuration options
+title: Aspire dashboard configuration reference
+description: Configuration reference for the Aspire dashboard — OTLP endpoints, frontend authentication, resource service, telemetry limits, and standalone deployment options.
---
import { Aside } from '@astrojs/starlight/components';
@@ -282,6 +282,7 @@ Telemetry limits have different scopes depending upon the telemetry type:
| `Dashboard:AI:Disabled`
Default: `true` | Reserved for future use. The in-dashboard GitHub Copilot UI was removed in Aspire 13.3. AI coding agents can still access telemetry data via the [Aspire CLI and MCP server](/dashboard/ai-coding-agents/). |
| `Dashboard:UI:DisableResourceGraph`
Default: `false` | Disables displaying the resource graph UI in the dashboard. |
| `Dashboard:UI:DisableImport`
Default: `false` | Disables the telemetry import UI in the dashboard. |
+| `Dashboard:UI:DisableAgentHelp`
Default: `false` | Disables the **AI Agents** button in the dashboard header. When `false`, a button is shown in the header that opens a dialog with instructions for using AI coding agents with the dashboard. |
## Next steps
diff --git a/src/frontend/src/content/docs/dashboard/enable-browser-telemetry.mdx b/src/frontend/src/content/docs/dashboard/enable-browser-telemetry.mdx
index ad86055dd..f381161cb 100644
--- a/src/frontend/src/content/docs/dashboard/enable-browser-telemetry.mdx
+++ b/src/frontend/src/content/docs/dashboard/enable-browser-telemetry.mdx
@@ -1,6 +1,8 @@
---
title: Enable browser telemetry
-description: Learn how to enable browser telemetry in the Aspire dashboard.
+seoTitle: Enable browser telemetry in the Aspire dashboard today
+description: Enable browser telemetry in the Aspire dashboard to capture client-side OpenTelemetry logs, traces, and metrics from front-end JavaScript apps.
+
---
import LearnMore from '@components/LearnMore.astro';
diff --git a/src/frontend/src/content/docs/dashboard/explore.mdx b/src/frontend/src/content/docs/dashboard/explore.mdx
index 9701ba241..383e61f67 100644
--- a/src/frontend/src/content/docs/dashboard/explore.mdx
+++ b/src/frontend/src/content/docs/dashboard/explore.mdx
@@ -1,6 +1,6 @@
---
-title: Explore Aspire dashboard
-description: Explore the Aspire dashboard features through the Aspire Starter app.
+title: Explore the Aspire dashboard with the Starter app
+description: Explore Aspire dashboard features — resource graph, console logs, traces, metrics, and the GenAI visualizer — using the Aspire Starter app as a guided tour.
---
import { Image } from 'astro:assets';
diff --git a/src/frontend/src/content/docs/dashboard/index.mdx b/src/frontend/src/content/docs/dashboard/index.mdx
index 2413337cb..f40e68950 100644
--- a/src/frontend/src/content/docs/dashboard/index.mdx
+++ b/src/frontend/src/content/docs/dashboard/index.mdx
@@ -1,12 +1,12 @@
---
-title: Aspire Dashboard
+title: Aspire dashboard for distributed apps
prev:
link: /integrations/
label: Integrations
next:
link: /deployment/
label: Deployment
-description: Monitor, debug, and manage your distributed applications with the Aspire Dashboard — real-time telemetry, structured logs, traces, and AI-powered insights.
+description: Monitor, debug, and manage your distributed applications with the Aspire dashboard — real-time telemetry, resource graphs, console logs, and OpenTelemetry support.
editUrl: false
tableOfContents: false
pageActions: false
diff --git a/src/frontend/src/content/docs/dashboard/microsoft-collected-dashboard-telemetry.mdx b/src/frontend/src/content/docs/dashboard/microsoft-collected-dashboard-telemetry.mdx
index fdff8f2c6..57bbcf6c5 100644
--- a/src/frontend/src/content/docs/dashboard/microsoft-collected-dashboard-telemetry.mdx
+++ b/src/frontend/src/content/docs/dashboard/microsoft-collected-dashboard-telemetry.mdx
@@ -1,7 +1,8 @@
---
title: Microsoft-collected dashboard telemetry
+seoTitle: Microsoft-collected Aspire dashboard telemetry overview
next: false
-description: Learn about what telemetry the Aspire dashboard sends and how to opt out.
+description: Learn what telemetry the Aspire dashboard sends to Microsoft, how the data is used to improve the product, and how to opt out in standalone and AppHost deployments.
---
import OsAwareTabs from '@components/OsAwareTabs.astro';
diff --git a/src/frontend/src/content/docs/dashboard/overview.mdx b/src/frontend/src/content/docs/dashboard/overview.mdx
index c118fff8f..8777c3707 100644
--- a/src/frontend/src/content/docs/dashboard/overview.mdx
+++ b/src/frontend/src/content/docs/dashboard/overview.mdx
@@ -1,6 +1,6 @@
---
-title: Aspire dashboard overview
-description: Overview of Aspire dashboard and getting started.
+title: Aspire dashboard overview and getting started
+description: Overview of the Aspire dashboard — what it shows, how the AppHost wires it up, and how to start using it for telemetry, resource management, and debugging.
---
import { Image } from 'astro:assets';
diff --git a/src/frontend/src/content/docs/dashboard/security-considerations.mdx b/src/frontend/src/content/docs/dashboard/security-considerations.mdx
index 46e9937b5..1a9467c8a 100644
--- a/src/frontend/src/content/docs/dashboard/security-considerations.mdx
+++ b/src/frontend/src/content/docs/dashboard/security-considerations.mdx
@@ -1,6 +1,6 @@
---
title: Aspire dashboard security considerations
-description: Security considerations for running the Aspire dashboard
+description: Security considerations for running the Aspire dashboard — authentication, network exposure, OTLP and resource service endpoints, and standalone hardening guidance.
---
import OsAwareTabs from '@components/OsAwareTabs.astro';
diff --git a/src/frontend/src/content/docs/dashboard/standalone-for-nodejs.mdx b/src/frontend/src/content/docs/dashboard/standalone-for-nodejs.mdx
index 736a08671..ae93b0c02 100644
--- a/src/frontend/src/content/docs/dashboard/standalone-for-nodejs.mdx
+++ b/src/frontend/src/content/docs/dashboard/standalone-for-nodejs.mdx
@@ -1,6 +1,6 @@
---
-title: Use the Aspire dashboard with Node.js apps
-description: How to use the Aspire Dashboard in a Node.js application.
+title: Aspire dashboard standalone for Node.js apps
+description: Use the Aspire dashboard standalone with Node.js applications — wire up OpenTelemetry, point OTLP exporters at the dashboard, and visualize logs, traces, and metrics.
---
diff --git a/src/frontend/src/content/docs/dashboard/standalone-for-python.mdx b/src/frontend/src/content/docs/dashboard/standalone-for-python.mdx
index c05c794e9..6e03702de 100644
--- a/src/frontend/src/content/docs/dashboard/standalone-for-python.mdx
+++ b/src/frontend/src/content/docs/dashboard/standalone-for-python.mdx
@@ -1,6 +1,6 @@
---
-title: Use the Aspire dashboard with Python apps
-description: How to use the Aspire Dashboard in a Python application.
+title: Aspire dashboard standalone for Python apps
+description: Use the Aspire dashboard standalone with Python applications — configure OpenTelemetry exporters, send OTLP data to the dashboard, and inspect telemetry in real time.
---
import { Image } from 'astro:assets';
diff --git a/src/frontend/src/content/docs/dashboard/standalone.mdx b/src/frontend/src/content/docs/dashboard/standalone.mdx
index 9861d38d4..e8832d74e 100644
--- a/src/frontend/src/content/docs/dashboard/standalone.mdx
+++ b/src/frontend/src/content/docs/dashboard/standalone.mdx
@@ -1,6 +1,6 @@
---
-title: Standalone Aspire dashboard
-description: How to use the Aspire dashboard standalone.
+title: Run the Aspire dashboard standalone
+description: Run the Aspire dashboard as a standalone container or executable — collect OTLP telemetry from any language, then view logs, traces, and metrics without the AppHost.
---
import { Image } from 'astro:assets';
diff --git a/src/frontend/src/content/docs/de/index.mdx b/src/frontend/src/content/docs/de/index.mdx
index 7b0871904..da9dd1177 100644
--- a/src/frontend/src/content/docs/de/index.mdx
+++ b/src/frontend/src/content/docs/de/index.mdx
@@ -11,7 +11,7 @@ prev: false
next: false
banner:
content: |
-
🚀 Aspire 13.3 wurde veröffentlicht! —
Was ist neu in Aspire 13.3.
+
🚀 Aspire 13.4 wurde veröffentlicht! —
Was ist neu in Aspire 13.4.
hero:
tagline: Dein Stack, vereinfacht.
Orchestriere Frontends, APIs, Container und Datenbanken mühelos—ohne Umschreiben, ohne Grenzen. Erweitere Aspire, um jedes Projekt anzutreiben.
image:
diff --git a/src/frontend/src/content/docs/deployment/app-lifecycle.mdx b/src/frontend/src/content/docs/deployment/app-lifecycle.mdx
index e6af5307d..833298428 100644
--- a/src/frontend/src/content/docs/deployment/app-lifecycle.mdx
+++ b/src/frontend/src/content/docs/deployment/app-lifecycle.mdx
@@ -1,6 +1,7 @@
---
title: Example app lifecycle workflow
-description: Follow a worked example that uses GitHub Actions to publish Aspire artifacts and Docker Compose to deploy them later.
+seoTitle: Aspire deployment lifecycle workflow from dev to prod
+description: Follow a worked example that uses GitHub Actions to publish Aspire artifacts and Docker Compose to deploy — a complete deployment lifecycle from commit to production.
---
import { Aside, FileTree, Steps } from '@astrojs/starlight/components';
diff --git a/src/frontend/src/content/docs/deployment/azure/app-service.mdx b/src/frontend/src/content/docs/deployment/azure/app-service.mdx
index 43b63176d..0501bc5e9 100644
--- a/src/frontend/src/content/docs/deployment/azure/app-service.mdx
+++ b/src/frontend/src/content/docs/deployment/azure/app-service.mdx
@@ -1,6 +1,7 @@
---
title: Deploy to Azure App Service
-description: Learn how to deploy Aspire applications to Azure App Service with the aspire deploy command.
+seoTitle: Deploy Aspire AppHost projects to Azure App Service
+description: "Deploy Aspire applications to Azure App Service with the `aspire deploy` command — plans, containers, configuration, slot deployments, and CI/CD integration."
---
import { Badge, Tabs, TabItem } from '@astrojs/starlight/components';
diff --git a/src/frontend/src/content/docs/deployment/azure/azure-developer-cli.mdx b/src/frontend/src/content/docs/deployment/azure/azure-developer-cli.mdx
index f613087da..49474ae77 100644
--- a/src/frontend/src/content/docs/deployment/azure/azure-developer-cli.mdx
+++ b/src/frontend/src/content/docs/deployment/azure/azure-developer-cli.mdx
@@ -1,6 +1,7 @@
---
title: Use existing azd workflows
-description: Learn the Aspire-specific compatibility details that still matter when you keep an existing Azure Developer CLI workflow.
+seoTitle: Use Aspire with existing Azure Developer CLI workflows
+description: Learn the Aspire-specific compatibility details that still matter when you keep an existing Azure Developer CLI (azd) workflow — manifest handoff, hooks, and parameters.
next: false
tableOfContents: false
topic: deployment
diff --git a/src/frontend/src/content/docs/deployment/azure/azure-security-best-practices.mdx b/src/frontend/src/content/docs/deployment/azure/azure-security-best-practices.mdx
index 31db78f90..8a9722b1e 100644
--- a/src/frontend/src/content/docs/deployment/azure/azure-security-best-practices.mdx
+++ b/src/frontend/src/content/docs/deployment/azure/azure-security-best-practices.mdx
@@ -1,7 +1,7 @@
---
-title: Azure security best practices for Aspire deployments
+title: "Aspire on Azure: security best practices"
next: false
-description: Learn how to harden Aspire deployments to Azure with private networking, managed identities, secret management, and monitoring.
+description: Harden Aspire deployments to Azure with private networking, managed identities, secret stores, Key Vault references, and policy guardrails for production workloads.
---
import { Tabs, TabItem } from '@astrojs/starlight/components';
diff --git a/src/frontend/src/content/docs/deployment/azure/container-apps.mdx b/src/frontend/src/content/docs/deployment/azure/container-apps.mdx
index 6735fccda..08208b90f 100644
--- a/src/frontend/src/content/docs/deployment/azure/container-apps.mdx
+++ b/src/frontend/src/content/docs/deployment/azure/container-apps.mdx
@@ -1,6 +1,7 @@
---
title: Deploy to Azure Container Apps
-description: Learn how to deploy Aspire applications to Azure Container Apps with the aspire deploy command.
+seoTitle: Deploy Aspire apps to Azure Container Apps with azd
+description: "Deploy Aspire applications to Azure Container Apps with the `aspire deploy` command — environments, revisions, scaling, ingress, and secret-backed configuration."
---
import { Tabs, TabItem } from '@astrojs/starlight/components';
diff --git a/src/frontend/src/content/docs/deployment/azure/index.mdx b/src/frontend/src/content/docs/deployment/azure/index.mdx
index 889132f40..0182a367b 100644
--- a/src/frontend/src/content/docs/deployment/azure/index.mdx
+++ b/src/frontend/src/content/docs/deployment/azure/index.mdx
@@ -1,6 +1,7 @@
---
title: Deploy to Azure
-description: Learn how Azure deployment works in Aspire, the shared prerequisites, and how to choose between Azure Container Apps and Azure App Service.
+seoTitle: Deploy Aspire apps to Azure with the Azure Developer CLI
+description: Learn how Azure deployment works in Aspire, the shared prerequisites, and how to choose between Azure App Service, Container Apps, and AKS for production workloads.
---
import { CardGrid, LinkCard, Steps } from '@astrojs/starlight/components';
diff --git a/src/frontend/src/content/docs/deployment/azure/manifest-format.mdx b/src/frontend/src/content/docs/deployment/azure/manifest-format.mdx
index 3372f6c43..766602d45 100644
--- a/src/frontend/src/content/docs/deployment/azure/manifest-format.mdx
+++ b/src/frontend/src/content/docs/deployment/azure/manifest-format.mdx
@@ -1,6 +1,7 @@
---
title: Legacy deployment manifest format
-description: Learn when the legacy Aspire deployment manifest still matters and why most deployments should treat it as an implementation detail.
+seoTitle: Aspire legacy deployment manifest format reference
+description: Learn when the legacy Aspire deployment manifest still matters and why most deployments should treat it as an intermediate artifact for tooling and migration support.
next: false
tableOfContents: false
topic: deployment
diff --git a/src/frontend/src/content/docs/deployment/ci-cd.mdx b/src/frontend/src/content/docs/deployment/ci-cd.mdx
index eb348d1a5..aeb661ca8 100644
--- a/src/frontend/src/content/docs/deployment/ci-cd.mdx
+++ b/src/frontend/src/content/docs/deployment/ci-cd.mdx
@@ -1,6 +1,7 @@
---
title: CI/CD overview
-description: Use the Aspire CLI as the source of truth in CI/CD and design workflows around environments, parameters, and target-specific deployment guidance.
+seoTitle: Aspire CI/CD overview, deployment, and release patterns
+description: Use the Aspire CLI as the source of truth in CI/CD and design workflows around environments, parameters, secrets, container registries, and reproducible deployments.
---
import { CardGrid, LinkCard, Steps } from '@astrojs/starlight/components';
diff --git a/src/frontend/src/content/docs/deployment/custom-deployments.mdx b/src/frontend/src/content/docs/deployment/custom-deployments.mdx
index f9d8ccad8..257478541 100644
--- a/src/frontend/src/content/docs/deployment/custom-deployments.mdx
+++ b/src/frontend/src/content/docs/deployment/custom-deployments.mdx
@@ -1,6 +1,7 @@
---
title: Building custom deployment pipelines
-description: Learn how to build container images from your Aspire resources and create custom deployment pipelines.
+seoTitle: Build custom Aspire deployment pipelines for your apps
+description: Build container images from your Aspire resources and create custom deployment pipelines — extend publishing, target new platforms, and integrate with existing CD tools.
---
import { Aside, Tabs, TabItem } from '@astrojs/starlight/components';
diff --git a/src/frontend/src/content/docs/deployment/deploy-with-aspire.mdx b/src/frontend/src/content/docs/deployment/deploy-with-aspire.mdx
index 44f800d93..86649c873 100644
--- a/src/frontend/src/content/docs/deployment/deploy-with-aspire.mdx
+++ b/src/frontend/src/content/docs/deployment/deploy-with-aspire.mdx
@@ -1,6 +1,6 @@
---
-title: Deploy with Aspire
-description: 'Learn how Aspire deployment works: targets add pipeline steps, commands enter the pipeline, and compute environments, parameters, and environments shape each run.'
+title: How Aspire deployment works
+description: Learn how Aspire deployment works — targets add pipeline steps, commands enter the pipeline, and components compose into a publishable artifact for any environment.
---
import {
diff --git a/src/frontend/src/content/docs/deployment/deployment-state-caching.mdx b/src/frontend/src/content/docs/deployment/deployment-state-caching.mdx
index 596535b16..d3dd3f182 100644
--- a/src/frontend/src/content/docs/deployment/deployment-state-caching.mdx
+++ b/src/frontend/src/content/docs/deployment/deployment-state-caching.mdx
@@ -1,6 +1,7 @@
---
title: Deployment state caching
-description: Learn how the aspire deploy command manages deployment state through cached configuration files.
+seoTitle: Aspire deployment state caching across publish runs
+description: "Learn how the `aspire deploy` command manages deployment state through cached configuration files — keys, invalidation, and per-environment override behavior."
---
import { Aside, Steps } from '@astrojs/starlight/components';
diff --git a/src/frontend/src/content/docs/deployment/docker-compose.mdx b/src/frontend/src/content/docs/deployment/docker-compose.mdx
index 5dda9d57e..954527e64 100644
--- a/src/frontend/src/content/docs/deployment/docker-compose.mdx
+++ b/src/frontend/src/content/docs/deployment/docker-compose.mdx
@@ -1,6 +1,7 @@
---
title: Deploy to Docker Compose
-description: Learn how to publish and deploy your Aspire application using Docker Compose with Docker or Podman.
+seoTitle: Deploy Aspire apps with Docker Compose to any host
+description: Publish and deploy your Aspire application using Docker Compose with Docker or Podman — generate compose files, build images, and orchestrate multi-service production runs.
---
import { Aside, Steps, Tabs, TabItem } from '@astrojs/starlight/components';
diff --git a/src/frontend/src/content/docs/deployment/environments.mdx b/src/frontend/src/content/docs/deployment/environments.mdx
index 669b62f01..d0123b14e 100644
--- a/src/frontend/src/content/docs/deployment/environments.mdx
+++ b/src/frontend/src/content/docs/deployment/environments.mdx
@@ -1,6 +1,7 @@
---
title: Environments
-description: Learn how to use Aspire environments to configure your application for development, staging, and production deployments.
+seoTitle: Aspire deployment environments and target configuration
+description: Use Aspire environments to configure your application for development, staging, and production — parameters, secrets, container tags, and per-environment overrides.
---
import { Aside, Steps, Tabs, TabItem } from '@astrojs/starlight/components';
diff --git a/src/frontend/src/content/docs/deployment/index.mdx b/src/frontend/src/content/docs/deployment/index.mdx
index b1ec0c595..4d2fc28ea 100644
--- a/src/frontend/src/content/docs/deployment/index.mdx
+++ b/src/frontend/src/content/docs/deployment/index.mdx
@@ -1,12 +1,12 @@
---
-title: Aspire Deployment
+title: Aspire deployment overview
prev:
link: /dashboard/
label: Dashboard
next:
link: /reference/overview/
label: Reference
-description: Ship your Aspire applications to Azure, Docker, Kubernetes, and beyond — with confidence and consistency.
+description: Ship your Aspire applications to Azure, Docker, Kubernetes, and beyond — choose a target, publish artifacts, and deploy with the Aspire CLI from a single AppHost.
editUrl: false
tableOfContents: false
pageActions: false
diff --git a/src/frontend/src/content/docs/deployment/javascript-apps.mdx b/src/frontend/src/content/docs/deployment/javascript-apps.mdx
index 75685c5bf..37dcc23f6 100644
--- a/src/frontend/src/content/docs/deployment/javascript-apps.mdx
+++ b/src/frontend/src/content/docs/deployment/javascript-apps.mdx
@@ -1,6 +1,7 @@
---
title: Deploy JavaScript apps
-description: Learn the main production deployment models for JavaScript app resources in Aspire.
+seoTitle: Deploy Aspire JavaScript apps with the Aspire AppHost
+description: Learn the main production deployment models for JavaScript app resources in Aspire — Next.js, Vite, SSR frameworks, container images, and CDN-fronted hosting targets.
---
import { Aside, TabItem, Tabs } from '@astrojs/starlight/components';
diff --git a/src/frontend/src/content/docs/deployment/kubernetes-gateway-aks.mdx b/src/frontend/src/content/docs/deployment/kubernetes-gateway-aks.mdx
index 367835c19..32308ee91 100644
--- a/src/frontend/src/content/docs/deployment/kubernetes-gateway-aks.mdx
+++ b/src/frontend/src/content/docs/deployment/kubernetes-gateway-aks.mdx
@@ -1,6 +1,7 @@
---
title: Configure Gateway API on AKS
-description: Learn how to expose .NET Aspire services on AKS using Kubernetes Gateway API with Application Gateway for Containers (AGC) and automatic TLS via HTTP-01.
+seoTitle: Configure Gateway API on AKS for Aspire deployments
+description: Expose .NET Aspire services on AKS using Kubernetes Gateway API with Application Gateway for Containers — routing, TLS, and per-resource gateway annotations.
sidebar:
badge:
text: Preview
@@ -19,6 +20,10 @@ Gateway API with HTTP-01 is the **recommended approach** for TLS on AKS because:
- **No Azure DNS zone or managed identity needed** — significantly simpler infrastructure than DNS-01.
- **Works with any domain** — including the auto-assigned AGC FQDN (`*.alb.azure.com`), your own custom domain, or even without a pre-existing DNS zone.
+
+**Using `AddAzureKubernetesEnvironment`?** The integrated walkthrough at [Deploy to AKS — Expose your app to the internet](/deployment/kubernetes/aks/#expose-your-app-to-the-internet) covers Gateway API + AGC + cert-manager (HTTP-01) end to end with the Aspire-provisioned cluster. Use this page only if you have a pre-existing AKS cluster that wasn't provisioned by Aspire.
+
+
This guide uses a **bring-your-own-cluster** model where you provision and
manage the AKS cluster and container registry yourself. If you want Aspire to
diff --git a/src/frontend/src/content/docs/deployment/kubernetes-ingress-aks.mdx b/src/frontend/src/content/docs/deployment/kubernetes-ingress-aks.mdx
index 8977ea5e7..bee769c3a 100644
--- a/src/frontend/src/content/docs/deployment/kubernetes-ingress-aks.mdx
+++ b/src/frontend/src/content/docs/deployment/kubernetes-ingress-aks.mdx
@@ -1,6 +1,7 @@
---
title: Configure Ingress on AKS
-description: Learn how to configure Kubernetes Ingress on AKS with Application Gateway for Containers and automatic TLS via cert-manager.
+seoTitle: Configure Ingress on AKS for Aspire AppHost deployments
+description: Configure Kubernetes Ingress on AKS with Application Gateway for Containers and automatic TLS — route Aspire services, manage hostnames, and harden public exposure.
sidebar:
badge:
text: Preview
@@ -15,6 +16,10 @@ This walkthrough shows how to use `AddIngress` to expose .NET Aspire services on
Azure Kubernetes Service (AKS) with **Application Gateway for Containers (AGC)**
and automatic TLS certificate provisioning via **cert-manager** DNS-01 challenges.
+
+**Using `AddAzureKubernetesEnvironment`?** The integrated walkthrough at [Deploy to AKS — Expose your app to the internet](/deployment/kubernetes/aks/#expose-your-app-to-the-internet) covers AGC + cert-manager end to end without any of the manual `az aks`, `az network alb`, or `helm install` ceremony below. Use this page only if you have a pre-existing AKS cluster that wasn't provisioned by Aspire, or if you need DNS-01 certificate issuance against an Azure DNS zone.
+
+
This guide uses a **bring-your-own-cluster** model where you provision and
manage the AKS cluster, container registry, and DNS zone yourself. If you
diff --git a/src/frontend/src/content/docs/deployment/kubernetes-ingress.mdx b/src/frontend/src/content/docs/deployment/kubernetes-ingress.mdx
index f192d4f99..67663e785 100644
--- a/src/frontend/src/content/docs/deployment/kubernetes-ingress.mdx
+++ b/src/frontend/src/content/docs/deployment/kubernetes-ingress.mdx
@@ -15,7 +15,11 @@ Aspire provides first-class APIs for defining Ingress and Gateway API resources
This guide covers exposing services to external traffic. For the basics of
deploying to Kubernetes with Aspire, see [Deploy to
- Kubernetes](/deployment/kubernetes/).
+ Kubernetes](/deployment/kubernetes/). If you're targeting AKS via
+ [`AddAzureKubernetesEnvironment`](/deployment/kubernetes/aks/), the
+ integrated AGC + cert-manager walkthrough lives in
+ [Deploy to AKS](/deployment/kubernetes/aks/#expose-your-app-to-the-internet)
+ and is the recommended path for that scenario.
## Ingress vs. Gateway API
diff --git a/src/frontend/src/content/docs/deployment/kubernetes.mdx b/src/frontend/src/content/docs/deployment/kubernetes.mdx
index f8d45ef29..eb24ab0b7 100644
--- a/src/frontend/src/content/docs/deployment/kubernetes.mdx
+++ b/src/frontend/src/content/docs/deployment/kubernetes.mdx
@@ -1,6 +1,7 @@
---
title: Deploy to Kubernetes
-description: Learn how to publish and deploy your Aspire application to Kubernetes using Helm charts.
+seoTitle: Deploy Aspire apps to Kubernetes clusters with Helm
+description: Publish and deploy your Aspire application to Kubernetes using Helm charts — generated manifests, configurable values, secrets, and multi-environment release strategies.
sidebar:
badge: Preview
---
diff --git a/src/frontend/src/content/docs/deployment/kubernetes/aks.mdx b/src/frontend/src/content/docs/deployment/kubernetes/aks.mdx
index 4249a1223..b5e83574a 100644
--- a/src/frontend/src/content/docs/deployment/kubernetes/aks.mdx
+++ b/src/frontend/src/content/docs/deployment/kubernetes/aks.mdx
@@ -1,10 +1,12 @@
---
title: Deploy to Azure Kubernetes Service (AKS)
-description: Learn how to deploy your Aspire application to Azure Kubernetes Service with full provisioning of AKS, ACR, and Azure resources.
+seoTitle: Deploy Aspire apps to Azure Kubernetes Service (AKS)
+description: Deploy your Aspire application to Azure Kubernetes Service with full provisioning of AKS clusters, container registries, ingress, identity, and observability.
---
import { Aside, Steps, Tabs, TabItem } from '@astrojs/starlight/components';
import LearnMore from '@components/LearnMore.astro';
+import OsAwareTabs from '@components/OsAwareTabs.astro';
Deploy your Aspire application to Azure Kubernetes Service (AKS). Aspire provisions the AKS cluster, Azure Container Registry (ACR), and any Azure resources your app depends on — then deploys your application in a single command.
@@ -154,6 +156,346 @@ Aspire performs the following steps:
The first deployment may take several minutes while the AKS cluster and ACR are provisioned. Subsequent deployments are faster as Aspire reuses existing infrastructure.
:::
+## Expose your app to the internet
+
+By default, the services Aspire deploys to AKS are reachable only from inside the cluster. To accept traffic from the public internet — for example a web frontend or a public API — you add an **Application Gateway for Containers (AGC)** load balancer and a **Gateway API** `Gateway` to your AppHost, then opt into automatic HTTPS with **cert-manager**. Everything in this section is provisioned by `aspire deploy` alongside the rest of your infrastructure; you don't run any `az aks`, `az network alb`, or `helm install` commands by hand.
+
+
+This walkthrough uses the integrated AGC + cert-manager APIs that ship with [📦 Aspire.Hosting.Azure.Kubernetes](https://www.nuget.org/packages/Aspire.Hosting.Azure.Kubernetes) and require no additional package. If you have a pre-existing AKS cluster that wasn't provisioned by Aspire, see the bring-your-own-cluster walkthroughs for [Gateway API on AKS](/deployment/kubernetes-gateway-aks/) and [Ingress on AKS](/deployment/kubernetes-ingress-aks/) instead.
+
+
+### How AGC ingress fits together
+
+When you opt in via `AddLoadBalancer`, Aspire flips the AKS cluster's Bicep to enable the AKS-managed Gateway API and Application Load Balancer ingress profiles. After deploy, the cluster runs the Microsoft-managed AGC controller, which watches for Aspire's generated `Gateway` and `HTTPRoute` resources and programs an Azure-hosted HTTPS frontend automatically.
+
+The pieces fit together like this:
+
+| Aspire AppHost call | What it produces in Azure / Kubernetes |
+|---|---|
+| `AddAzureKubernetesEnvironment` | AKS cluster (with Gateway API + ALB ingress profile when an LB is added) and ACR |
+| `AddAzureVirtualNetwork` + `AddSubnet` | A VNet and subnets — one for AKS nodes, one (or more) delegated to AGC |
+| `AddLoadBalancer(name, subnet)` | An AGC `ApplicationLoadBalancer` CR plus role assignments on the subnet |
+| `AddGateway(name).WithLoadBalancer(lb)` | A Gateway API `Gateway` resource attached to the AGC frontend |
+| `WithRoute(path, endpoint)` | An `HTTPRoute` that points the path at your service |
+| `AddCertManager(name).AddIssuer(...)` | cert-manager Helm release plus a `ClusterIssuer` |
+| `WithTls(issuer)` | An HTTPS listener and a cert-manager-issued certificate per gateway hostname |
+
+### Prerequisites for AGC
+
+Application Gateway for Containers ingress on AKS uses preview Azure features that need to be registered once per subscription. Run these commands and wait for both feature registrations to report `Registered`:
+
+
+
+
+```bash
+az provider register --namespace Microsoft.ContainerService
+az provider register --namespace Microsoft.ServiceNetworking
+
+az feature register --namespace Microsoft.ContainerService \
+ --name ManagedGatewayAPIPreview
+az feature register --namespace Microsoft.ContainerService \
+ --name ApplicationLoadBalancerPreview
+
+# Wait until both features are Registered before deploying
+az feature show --namespace Microsoft.ContainerService \
+ --name ApplicationLoadBalancerPreview --query properties.state -o tsv
+
+az provider register --namespace Microsoft.ContainerService
+```
+
+
+
+
+```powershell
+az provider register --namespace Microsoft.ContainerService
+az provider register --namespace Microsoft.ServiceNetworking
+
+az feature register --namespace Microsoft.ContainerService `
+ --name ManagedGatewayAPIPreview
+az feature register --namespace Microsoft.ContainerService `
+ --name ApplicationLoadBalancerPreview
+
+# Wait until both features are Registered before deploying
+az feature show --namespace Microsoft.ContainerService `
+ --name ApplicationLoadBalancerPreview --query properties.state -o tsv
+
+az provider register --namespace Microsoft.ContainerService
+```
+
+
+
+
+
+Feature registration can take several minutes the first time. For the latest prerequisites and supported regions, see the [Application Gateway for Containers documentation](https://learn.microsoft.com/azure/application-gateway/for-containers/).
+
+
+### Add a virtual network and subnets
+
+AGC requires a dedicated subnet for its frontend that is delegated to `Microsoft.ServiceNetworking/trafficControllers`. The AKS node subnet and the AGC subnet must not overlap, and the AKS service CIDR defaults to `10.0.0.0/16` — pick a VNet range that avoids it.
+
+
+
+```csharp title="AppHost.cs"
+#pragma warning disable ASPIREAZURE003 // AddSubnet is evaluation-only
+
+var vnet = builder.AddAzureVirtualNetwork("vnet", "10.100.0.0/16");
+var aksSubnet = vnet.AddSubnet("aks-nodes", "10.100.0.0/22");
+var albSubnet = vnet.AddSubnet("alb-public", "10.100.4.0/24");
+
+var aks = builder.AddAzureKubernetesEnvironment("aks")
+ .WithSubnet(aksSubnet);
+```
+
+
+```typescript title="apphost.ts"
+const vnet = await builder.addAzureVirtualNetwork('vnet', '10.100.0.0/16');
+const aksSubnet = await vnet.addSubnet('aks-nodes', '10.100.0.0/22');
+const albSubnet = await vnet.addSubnet('alb-public', '10.100.4.0/24');
+
+const aks = await builder.addAzureKubernetesEnvironment('aks');
+await aks.withSubnet(aksSubnet);
+```
+
+
+
+
+The AGC frontend subnet must be **/24 or larger**. The AKS node pool subnet should be **/22 or larger** to leave room for pods and scale-out. `AddSubnet` is currently evaluation-only and lives behind the `ASPIREAZURE003` diagnostic — suppress it as shown above.
+
+
+### Add an Application Gateway for Containers load balancer
+
+`AddLoadBalancer` returns a typed handle that gateways and ingresses attach to. Behind the scenes it delegates the supplied subnet to AGC, grants the controller's managed identity `Network Contributor` on the subnet, and applies the `ApplicationLoadBalancer` custom resource once the `azure-alb-external` GatewayClass is ready in the cluster.
+
+
+
+```csharp title="AppHost.cs"
+var publicLb = aks.AddLoadBalancer("public", albSubnet);
+```
+
+
+```typescript title="apphost.ts"
+const publicLb = await aks.addLoadBalancer('public', albSubnet);
+```
+
+
+
+
+Each AGC `ApplicationLoadBalancer` caps at five frontends (Gateways or Ingresses). Larger applications can call `AddLoadBalancer` multiple times — for example one `public` LB for customer traffic and a separate `admin` LB for an internal portal — and attach gateways to whichever LB they belong on.
+
+
+### Add a Gateway with a route to your service
+
+`AddGateway` declares a Kubernetes Gateway API `Gateway`. `WithLoadBalancer` attaches it to the AGC ALB you just created and defaults the `gatewayClassName` to `azure-alb-external`. `WithRoute` adds an `HTTPRoute` that forwards a path to the named endpoint on one of your services.
+
+
+
+```csharp title="AppHost.cs"
+var api = builder.AddProject("api")
+ .WithExternalHttpEndpoints();
+
+aks.AddGateway("storefront")
+ .WithLoadBalancer(publicLb)
+ .WithRoute("/", api.GetEndpoint("http"));
+```
+
+
+```typescript title="apphost.ts"
+const api = await builder
+ .addNodeApp('api', './api', 'src/index.ts')
+ .withHttpEndpoint({ env: 'PORT' })
+ .withExternalHttpEndpoints();
+
+const storefront = await aks.addGateway('storefront');
+await storefront.withLoadBalancer(publicLb);
+await storefront.withRoute('/', api.getEndpoint('http'));
+```
+
+
+
+Use the host overload of `WithRoute` when you need to send different hostnames to different backends — for example `WithRoute("api.contoso.com", "/", api.GetEndpoint("http"))`.
+
+### First deploy: HTTP on the AGC FQDN
+
+Run `aspire deploy`. After it finishes, AGC assigns the gateway a frontend FQDN of the form `.fz.alb.azure.com`. Read it from the deployed `Gateway` and curl your service to confirm the load balancer and route are wired up before adding TLS:
+
+```bash title="Read the AGC FQDN and curl the gateway"
+kubectl get gateway storefront -o jsonpath='{.status.addresses[0].value}'
+curl http:///
+```
+
+
+This first deploy serves plain HTTP only. Continue to the next step before exposing the FQDN to real users.
+
+
+### Add automatic HTTPS with cert-manager
+
+`AddCertManager` installs the upstream cert-manager Helm chart with the CRDs and Gateway API watcher enabled and the `--force-conflicts` flag set so AKS's Azure Policy add-on doesn't break subsequent upgrades. `AddIssuer` adds a typed `ClusterIssuer` parented to that installation, and `WithTls(issuer)` on a gateway adds an HTTPS listener that cert-manager will populate with a real certificate.
+
+
+
+```csharp title="AppHost.cs"
+var certManager = aks.AddCertManager("cert-manager");
+
+var letsencrypt = certManager.AddIssuer("letsencrypt-prod")
+ .WithLetsEncryptProduction("ops@contoso.com")
+ .WithHttp01Solver();
+
+aks.AddGateway("storefront")
+ .WithLoadBalancer(publicLb)
+ .WithRoute("/", api.GetEndpoint("http"))
+ .WithTls(letsencrypt);
+```
+
+
+```typescript title="apphost.ts"
+const certManager = await aks.addCertManager('cert-manager');
+
+const letsencrypt = await certManager.addIssuer('letsencrypt-prod');
+await letsencrypt.withLetsEncryptProduction('ops@contoso.com');
+await letsencrypt.withHttp01Solver();
+
+const storefront = await aks.addGateway('storefront');
+await storefront.withLoadBalancer(publicLb);
+await storefront.withRoute('/', api.getEndpoint('http'));
+await storefront.withTls(letsencrypt);
+```
+
+
+
+`WithTls(issuer)` is the strongly-typed overload — it validates at AppHost-build time that the gateway and the issuer's cert-manager installation belong to the same Kubernetes environment. There is also a no-argument `WithTls()` (auto-generated secret name, no issuer annotation) and a `WithTls(secretName)` overload for cases where you manage the certificate yourself.
+
+Calling `WithTls` flips the gateway to an HTTPS-first posture:
+
+- A `301 Moved Permanently` redirect is added to the HTTP listener so requests on port 80 are upgraded to `https://` automatically. The cert-manager HTTP-01 solver registers an exact-match route for `/.well-known/acme-challenge/` and wins over the redirect's `/` prefix, so ACME continues to work.
+- A `Strict-Transport-Security: max-age=31536000` response header is emitted on HTTPS responses so returning browsers refuse plain HTTP for a year.
+
+To tune or disable these defaults, pass an options callback. The `includeSubDomains` and `preload` HSTS flags are off by default because they're hard to reverse once browsers cache them — opt in explicitly when you're ready to commit to the hostname:
+
+
+
+```csharp title="AppHost.cs"
+aks.AddGateway("storefront")
+ .WithLoadBalancer(publicLb)
+ .WithRoute("/", api.GetEndpoint("http"))
+ .WithTls(letsencrypt, options =>
+ {
+ options.Hsts.IncludeSubDomains = true;
+ options.Hsts.Preload = true;
+ });
+```
+
+
+```typescript title="apphost.ts"
+await storefront.withTls(letsencrypt, {
+ hsts: { includeSubDomains: true, preload: true },
+});
+```
+
+
+
+
+Let's Encrypt's production endpoint enforces strict rate limits. While iterating on your AppHost, swap `WithLetsEncryptProduction` for `WithLetsEncryptStaging` so failed attempts don't cost you your weekly quota. Browsers will warn on staging certificates — flip back to production once everything works end-to-end.
+
+
+#### How the certificate gets issued
+
+cert-manager validates domain ownership using the **HTTP-01** challenge configured by `WithHttp01Solver` — it asks the gateway to serve a token at `/.well-known/acme-challenge/` and verifies the response. There is no DNS API access required, so this works for the auto-assigned `*.alb.azure.com` FQDN out of the box.
+
+To break the chicken-and-egg problem where AGC won't program a Gateway whose HTTPS listener references a missing secret, Aspire pre-creates a self-signed bootstrap secret on the first deploy. Once AGC publishes the gateway's FQDN, Aspire patches the listener with the real hostname and cert-manager swaps the bootstrap certificate for a Let's Encrypt one. You may briefly see a self-signed certificate during the first deploy — this is expected.
+
+### Verify the certificate
+
+After the deploy completes, watch the `Certificate` resource transition to `Ready=True`:
+
+```bash title="Inspect the cert-manager Certificate"
+kubectl get certificate
+kubectl describe certificate storefront-tls
+```
+
+Confirm port 80 is now redirecting to HTTPS:
+
+```bash title="Verify the HTTP→HTTPS redirect"
+curl -i http:///
+# HTTP/1.1 301 Moved Permanently
+# Location: https:///
+```
+
+Then curl the gateway over HTTPS and confirm the certificate chain comes from Let's Encrypt and the `Strict-Transport-Security` header is present:
+
+```bash title="Verify TLS and HSTS"
+curl -sIv https:/// 2>&1 | grep -iE "issuer:|strict-transport-security:"
+# * issuer: C=US; O=Let's Encrypt; CN=R10
+# strict-transport-security: max-age=31536000
+```
+
+## Use a custom domain
+
+The `*.alb.azure.com` FQDN is fine for testing but real applications need a hostname customers can remember. Adding a custom domain is a small change to the AppHost plus a DNS record at your registrar.
+
+### Tell the gateway about your hostname
+
+`WithHostname` adds the hostname to the gateway's `HTTPRoute`s and to the HTTPS listener so cert-manager issues the certificate for the right name. Use the parameter overload when the hostname differs across deployment environments.
+
+
+
+```csharp title="AppHost.cs"
+var hostname = builder.AddParameter("hostname"); // e.g. "api.contoso.com"
+
+aks.AddGateway("storefront")
+ .WithLoadBalancer(publicLb)
+ .WithHostname(hostname)
+ .WithRoute("/", api.GetEndpoint("http"))
+ .WithTls(letsencrypt);
+```
+
+
+```typescript title="apphost.ts"
+const hostname = builder.addParameter('hostname'); // e.g. "api.contoso.com"
+
+const storefront = await aks.addGateway('storefront');
+await storefront.withLoadBalancer(publicLb);
+await storefront.withHostname(hostname);
+await storefront.withRoute('/', api.getEndpoint('http'));
+await storefront.withTls(letsencrypt);
+```
+
+
+
+Provide the hostname value at deploy time:
+
+```bash title="Deploy with the hostname parameter"
+aspire deploy --parameter hostname=api.contoso.com
+```
+
+### Point your DNS at the AGC frontend
+
+Read the AGC FQDN from the deployed gateway, then create a `CNAME` record at your DNS provider that points your custom hostname at it. The DNS provider doesn't matter — Azure DNS, Cloudflare, Route 53, GoDaddy, anything that supports `CNAME` records will work.
+
+```bash title="Get the AGC FQDN to CNAME against"
+kubectl get gateway storefront -o jsonpath='{.status.addresses[0].value}'
+# 8a3...cd.fz12.alb.azure.com
+```
+
+```text title="Example DNS record"
+api.contoso.com. CNAME 8a3...cd.fz12.alb.azure.com.
+```
+
+
+Apex domains (e.g. `contoso.com` with no subdomain) can't use `CNAME` records. Either use a subdomain like `www` or `api`, or use a DNS provider that supports `ALIAS`/`ANAME`-style records that resolve a CNAME at the apex (Azure DNS, Cloudflare, Route 53 all do).
+
+
+### Re-deploy and verify
+
+Re-running `aspire deploy` is idempotent. Once your DNS record propagates, cert-manager's HTTP-01 challenge will succeed against the new hostname and a fresh certificate is issued automatically:
+
+```bash title="Verify the custom domain"
+curl -v https://api.contoso.com/ 2>&1 | grep -i "issuer:\|subject:"
+```
+
+
+HTTP-01 keeps DNS configuration entirely outside your AppHost — there's no Azure DNS zone to provision and no managed identity to wire up to a DNS API. If you have a hard requirement to issue certificates without serving HTTP traffic (for example, a wildcard certificate or a domain that can't be reached over HTTP), see the [Ingress on AKS](/deployment/kubernetes-ingress-aks/) walkthrough for the cert-manager DNS-01 + Azure DNS setup.
+
+
## Publish AKS artifacts
To generate deployment artifacts without deploying, use `aspire publish`:
@@ -232,11 +574,79 @@ If pods fail with `ImagePullBackOff`, verify that the AKS cluster has the correc
az aks check-acr --resource-group --name --acr .azurecr.io
```
+### Certificate stays `Ready=False`
+
+If `kubectl get certificate` reports the certificate as not ready for more than a few minutes, describe it and the cert-manager `Order`/`Challenge` resources to see what failed:
+
+```bash title="Diagnose a stuck certificate"
+kubectl describe certificate storefront-tls
+kubectl describe challenge -A
+```
+
+Common causes:
+
+- **DNS hasn't propagated yet** when using a custom domain — Let's Encrypt fetches `http:///.well-known/acme-challenge/...` and that has to resolve to the AGC frontend.
+- **HTTP traffic is blocked** between Let's Encrypt and the gateway — HTTP-01 needs port 80 open. AGC keeps the HTTP listener that `AddGateway` generates open by default; don't remove it.
+- **Production rate limit hit** while iterating — switch the issuer to `WithLetsEncryptStaging` until everything else works, then flip back to production.
+- **The contact email was rejected by ACME** — see [Let's Encrypt rejects the contact email](#lets-encrypt-rejects-the-contact-email).
+- **The bootstrap TLS secret is missing** — see [Gateway HTTPS listener reports `InvalidCertificateRef`](#gateway-https-listener-reports-invalidcertificateref).
+
+### Let's Encrypt rejects the contact email
+
+The first time you `aspire deploy` with `WithLetsEncryptProduction(email)` or `WithLetsEncryptStaging(email)`, cert-manager creates an ACME account using that email. Let's Encrypt validates the address and refuses to register accounts whose email uses a reserved or forbidden domain. The `ClusterIssuer` will report `Ready=False` and `kubectl describe clusterissuer ` will show one of:
+
+- `Domain name does not end with a valid public suffix` — the TLD isn't a registered public suffix. Reserved TLDs from RFC 2606 (`.test`, `.example`, `.invalid`, `.localhost`) are common offenders.
+- `contact email has forbidden domain example.com` — Let's Encrypt explicitly blocks the IANA example domains (`example.com`, `example.net`, `example.org`).
+
+Use a real address on a registered public domain (your corporate domain, or a personal mailbox like `you@gmail.com`). The address must be syntactically valid, but Let's Encrypt does not send mail to it during provisioning — it's the contact for expiry warnings.
+
+### Gateway HTTPS listener reports `InvalidCertificateRef`
+
+If `kubectl describe gateway storefront` shows `Secret default/storefront-tls does not exist` on the HTTPS listener, AGC will refuse to program the HTTPS frontend and any in-flight cert-manager `Challenge` will stall because its solver `HTTPRoute` can't be attached. This typically happens if you delete the `storefront-tls` secret manually to "force a reissue" — the bootstrap self-signed secret Aspire pre-creates is also wiped, breaking the chicken-and-egg pattern described in [How the certificate gets issued](#how-the-certificate-gets-issued).
+
+Recover by recreating a placeholder secret so AGC can program the listener again — cert-manager will overwrite it with a real certificate within a minute:
+
+```bash title="Restore the bootstrap secret"
+TMPDIR=$(mktemp -d)
+openssl req -x509 -newkey rsa:2048 -nodes -days 1 \
+ -keyout "$TMPDIR/key.pem" -out "$TMPDIR/cert.pem" \
+ -subj "/CN=bootstrap.invalid"
+kubectl create secret tls storefront-tls \
+ --cert="$TMPDIR/cert.pem" --key="$TMPDIR/key.pem" -n default
+rm -rf "$TMPDIR"
+```
+
+To force a legitimate reissue without removing the secret, annotate the `Certificate` instead:
+
+```bash title="Force cert-manager to reissue"
+kubectl cert-manager renew storefront-tls
+```
+
+### Gateway never gets an FQDN
+
+If `kubectl get gateway` shows no address after `aspire deploy` succeeds, check that the AGC ingress profile actually came up on the cluster:
+
+```bash title="Check the AGC controller and GatewayClass"
+kubectl get gatewayclass azure-alb-external
+kubectl get pods -n kube-system -l app=alb-controller
+```
+
+If the `azure-alb-external` GatewayClass doesn't exist, the most common cause is that the `ManagedGatewayAPIPreview` and `ApplicationLoadBalancerPreview` features aren't registered on the subscription — re-run the `az feature register` commands from [Prerequisites for AGC](#prerequisites-for-agc), then `aspire deploy` again.
+
+### `helm upgrade` fails on cert-manager SSA conflicts
+
+`AddCertManager` already passes `--force-conflicts` to `helm upgrade` to handle the field-manager conflict that AKS's Azure Policy add-on creates against cert-manager's `ValidatingWebhookConfiguration`. If you install cert-manager yourself with raw `AddHelmChart` instead, add `.WithForceConflicts()` to the chart resource, otherwise the second deploy will fail with a server-side-apply conflict on `.webhooks[*].namespaceSelector`.
+
## See also
- [AKS integration](/integrations/cloud/azure/aks/)
- [Kubernetes integration](/integrations/compute/kubernetes/)
- [Deploy to Kubernetes](/deployment/kubernetes/)
+- [Expose services with Ingress and Gateway API](/deployment/kubernetes-ingress/)
+- [Gateway API on AKS (bring-your-own cluster)](/deployment/kubernetes-gateway-aks/)
+- [Ingress on AKS (bring-your-own cluster)](/deployment/kubernetes-ingress-aks/)
- [Deploy to Azure](/deployment/azure/)
- [Pipelines and app topology](/deployment/pipelines/)
- [Azure Kubernetes Service documentation](https://learn.microsoft.com/azure/aks/)
+- [Application Gateway for Containers documentation](https://learn.microsoft.com/azure/application-gateway/for-containers/)
+- [cert-manager documentation](https://cert-manager.io/)
diff --git a/src/frontend/src/content/docs/deployment/kubernetes/index.mdx b/src/frontend/src/content/docs/deployment/kubernetes/index.mdx
index 87c29e251..70bb541e9 100644
--- a/src/frontend/src/content/docs/deployment/kubernetes/index.mdx
+++ b/src/frontend/src/content/docs/deployment/kubernetes/index.mdx
@@ -1,6 +1,7 @@
---
title: Deploy to Kubernetes
-description: Learn how to deploy Aspire applications to Kubernetes — whether you manage your own cluster or use Azure Kubernetes Service (AKS).
+seoTitle: 'Aspire on Kubernetes overview: target a real cluster'
+description: Deploy Aspire applications to Kubernetes — whether you manage your own cluster or use Azure Kubernetes Service, Helm-based publishing, and CI/CD integrations.
---
import { CardGrid, LinkCard, Steps } from '@astrojs/starlight/components';
diff --git a/src/frontend/src/content/docs/deployment/kubernetes/kubernetes.mdx b/src/frontend/src/content/docs/deployment/kubernetes/kubernetes.mdx
index 0ae35f046..dd68d683a 100644
--- a/src/frontend/src/content/docs/deployment/kubernetes/kubernetes.mdx
+++ b/src/frontend/src/content/docs/deployment/kubernetes/kubernetes.mdx
@@ -1,6 +1,7 @@
---
title: Deploy to Kubernetes clusters
-description: Learn how to publish and deploy your Aspire application to an existing Kubernetes cluster using Helm charts.
+seoTitle: Deploy Aspire apps to a Kubernetes cluster with Helm
+description: Publish and deploy your Aspire application to an existing Kubernetes cluster using Helm — generated charts, values overrides, secrets, and release management workflows.
---
import { Aside, FileTree, Steps, Tabs, TabItem } from '@astrojs/starlight/components';
diff --git a/src/frontend/src/content/docs/deployment/pipelines.mdx b/src/frontend/src/content/docs/deployment/pipelines.mdx
index a106f82f6..19fdfef8c 100644
--- a/src/frontend/src/content/docs/deployment/pipelines.mdx
+++ b/src/frontend/src/content/docs/deployment/pipelines.mdx
@@ -1,6 +1,7 @@
---
title: Pipelines and app topology
-description: Learn how Aspire's unified app topology works across development and production environments.
+seoTitle: Aspire deployment pipelines and app topology overview
+description: "Learn how Aspire's unified app topology works across development and production environments — pipelines, targets, and the resource graph that drives every deployment."
tableOfContents:
maxHeadingLevel: 2
lastUpdated: true
diff --git a/src/frontend/src/content/docs/diagnostics/aspire001.mdx b/src/frontend/src/content/docs/diagnostics/aspire001.mdx
index 0dd0632a4..e3146af4e 100644
--- a/src/frontend/src/content/docs/diagnostics/aspire001.mdx
+++ b/src/frontend/src/content/docs/diagnostics/aspire001.mdx
@@ -1,6 +1,7 @@
---
title: Compiler Warning ASPIRE001
-description: Learn more about compiler Warning ASPIRE001. The code language isn't fully supported by Aspire - some code generation targets will not run, so will require manual authoring.
+seoTitle: "ASPIRE001: The code language isn't fully supported by Aspire"
+description: "Learn what causes the Aspire compiler warning ASPIRE001 — the code language isn't fully supported by Aspire — and how to fix it in your AppHost."
---
import { Aside, Badge } from '@astrojs/starlight/components';
diff --git a/src/frontend/src/content/docs/diagnostics/aspire002.mdx b/src/frontend/src/content/docs/diagnostics/aspire002.mdx
index aee0aaa0f..5ca9d7ec9 100644
--- a/src/frontend/src/content/docs/diagnostics/aspire002.mdx
+++ b/src/frontend/src/content/docs/diagnostics/aspire002.mdx
@@ -1,6 +1,7 @@
---
title: Compiler Warning ASPIRE002
-description: Learn more about compiler Warning ASPIRE002. Project is an Aspire AppHost project but necessary dependencies aren't present. Are you missing an Aspire.Hosting.AppHost PackageReference?
+seoTitle: "ASPIRE002: Project is an Aspire AppHost project but"
+description: Learn what causes the Aspire compiler warning ASPIRE002 and how to fix it so your AppHost builds cleanly. Resolve or suppress it to keep your Aspire build.
---
import { Aside, Badge } from '@astrojs/starlight/components';
diff --git a/src/frontend/src/content/docs/diagnostics/aspire003.mdx b/src/frontend/src/content/docs/diagnostics/aspire003.mdx
index 89abdb4f1..5466b0398 100644
--- a/src/frontend/src/content/docs/diagnostics/aspire003.mdx
+++ b/src/frontend/src/content/docs/diagnostics/aspire003.mdx
@@ -1,6 +1,7 @@
---
title: Compiler Warning ASPIRE003
-description: Learn more about compiler Warning ASPIRE003. This project requires Visual Studio version '17.10' or higher to work properly.
+seoTitle: "ASPIRE003: This project requires Visual Studio version"
+description: "Learn what causes the Aspire compiler warning ASPIRE003 — this project requires Visual Studio version '17.10' or higher to work properly."
---
import { Badge } from '@astrojs/starlight/components';
diff --git a/src/frontend/src/content/docs/diagnostics/aspire004.mdx b/src/frontend/src/content/docs/diagnostics/aspire004.mdx
index be906f0d2..35711e513 100644
--- a/src/frontend/src/content/docs/diagnostics/aspire004.mdx
+++ b/src/frontend/src/content/docs/diagnostics/aspire004.mdx
@@ -1,6 +1,7 @@
---
title: Compiler Warning ASPIRE004
-description: Learn more about compiler Warning ASPIRE004. Project is referenced by an Aspire Host project, but it is not an executable.
+seoTitle: "ASPIRE004: Project is referenced by an Aspire Host project"
+description: Learn what causes the Aspire compiler warning ASPIRE004 — project is referenced by an Aspire Host project, but it is not an executable.
---
import { Badge } from '@astrojs/starlight/components';
diff --git a/src/frontend/src/content/docs/diagnostics/aspire006.mdx b/src/frontend/src/content/docs/diagnostics/aspire006.mdx
index f01f659fc..e989f2329 100644
--- a/src/frontend/src/content/docs/diagnostics/aspire006.mdx
+++ b/src/frontend/src/content/docs/diagnostics/aspire006.mdx
@@ -1,6 +1,7 @@
---
title: Compiler Error ASPIRE006
-description: Learn more about compiler Error ASPIRE006. The resource name is invalid.
+seoTitle: "ASPIRE006: Resource name is invalid · Aspire"
+description: Learn what causes Aspire compiler error ASPIRE006 — invalid AppHost resource names — and how to fix the issue by following Aspire naming constraints and conventions.
---
import { Badge } from '@astrojs/starlight/components';
diff --git a/src/frontend/src/content/docs/diagnostics/aspire007.mdx b/src/frontend/src/content/docs/diagnostics/aspire007.mdx
index abccef1e7..d6a6a1eb2 100644
--- a/src/frontend/src/content/docs/diagnostics/aspire007.mdx
+++ b/src/frontend/src/content/docs/diagnostics/aspire007.mdx
@@ -1,6 +1,7 @@
---
title: Compiler Error ASPIRE007
-description: Learn more about compiler Error ASPIRE007. The project is missing a required Aspire.AppHost.Sdk with a version of at least 9.0.0.
+seoTitle: "ASPIRE007: The project is missing a required"
+description: Learn what causes the Aspire compiler error ASPIRE007 — the project is missing a required Aspire.AppHost.Sdk with a version of at least 9.0.0.
---
import { Badge } from '@astrojs/starlight/components';
diff --git a/src/frontend/src/content/docs/diagnostics/aspire008.mdx b/src/frontend/src/content/docs/diagnostics/aspire008.mdx
index 5c97a333b..c10b86c5f 100644
--- a/src/frontend/src/content/docs/diagnostics/aspire008.mdx
+++ b/src/frontend/src/content/docs/diagnostics/aspire008.mdx
@@ -1,6 +1,7 @@
---
title: Compiler Error ASPIRE008
-description: Learn more about compiler Error ASPIRE008. The project requires GenerateAssemblyInfo to be enabled for the AppHost to function correctly.
+seoTitle: "ASPIRE008: The project requires GenerateAssemblyInfo to be"
+description: Learn what causes the Aspire compiler error ASPIRE008 — the project requires GenerateAssemblyInfo to be enabled for the AppHost to function correctly.
---
import { Aside, Badge } from '@astrojs/starlight/components';
diff --git a/src/frontend/src/content/docs/diagnostics/aspireacadomains001.mdx b/src/frontend/src/content/docs/diagnostics/aspireacadomains001.mdx
index e34b1603a..271a6d652 100644
--- a/src/frontend/src/content/docs/diagnostics/aspireacadomains001.mdx
+++ b/src/frontend/src/content/docs/diagnostics/aspireacadomains001.mdx
@@ -1,6 +1,7 @@
---
title: Compiler Error ASPIREACADOMAINS001
-description: Learn more about compiler Error ASPIREACADOMAINS001. ConfigureCustomDomain is for evaluation purposes only and is subject to change or removal in future updates.
+seoTitle: "ASPIREACADOMAINS001: ConfigureCustomDomain is for evaluation"
+description: Learn what causes the Aspire compiler error ASPIREACADOMAINS001 and how to fix it so your AppHost builds cleanly.
---
import { Badge } from '@astrojs/starlight/components';
diff --git a/src/frontend/src/content/docs/diagnostics/aspireats001.mdx b/src/frontend/src/content/docs/diagnostics/aspireats001.mdx
index f183d52ee..a0bd2aa97 100644
--- a/src/frontend/src/content/docs/diagnostics/aspireats001.mdx
+++ b/src/frontend/src/content/docs/diagnostics/aspireats001.mdx
@@ -1,6 +1,7 @@
---
title: Compiler Warning ASPIREATS001
-description: Learn more about compiler Warning ASPIREATS001. ATS (Aspire Type Specification) types are for evaluation purposes only and are subject to change or removal in future updates.
+seoTitle: "ASPIREATS001: ATS (Aspire Type Specification) types are for"
+description: Learn what causes the Aspire compiler warning ASPIREATS001 and how to fix it so your AppHost builds cleanly. Resolve or suppress it to keep your Aspire build.
---
import { Badge } from '@astrojs/starlight/components';
diff --git a/src/frontend/src/content/docs/diagnostics/aspireazure001.mdx b/src/frontend/src/content/docs/diagnostics/aspireazure001.mdx
index 7156c9ee7..31110cf01 100644
--- a/src/frontend/src/content/docs/diagnostics/aspireazure001.mdx
+++ b/src/frontend/src/content/docs/diagnostics/aspireazure001.mdx
@@ -1,6 +1,7 @@
---
title: Compiler Error ASPIREAZURE001
-description: Learn more about compiler Error ASPIREAZURE001. Publishers are for evaluation purposes only and are subject to change or removal in future updates.
+seoTitle: "ASPIREAZURE001: Publishers are for evaluation purposes only"
+description: Learn what causes the Aspire compiler error ASPIREAZURE001 — publishers are for evaluation purposes only and are subject to change or removal in future updates.
---
import { Badge } from '@astrojs/starlight/components';
diff --git a/src/frontend/src/content/docs/diagnostics/aspireazure002.mdx b/src/frontend/src/content/docs/diagnostics/aspireazure002.mdx
index 2d1e40a2a..097596c7c 100644
--- a/src/frontend/src/content/docs/diagnostics/aspireazure002.mdx
+++ b/src/frontend/src/content/docs/diagnostics/aspireazure002.mdx
@@ -1,6 +1,7 @@
---
title: Compiler Error ASPIREAZURE002
-description: Learn more about compiler Error ASPIREAZURE002. Azure Container App Jobs are for evaluation purposes only and are subject to change or removal in future updates.
+seoTitle: "ASPIREAZURE002: Azure Container App Jobs are for evaluation"
+description: Learn what causes the Aspire compiler error ASPIREAZURE002 and how to fix it so your AppHost builds cleanly. Resolve or suppress it to keep your Aspire build.
---
import { Badge } from '@astrojs/starlight/components';
diff --git a/src/frontend/src/content/docs/diagnostics/aspireazure003.mdx b/src/frontend/src/content/docs/diagnostics/aspireazure003.mdx
index ead4c5a81..a8ad2c806 100644
--- a/src/frontend/src/content/docs/diagnostics/aspireazure003.mdx
+++ b/src/frontend/src/content/docs/diagnostics/aspireazure003.mdx
@@ -1,6 +1,7 @@
---
title: Compiler Error ASPIREAZURE003
-description: Learn more about compiler Error ASPIREAZURE003. Azure Virtual Network types and members are for evaluation purposes only and are subject to change or removal in future updates.
+seoTitle: "ASPIREAZURE003: Azure Virtual Network types and members are"
+description: Learn what causes the Aspire compiler error ASPIREAZURE003 and how to fix it so your AppHost builds cleanly. Resolve or suppress it to keep your Aspire build.
---
import { Badge } from '@astrojs/starlight/components';
diff --git a/src/frontend/src/content/docs/diagnostics/aspirebrowserlogs001.mdx b/src/frontend/src/content/docs/diagnostics/aspirebrowserlogs001.mdx
index c53a6d2a5..0a62233fd 100644
--- a/src/frontend/src/content/docs/diagnostics/aspirebrowserlogs001.mdx
+++ b/src/frontend/src/content/docs/diagnostics/aspirebrowserlogs001.mdx
@@ -1,6 +1,7 @@
---
title: Compiler Error ASPIREBROWSERLOGS001
-description: Learn more about compiler Error ASPIREBROWSERLOGS001. Browser logs types and members are for evaluation purposes only and are subject to change or removal in future updates.
+seoTitle: "ASPIREBROWSERLOGS001: Browser logs types and members are for"
+description: Learn what causes the Aspire compiler error ASPIREBROWSERLOGS001 and how to fix it so your AppHost builds cleanly.
---
import { Badge } from '@astrojs/starlight/components';
diff --git a/src/frontend/src/content/docs/diagnostics/aspirecertificates001.mdx b/src/frontend/src/content/docs/diagnostics/aspirecertificates001.mdx
index 81c15936f..1194ffce4 100644
--- a/src/frontend/src/content/docs/diagnostics/aspirecertificates001.mdx
+++ b/src/frontend/src/content/docs/diagnostics/aspirecertificates001.mdx
@@ -1,6 +1,7 @@
---
title: Compiler Warning ASPIRECERTIFICATES001
-description: Learn more about compiler Warning ASPIRECERTIFICATES001. Certificate configuration types and members are for evaluation purposes only and are subject to change or removal in future updates.
+seoTitle: "ASPIRECERTIFICATES001: Certificate configuration types and"
+description: Learn what causes the Aspire compiler warning ASPIRECERTIFICATES001 and how to fix it so your AppHost builds cleanly.
---
import { Badge } from '@astrojs/starlight/components';
diff --git a/src/frontend/src/content/docs/diagnostics/aspirecompute001.mdx b/src/frontend/src/content/docs/diagnostics/aspirecompute001.mdx
index ab1a30178..fed44eb56 100644
--- a/src/frontend/src/content/docs/diagnostics/aspirecompute001.mdx
+++ b/src/frontend/src/content/docs/diagnostics/aspirecompute001.mdx
@@ -1,6 +1,7 @@
---
title: Compiler Error ASPIRECOMPUTE001
-description: Learn more about compiler Error ASPIRECOMPUTE001. Compute related types and members are for evaluation purposes only and are subject to change or removal in future updates.
+seoTitle: "ASPIRECOMPUTE001: Compute related types and members are for"
+description: Learn what causes the Aspire compiler error ASPIRECOMPUTE001 and how to fix it so your AppHost builds cleanly.
---
import { Badge } from '@astrojs/starlight/components';
diff --git a/src/frontend/src/content/docs/diagnostics/aspirecompute002.mdx b/src/frontend/src/content/docs/diagnostics/aspirecompute002.mdx
index 4c631256e..f3a2f1887 100644
--- a/src/frontend/src/content/docs/diagnostics/aspirecompute002.mdx
+++ b/src/frontend/src/content/docs/diagnostics/aspirecompute002.mdx
@@ -1,6 +1,7 @@
---
title: Compiler Warning ASPIRECOMPUTE002
-description: Learn more about compiler Warning ASPIRECOMPUTE002. The GetHostAddressExpression method is for evaluation purposes only and is subject to change or removal in future updates.
+seoTitle: "ASPIRECOMPUTE002: The GetHostAddressExpression method is for"
+description: Learn what causes the Aspire compiler warning ASPIRECOMPUTE002 and how to fix it so your AppHost builds cleanly.
---
import { Badge } from '@astrojs/starlight/components';
diff --git a/src/frontend/src/content/docs/diagnostics/aspirecompute003.mdx b/src/frontend/src/content/docs/diagnostics/aspirecompute003.mdx
index ab670d54d..cfa331413 100644
--- a/src/frontend/src/content/docs/diagnostics/aspirecompute003.mdx
+++ b/src/frontend/src/content/docs/diagnostics/aspirecompute003.mdx
@@ -1,6 +1,7 @@
---
title: Compiler Warning ASPIRECOMPUTE003
-description: Learn more about compiler Warning ASPIRECOMPUTE003. The ContainerRegistryResource type is for evaluation purposes only and is subject to change or removal in future updates.
+seoTitle: "ASPIRECOMPUTE003: The ContainerRegistryResource type is for"
+description: Learn what causes the Aspire compiler warning ASPIRECOMPUTE003 and how to fix it so your AppHost builds cleanly.
---
import { Badge } from '@astrojs/starlight/components';
diff --git a/src/frontend/src/content/docs/diagnostics/aspirecontainerruntime001.mdx b/src/frontend/src/content/docs/diagnostics/aspirecontainerruntime001.mdx
index c60b7a822..027ea5e4e 100644
--- a/src/frontend/src/content/docs/diagnostics/aspirecontainerruntime001.mdx
+++ b/src/frontend/src/content/docs/diagnostics/aspirecontainerruntime001.mdx
@@ -1,6 +1,7 @@
---
title: Compiler Warning ASPIRECONTAINERRUNTIME001
-description: Learn more about compiler Warning ASPIRECONTAINERRUNTIME001. The container runtime APIs are experimental and subject to change.
+seoTitle: "ASPIRECONTAINERRUNTIME001: The container runtime APIs are"
+description: Learn what causes the Aspire compiler warning ASPIRECONTAINERRUNTIME001 — the container runtime APIs are experimental and subject to change.
---
import { Badge } from '@astrojs/starlight/components';
diff --git a/src/frontend/src/content/docs/diagnostics/aspirecontainershellexecution001.mdx b/src/frontend/src/content/docs/diagnostics/aspirecontainershellexecution001.mdx
index 604b0fdd4..9236fd790 100644
--- a/src/frontend/src/content/docs/diagnostics/aspirecontainershellexecution001.mdx
+++ b/src/frontend/src/content/docs/diagnostics/aspirecontainershellexecution001.mdx
@@ -1,6 +1,7 @@
---
title: Compiler Warning ASPIRECONTAINERSHELLEXECUTION001
-description: Learn more about compiler Warning ASPIRECONTAINERSHELLEXECUTION001. The container shell execution property is experimental and subject to change.
+seoTitle: "ASPIRECONTAINERSHELLEXECUTION001: The container shell"
+description: Learn what causes the Aspire compiler warning ASPIRECONTAINERSHELLEXECUTION001 — the container shell execution property is experimental and subject to change.
---
import { Badge } from '@astrojs/starlight/components';
diff --git a/src/frontend/src/content/docs/diagnostics/aspirecosmosdb001.mdx b/src/frontend/src/content/docs/diagnostics/aspirecosmosdb001.mdx
index 757e5dfc3..2ddf866c7 100644
--- a/src/frontend/src/content/docs/diagnostics/aspirecosmosdb001.mdx
+++ b/src/frontend/src/content/docs/diagnostics/aspirecosmosdb001.mdx
@@ -1,6 +1,7 @@
---
title: Compiler Error ASPIRECOSMOSDB001
-description: Learn more about compiler Error ASPIRECOSMOSDB001. `RunAsPreviewEmulator` is for evaluation purposes only and is subject to change or removal in future updates.
+seoTitle: "ASPIRECOSMOSDB001: `RunAsPreviewEmulator` is for evaluation"
+description: Learn what causes the Aspire compiler error ASPIRECOSMOSDB001 and how to fix it so your AppHost builds cleanly.
---
import { Badge } from '@astrojs/starlight/components';
diff --git a/src/frontend/src/content/docs/diagnostics/aspirecsharpapps001.mdx b/src/frontend/src/content/docs/diagnostics/aspirecsharpapps001.mdx
index f0221f67c..1b7113433 100644
--- a/src/frontend/src/content/docs/diagnostics/aspirecsharpapps001.mdx
+++ b/src/frontend/src/content/docs/diagnostics/aspirecsharpapps001.mdx
@@ -1,6 +1,7 @@
---
title: Compiler Error ASPIRECSHARPAPPS001
-description: Learn more about compiler Error ASPIRECSHARPAPPS001. `AddCSharpApp` is for evaluation purposes only and is subject to change or removal in future updates.
+seoTitle: "ASPIRECSHARPAPPS001: `AddCSharpApp` is for evaluation"
+description: Learn what causes the Aspire compiler error ASPIRECSHARPAPPS001 and how to fix it so your AppHost builds cleanly.
---
import { Badge } from '@astrojs/starlight/components';
diff --git a/src/frontend/src/content/docs/diagnostics/aspiredockerfilebuilder001.mdx b/src/frontend/src/content/docs/diagnostics/aspiredockerfilebuilder001.mdx
index 7b7de2c6b..62ec02a79 100644
--- a/src/frontend/src/content/docs/diagnostics/aspiredockerfilebuilder001.mdx
+++ b/src/frontend/src/content/docs/diagnostics/aspiredockerfilebuilder001.mdx
@@ -1,6 +1,7 @@
---
title: Compiler Warning ASPIREDOCKERFILEBUILDER001
-description: Learn more about compiler Warning ASPIREDOCKERFILEBUILDER001. Dockerfile builder types and members are for evaluation purposes only and are subject to change or removal in future updates.
+seoTitle: "ASPIREDOCKERFILEBUILDER001: Dockerfile builder types and"
+description: Learn what causes the Aspire compiler warning ASPIREDOCKERFILEBUILDER001 and how to fix it so your AppHost builds cleanly.
---
import { Badge, Tabs, TabItem } from '@astrojs/starlight/components';
diff --git a/src/frontend/src/content/docs/diagnostics/aspiredotnettool.mdx b/src/frontend/src/content/docs/diagnostics/aspiredotnettool.mdx
index eae7862fa..68f32c77f 100644
--- a/src/frontend/src/content/docs/diagnostics/aspiredotnettool.mdx
+++ b/src/frontend/src/content/docs/diagnostics/aspiredotnettool.mdx
@@ -1,6 +1,7 @@
---
title: Compiler Warning ASPIREDOTNETTOOL
-description: Learn more about compiler Warning ASPIREDOTNETTOOL. .NET tool resource types and members are for evaluation purposes only and are subject to change or removal in future updates.
+seoTitle: "ASPIREDOTNETTOOL: Learn more about compiler Warning"
+description: Learn what causes the Aspire compiler warning ASPIREDOTNETTOOL and how to fix it so your AppHost builds cleanly.
---
import { Badge } from '@astrojs/starlight/components';
diff --git a/src/frontend/src/content/docs/diagnostics/aspiredurabletask001.mdx b/src/frontend/src/content/docs/diagnostics/aspiredurabletask001.mdx
index a4b9e8cf8..c71fcce07 100644
--- a/src/frontend/src/content/docs/diagnostics/aspiredurabletask001.mdx
+++ b/src/frontend/src/content/docs/diagnostics/aspiredurabletask001.mdx
@@ -1,6 +1,7 @@
---
title: Compiler Warning ASPIREDURABLETASK001
-description: Learn more about compiler Warning ASPIREDURABLETASK001. Durable Task scheduler and task hub APIs are for evaluation purposes only and are subject to change or removal in future updates.
+seoTitle: "ASPIREDURABLETASK001: Durable Task scheduler and task hub"
+description: Learn what causes the Aspire compiler warning ASPIREDURABLETASK001 and how to fix it so your AppHost builds cleanly.
---
import { Badge } from '@astrojs/starlight/components';
diff --git a/src/frontend/src/content/docs/diagnostics/aspireexport001.mdx b/src/frontend/src/content/docs/diagnostics/aspireexport001.mdx
index 90e4eb6a0..683262b88 100644
--- a/src/frontend/src/content/docs/diagnostics/aspireexport001.mdx
+++ b/src/frontend/src/content/docs/diagnostics/aspireexport001.mdx
@@ -1,6 +1,7 @@
---
title: Compiler Error ASPIREEXPORT001
-description: Learn more about compiler Error ASPIREEXPORT001. A method marked with [AspireExport] must be static.
+seoTitle: "ASPIREEXPORT001: A method marked with [AspireExport] must be"
+description: Learn what causes the Aspire compiler error ASPIREEXPORT001 — a method marked with [AspireExport] must be static — and how to fix it in your AppHost.
---
import { Badge } from '@astrojs/starlight/components';
diff --git a/src/frontend/src/content/docs/diagnostics/aspireexport002.mdx b/src/frontend/src/content/docs/diagnostics/aspireexport002.mdx
index 46b96e1f9..b3f3ddfc8 100644
--- a/src/frontend/src/content/docs/diagnostics/aspireexport002.mdx
+++ b/src/frontend/src/content/docs/diagnostics/aspireexport002.mdx
@@ -1,6 +1,7 @@
---
title: Compiler Error ASPIREEXPORT002
-description: Learn more about compiler Error ASPIREEXPORT002. The export ID format is invalid and must be a valid identifier.
+seoTitle: "ASPIREEXPORT002: The export ID format is invalid and must be"
+description: Learn what causes the Aspire compiler error ASPIREEXPORT002 — the export ID format is invalid and must be a valid identifier.
---
import { Badge } from '@astrojs/starlight/components';
diff --git a/src/frontend/src/content/docs/diagnostics/aspireexport003.mdx b/src/frontend/src/content/docs/diagnostics/aspireexport003.mdx
index e30912530..044796309 100644
--- a/src/frontend/src/content/docs/diagnostics/aspireexport003.mdx
+++ b/src/frontend/src/content/docs/diagnostics/aspireexport003.mdx
@@ -1,6 +1,7 @@
---
title: Compiler Error ASPIREEXPORT003
-description: Learn more about compiler Error ASPIREEXPORT003. The return type of an [AspireExport] method is not ATS-compatible.
+seoTitle: "ASPIREEXPORT003: The return type of an [AspireExport] method"
+description: Learn what causes the Aspire compiler error ASPIREEXPORT003 — the return type of an [AspireExport] method is not ATS-compatible.
---
import { Badge } from '@astrojs/starlight/components';
diff --git a/src/frontend/src/content/docs/diagnostics/aspireexport004.mdx b/src/frontend/src/content/docs/diagnostics/aspireexport004.mdx
index 5fa7f9afe..cdb39da58 100644
--- a/src/frontend/src/content/docs/diagnostics/aspireexport004.mdx
+++ b/src/frontend/src/content/docs/diagnostics/aspireexport004.mdx
@@ -1,6 +1,7 @@
---
title: Compiler Error ASPIREEXPORT004
-description: Learn more about compiler Error ASPIREEXPORT004. A parameter type in an [AspireExport] method is not ATS-compatible.
+seoTitle: "ASPIREEXPORT004: A parameter type in an [AspireExport]"
+description: Learn what causes the Aspire compiler error ASPIREEXPORT004 — a parameter type in an [AspireExport] method is not ATS-compatible.
---
import { Badge } from '@astrojs/starlight/components';
diff --git a/src/frontend/src/content/docs/diagnostics/aspireexport005.mdx b/src/frontend/src/content/docs/diagnostics/aspireexport005.mdx
index 6b14d4525..587b08656 100644
--- a/src/frontend/src/content/docs/diagnostics/aspireexport005.mdx
+++ b/src/frontend/src/content/docs/diagnostics/aspireexport005.mdx
@@ -1,6 +1,7 @@
---
title: Compiler Warning ASPIREEXPORT005
-description: Learn more about compiler Warning ASPIREEXPORT005. An [AspireUnion] attribute requires at least 2 types.
+seoTitle: "ASPIREEXPORT005: An [AspireUnion] attribute requires at"
+description: Learn what causes the Aspire compiler warning ASPIREEXPORT005 — an [AspireUnion] attribute requires at least 2 types — and how to fix it in your AppHost.
---
import { Badge } from '@astrojs/starlight/components';
diff --git a/src/frontend/src/content/docs/diagnostics/aspireexport006.mdx b/src/frontend/src/content/docs/diagnostics/aspireexport006.mdx
index 05b218c60..ec676c04a 100644
--- a/src/frontend/src/content/docs/diagnostics/aspireexport006.mdx
+++ b/src/frontend/src/content/docs/diagnostics/aspireexport006.mdx
@@ -1,6 +1,7 @@
---
title: Compiler Warning ASPIREEXPORT006
-description: Learn more about compiler Warning ASPIREEXPORT006. A type in an [AspireUnion] attribute is not ATS-compatible.
+seoTitle: "ASPIREEXPORT006: A type in an [AspireUnion] attribute is not"
+description: Learn what causes the Aspire compiler warning ASPIREEXPORT006 — a type in an [AspireUnion] attribute is not ATS-compatible — and how to fix it in your AppHost.
---
import { Badge } from '@astrojs/starlight/components';
diff --git a/src/frontend/src/content/docs/diagnostics/aspireexport007.mdx b/src/frontend/src/content/docs/diagnostics/aspireexport007.mdx
index e6e2a9485..721327a96 100644
--- a/src/frontend/src/content/docs/diagnostics/aspireexport007.mdx
+++ b/src/frontend/src/content/docs/diagnostics/aspireexport007.mdx
@@ -1,6 +1,7 @@
---
title: Compiler Warning ASPIREEXPORT007
-description: Learn more about compiler Warning ASPIREEXPORT007. Duplicate export ID detected for the same target type.
+seoTitle: "ASPIREEXPORT007: Duplicate export ID detected for the same"
+description: Learn what causes the Aspire compiler warning ASPIREEXPORT007 — duplicate export ID detected for the same target type — and how to fix it in your AppHost.
---
import { Badge } from '@astrojs/starlight/components';
diff --git a/src/frontend/src/content/docs/diagnostics/aspireexport008.mdx b/src/frontend/src/content/docs/diagnostics/aspireexport008.mdx
index ce53d8e0d..f4b78e5fc 100644
--- a/src/frontend/src/content/docs/diagnostics/aspireexport008.mdx
+++ b/src/frontend/src/content/docs/diagnostics/aspireexport008.mdx
@@ -1,6 +1,7 @@
---
title: Compiler Warning ASPIREEXPORT008
-description: Learn more about compiler Warning ASPIREEXPORT008. A public extension method on an exported type is missing [AspireExport] or [AspireExportIgnore].
+seoTitle: "ASPIREEXPORT008: A public extension method on an exported"
+description: Learn what causes the Aspire compiler warning ASPIREEXPORT008 — a public extension method on an exported type is missing [AspireExport] or [AspireExportIgnore].
---
import { Badge } from '@astrojs/starlight/components';
diff --git a/src/frontend/src/content/docs/diagnostics/aspireexport009.mdx b/src/frontend/src/content/docs/diagnostics/aspireexport009.mdx
index d9fd662dd..57f9dff2b 100644
--- a/src/frontend/src/content/docs/diagnostics/aspireexport009.mdx
+++ b/src/frontend/src/content/docs/diagnostics/aspireexport009.mdx
@@ -1,6 +1,7 @@
---
title: Compiler Warning ASPIREEXPORT009
-description: Learn more about compiler Warning ASPIREEXPORT009. The export name may collide with names from other integrations.
+seoTitle: "ASPIREEXPORT009: The export name may collide with names from"
+description: Learn what causes the Aspire compiler warning ASPIREEXPORT009 — the export name may collide with names from other integrations.
---
import { Badge } from '@astrojs/starlight/components';
diff --git a/src/frontend/src/content/docs/diagnostics/aspireexport010.mdx b/src/frontend/src/content/docs/diagnostics/aspireexport010.mdx
index 1383054ce..c3d00ebe8 100644
--- a/src/frontend/src/content/docs/diagnostics/aspireexport010.mdx
+++ b/src/frontend/src/content/docs/diagnostics/aspireexport010.mdx
@@ -1,6 +1,7 @@
---
title: Compiler Warning ASPIREEXPORT010
-description: Learn more about compiler Warning ASPIREEXPORT010. A synchronous callback parameter is invoked inline and may deadlock in multi-language app hosts.
+seoTitle: "ASPIREEXPORT010: A synchronous callback parameter is invoked"
+description: Learn what causes the Aspire compiler warning ASPIREEXPORT010 — a synchronous callback parameter is invoked inline and may deadlock in multi-language app hosts.
---
import { Badge } from '@astrojs/starlight/components';
diff --git a/src/frontend/src/content/docs/diagnostics/aspireexport013.mdx b/src/frontend/src/content/docs/diagnostics/aspireexport013.mdx
index b41c4adca..6a93279e7 100644
--- a/src/frontend/src/content/docs/diagnostics/aspireexport013.mdx
+++ b/src/frontend/src/content/docs/diagnostics/aspireexport013.mdx
@@ -1,6 +1,7 @@
---
title: Compiler Warning ASPIREEXPORT013
-description: Learn more about compiler Warning ASPIREEXPORT013. A polyglot capability ID is defined by multiple exports in the same assembly.
+seoTitle: "ASPIREEXPORT013: A polyglot capability ID is defined by"
+description: Learn what causes the Aspire compiler warning ASPIREEXPORT013 — a polyglot capability ID is defined by multiple exports in the same assembly.
---
import { Badge } from '@astrojs/starlight/components';
diff --git a/src/frontend/src/content/docs/diagnostics/aspireextension001.mdx b/src/frontend/src/content/docs/diagnostics/aspireextension001.mdx
index 020f63e88..8423af112 100644
--- a/src/frontend/src/content/docs/diagnostics/aspireextension001.mdx
+++ b/src/frontend/src/content/docs/diagnostics/aspireextension001.mdx
@@ -1,6 +1,7 @@
---
title: Compiler Warning ASPIREEXTENSION001
-description: Learn more about compiler Warning ASPIREEXTENSION001. Extension debugging support APIs are for evaluation purposes only and are subject to change or removal in future updates.
+seoTitle: "ASPIREEXTENSION001: Extension debugging support APIs are for"
+description: Learn what causes the Aspire compiler warning ASPIREEXTENSION001 and how to fix it so your AppHost builds cleanly.
---
import { Badge } from '@astrojs/starlight/components';
diff --git a/src/frontend/src/content/docs/diagnostics/aspirefilesystem001.mdx b/src/frontend/src/content/docs/diagnostics/aspirefilesystem001.mdx
index 549ce517f..2980f240e 100644
--- a/src/frontend/src/content/docs/diagnostics/aspirefilesystem001.mdx
+++ b/src/frontend/src/content/docs/diagnostics/aspirefilesystem001.mdx
@@ -1,6 +1,7 @@
---
title: Compiler Warning ASPIREFILESYSTEM001
-description: Learn more about compiler Warning ASPIREFILESYSTEM001. File system service types and members are for evaluation purposes only and are subject to change or removal in future updates.
+seoTitle: "ASPIREFILESYSTEM001: File system service types and members"
+description: Learn what causes the Aspire compiler warning ASPIREFILESYSTEM001 and how to fix it so your AppHost builds cleanly.
---
import { Badge } from '@astrojs/starlight/components';
diff --git a/src/frontend/src/content/docs/diagnostics/aspirehostingpython001.mdx b/src/frontend/src/content/docs/diagnostics/aspirehostingpython001.mdx
index ad92589ba..fb054ceb0 100644
--- a/src/frontend/src/content/docs/diagnostics/aspirehostingpython001.mdx
+++ b/src/frontend/src/content/docs/diagnostics/aspirehostingpython001.mdx
@@ -1,6 +1,7 @@
---
title: Compiler Error ASPIREHOSTINGPYTHON001
-description: Learn more about compiler Error ASPIREHOSTINGPYTHON001. `AddPythonApp` is for evaluation purposes only and is subject to change or removal in future updates.
+seoTitle: "ASPIREHOSTINGPYTHON001: `AddPythonApp` is for evaluation"
+description: Learn what causes the Aspire compiler error ASPIREHOSTINGPYTHON001 and how to fix it so your AppHost builds cleanly.
---
import { Badge } from '@astrojs/starlight/components';
diff --git a/src/frontend/src/content/docs/diagnostics/aspireinteraction001.mdx b/src/frontend/src/content/docs/diagnostics/aspireinteraction001.mdx
index 56ef5525f..cea873111 100644
--- a/src/frontend/src/content/docs/diagnostics/aspireinteraction001.mdx
+++ b/src/frontend/src/content/docs/diagnostics/aspireinteraction001.mdx
@@ -1,6 +1,7 @@
---
title: Compiler Warning ASPIREINTERACTION001
-description: Learn more about compiler Warning ASPIREINTERACTION001. Interaction service types and members are for evaluation purposes only and are subject to change or removal in future updates.
+seoTitle: "ASPIREINTERACTION001: Interaction service types and members"
+description: Learn what causes the Aspire compiler warning ASPIREINTERACTION001 and how to fix it so your AppHost builds cleanly.
---
import { Badge } from '@astrojs/starlight/components';
diff --git a/src/frontend/src/content/docs/diagnostics/aspirejavascript001.mdx b/src/frontend/src/content/docs/diagnostics/aspirejavascript001.mdx
index 89bc42c79..a89deb170 100644
--- a/src/frontend/src/content/docs/diagnostics/aspirejavascript001.mdx
+++ b/src/frontend/src/content/docs/diagnostics/aspirejavascript001.mdx
@@ -1,6 +1,7 @@
---
title: Compiler Warning ASPIREJAVASCRIPT001
-description: Learn more about compiler Warning ASPIREJAVASCRIPT001. JavaScript hosting APIs are for evaluation purposes only and are subject to change or removal in future updates.
+seoTitle: "ASPIREJAVASCRIPT001: JavaScript hosting APIs are for"
+description: Learn what causes the Aspire compiler warning ASPIREJAVASCRIPT001 and how to fix it so your AppHost builds cleanly.
---
import { Badge } from '@astrojs/starlight/components';
diff --git a/src/frontend/src/content/docs/diagnostics/aspiremcp001.mdx b/src/frontend/src/content/docs/diagnostics/aspiremcp001.mdx
index 423d9691b..4fd14e210 100644
--- a/src/frontend/src/content/docs/diagnostics/aspiremcp001.mdx
+++ b/src/frontend/src/content/docs/diagnostics/aspiremcp001.mdx
@@ -1,6 +1,7 @@
---
title: Compiler Warning ASPIREMCP001
-description: Learn more about compiler Warning ASPIREMCP001. MCP server types and members are for evaluation purposes only and are subject to change or removal in future updates.
+seoTitle: "ASPIREMCP001: MCP server types and members are for"
+description: Learn what causes the Aspire compiler warning ASPIREMCP001 and how to fix it so your AppHost builds cleanly. Resolve or suppress it to keep your Aspire build.
---
import { Badge } from '@astrojs/starlight/components';
diff --git a/src/frontend/src/content/docs/diagnostics/aspirepipelines001.mdx b/src/frontend/src/content/docs/diagnostics/aspirepipelines001.mdx
index e547c3a83..43453e487 100644
--- a/src/frontend/src/content/docs/diagnostics/aspirepipelines001.mdx
+++ b/src/frontend/src/content/docs/diagnostics/aspirepipelines001.mdx
@@ -1,6 +1,7 @@
---
title: Compiler Error ASPIREPIPELINES001
-description: Learn more about compiler Error ASPIREPIPELINES001. Pipeline infrastructure APIs are for evaluation purposes only and are subject to change or removal in future updates.
+seoTitle: "ASPIREPIPELINES001: Pipeline infrastructure APIs are for"
+description: Learn what causes the Aspire compiler error ASPIREPIPELINES001 and how to fix it so your AppHost builds cleanly.
---
import { Badge } from '@astrojs/starlight/components';
diff --git a/src/frontend/src/content/docs/diagnostics/aspirepipelines002.mdx b/src/frontend/src/content/docs/diagnostics/aspirepipelines002.mdx
index 20fa7c8ff..9e61a754b 100644
--- a/src/frontend/src/content/docs/diagnostics/aspirepipelines002.mdx
+++ b/src/frontend/src/content/docs/diagnostics/aspirepipelines002.mdx
@@ -1,6 +1,7 @@
---
title: Compiler Error ASPIREPIPELINES002
-description: Learn more about compiler Error ASPIREPIPELINES002. Deployment state manager APIs are for evaluation purposes only and are subject to change or removal in future updates.
+seoTitle: "ASPIREPIPELINES002: Deployment state manager APIs are for"
+description: Learn what causes the Aspire compiler error ASPIREPIPELINES002 and how to fix it so your AppHost builds cleanly.
---
import { Badge } from '@astrojs/starlight/components';
diff --git a/src/frontend/src/content/docs/diagnostics/aspirepipelines003.mdx b/src/frontend/src/content/docs/diagnostics/aspirepipelines003.mdx
index c04df4424..4c3e3ac86 100644
--- a/src/frontend/src/content/docs/diagnostics/aspirepipelines003.mdx
+++ b/src/frontend/src/content/docs/diagnostics/aspirepipelines003.mdx
@@ -1,6 +1,7 @@
---
title: Compiler Error ASPIREPIPELINES003
-description: Learn more about compiler Error ASPIREPIPELINES003. Container image build APIs are for evaluation purposes only and are subject to change or removal in future updates.
+seoTitle: "ASPIREPIPELINES003: Container image build APIs are for"
+description: Learn what causes the Aspire compiler error ASPIREPIPELINES003 and how to fix it so your AppHost builds cleanly.
---
import { Badge } from '@astrojs/starlight/components';
diff --git a/src/frontend/src/content/docs/diagnostics/aspirepipelines004.mdx b/src/frontend/src/content/docs/diagnostics/aspirepipelines004.mdx
index d56e4641b..1f079fb34 100644
--- a/src/frontend/src/content/docs/diagnostics/aspirepipelines004.mdx
+++ b/src/frontend/src/content/docs/diagnostics/aspirepipelines004.mdx
@@ -1,6 +1,7 @@
---
title: Compiler Warning ASPIREPIPELINES004
-description: Learn more about compiler Warning ASPIREPIPELINES004. The pipeline output service APIs are experimental and subject to change.
+seoTitle: "ASPIREPIPELINES004: The pipeline output service APIs are"
+description: Learn what causes the Aspire compiler warning ASPIREPIPELINES004 — the pipeline output service APIs are experimental and subject to change.
---
import { Badge } from '@astrojs/starlight/components';
diff --git a/src/frontend/src/content/docs/diagnostics/aspirepostgres001.mdx b/src/frontend/src/content/docs/diagnostics/aspirepostgres001.mdx
index b4472d6b8..8cdc4fd67 100644
--- a/src/frontend/src/content/docs/diagnostics/aspirepostgres001.mdx
+++ b/src/frontend/src/content/docs/diagnostics/aspirepostgres001.mdx
@@ -1,6 +1,7 @@
---
title: Compiler Warning ASPIREPOSTGRES001
-description: Learn more about compiler Warning ASPIREPOSTGRES001. The PostgreSQL MCP integration APIs are experimental and subject to change.
+seoTitle: "ASPIREPOSTGRES001: The PostgreSQL MCP integration APIs are"
+description: Learn what causes the Aspire compiler warning ASPIREPOSTGRES001 — the PostgreSQL MCP integration APIs are experimental and subject to change.
---
import { Badge } from '@astrojs/starlight/components';
diff --git a/src/frontend/src/content/docs/diagnostics/aspireprobes001.mdx b/src/frontend/src/content/docs/diagnostics/aspireprobes001.mdx
index 0d4b24f3a..13487c614 100644
--- a/src/frontend/src/content/docs/diagnostics/aspireprobes001.mdx
+++ b/src/frontend/src/content/docs/diagnostics/aspireprobes001.mdx
@@ -1,6 +1,7 @@
---
title: Compiler Warning ASPIREPROBES001
-description: Learn more about compiler Warning ASPIREPROBES001. Probe-related types and members are for evaluation purposes only and are subject to change or removal in future updates.
+seoTitle: "ASPIREPROBES001: Probe-related types and members are for"
+description: Learn what causes the Aspire compiler warning ASPIREPROBES001 and how to fix it so your AppHost builds cleanly.
---
import { Badge } from '@astrojs/starlight/components';
diff --git a/src/frontend/src/content/docs/diagnostics/aspireprocesscommand001.mdx b/src/frontend/src/content/docs/diagnostics/aspireprocesscommand001.mdx
new file mode 100644
index 000000000..6f80f3f4f
--- /dev/null
+++ b/src/frontend/src/content/docs/diagnostics/aspireprocesscommand001.mdx
@@ -0,0 +1,77 @@
+---
+title: Compiler Warning ASPIREPROCESSCOMMAND001
+seoTitle: "ASPIREPROCESSCOMMAND001: Process command types and members"
+description: Learn what causes the Aspire compiler warning ASPIREPROCESSCOMMAND001 and how to fix it so your AppHost builds cleanly.
+---
+
+import { Badge } from '@astrojs/starlight/components';
+
+
+
+> Process command types and members are for evaluation purposes only and are subject to change or removal in future updates. Suppress this diagnostic to proceed.
+
+This diagnostic warning is reported when using the experimental `WithProcessCommand` extension method and related process command APIs. These APIs enable AppHost authors to expose custom resource commands backed by local processes (binaries, shell scripts, and other executables on the AppHost machine).
+
+The following APIs are protected by this diagnostic:
+
+- `WithProcessCommand` on `IResourceBuilder` — registers a command that starts a local process when invoked
+- `ProcessCommandSpec` — describes the process to start, including executable path, arguments, environment variables, working directory, and stdin content
+- `ProcessCommandOptions` — controls command behavior such as the maximum captured output line count, success exit codes, and how the result is displayed
+
+## Example
+
+The following code generates `ASPIREPROCESSCOMMAND001`:
+
+```csharp title="C# — AppHost.cs"
+var builder = DistributedApplication.CreateBuilder(args);
+
+builder.AddRedis("cache")
+ .WithProcessCommand(
+ name: "dotnet-version",
+ displayName: "Show .NET version",
+ executablePath: "dotnet",
+ arguments: ["--version"]);
+
+builder.Build().Run();
+```
+
+The diagnostic is triggered because `WithProcessCommand`, `ProcessCommandSpec`, and `ProcessCommandOptions` are all marked with the `[Experimental("ASPIREPROCESSCOMMAND001")]` attribute.
+
+## To correct this warning
+
+Suppress the warning with one of the following methods:
+
+- Set the severity of the rule in the _.editorconfig_ file.
+
+ ```ini title=".editorconfig"
+ [*.{cs,vb}]
+ dotnet_diagnostic.ASPIREPROCESSCOMMAND001.severity = none
+ ```
+
+ For more information about editor config files, see [Configuration files for code analysis rules](/diagnostics/overview/#suppress-in-the-editorconfig-file).
+
+- Add the following `PropertyGroup` to your project file:
+
+ ```xml title="C# project file"
+
+ $(NoWarn);ASPIREPROCESSCOMMAND001
+
+ ```
+
+- Suppress in code with the `#pragma warning disable ASPIREPROCESSCOMMAND001` directive:
+
+ ```csharp title="C# — Suppressing the warning"
+ #pragma warning disable ASPIREPROCESSCOMMAND001
+ builder.AddRedis("cache")
+ .WithProcessCommand("dotnet-version", "Show .NET version", "dotnet", ["--version"]);
+ #pragma warning restore ASPIREPROCESSCOMMAND001
+ ```
+
+## See also
+
+- [Process-backed resource commands](/fundamentals/custom-resource-commands/#process-backed-resource-commands) — Learn how to use `WithProcessCommand`
diff --git a/src/frontend/src/content/docs/diagnostics/aspireproxyendpoints001.mdx b/src/frontend/src/content/docs/diagnostics/aspireproxyendpoints001.mdx
index b64f13924..16ec22cb3 100644
--- a/src/frontend/src/content/docs/diagnostics/aspireproxyendpoints001.mdx
+++ b/src/frontend/src/content/docs/diagnostics/aspireproxyendpoints001.mdx
@@ -1,6 +1,7 @@
---
title: Compiler Error ASPIREPROXYENDPOINTS001
-description: Learn more about compiler Error ASPIREPROXYENDPOINTS001. Members are for evaluation purposes only and are subject to change or removal in future updates.
+seoTitle: "ASPIREPROXYENDPOINTS001: Members are for evaluation purposes"
+description: Learn what causes the Aspire compiler error ASPIREPROXYENDPOINTS001 and how to fix it so your AppHost builds cleanly.
---
import { Badge } from '@astrojs/starlight/components';
diff --git a/src/frontend/src/content/docs/diagnostics/aspirepublishers001.mdx b/src/frontend/src/content/docs/diagnostics/aspirepublishers001.mdx
index 8be495ea0..01df2c475 100644
--- a/src/frontend/src/content/docs/diagnostics/aspirepublishers001.mdx
+++ b/src/frontend/src/content/docs/diagnostics/aspirepublishers001.mdx
@@ -1,6 +1,7 @@
---
title: Compiler Error ASPIREPUBLISHERS001
-description: Learn more about compiler Error ASPIREPUBLISHERS001. Publishers are for evaluation purposes only and are subject to change or removal in future updates.
+seoTitle: "ASPIREPUBLISHERS001: Publishers are for evaluation purposes"
+description: Learn what causes the Aspire compiler error ASPIREPUBLISHERS001 and how to fix it so your AppHost builds cleanly.
---
import { Badge } from '@astrojs/starlight/components';
diff --git a/src/frontend/src/content/docs/diagnostics/aspireusersecrets001.mdx b/src/frontend/src/content/docs/diagnostics/aspireusersecrets001.mdx
index 646dce286..4f4afa6e4 100644
--- a/src/frontend/src/content/docs/diagnostics/aspireusersecrets001.mdx
+++ b/src/frontend/src/content/docs/diagnostics/aspireusersecrets001.mdx
@@ -1,6 +1,7 @@
---
title: Compiler Warning ASPIREUSERSECRETS001
-description: Learn more about compiler Warning ASPIREUSERSECRETS001. The user secrets manager APIs are experimental and subject to change.
+seoTitle: "ASPIREUSERSECRETS001: The user secrets manager APIs are"
+description: Learn what causes the Aspire compiler warning ASPIREUSERSECRETS001 — the user secrets manager APIs are experimental and subject to change.
---
import { Badge } from '@astrojs/starlight/components';
diff --git a/src/frontend/src/content/docs/diagnostics/overview.mdx b/src/frontend/src/content/docs/diagnostics/overview.mdx
index 9dd724a44..2e2321820 100644
--- a/src/frontend/src/content/docs/diagnostics/overview.mdx
+++ b/src/frontend/src/content/docs/diagnostics/overview.mdx
@@ -1,6 +1,7 @@
---
title: Diagnostics overview
-description: Learn about the diagnostics tools and features available in Aspire.
+seoTitle: 'Aspire diagnostics overview: ASPIRE compiler diagnostics'
+description: Learn about the diagnostics tools and features available in Aspire — analyzers, compiler errors, the dashboard, structured telemetry, and troubleshooting workflows.
---
The following table lists the possible MSBuild and analyzer warnings and errors you might encounter with Aspire:
@@ -52,6 +53,7 @@ The following table lists the possible MSBuild and analyzer warnings and errors
| [ASPIREPIPELINES004](/diagnostics/aspirepipelines004/) | (Experimental) Warning | Type is for evaluation purposes only and is subject to change or removal in future updates. |
| [ASPIREPOSTGRES001](/diagnostics/aspirepostgres001/) | (Experimental) Warning | PostgreSQL MCP integration is for evaluation purposes only and is subject to change or removal in future updates. |
| [ASPIREPROBES001](/diagnostics/aspireprobes001/) | (Experimental) Warning | Probe-related types and members are for evaluation purposes only and are subject to change or removal in future updates. |
+| [ASPIREPROCESSCOMMAND001](/diagnostics/aspireprocesscommand001/) | (Experimental) Warning | Process command types and members are for evaluation purposes only and are subject to change or removal in future updates. |
| [ASPIREPROXYENDPOINTS001](/diagnostics/aspireproxyendpoints001/) | (Experimental) Error | ProxyEndpoint members are for evaluation purposes only and are subject to change or removal in future updates. |
| [ASPIREPUBLISHERS001](/diagnostics/aspirepublishers001/) | Error | Publishers are for evaluation purposes only and are subject to change or removal in future updates. |
| [ASPIREUSERSECRETS001](/diagnostics/aspireusersecrets001/) | (Experimental) Warning | Type is for evaluation purposes only and is subject to change or removal in future updates. |
diff --git a/src/frontend/src/content/docs/docs.mdx b/src/frontend/src/content/docs/docs.mdx
index 3d06725b2..32fbf7581 100644
--- a/src/frontend/src/content/docs/docs.mdx
+++ b/src/frontend/src/content/docs/docs.mdx
@@ -1,10 +1,10 @@
---
-title: Welcome to Aspire
+title: Aspire documentation home
prev: false
next:
link: /integrations/
label: Integrations
-description: Learn how Aspire helps you model, run, observe, and deploy distributed applications across C#, TypeScript, JavaScript, Python, and more.
+description: "Browse the official Aspire documentation: get started with C# and TypeScript AppHosts, model distributed apps, deploy to Azure and Kubernetes, and observe in the dashboard."
banner:
content: |
🆕 Aspire 13.3 is here! — See what's new
diff --git a/src/frontend/src/content/docs/es/index.mdx b/src/frontend/src/content/docs/es/index.mdx
index 4463185dc..2e7a3ad8e 100644
--- a/src/frontend/src/content/docs/es/index.mdx
+++ b/src/frontend/src/content/docs/es/index.mdx
@@ -11,7 +11,7 @@ prev: false
next: false
banner:
content: |
- 🚀 ¡Aspire 13.3 ha sido lanzado! — Ver qué hay de nuevo en Aspire 13.3.
+ 🚀 ¡Aspire 13.4 ha sido lanzado! — Ver qué hay de nuevo en Aspire 13.4.
hero:
tagline: Tu stack, simplificado. Orquesta frontends, APIs, contenedores y bases de datos sin esfuerzo—sin reescrituras, sin límites. Extiende Aspire para impulsar cualquier proyecto.
image:
diff --git a/src/frontend/src/content/docs/extensibility/custom-resources.mdx b/src/frontend/src/content/docs/extensibility/custom-resources.mdx
index 9e85fec9b..c0b7aba83 100644
--- a/src/frontend/src/content/docs/extensibility/custom-resources.mdx
+++ b/src/frontend/src/content/docs/extensibility/custom-resources.mdx
@@ -1,6 +1,6 @@
---
-title: Aspire custom resources
-description: Learn how to create custom resource types for the Aspire app host to model your application's unique infrastructure components.
+title: Build custom Aspire resources
+description: "Learn how to create custom resource types for the Aspire AppHost to model your application's unique services, containers, executables, and external dependencies."
---
import { Aside } from '@astrojs/starlight/components';
diff --git a/src/frontend/src/content/docs/extensibility/interaction-service.mdx b/src/frontend/src/content/docs/extensibility/interaction-service.mdx
index 37e53fba8..981e98409 100644
--- a/src/frontend/src/content/docs/extensibility/interaction-service.mdx
+++ b/src/frontend/src/content/docs/extensibility/interaction-service.mdx
@@ -1,6 +1,7 @@
---
title: Interaction service (Preview)
-description: Use the interaction service API to prompt users for input, request confirmation, and display messages in the Aspire dashboard or CLI during publish and deploy.
+seoTitle: Aspire interaction service (Preview) for AppHost authors
+description: Use the Aspire interaction service to prompt users for input, request confirmation, and display messages from AppHost extensions, integrations, and custom resources.
---
import { Aside, Steps } from '@astrojs/starlight/components';
diff --git a/src/frontend/src/content/docs/extensibility/multi-language-integration-authoring.mdx b/src/frontend/src/content/docs/extensibility/multi-language-integration-authoring.mdx
index f86be32fc..486da1914 100644
--- a/src/frontend/src/content/docs/extensibility/multi-language-integration-authoring.mdx
+++ b/src/frontend/src/content/docs/extensibility/multi-language-integration-authoring.mdx
@@ -1,6 +1,7 @@
---
title: Multi-language integrations
-description: Learn how to annotate your Aspire hosting integration so it works with TypeScript, Python, Java, and other language AppHosts.
+seoTitle: Author multi-language Aspire integrations for AppHost
+description: Annotate your Aspire hosting integration so it works with TypeScript, Python, Java, and other languages — and learn how the generator emits language-specific SDKs.
---
import {
diff --git a/src/frontend/src/content/docs/fr/index.mdx b/src/frontend/src/content/docs/fr/index.mdx
index 553b7e849..f0be75ae1 100644
--- a/src/frontend/src/content/docs/fr/index.mdx
+++ b/src/frontend/src/content/docs/fr/index.mdx
@@ -11,7 +11,7 @@ prev: false
next: false
banner:
content: |
- 🚀 Aspire 13.3 est disponible ! — Découvrez les nouveautés d'Aspire 13.3.
+ 🚀 Aspire 13.4 est disponible ! — Découvrez les nouveautés d'Aspire 13.4.
hero:
tagline: Votre stack, simplifiée. Orchestrez vos frontends, APIs, conteneurs et bases de données sans effort — sans réécriture, sans limites. Étendez Aspire pour propulser n'importe quel projet.
image:
diff --git a/src/frontend/src/content/docs/fundamentals/annotations-overview.mdx b/src/frontend/src/content/docs/fundamentals/annotations-overview.mdx
index 26676a6c9..ba181f3ad 100644
--- a/src/frontend/src/content/docs/fundamentals/annotations-overview.mdx
+++ b/src/frontend/src/content/docs/fundamentals/annotations-overview.mdx
@@ -1,6 +1,7 @@
---
title: Resource annotations
-description: Learn about annotations in Aspire, how they work, and how to create custom annotations for extending resource behavior.
+seoTitle: Aspire resource annotations overview for AppHost authors
+description: Learn how Aspire annotations work, how the AppHost composes built-in annotations, and how to create custom annotations to extend the resource model in your apps.
---
import { Aside } from '@astrojs/starlight/components';
diff --git a/src/frontend/src/content/docs/fundamentals/container-networking.mdx b/src/frontend/src/content/docs/fundamentals/container-networking.mdx
index 3722c14a5..5995c1ac8 100644
--- a/src/frontend/src/content/docs/fundamentals/container-networking.mdx
+++ b/src/frontend/src/content/docs/fundamentals/container-networking.mdx
@@ -1,6 +1,7 @@
---
title: Container networking
-description: Learn how the DCP container tunnel enables reliable container-to-host communication in Aspire.
+seoTitle: Aspire container networking and DCP tunnel essentials
+description: Learn how the Aspire DCP container tunnel enables reliable container-to-host and container-to-container networking in development, including ports and service discovery.
---
import { Aside, Steps } from '@astrojs/starlight/components';
diff --git a/src/frontend/src/content/docs/fundamentals/custom-resource-commands.mdx b/src/frontend/src/content/docs/fundamentals/custom-resource-commands.mdx
index 3f22f5d34..232109f88 100644
--- a/src/frontend/src/content/docs/fundamentals/custom-resource-commands.mdx
+++ b/src/frontend/src/content/docs/fundamentals/custom-resource-commands.mdx
@@ -1,6 +1,7 @@
---
title: Custom resource commands
-description: Learn how to create custom resource commands in Aspire.
+seoTitle: Aspire custom resource commands in the AppHost dashboard
+description: Create custom resource commands in Aspire to add buttons and actions to the dashboard — refresh data, run scripts, and trigger workflows directly from the resource graph.
---
import { Aside, Tabs, TabItem } from '@astrojs/starlight/components';
@@ -777,7 +778,7 @@ return {
### Auto-open the result dialog in the dashboard
-By default, the dashboard surfaces the payload as a **View response** action on the notification in the [notification center](/dashboard/explore/#notification-center). Set `DisplayImmediately` on `CommandResultData` to open the visualizer the moment the command completes — useful for short commands where the response _is_ the point:
+By default, the dashboard surfaces the payload as a **View response** action on the notification in the [notification center](/dashboard/explore/#notification-center). Pass `displayImmediately: true` to `CommandResults.Success` to open the visualizer the moment the command completes — useful for short commands where the response _is_ the point:
@@ -785,12 +786,9 @@ By default, the dashboard surfaces the payload as a **View response** action on
```csharp title="C# — AppHost.cs"
return CommandResults.Success(
message: "Access token issued.",
- value: new CommandResultData
- {
- Value = json,
- Format = CommandResultFormat.Json,
- DisplayImmediately = true,
- });
+ result: json,
+ resultFormat: CommandResultFormat.Json,
+ displayImmediately: true);
```
@@ -846,3 +844,524 @@ else
exit 1
fi
```
+
+## Command arguments
+
+Commands can declare input arguments that the dashboard renders as a prompt dialog before execution and that the CLI accepts as ordered positional values. Arguments are defined by setting `CommandOptions.Arguments` to an array of `InteractionInput` objects.
+
+
+
+
+```csharp title="AppHost.cs"
+using Aspire.Hosting.ApplicationModel;
+
+var builder = DistributedApplication.CreateBuilder(args);
+
+builder.AddProject("myservice")
+ .WithCommand(
+ name: "send-message",
+ displayName: "Send Message",
+ executeCommand: context =>
+ {
+ var text = context.Arguments.GetString("text")!;
+ var repeat = int.TryParse(context.Arguments.GetString("repeat"), out var r) ? r : 1;
+
+ for (var i = 0; i < repeat; i++)
+ {
+ context.Logger.LogInformation("{Text}", text);
+ }
+
+ return Task.FromResult(CommandResults.Success($"Sent '{text}' {repeat} time(s)."));
+ },
+ commandOptions: new CommandOptions
+ {
+ Arguments =
+ [
+ new InteractionInput { Name = "text", Label = "Message", InputType = InputType.Text, Required = true, MaxLength = 200 },
+ new InteractionInput { Name = "repeat", Label = "Repeat", InputType = InputType.Number, Value = "1" },
+ ]
+ });
+
+builder.Build().Run();
+```
+
+
+
+
+```typescript title="apphost.ts"
+import {
+ createBuilder,
+ InputType,
+ type ExecuteCommandContext,
+ type ExecuteCommandResult,
+} from './.modules/aspire.js';
+
+const builder = await createBuilder();
+
+await builder
+ .addNodeApp("myservice", "./myservice", "src/server.ts")
+ .withCommand(
+ "send-message",
+ "Send Message",
+ async (context: ExecuteCommandContext): Promise => {
+ const args = await context.arguments();
+ const text = await args.requiredValue("text");
+ const repeat = Number(await args.value("repeat") ?? "1");
+
+ return { success: true, message: `Sent '${text}' ${repeat} time(s).` };
+ },
+ {
+ commandOptions: {
+ arguments: [
+ { name: "text", label: "Message", inputType: InputType.Text, required: true, maxLength: 200 },
+ { name: "repeat", label: "Repeat", inputType: InputType.Number, value: "1" },
+ ]
+ }
+ });
+
+await builder.build().run();
+```
+
+
+
+
+### InteractionInput properties
+
+Each `InteractionInput` object in the `Arguments` array configures one input field in the dashboard prompt and one positional argument for the CLI:
+
+| Property | Type | Description |
+|----------|------|-------------|
+| `Name` / `name` | `string` | Unique identifier used to read the value at runtime. |
+| `Label` / `label` | `string?` / `string \| undefined` | Optional human-readable label shown in the dashboard input dialog. When omitted, the name is used as the label. |
+| `InputType` / `inputType` | `InputType` | Controls the widget type. See the table below. |
+| `Value` / `value` | `string?` | Default value pre-filled in the dialog. |
+| `Required` / `required` | `bool` | When `true`, the built-in validator rejects empty submissions. |
+| `MaxLength` / `maxLength` | `int?` | Optional maximum character length for `Text` and `SecretText` inputs. |
+| `Options` / `options` | `IReadOnlyList>?` / `InteractionInputOption[] \| undefined` | Required for `Choice` inputs. Each option provides the submitted key and display value. |
+
+The `InputType` enum controls how the dashboard renders the field and how built-in validation works:
+
+| Value | Dashboard widget | CLI behavior | Built-in validation |
+|-------|-----------------|--------------|---------------------|
+| `Text` | Single-line text box | Positional string value | `Required`, `MaxLength` |
+| `Number` | Number input | Positional string parsed as number | Must be a valid number |
+| `Boolean` | Checkbox | `true` or `false` string | Must be `true` or `false` |
+| `Choice` | Drop-down list | String must match one of `Options` | Must be a member of `Options` |
+| `SecretText` | Masked text box | Positional string value | `Required`, `MaxLength` |
+
+### Read argument values at runtime
+
+The `ExecuteCommandContext` exposes an `Arguments` property (C#) / `arguments()` method (TypeScript) that returns an `InteractionInputCollection` for reading submitted values.
+
+
+
+
+`InteractionInputCollection` provides typed convenience accessors for common argument reads:
+
+```csharp
+var text = context.Arguments.GetString("text"); // string? — null when absent or empty
+var repeat = context.Arguments.GetInt32("repeat"); // int — throws when absent or unparseable
+var shout = context.Arguments.GetBoolean("shout"); // bool — throws when absent or unparseable
+var amount = context.Arguments.GetDouble("amount"); // double — throws when absent or unparseable
+```
+
+`GetString` returns `null` when the argument is absent or empty. The numeric and boolean accessors throw `InvalidOperationException` when the value is missing and `FormatException` (or `OverflowException` for `GetInt32` and `GetDouble`) when the value can't be parsed. Use `Required = true` on `InteractionInput` to enforce presence before the callback runs, or call `GetString` first and parse the result manually if you need a fallback.
+
+
+
+
+`InteractionInputCollection` (returned by `await context.arguments()`) provides idiomatic async helpers:
+
+```typescript
+const args = await context.arguments();
+
+const all = await args.toArray(); // InteractionInput[]
+const input = await args.required("text"); // InteractionInput (throws if absent)
+const text = await args.value("text"); // string | undefined
+const must = await args.requiredValue("text"); // string (throws if absent or empty)
+```
+
+Use `requiredValue` for arguments declared with `required: true` to get a non-nullable string directly. Use `value` when the argument is optional and you want to handle the absent case yourself.
+
+
+
+
+### Pass arguments from the CLI
+
+When invoking a command from the CLI, supply argument values as ordered positional tokens after the command name. The CLI maps them onto the declared `Arguments` array by position:
+
+```bash title="Terminal"
+aspire resource myservice send-message "Hello world" 3 --apphost MyApp.AppHost.csproj
+```
+
+In the example above, `"Hello world"` maps to the first argument (`text`) and `3` maps to the second (`repeat`).
+
+
+The CLI passes all positional values as strings; the AppHost performs type coercion and built-in validation before invoking the command callback. If a required argument is missing or a value fails validation, the CLI receives a structured error instead of invoking the callback.
+
+
+## Argument validation
+
+Commands can run server-side validation before the callback executes. Declare a `ValidateArguments` callback on `CommandOptions` to add custom rules on top of the built-in required, max-length, and type checks.
+
+
+
+
+```csharp title="AppHost.cs"
+using Aspire.Hosting.ApplicationModel;
+
+var builder = DistributedApplication.CreateBuilder(args);
+
+builder.AddProject("myservice")
+ .WithCommand(
+ name: "deploy",
+ displayName: "Deploy",
+ executeCommand: context =>
+ {
+ var target = context.Arguments.GetString("target")!;
+ // ... perform deployment ...
+ return Task.FromResult(CommandResults.Success($"Deployed to {target}."));
+ },
+ commandOptions: new CommandOptions
+ {
+ Arguments =
+ [
+ new InteractionInput { Name = "target", Label = "Target", InputType = InputType.Text, Required = true },
+ ],
+ ValidateArguments = context =>
+ {
+ var target = context.Inputs.GetString("target");
+ if (string.Equals(target, "prod", StringComparison.OrdinalIgnoreCase))
+ {
+ context.AddValidationError("target", "Target must not be 'prod'.");
+ }
+
+ return Task.CompletedTask;
+ }
+ });
+
+builder.Build().Run();
+```
+
+
+
+
+```typescript title="apphost.ts"
+import {
+ createBuilder,
+ InputType,
+ type ExecuteCommandContext,
+ type InputsDialogValidationContext,
+} from './.modules/aspire.js';
+
+const builder = await createBuilder();
+
+await builder
+ .addNodeApp("myservice", "./myservice", "src/server.ts")
+ .withCommand(
+ "deploy",
+ "Deploy",
+ async (context: ExecuteCommandContext) => {
+ const args = await context.arguments();
+ const target = await args.requiredValue("target");
+ // ... perform deployment ...
+ return { success: true, message: `Deployed to ${target}.` };
+ },
+ {
+ commandOptions: {
+ arguments: [
+ { name: "target", label: "Target", inputType: InputType.Text, required: true }
+ ],
+ validateArguments: async (context: InputsDialogValidationContext) => {
+ const inputs = await context.inputs();
+ const target = await inputs.value("target");
+
+ if (target?.toLowerCase() === "prod") {
+ await context.addValidationError("target", "Target must not be 'prod'.");
+ }
+ }
+ }
+ });
+
+await builder.build().run();
+```
+
+
+
+
+Built-in validation runs first (required fields, max length, choice membership, and type coercion). If built-in validation passes, the `ValidateArguments` callback runs next. Either kind of validation failure prevents the command callback from executing and returns structured field errors to the caller:
+
+- **Dashboard**: The input dialog stays open with inline field-level error messages.
+- **CLI / MCP**: The command exits with a non-zero status and prints the field errors to stderr.
+
+The `ValidateArguments` context exposes the same `Inputs`/`inputs()` surface as `ExecuteCommandContext.Arguments`/`arguments()`, so the same typed accessors work in both places.
+
+## Command visibility
+
+By default, commands registered with `WithCommand` are visible to both the Aspire dashboard and to API/MCP callers. The `ResourceCommandVisibility` enum is bit-combinable, so you can restrict or expand where a command appears by setting `CommandOptions.Visibility`:
+
+| Value | Where the command is available |
+|-------|-------------------------------|
+| `ResourceCommandVisibility.UI` | Dashboard and other UI clients only |
+| `ResourceCommandVisibility.Api` | API and MCP clients only |
+| `ResourceCommandVisibility.UI \| ResourceCommandVisibility.Api` | Both UI and API/MCP (default) |
+| `ResourceCommandVisibility.None` | Hidden from all clients |
+
+
+
+
+```csharp title="AppHost.cs"
+using Aspire.Hosting.ApplicationModel;
+
+var builder = DistributedApplication.CreateBuilder(args);
+
+builder.AddProject("myservice")
+ // Only exposed through the API/MCP — not shown in the dashboard
+ .WithCommand(
+ name: "get-metrics",
+ displayName: "Get Metrics",
+ executeCommand: context =>
+ {
+ // ... collect and return metrics ...
+ return Task.FromResult(CommandResults.Success(
+ message: "Metrics collected.",
+ value: new CommandResultData { Value = "{}", Format = CommandResultFormat.Json }));
+ },
+ commandOptions: new CommandOptions
+ {
+ Visibility = ResourceCommandVisibility.Api,
+ });
+
+builder.Build().Run();
+```
+
+
+
+
+```typescript title="apphost.ts"
+import {
+ createBuilder,
+ ResourceCommandVisibility,
+ CommandResultFormat,
+} from './.modules/aspire.js';
+
+const builder = await createBuilder();
+
+await builder
+ .addNodeApp("myservice", "./myservice", "src/server.ts")
+ // Only exposed through the API/MCP — not shown in the dashboard
+ .withCommand(
+ "get-metrics",
+ "Get Metrics",
+ async (_context) => {
+ return {
+ success: true,
+ message: "Metrics collected.",
+ data: { value: "{}", format: CommandResultFormat.Json },
+ };
+ },
+ {
+ commandOptions: {
+ visibility: ResourceCommandVisibility.Api,
+ }
+ });
+
+await builder.build().run();
+```
+
+
+
+
+
+Use `ResourceCommandVisibility.Api` for automation-only commands (diagnostics, scripting, CI integration) that you don't want to clutter the dashboard UI. Use `ResourceCommandVisibility.UI` for interactive commands that only make sense when a developer is watching the results.
+
+
+## Process-backed resource commands
+
+:::caution[Experimental API]
+`WithProcessCommand` is experimental and requires opting in to the [`ASPIREPROCESSCOMMAND001`](/diagnostics/aspireprocesscommand001/) diagnostic suppression. The API shape may change before it stabilizes.
+:::
+
+The `WithProcessCommand` API provides a reusable helper for the common pattern of exposing a local-tool invocation as a resource command. Instead of managing process start, stdout/stderr capture, and cancellation yourself inside a `WithCommand` callback, `WithProcessCommand` does that for you:
+
+- Starts a local process from the AppHost machine using the provided executable path and arguments.
+- Passes arguments as an argument list (not through a shell), so no shell-quoting is needed.
+- Streams stdout and stderr to the command logger (visible in the [Aspire dashboard](/dashboard/explore/#console-logs-page) and via `aspire logs `).
+- Returns the captured output as bounded text (configurable via `MaxOutputLineCount`).
+- Maps non-zero exit codes and cancellation to appropriate `ExecuteCommandResult` values automatically.
+
+:::note
+`WithProcessCommand` runs processes on the **AppHost machine** — not inside a container. Use it for local tools such as `dotnet`, `node`, `docker`, custom CLIs, and scripts.
+:::
+
+### Static process command
+
+The simplest form takes the executable and an argument array directly:
+
+
+
+
+```csharp title="AppHost.cs"
+#pragma warning disable ASPIREPROCESSCOMMAND001
+
+var builder = DistributedApplication.CreateBuilder(args);
+
+builder.AddRedis("cache")
+ .WithProcessCommand(
+ name: "dotnet-version",
+ displayName: "Show .NET version",
+ executablePath: "dotnet",
+ arguments: ["--version"]);
+
+builder.Build().Run();
+```
+
+
+
+
+```typescript title="apphost.ts"
+import { createBuilder } from './.modules/aspire.js';
+
+const builder = await createBuilder();
+
+const cache = await builder.addRedis("cache");
+
+await cache.withProcessCommand(
+ "node-version",
+ "Show Node.js version",
+ {
+ executablePath: "node",
+ arguments: ["--version"],
+ });
+
+await builder.build().run();
+```
+
+
+
+
+When the command runs in the dashboard or CLI, `dotnet --version` (C#) or `node --version` (TypeScript) executes on the AppHost machine, and the version string is captured and displayed as the command output.
+
+### Dynamic process command
+
+When the command arguments depend on runtime context — for example, a dataset name supplied by the user through the dashboard's argument dialog — build the process specification from the command execution context:
+
+
+
+
+```csharp title="AppHost.cs"
+#pragma warning disable ASPIREPROCESSCOMMAND001
+#pragma warning disable ASPIREINTERACTION001
+
+using Aspire.Hosting.ApplicationModel;
+
+var builder = DistributedApplication.CreateBuilder(args);
+
+builder.AddRedis("cache")
+ .WithProcessCommand(
+ name: "seed-data",
+ displayName: "Seed data",
+ createProcessSpec: context => new ProcessCommandSpec("dotnet")
+ {
+ Arguments =
+ [
+ "run",
+ "--project",
+ "tools/SeedData",
+ "--",
+ context.Arguments.GetString("dataset") ?? "small",
+ ],
+ EnvironmentVariables = { ["ConnectionStrings__db"] = "Host=localhost;Database=db" },
+ },
+ options: new ProcessCommandOptions
+ {
+ MaxOutputLineCount = 20,
+ Arguments =
+ [
+ new InteractionInput { Name = "dataset", Label = "Dataset", InputType = InputType.Text, Required = true },
+ ],
+ });
+
+builder.Build().Run();
+```
+
+
+
+
+```typescript title="apphost.ts"
+import {
+ createBuilder,
+ type ExecuteCommandContext,
+ InputType,
+} from './.modules/aspire.js';
+
+const builder = await createBuilder();
+
+const cache = await builder.addRedis('cache');
+
+await cache.withProcessCommandFactory(
+ 'seed-data',
+ 'Seed data',
+ async (context: ExecuteCommandContext) => {
+ const args = await context.arguments();
+ const dataset = await args.requiredValue('dataset');
+
+ return {
+ executablePath: 'node',
+ arguments: ['./scripts/seed-data.js', '--dataset', dataset],
+ environmentVariables: {
+ NODE_ENV: 'development',
+ },
+ };
+ },
+ {
+ commandOptions: {
+ arguments: [
+ {
+ name: 'dataset',
+ label: 'Dataset',
+ inputType: InputType.Text,
+ required: true,
+ },
+ ],
+ },
+ maxOutputLineCount: 20,
+ }
+);
+
+await builder.build().run();
+```
+
+
+
+
+In C#, the callback overload receives an `ExecuteCommandContext`. In TypeScript, `withProcessCommandFactory` receives the same execution context and returns the process specification. The dashboard renders the configured arguments as a prompt dialog before starting the process, and the entered values are available through the command context.
+
+### `ProcessCommandSpec` properties
+
+The following configuration options are available for the process to run. In C#, these map to `ProcessCommandSpec` properties. In TypeScript, provide them as fields in the options object passed to `withProcessCommand`, or return them from the `withProcessCommandFactory` callback.
+
+- **Executable path** — the path to the process to launch. Short names (no directory separator) are resolved from the AppHost's `PATH`.
+- **Arguments** — a list of arguments passed to the process. Each entry is treated as a separate argument, so no shell quoting or escaping is needed.
+- **Environment variables** — additional key/value pairs set in the child process's environment.
+- **Inherit environment variables** — whether the child process inherits the AppHost process's environment variables. Defaults to `true`.
+- **Standard input content** — optional text written to the process's stdin immediately after it starts.
+- **Working directory** — the directory the process starts in. Defaults to the AppHost directory if not specified.
+- **Kill entire process tree** — whether cancellation and disposal should terminate the whole child process tree. Defaults to `true`.
+
+### `ProcessCommandOptions`
+
+The following options control how `WithProcessCommand` handles the process result. In C#, set them on `ProcessCommandOptions`. In TypeScript, provide them in the same options object as the process configuration for `withProcessCommand`, or in the fourth argument to `withProcessCommandFactory`.
+
+- **Max output line count** — the maximum number of combined stdout/stderr lines captured and returned as the command result. Defaults to 50. Lines beyond this limit are silently discarded (oldest lines first).
+- **Display immediately** — when `true` (the default), the captured output is automatically shown in the dashboard as soon as the command finishes.
+- **Success exit codes** — the list of process exit codes that are treated as a successful command invocation. Defaults to `[0]`.
+
+### Executable path resolution
+
+`WithProcessCommand` resolves the executable using the following rules:
+
+1. If `ExecutablePath` is an absolute path or contains a path separator, it is used as-is.
+2. Otherwise, the AppHost process's `PATH` is searched for the named executable. On Windows, `PATHEXT` extensions are also tried.
+
+This means you can reference tools such as `dotnet`, `node`, or `docker` by short name as long as they are on the AppHost's PATH when the app starts.
diff --git a/src/frontend/src/content/docs/fundamentals/custom-resource-urls.mdx b/src/frontend/src/content/docs/fundamentals/custom-resource-urls.mdx
index bd0873f1c..dc96ec135 100644
--- a/src/frontend/src/content/docs/fundamentals/custom-resource-urls.mdx
+++ b/src/frontend/src/content/docs/fundamentals/custom-resource-urls.mdx
@@ -1,6 +1,7 @@
---
title: Define custom resource URLs
-description: Learn how to create custom URLs for Aspire resources.
+seoTitle: Define custom URLs for Aspire resources in the dashboard
+description: Create custom resource URLs in Aspire so the dashboard, MCP server, and AI coding agents can deep-link to admin tools, health endpoints, and external dashboards.
---
import { Aside } from '@astrojs/starlight/components';
diff --git a/src/frontend/src/content/docs/fundamentals/external-parameters.mdx b/src/frontend/src/content/docs/fundamentals/external-parameters.mdx
index 3ea783d04..ebe77a2d8 100644
--- a/src/frontend/src/content/docs/fundamentals/external-parameters.mdx
+++ b/src/frontend/src/content/docs/fundamentals/external-parameters.mdx
@@ -1,6 +1,7 @@
---
title: External parameters
-description: Learn how to express parameters such as secrets, connection strings, and other configuration values that might vary between environments.
+seoTitle: Aspire external parameters and secrets in the AppHost
+description: Express secrets, connection strings, and configuration as Aspire external parameters that flow into resources at run, publish, and deploy time across environments.
---
import { Aside, Steps } from '@astrojs/starlight/components';
diff --git a/src/frontend/src/content/docs/fundamentals/health-checks.mdx b/src/frontend/src/content/docs/fundamentals/health-checks.mdx
index 574362a72..ad7a4c035 100644
--- a/src/frontend/src/content/docs/fundamentals/health-checks.mdx
+++ b/src/frontend/src/content/docs/fundamentals/health-checks.mdx
@@ -1,6 +1,7 @@
---
title: Health checks
-description: Explore Aspire health checks
+seoTitle: Aspire health checks and readiness gates for resources
+description: Add health checks to Aspire resources to gate startup, surface readiness in the dashboard, and tie WaitFor / WaitForCompletion behavior to real application signals.
---
import { Aside } from '@astrojs/starlight/components';
diff --git a/src/frontend/src/content/docs/fundamentals/http-commands.mdx b/src/frontend/src/content/docs/fundamentals/http-commands.mdx
index 8aae1e5de..dc35ee2fe 100644
--- a/src/frontend/src/content/docs/fundamentals/http-commands.mdx
+++ b/src/frontend/src/content/docs/fundamentals/http-commands.mdx
@@ -1,6 +1,7 @@
---
title: Custom HTTP commands
-description: Learn how to create custom HTTP commands in Aspire.
+seoTitle: Custom HTTP commands in your Aspire AppHost dashboard
+description: Create custom HTTP commands in Aspire to invoke service endpoints from the dashboard and CLI — refresh caches, run admin actions, and integrate with internal tools.
---
import { Aside, Tabs, TabItem } from '@astrojs/starlight/components';
diff --git a/src/frontend/src/content/docs/fundamentals/networking-overview.mdx b/src/frontend/src/content/docs/fundamentals/networking-overview.mdx
index 479949697..f73736d74 100644
--- a/src/frontend/src/content/docs/fundamentals/networking-overview.mdx
+++ b/src/frontend/src/content/docs/fundamentals/networking-overview.mdx
@@ -1,6 +1,7 @@
---
title: Inner-loop networking overview
-description: Learn how Aspire handles networking and endpoints, and how you can use them in your app code.
+seoTitle: Aspire inner-loop networking overview for AppHost authors
+description: Learn how Aspire handles inner-loop networking, endpoints, and service discovery — and how to consume them from your app code and integrations during development.
---
import { Aside } from '@astrojs/starlight/components';
diff --git a/src/frontend/src/content/docs/fundamentals/persist-data-volumes.mdx b/src/frontend/src/content/docs/fundamentals/persist-data-volumes.mdx
index 985f4830c..4fc3ba9f3 100644
--- a/src/frontend/src/content/docs/fundamentals/persist-data-volumes.mdx
+++ b/src/frontend/src/content/docs/fundamentals/persist-data-volumes.mdx
@@ -1,6 +1,6 @@
---
-title: Persist Aspire project data using volumes or bind mounts
-description: Learn about Aspire configurations that persist data across restarts by using volumes and bind mounts in containers.
+title: Persist Aspire data with volumes and binds
+description: Configure Aspire resources to persist data across restarts using container volumes and bind mounts for databases, caches, message brokers, and stateful integrations.
---
import { Aside } from '@astrojs/starlight/components';
diff --git a/src/frontend/src/content/docs/fundamentals/service-discovery.mdx b/src/frontend/src/content/docs/fundamentals/service-discovery.mdx
index fb0090905..55ffcd39b 100644
--- a/src/frontend/src/content/docs/fundamentals/service-discovery.mdx
+++ b/src/frontend/src/content/docs/fundamentals/service-discovery.mdx
@@ -1,6 +1,7 @@
---
title: Service discovery
-description: Understand essential service discovery concepts in Aspire.
+seoTitle: Aspire service discovery essentials for distributed apps
+description: Understand essential Aspire service discovery concepts — endpoints, URIs, HttpClient resolution, and how service references flow from the AppHost into your app code.
---
import { Aside } from '@astrojs/starlight/components';
diff --git a/src/frontend/src/content/docs/fundamentals/telemetry.mdx b/src/frontend/src/content/docs/fundamentals/telemetry.mdx
index bb57e51da..b22c31746 100644
--- a/src/frontend/src/content/docs/fundamentals/telemetry.mdx
+++ b/src/frontend/src/content/docs/fundamentals/telemetry.mdx
@@ -1,6 +1,7 @@
---
title: Telemetry
-description: Learn about essential telemetry concepts for Aspire including logging, tracing, and metrics.
+seoTitle: 'Aspire telemetry: OpenTelemetry logs, traces, and metrics'
+description: Learn the essential Aspire telemetry concepts — logging, distributed tracing, and metrics with OpenTelemetry, and how the Aspire dashboard surfaces them in real time.
---
diff --git a/src/frontend/src/content/docs/get-started/add-aspire-existing-app.mdx b/src/frontend/src/content/docs/get-started/add-aspire-existing-app.mdx
index 562d3257d..eb0fd8ed4 100644
--- a/src/frontend/src/content/docs/get-started/add-aspire-existing-app.mdx
+++ b/src/frontend/src/content/docs/get-started/add-aspire-existing-app.mdx
@@ -1,6 +1,6 @@
---
-title: "Add Aspire to an existing app"
-description: "Add Aspire to an existing application using aspire init and an AI coding agent, or by manually wiring resources in your AppHost."
+title: Add Aspire to an existing app
+description: Add Aspire to an existing application — use aspire init with an AI coding agent or wire up the AppHost manually to bring your services into the Aspire resource model.
next: false
---
diff --git a/src/frontend/src/content/docs/get-started/ai-coding-agents.mdx b/src/frontend/src/content/docs/get-started/ai-coding-agents.mdx
index 28ae0cb1b..357d421bd 100644
--- a/src/frontend/src/content/docs/get-started/ai-coding-agents.mdx
+++ b/src/frontend/src/content/docs/get-started/ai-coding-agents.mdx
@@ -1,6 +1,7 @@
---
title: Use AI coding agents
-description: Set up your AI coding agents with skills, MCP servers, and browser automation tailored to Aspire.
+seoTitle: Use AI coding agents with Aspire AppHost projects today
+description: Set up AI coding agents to work with Aspire — install skills, configure the Aspire MCP server, and enable browser automation for distributed-app development workflows.
---
import { LinkCard, CardGrid } from '@astrojs/starlight/components';
diff --git a/src/frontend/src/content/docs/get-started/app-host.mdx b/src/frontend/src/content/docs/get-started/app-host.mdx
index f342579e6..e9738863c 100644
--- a/src/frontend/src/content/docs/get-started/app-host.mdx
+++ b/src/frontend/src/content/docs/get-started/app-host.mdx
@@ -1,6 +1,7 @@
---
title: What is the AppHost?
-description: Learn how to define your application's architecture using Aspire's AppHost.
+seoTitle: What is the Aspire AppHost? Introduction and concepts
+description: "Learn how the Aspire AppHost defines your application's architecture — services, containers, executables, and integrations, modeled with C# or TypeScript code."
lastUpdated: true
---
@@ -109,7 +110,7 @@ architecture-beta
This architecture demonstrates a **Go API** connecting to a **PostgreSQL database**, with a **React frontend** consuming the API. The Go API uses the standard library's `net/http` package or frameworks like Gin or Echo and connects to PostgreSQL using libraries like pgx or database/sql. The React frontend is built with Vite and communicates with the API over HTTP.
-The Go integration is provided by the [CommunityToolkit.Aspire.Hosting.Golang](https://www.nuget.org/packages/CommunityToolkit.Aspire.Hosting.Golang) NuGet package. Learn more in the [Go integration](/integrations/frameworks/go-apps/) documentation.
+The Go integration is provided by the [Aspire.Hosting.Go](https://www.nuget.org/packages/Aspire.Hosting.Go) NuGet package. Learn more in the [Go integration](/integrations/frameworks/go/go-get-started/) documentation.
diff --git a/src/frontend/src/content/docs/get-started/aspire-mcp-server.mdx b/src/frontend/src/content/docs/get-started/aspire-mcp-server.mdx
index 42b4adb33..d22311bae 100644
--- a/src/frontend/src/content/docs/get-started/aspire-mcp-server.mdx
+++ b/src/frontend/src/content/docs/get-started/aspire-mcp-server.mdx
@@ -1,6 +1,6 @@
---
-title: Aspire MCP server
-description: Learn about the Aspire MCP server tools, security model, and troubleshooting for AI coding agents.
+title: Aspire MCP server for AI coding agents
+description: Learn how the Aspire MCP server exposes resource graphs, logs, and telemetry to AI coding agents — security model, transport options, and troubleshooting tips.
---
import { Aside, Steps, Tabs, TabItem } from '@astrojs/starlight/components';
diff --git a/src/frontend/src/content/docs/get-started/aspire-sdk-templates.mdx b/src/frontend/src/content/docs/get-started/aspire-sdk-templates.mdx
index e8fe2c63e..896ace746 100644
--- a/src/frontend/src/content/docs/get-started/aspire-sdk-templates.mdx
+++ b/src/frontend/src/content/docs/get-started/aspire-sdk-templates.mdx
@@ -1,6 +1,6 @@
---
-title: Aspire templates
-description: Learn about the Aspire templates and how to use them to create new apps.
+title: Aspire SDK templates for new apps
+description: "Learn about the Aspire SDK templates — Starter app, AppHost, ServiceDefaults — and how to use them to scaffold new C# or TypeScript Aspire applications quickly."
---
import { Image } from 'astro:assets';
diff --git a/src/frontend/src/content/docs/get-started/aspire-sdk.mdx b/src/frontend/src/content/docs/get-started/aspire-sdk.mdx
index f654ac15e..0f877b825 100644
--- a/src/frontend/src/content/docs/get-started/aspire-sdk.mdx
+++ b/src/frontend/src/content/docs/get-started/aspire-sdk.mdx
@@ -1,6 +1,6 @@
---
-title: Aspire SDK
-description: Learn about the Aspire SDK and how it simplifies orchestrating Aspire applications.
+title: Aspire SDK for distributed apps
+description: Learn how the Aspire SDK simplifies orchestrating Aspire applications — packaging, project references, source generators, and how the SDK plugs into AppHost projects.
---
import { Tabs, TabItem } from '@astrojs/starlight/components';
@@ -94,6 +94,55 @@ var microservice2 = builder.AddProject("micro2");
### Orchestrator dependencies
-The Aspire SDK dynamically adds references to the [Aspire dashboard](/dashboard/overview/) and other AppHost dependencies, such as the developer control plane (DCP) packages. These dependencies are specific to the platform that the AppHost is built on.
+The Aspire SDK dynamically adds references to the [Aspire Dashboard](/dashboard/overview/) and other AppHost dependencies, such as the developer control plane (DCP) packages. These dependencies are specific to the platform that the AppHost is built on.
When the AppHost project runs, the orchestrator relies on these dependencies to provide the necessary functionality to the AppHost. For more information, see [Aspire orchestration overview](/get-started/app-host/).
+
+### Use the Aspire CLI bundle for orchestration dependencies
+
+:::caution[Preview feature]
+`AspireUseCliBundle` is a preview opt-in that smooths the transition to CLI-bundle-based orchestration dependencies before they become the default.
+:::
+
+Today, the Aspire SDK restores the binaries for these dependencies from platform-specific NuGet packages, so the versions that run with your AppHost are tied to package restore.
+
+Aspire is moving toward using the installed **Aspire CLI bundle** as the source for those orchestration dependencies. With this model, those binaries update when you update the Aspire CLI through [`aspire update --self`](/reference/cli/commands/aspire-update/) instead of being tied to RID-specific `Aspire.Hosting.Orchestration.*` and `Aspire.Dashboard.Sdk.*` package references in each AppHost project.
+
+Set `AspireUseCliBundle` to `true` to opt in during the transition before this behavior becomes the default.
+
+When `AspireUseCliBundle` is `true`:
+
+- `Aspire.AppHost.Sdk` still sets AppHost properties and adds the implicit `Aspire.Hosting.AppHost` package.
+- Your AppHost uses the DCP and Dashboard versions installed with the Aspire CLI.
+- At build time, the SDK resolves the DCP and Dashboard executables in this priority order:
+ 1. Explicit `AspireCliBundlePath` / `AspireCliPath` properties in the project file.
+ 2. The `aspire` executable on `PATH`.
+- If the bundle cannot be found, the build emits error `ASPIRE009` with a message directing you to [get.aspire.dev](https://get.aspire.dev) to install the Aspire CLI.
+
+#### Enable the opt-in
+
+Set `AspireUseCliBundle` in your AppHost `.csproj`:
+
+```xml title="MyApp.AppHost.csproj"
+
+ true
+
+```
+
+:::note[Advanced scenario: Override the bundle path]
+Most apps don't need to set the CLI bundle path. If the Aspire CLI isn't on `PATH`, provide an explicit path using `AspireCliBundlePath` (path to the CLI bundle directory) or `AspireCliPath` (path to the `aspire` executable):
+
+```xml title="MyApp.AppHost.csproj"
+
+ true
+
+ /usr/local/bin/aspire
+
+
+
+```
+:::
+
+#### Running with aspire run or aspire start
+
+When you start an opted-in AppHost using `aspire run` or `aspire start`, the CLI automatically passes the resolved bundle paths through the `ASPIRE_DCP_PATH` and `ASPIRE_DASHBOARD_PATH` environment variables.
diff --git a/src/frontend/src/content/docs/get-started/aspire-vscode-extension.mdx b/src/frontend/src/content/docs/get-started/aspire-vscode-extension.mdx
index c5e49e0f2..d05bffcdf 100644
--- a/src/frontend/src/content/docs/get-started/aspire-vscode-extension.mdx
+++ b/src/frontend/src/content/docs/get-started/aspire-vscode-extension.mdx
@@ -1,6 +1,6 @@
---
title: Aspire Visual Studio Code extension
-description: Learn how to use the Aspire Visual Studio Code extension to create, configure, run, and deploy Aspire solutions.
+description: Use the Aspire Visual Studio Code extension to create, configure, run, and deploy Aspire applications — with integrated CLI, dashboards, and AI-assisted workflows.
---
import { Steps } from '@astrojs/starlight/components';
diff --git a/src/frontend/src/content/docs/get-started/csharp-service-defaults.mdx b/src/frontend/src/content/docs/get-started/csharp-service-defaults.mdx
index 32bfca14f..2de39c413 100644
--- a/src/frontend/src/content/docs/get-started/csharp-service-defaults.mdx
+++ b/src/frontend/src/content/docs/get-started/csharp-service-defaults.mdx
@@ -1,6 +1,7 @@
---
-title: C# Service Defaults
-description: Learn about the Aspire Service Defaults project for C# apps.
+title: 'C# Service Defaults'
+seoTitle: 'Aspire C# ServiceDefaults project: OTel and resilience'
+description: "Learn how the Aspire ServiceDefaults project for C# apps wires up OpenTelemetry, health checks, service discovery, and resilience defaults across your services."
---
import { Aside } from '@astrojs/starlight/components';
diff --git a/src/frontend/src/content/docs/get-started/deploy-first-app.mdx b/src/frontend/src/content/docs/get-started/deploy-first-app.mdx
index 8953f825f..87a37fd58 100644
--- a/src/frontend/src/content/docs/get-started/deploy-first-app.mdx
+++ b/src/frontend/src/content/docs/get-started/deploy-first-app.mdx
@@ -1,6 +1,6 @@
---
title: Deploy your first Aspire app
-description: Learn how to deploy your first Aspire application with either a C# or TypeScript AppHost.
+description: "Deploy your first Aspire application end to end — choose a target (Azure, Kubernetes, or Docker Compose), publish artifacts, and run `aspire deploy` from a C# or TypeScript AppHost."
---
import { Aside, FileTree, Steps, TabItem, Tabs } from '@astrojs/starlight/components';
diff --git a/src/frontend/src/content/docs/get-started/dev-containers.mdx b/src/frontend/src/content/docs/get-started/dev-containers.mdx
index 319b9318f..354bdaa13 100644
--- a/src/frontend/src/content/docs/get-started/dev-containers.mdx
+++ b/src/frontend/src/content/docs/get-started/dev-containers.mdx
@@ -1,6 +1,7 @@
---
title: Dev Containers in Visual Studio Code
-description: Learn how to use Aspire with Dev Containers in Visual Studio Code for containerized development environments.
+seoTitle: Aspire dev containers for Visual Studio Code overview
+description: Use Aspire with Dev Containers in Visual Studio Code to get reproducible, containerized development environments with the Aspire CLI, dashboard, and tooling preinstalled.
---
import { Image } from 'astro:assets';
diff --git a/src/frontend/src/content/docs/get-started/faq.mdx b/src/frontend/src/content/docs/get-started/faq.mdx
index 172152f5e..aa3d9fafe 100644
--- a/src/frontend/src/content/docs/get-started/faq.mdx
+++ b/src/frontend/src/content/docs/get-started/faq.mdx
@@ -1,6 +1,7 @@
---
title: Frequently asked questions (FAQ)
-description: Answers to common questions about Aspire, including the AppHost, dashboard, integrations, TypeScript support, deployment, and how Aspire compares to other tools.
+seoTitle: 'Aspire FAQ: common questions and answers for developers'
+description: Answers to common questions about Aspire — the AppHost, dashboard, integrations, TypeScript support, deployment targets, telemetry, and licensing for production apps.
---
This page answers common questions about what Aspire is, how it fits into your workflow, what it can do for you, and how it compares to other technologies.
diff --git a/src/frontend/src/content/docs/get-started/first-app.mdx b/src/frontend/src/content/docs/get-started/first-app.mdx
index a76c5eb18..2951fddb9 100644
--- a/src/frontend/src/content/docs/get-started/first-app.mdx
+++ b/src/frontend/src/content/docs/get-started/first-app.mdx
@@ -1,6 +1,6 @@
---
-title: "Build your first Aspire app"
-description: "Build your first Aspire app with either a C# or TypeScript AppHost."
+title: Build your first Aspire app
+description: "Build your first Aspire app from scratch with either a C# or TypeScript AppHost — add resources, run the dashboard, and explore telemetry in a few minutes."
prev: false
---
diff --git a/src/frontend/src/content/docs/get-started/github-codespaces.mdx b/src/frontend/src/content/docs/get-started/github-codespaces.mdx
index 5c23cfbe5..6cc0ee933 100644
--- a/src/frontend/src/content/docs/get-started/github-codespaces.mdx
+++ b/src/frontend/src/content/docs/get-started/github-codespaces.mdx
@@ -1,6 +1,6 @@
---
-title: Aspire and GitHub Codespaces
-description: Learn how to use Aspire with GitHub Codespaces for cloud-based development.
+title: Use Aspire with GitHub Codespaces
+description: Use Aspire with GitHub Codespaces for cloud-based development — preconfigured containers, port forwarding, dashboard access, and a ready-to-go Aspire CLI experience.
---
import { Image } from 'astro:assets';
diff --git a/src/frontend/src/content/docs/get-started/glossary.mdx b/src/frontend/src/content/docs/get-started/glossary.mdx
index e1989cf27..821451e99 100644
--- a/src/frontend/src/content/docs/get-started/glossary.mdx
+++ b/src/frontend/src/content/docs/get-started/glossary.mdx
@@ -1,6 +1,6 @@
---
-title: Aspire glossary
-description: Key terms and concepts used throughout Aspire documentation, including AppHost, resources, service discovery, and orchestration terminology.
+title: Aspire glossary of terms and concepts
+description: Key terms and concepts used throughout Aspire documentation — AppHost, resources, service discovery, integrations, dashboard, deployment, and orchestration primitives.
---
import { Aside } from '@astrojs/starlight/components';
diff --git a/src/frontend/src/content/docs/get-started/install-cli.mdx b/src/frontend/src/content/docs/get-started/install-cli.mdx
index c6ec287a4..c641c41ed 100644
--- a/src/frontend/src/content/docs/get-started/install-cli.mdx
+++ b/src/frontend/src/content/docs/get-started/install-cli.mdx
@@ -1,5 +1,6 @@
---
title: Install Aspire CLI
+seoTitle: 'Install Aspire CLI: native executable or .NET tool'
description: Learn how to install the Aspire CLI as a native executable or .NET global tool to manage your cloud-native applications.
lastUpdated: true
tableOfContents: true
diff --git a/src/frontend/src/content/docs/get-started/prerequisites.mdx b/src/frontend/src/content/docs/get-started/prerequisites.mdx
index ceafcc7fe..6f9771fc1 100644
--- a/src/frontend/src/content/docs/get-started/prerequisites.mdx
+++ b/src/frontend/src/content/docs/get-started/prerequisites.mdx
@@ -1,6 +1,7 @@
---
title: Prerequisites
-description: Learn about essential tooling concepts for Aspire.
+seoTitle: Aspire prerequisites and required tooling for your setup
+description: Install the prerequisites for Aspire development — .NET SDK, container runtime, IDE extensions, and the Aspire CLI, with platform-specific guidance for every target.
giscus: false
tableOfContents:
minHeadingLevel: 1
@@ -32,7 +33,7 @@ Ready to dive into Aspire? Before you begin, make sure your development environm
- Aspire's TypeScript AppHost requires [Node.js](https://nodejs.org/) 20 or later (LTS recommended) and a compatible package manager. The following package managers are supported: **npm** (included with Node.js), **pnpm**, **Yarn**, and **Bun**. The Aspire CLI auto-detects the active toolchain from your `package.json` `packageManager` field or from lockfiles in your project directory or parent directories.
+ Aspire's TypeScript AppHost requires [Node.js](https://nodejs.org/) **20.19+, 22.13+, or 24+** — the engine range that `aspire init` writes into the scaffolded `package.json` (`"engines": { "node": "^20.19.0 || ^22.13.0 || >=24" }`). It also requires a [supported AppHost-root package manager](/app-host/typescript-apphost/#package-managers): **npm** (default, included with Node.js), **pnpm**, **Yarn 4+** (Berry), or **Bun**. **Yarn Classic (v1) is not supported.** The Aspire CLI auto-detects the active toolchain from your `package.json` `packageManager` field or from lockfiles in your project directory or parent directories.
Follow the [Node.js installation instructions](https://nodejs.org/) for your operating system (Windows, macOS, or Linux) to complete the setup. If you use an alternative package manager, install it separately:
diff --git a/src/frontend/src/content/docs/get-started/resource-mcp-servers.mdx b/src/frontend/src/content/docs/get-started/resource-mcp-servers.mdx
index c6561e3d3..7eb2d0451 100644
--- a/src/frontend/src/content/docs/get-started/resource-mcp-servers.mdx
+++ b/src/frontend/src/content/docs/get-started/resource-mcp-servers.mdx
@@ -1,6 +1,7 @@
---
title: Resource MCP servers
-description: Learn how to expose MCP tools from Aspire resources and interact with them using the CLI.
+seoTitle: Aspire resource MCP servers in the AppHost dashboard
+description: Expose MCP tools from Aspire resources and interact with them using the Aspire CLI — connect AI coding agents to databases, caches, and custom application surfaces.
---
import { Aside, Code, Steps, Tabs, TabItem } from '@astrojs/starlight/components';
diff --git a/src/frontend/src/content/docs/get-started/resources.mdx b/src/frontend/src/content/docs/get-started/resources.mdx
index 3128705f5..2acc98201 100644
--- a/src/frontend/src/content/docs/get-started/resources.mdx
+++ b/src/frontend/src/content/docs/get-started/resources.mdx
@@ -1,6 +1,7 @@
---
title: Understanding resources
-description: Learn about Aspire's resource model and how to work with different types of resources.
+seoTitle: Understand Aspire resources, resource types, and lifecycle
+description: "Learn about Aspire's resource model and how to work with different types of resources — projects, containers, executables, integrations, parameters, and connections."
lastUpdated: true
---
diff --git a/src/frontend/src/content/docs/get-started/troubleshooting.mdx b/src/frontend/src/content/docs/get-started/troubleshooting.mdx
index 6bf0923b1..1a42455e1 100644
--- a/src/frontend/src/content/docs/get-started/troubleshooting.mdx
+++ b/src/frontend/src/content/docs/get-started/troubleshooting.mdx
@@ -1,6 +1,6 @@
---
title: Aspire troubleshooting guide
-description: Solutions to common problems when getting started with Aspire, including Docker issues, port conflicts, service discovery errors, and TypeScript AppHost issues.
+description: Solutions to common problems when getting started with Aspire — Docker issues, port conflicts, certificate trust, dashboard authentication, and dev container quirks.
---
import { Aside, Code, Steps } from '@astrojs/starlight/components';
diff --git a/src/frontend/src/content/docs/get-started/what-is-aspire.mdx b/src/frontend/src/content/docs/get-started/what-is-aspire.mdx
index a28c9397a..3f045dadb 100644
--- a/src/frontend/src/content/docs/get-started/what-is-aspire.mdx
+++ b/src/frontend/src/content/docs/get-started/what-is-aspire.mdx
@@ -1,6 +1,7 @@
---
title: What is Aspire?
-description: Learn how Aspire helps you compose, debug, and deploy any distributed app with a code-first, agent-ready workflow.
+seoTitle: What is Aspire? Distributed apps made easy
+description: "Learn how Aspire helps you compose, debug, and deploy distributed apps with a code-first, agent-ready AppHost across C#, TypeScript, Python, JavaScript, and Java."
tableOfContents: true
lastUpdated: true
next:
diff --git a/src/frontend/src/content/docs/hi/index.mdx b/src/frontend/src/content/docs/hi/index.mdx
index a37300a3e..0e4933c40 100644
--- a/src/frontend/src/content/docs/hi/index.mdx
+++ b/src/frontend/src/content/docs/hi/index.mdx
@@ -11,7 +11,7 @@ prev: false
next: false
banner:
content: |
- 🚀 Aspire 13.3 रिलीज़ हो गया है! — Aspire 13.3 में नया क्या है देखें।
+ 🚀 Aspire 13.4 रिलीज़ हो गया है! — Aspire 13.4 में नया क्या है देखें।
hero:
tagline: आपका स्टैक, सरल। फ्रंटएंड, API, कंटेनर और डेटाबेस को आसानी से ऑर्केस्ट्रेट करें—बिना रीराइट, बिना सीमा। किसी भी प्रोजेक्ट को शक्ति देने के लिए Aspire को विस्तारित करें।
image:
diff --git a/src/frontend/src/content/docs/id/index.mdx b/src/frontend/src/content/docs/id/index.mdx
index 16fb421a9..4ed94afcc 100644
--- a/src/frontend/src/content/docs/id/index.mdx
+++ b/src/frontend/src/content/docs/id/index.mdx
@@ -11,7 +11,7 @@ prev: false
next: false
banner:
content: |
- 🚀 Aspire 13.3 telah dirilis! — Lihat apa yang baru di Aspire 13.3.
+ 🚀 Aspire 13.4 telah dirilis! — Lihat apa yang baru di Aspire 13.4.
hero:
tagline: Stack Anda, disederhanakan. Orkestrasi frontend, API, container, dan database dengan mudah—tanpa menulis ulang, tanpa batasan. Perluas Aspire untuk mendukung proyek apa pun.
image:
diff --git a/src/frontend/src/content/docs/index.mdx b/src/frontend/src/content/docs/index.mdx
index f8c6d3e1e..16caccce8 100644
--- a/src/frontend/src/content/docs/index.mdx
+++ b/src/frontend/src/content/docs/index.mdx
@@ -11,7 +11,7 @@ prev: false
next: false
banner:
content: |
- Aspire 13.3 is here! — See what's new
+ Aspire 13.4 is here! — See what's new
hero:
tagline: Your stack, streamlined. Orchestrate frontends, APIs, containers, and databases effortlessly—no rewrites, no limits. Extend Aspire to power any project. Free, open-source, and agent ready.
image:
diff --git a/src/frontend/src/content/docs/integrations/ai/github-models/github-models-connect.mdx b/src/frontend/src/content/docs/integrations/ai/github-models/github-models-connect.mdx
index afa71b25d..a2b8dd619 100644
--- a/src/frontend/src/content/docs/integrations/ai/github-models/github-models-connect.mdx
+++ b/src/frontend/src/content/docs/integrations/ai/github-models/github-models-connect.mdx
@@ -1,5 +1,6 @@
---
title: Connect to GitHub Models
+seoTitle: Connect to GitHub Models from your .NET app with Aspire
description: Learn how to connect to the GitHub Models API from C#, Go, Python, and TypeScript consuming apps in an Aspire solution.
next: false
---
diff --git a/src/frontend/src/content/docs/integrations/ai/github-models/github-models-get-started.mdx b/src/frontend/src/content/docs/integrations/ai/github-models/github-models-get-started.mdx
index 6a7778c9b..be3d232f2 100644
--- a/src/frontend/src/content/docs/integrations/ai/github-models/github-models-get-started.mdx
+++ b/src/frontend/src/content/docs/integrations/ai/github-models/github-models-get-started.mdx
@@ -1,6 +1,6 @@
---
title: Get started with the GitHub Models integrations
-description: Understand why you use the Aspire GitHub Models integrations and how they fit together.
+description: Learn how the Aspire GitHub Models integrations register a GitHub Models resource and wire the .NET client to call models hosted on GitHub.
prev: false
---
diff --git a/src/frontend/src/content/docs/integrations/ai/ollama/ollama-connect.mdx b/src/frontend/src/content/docs/integrations/ai/ollama/ollama-connect.mdx
index 8e638ccb0..25978b483 100644
--- a/src/frontend/src/content/docs/integrations/ai/ollama/ollama-connect.mdx
+++ b/src/frontend/src/content/docs/integrations/ai/ollama/ollama-connect.mdx
@@ -1,5 +1,6 @@
---
title: Connect to Ollama
+seoTitle: "Connect to Ollama from Aspire apps (C#, Python, TypeScript)"
description: Learn how to connect to Ollama from C#, Go, Python, and TypeScript consuming apps in an Aspire solution.
next: false
---
diff --git a/src/frontend/src/content/docs/integrations/ai/ollama/ollama-get-started.mdx b/src/frontend/src/content/docs/integrations/ai/ollama/ollama-get-started.mdx
index 975867b36..dd284a495 100644
--- a/src/frontend/src/content/docs/integrations/ai/ollama/ollama-get-started.mdx
+++ b/src/frontend/src/content/docs/integrations/ai/ollama/ollama-get-started.mdx
@@ -1,6 +1,7 @@
---
title: Get started with the Ollama integrations
-description: Understand why you use the Aspire Ollama integrations and how they fit together.
+seoTitle: Get started with the Aspire Ollama integration in .NET
+description: Learn how the Aspire Ollama integrations run an Ollama LLM resource locally and wire the OllamaSharp .NET client into your AppHost projects.
prev: false
---
diff --git a/src/frontend/src/content/docs/integrations/ai/ollama/ollama-host.mdx b/src/frontend/src/content/docs/integrations/ai/ollama/ollama-host.mdx
index 6dee23f7b..7f18f7258 100644
--- a/src/frontend/src/content/docs/integrations/ai/ollama/ollama-host.mdx
+++ b/src/frontend/src/content/docs/integrations/ai/ollama/ollama-host.mdx
@@ -1,5 +1,6 @@
---
title: Set up Ollama in the AppHost
+seoTitle: "Set up Ollama in the Aspire AppHost: hosting integration"
description: Learn how to use the Aspire Ollama hosting integration to orchestrate and configure Ollama models in an Aspire solution.
---
diff --git a/src/frontend/src/content/docs/integrations/ai/openai/openai-connect.mdx b/src/frontend/src/content/docs/integrations/ai/openai/openai-connect.mdx
index 651290c89..cf066589a 100644
--- a/src/frontend/src/content/docs/integrations/ai/openai/openai-connect.mdx
+++ b/src/frontend/src/content/docs/integrations/ai/openai/openai-connect.mdx
@@ -1,5 +1,6 @@
---
title: Connect to OpenAI
+seoTitle: "Connect to OpenAI from Aspire apps (C#, Python, TypeScript)"
description: Learn how to connect to the OpenAI API from C#, Go, Python, and TypeScript consuming apps in an Aspire solution.
next: false
---
diff --git a/src/frontend/src/content/docs/integrations/ai/openai/openai-get-started.mdx b/src/frontend/src/content/docs/integrations/ai/openai/openai-get-started.mdx
index fb0b88880..9bb176901 100644
--- a/src/frontend/src/content/docs/integrations/ai/openai/openai-get-started.mdx
+++ b/src/frontend/src/content/docs/integrations/ai/openai/openai-get-started.mdx
@@ -1,6 +1,7 @@
---
title: Get started with the OpenAI integrations
-description: Understand why you use the Aspire OpenAI integrations and how they fit together.
+seoTitle: Get started with the Aspire OpenAI integration in .NET
+description: Learn how the Aspire OpenAI integrations register an OpenAI resource, manage your API key, and wire the .NET client into your AppHost projects.
prev: false
---
diff --git a/src/frontend/src/content/docs/integrations/ai/openai/openai-host.mdx b/src/frontend/src/content/docs/integrations/ai/openai/openai-host.mdx
index da6229e57..d86767fb0 100644
--- a/src/frontend/src/content/docs/integrations/ai/openai/openai-host.mdx
+++ b/src/frontend/src/content/docs/integrations/ai/openai/openai-host.mdx
@@ -1,5 +1,6 @@
---
title: Set up OpenAI in the AppHost
+seoTitle: "Set up OpenAI in the Aspire AppHost: hosting integration"
description: Learn how to use the Aspire OpenAI hosting integration to orchestrate and configure OpenAI resources in an Aspire solution.
---
diff --git a/src/frontend/src/content/docs/integrations/caching/garnet/garnet-connect.mdx b/src/frontend/src/content/docs/integrations/caching/garnet/garnet-connect.mdx
index 7ed7a161c..19275e585 100644
--- a/src/frontend/src/content/docs/integrations/caching/garnet/garnet-connect.mdx
+++ b/src/frontend/src/content/docs/integrations/caching/garnet/garnet-connect.mdx
@@ -1,5 +1,6 @@
---
title: Connect to Garnet
+seoTitle: "Connect to Garnet from Aspire apps (C#, Python, TypeScript)"
description: Learn how to connect to Garnet from C#, Go, Python, and TypeScript consuming apps in an Aspire solution.
---
diff --git a/src/frontend/src/content/docs/integrations/caching/garnet/garnet-get-started.mdx b/src/frontend/src/content/docs/integrations/caching/garnet/garnet-get-started.mdx
index 90607f6eb..a71a39320 100644
--- a/src/frontend/src/content/docs/integrations/caching/garnet/garnet-get-started.mdx
+++ b/src/frontend/src/content/docs/integrations/caching/garnet/garnet-get-started.mdx
@@ -1,6 +1,7 @@
---
title: Get started with the Garnet integrations
-description: Understand why you use the Aspire Garnet integrations and how they fit together.
+seoTitle: Get started with the Aspire Garnet integration in .NET
+description: Learn how the Aspire Garnet integrations provision a Garnet cache resource and wire the StackExchange.Redis-compatible client into your AppHost.
---
import { Image } from 'astro:assets';
diff --git a/src/frontend/src/content/docs/integrations/caching/garnet/garnet-host.mdx b/src/frontend/src/content/docs/integrations/caching/garnet/garnet-host.mdx
index af61d483f..fe349f979 100644
--- a/src/frontend/src/content/docs/integrations/caching/garnet/garnet-host.mdx
+++ b/src/frontend/src/content/docs/integrations/caching/garnet/garnet-host.mdx
@@ -1,5 +1,6 @@
---
title: Set up Garnet in the AppHost
+seoTitle: "Set up Garnet in the Aspire AppHost: hosting integration"
description: Learn how to use the Aspire Garnet Hosting integration to orchestrate and configure a Garnet resource in an Aspire solution.
---
diff --git a/src/frontend/src/content/docs/integrations/caching/redis-distributed/redis-distributed-get-started.mdx b/src/frontend/src/content/docs/integrations/caching/redis-distributed/redis-distributed-get-started.mdx
index 8d258c5c1..ab82c0353 100644
--- a/src/frontend/src/content/docs/integrations/caching/redis-distributed/redis-distributed-get-started.mdx
+++ b/src/frontend/src/content/docs/integrations/caching/redis-distributed/redis-distributed-get-started.mdx
@@ -1,6 +1,6 @@
---
title: Get started with Redis distributed caching
-description: Understand why you use the Aspire Redis distributed caching integration and how it fits together.
+description: Understand why you use the Aspire Redis distributed caching integration and how it fits together in your Aspire AppHost.
---
import { Image } from 'astro:assets';
diff --git a/src/frontend/src/content/docs/integrations/caching/redis-output/redis-output-get-started.mdx b/src/frontend/src/content/docs/integrations/caching/redis-output/redis-output-get-started.mdx
index e79f90323..d7a8be89c 100644
--- a/src/frontend/src/content/docs/integrations/caching/redis-output/redis-output-get-started.mdx
+++ b/src/frontend/src/content/docs/integrations/caching/redis-output/redis-output-get-started.mdx
@@ -1,6 +1,6 @@
---
title: Get started with Redis output caching
-description: Understand why you use the Aspire Redis output caching integration and how it fits together.
+description: Understand why you use the Aspire Redis output caching integration and how it fits together in your Aspire AppHost.
---
import { Image } from 'astro:assets';
diff --git a/src/frontend/src/content/docs/integrations/caching/redis/redis-connect.mdx b/src/frontend/src/content/docs/integrations/caching/redis/redis-connect.mdx
index 7ecb70779..23205d091 100644
--- a/src/frontend/src/content/docs/integrations/caching/redis/redis-connect.mdx
+++ b/src/frontend/src/content/docs/integrations/caching/redis/redis-connect.mdx
@@ -1,5 +1,6 @@
---
title: Connect to Redis
+seoTitle: "Connect to Redis from Aspire apps (C#, Python, TypeScript)"
description: Learn how to connect to Redis from C#, Go, Python, and TypeScript consuming apps in an Aspire solution.
---
diff --git a/src/frontend/src/content/docs/integrations/caching/redis/redis-get-started.mdx b/src/frontend/src/content/docs/integrations/caching/redis/redis-get-started.mdx
index a260f3397..eee0b5b1c 100644
--- a/src/frontend/src/content/docs/integrations/caching/redis/redis-get-started.mdx
+++ b/src/frontend/src/content/docs/integrations/caching/redis/redis-get-started.mdx
@@ -1,6 +1,7 @@
---
title: Get started with the Redis integrations
-description: Understand why you use the Aspire Redis integrations and how they fit together.
+seoTitle: Get started with the Aspire Redis integration in .NET
+description: "Use the Aspire Redis hosting and client integrations to spin up Redis containers, share connections from C# and TypeScript apps, and add health checks and tracing."
---
import { Image } from 'astro:assets';
diff --git a/src/frontend/src/content/docs/integrations/caching/redis/redis-host.mdx b/src/frontend/src/content/docs/integrations/caching/redis/redis-host.mdx
index a6e7fcee8..79cf6eda6 100644
--- a/src/frontend/src/content/docs/integrations/caching/redis/redis-host.mdx
+++ b/src/frontend/src/content/docs/integrations/caching/redis/redis-host.mdx
@@ -1,5 +1,6 @@
---
title: Set up Redis in the AppHost
+seoTitle: "Set up Redis in the Aspire AppHost: hosting integration"
description: Learn how to use the Aspire Redis Hosting integration to orchestrate and configure a Redis resource in an Aspire solution.
---
diff --git a/src/frontend/src/content/docs/integrations/caching/valkey/valkey-connect.mdx b/src/frontend/src/content/docs/integrations/caching/valkey/valkey-connect.mdx
index 5902f5e4d..c4ffa75ef 100644
--- a/src/frontend/src/content/docs/integrations/caching/valkey/valkey-connect.mdx
+++ b/src/frontend/src/content/docs/integrations/caching/valkey/valkey-connect.mdx
@@ -1,5 +1,6 @@
---
title: Connect to Valkey
+seoTitle: "Connect to Valkey from Aspire apps (C#, Python, TypeScript)"
description: Learn how to connect to Valkey from C#, Go, Python, and TypeScript consuming apps in an Aspire solution.
---
diff --git a/src/frontend/src/content/docs/integrations/caching/valkey/valkey-get-started.mdx b/src/frontend/src/content/docs/integrations/caching/valkey/valkey-get-started.mdx
index c2e097096..5bc37a538 100644
--- a/src/frontend/src/content/docs/integrations/caching/valkey/valkey-get-started.mdx
+++ b/src/frontend/src/content/docs/integrations/caching/valkey/valkey-get-started.mdx
@@ -1,6 +1,7 @@
---
title: Get started with the Valkey integrations
-description: Understand why you use the Aspire Valkey integrations and how they fit together.
+seoTitle: Get started with the Aspire Valkey integration in .NET
+description: Learn how the Aspire Valkey integrations host a Valkey cache resource and configure the StackExchange.Redis-compatible client for your AppHost.
---
import { Image } from 'astro:assets';
diff --git a/src/frontend/src/content/docs/integrations/caching/valkey/valkey-host.mdx b/src/frontend/src/content/docs/integrations/caching/valkey/valkey-host.mdx
index dc6673dd9..2d8619d0b 100644
--- a/src/frontend/src/content/docs/integrations/caching/valkey/valkey-host.mdx
+++ b/src/frontend/src/content/docs/integrations/caching/valkey/valkey-host.mdx
@@ -1,5 +1,6 @@
---
title: Set up Valkey in the AppHost
+seoTitle: "Set up Valkey in the Aspire AppHost: hosting integration"
description: Learn how to use the Aspire Valkey Hosting integration to orchestrate and configure a Valkey resource in an Aspire solution.
---
diff --git a/src/frontend/src/content/docs/integrations/cloud/azure/azure-ai-foundry/azure-ai-foundry-connect.mdx b/src/frontend/src/content/docs/integrations/cloud/azure/azure-ai-foundry/azure-ai-foundry-connect.mdx
index fe73032e1..8714e3d3c 100644
--- a/src/frontend/src/content/docs/integrations/cloud/azure/azure-ai-foundry/azure-ai-foundry-connect.mdx
+++ b/src/frontend/src/content/docs/integrations/cloud/azure/azure-ai-foundry/azure-ai-foundry-connect.mdx
@@ -1,5 +1,6 @@
---
title: Connect to Azure AI Foundry
+seoTitle: Connect to Azure AI Foundry from your .NET app with Aspire
description: Learn how to connect to Azure AI Foundry from C#, Go, Python, and TypeScript consuming apps in an Aspire solution.
next: false
---
diff --git a/src/frontend/src/content/docs/integrations/cloud/azure/azure-ai-foundry/azure-ai-foundry-get-started.mdx b/src/frontend/src/content/docs/integrations/cloud/azure/azure-ai-foundry/azure-ai-foundry-get-started.mdx
index 83e9ac36a..fb9da4016 100644
--- a/src/frontend/src/content/docs/integrations/cloud/azure/azure-ai-foundry/azure-ai-foundry-get-started.mdx
+++ b/src/frontend/src/content/docs/integrations/cloud/azure/azure-ai-foundry/azure-ai-foundry-get-started.mdx
@@ -1,6 +1,6 @@
---
title: Get started with the Azure AI Foundry integrations
-description: Understand why you use the Aspire Azure AI Foundry integrations and how they fit together.
+description: Understand why you use the Aspire Azure AI Foundry integrations and how they fit together in your Aspire AppHost.
prev: false
---
diff --git a/src/frontend/src/content/docs/integrations/cloud/azure/azure-ai-foundry/azure-ai-foundry-host.mdx b/src/frontend/src/content/docs/integrations/cloud/azure/azure-ai-foundry/azure-ai-foundry-host.mdx
index fdea97501..d84cfbbcd 100644
--- a/src/frontend/src/content/docs/integrations/cloud/azure/azure-ai-foundry/azure-ai-foundry-host.mdx
+++ b/src/frontend/src/content/docs/integrations/cloud/azure/azure-ai-foundry/azure-ai-foundry-host.mdx
@@ -665,7 +665,7 @@ const foundry = await builder.addFoundry('chat');
await builder
.addProject('api', '../Api/Api.csproj')
- .withRoleAssignments(foundry, [FoundryRole.CognitiveServicesUser])
+ .withFoundryRoleAssignments(foundry, [FoundryRole.CognitiveServicesUser])
.withReference(foundry);
await builder.build().run();
diff --git a/src/frontend/src/content/docs/integrations/cloud/azure/azure-ai-inference/azure-ai-inference-connect.mdx b/src/frontend/src/content/docs/integrations/cloud/azure/azure-ai-inference/azure-ai-inference-connect.mdx
index bdc4060d1..75608c76d 100644
--- a/src/frontend/src/content/docs/integrations/cloud/azure/azure-ai-inference/azure-ai-inference-connect.mdx
+++ b/src/frontend/src/content/docs/integrations/cloud/azure/azure-ai-inference/azure-ai-inference-connect.mdx
@@ -1,5 +1,6 @@
---
title: Connect to Azure AI Inference
+seoTitle: Connect to Azure AI Inference from your .NET app with Aspire
description: Learn how to connect to Azure AI Inference from C#, Go, Python, and TypeScript consuming apps in an Aspire solution.
next: false
---
diff --git a/src/frontend/src/content/docs/integrations/cloud/azure/azure-ai-inference/azure-ai-inference-get-started.mdx b/src/frontend/src/content/docs/integrations/cloud/azure/azure-ai-inference/azure-ai-inference-get-started.mdx
index b0c09d27d..55c03fcbf 100644
--- a/src/frontend/src/content/docs/integrations/cloud/azure/azure-ai-inference/azure-ai-inference-get-started.mdx
+++ b/src/frontend/src/content/docs/integrations/cloud/azure/azure-ai-inference/azure-ai-inference-get-started.mdx
@@ -1,6 +1,6 @@
---
title: Get started with the Azure AI Inference integrations
-description: Understand why you use the Aspire Azure AI Inference integrations and how they fit together.
+description: Understand why you use the Aspire Azure AI Inference integrations and how they fit together in your Aspire AppHost.
---
import { Image } from 'astro:assets';
diff --git a/src/frontend/src/content/docs/integrations/cloud/azure/azure-ai-search/azure-ai-search-connect.mdx b/src/frontend/src/content/docs/integrations/cloud/azure/azure-ai-search/azure-ai-search-connect.mdx
index 5ba1164bc..ba82ce18b 100644
--- a/src/frontend/src/content/docs/integrations/cloud/azure/azure-ai-search/azure-ai-search-connect.mdx
+++ b/src/frontend/src/content/docs/integrations/cloud/azure/azure-ai-search/azure-ai-search-connect.mdx
@@ -1,5 +1,6 @@
---
title: Connect to Azure AI Search
+seoTitle: Connect to Azure AI Search from your .NET app with Aspire
description: Learn how to connect to Azure AI Search from C#, Go, Python, and TypeScript consuming apps in an Aspire solution.
---
diff --git a/src/frontend/src/content/docs/integrations/cloud/azure/azure-ai-search/azure-ai-search-get-started.mdx b/src/frontend/src/content/docs/integrations/cloud/azure/azure-ai-search/azure-ai-search-get-started.mdx
index 1dd246f2e..8f7408e33 100644
--- a/src/frontend/src/content/docs/integrations/cloud/azure/azure-ai-search/azure-ai-search-get-started.mdx
+++ b/src/frontend/src/content/docs/integrations/cloud/azure/azure-ai-search/azure-ai-search-get-started.mdx
@@ -1,6 +1,6 @@
---
title: Get started with Azure AI Search integrations
-description: Understand why you use the Aspire Azure AI Search integrations and how they fit together.
+description: Learn how the Aspire Azure AI Search integrations provision an Azure AI Search resource and wire the .NET client for vector and full-text search.
---
import { Image } from 'astro:assets';
diff --git a/src/frontend/src/content/docs/integrations/cloud/azure/azure-app-configuration/azure-app-configuration-get-started.mdx b/src/frontend/src/content/docs/integrations/cloud/azure/azure-app-configuration/azure-app-configuration-get-started.mdx
index 55587a8f8..42b9622fc 100644
--- a/src/frontend/src/content/docs/integrations/cloud/azure/azure-app-configuration/azure-app-configuration-get-started.mdx
+++ b/src/frontend/src/content/docs/integrations/cloud/azure/azure-app-configuration/azure-app-configuration-get-started.mdx
@@ -1,6 +1,6 @@
----
+---
title: Get started with Azure App Configuration integrations
-description: Understand why you use the Aspire Azure App Configuration integrations and how they fit together.
+description: Understand why you use the Aspire Azure App Configuration integrations and how they fit together in your Aspire AppHost.
prev: false
---
diff --git a/src/frontend/src/content/docs/integrations/cloud/azure/azure-app-service/azure-app-service-get-started.mdx b/src/frontend/src/content/docs/integrations/cloud/azure/azure-app-service/azure-app-service-get-started.mdx
index bc425a488..ca59ca23c 100644
--- a/src/frontend/src/content/docs/integrations/cloud/azure/azure-app-service/azure-app-service-get-started.mdx
+++ b/src/frontend/src/content/docs/integrations/cloud/azure/azure-app-service/azure-app-service-get-started.mdx
@@ -1,6 +1,6 @@
---
title: Get started with the Azure App Service integration
-description: Understand why you use the Aspire Azure App Service integration and how it fits together.
+description: Learn how the Aspire Azure App Service integration deploys your Aspire AppHost resources to Azure App Service using the Azure provisioning model.
prev: false
---
diff --git a/src/frontend/src/content/docs/integrations/cloud/azure/azure-cache-redis/azure-cache-redis-get-started.mdx b/src/frontend/src/content/docs/integrations/cloud/azure/azure-cache-redis/azure-cache-redis-get-started.mdx
index d0e93af1d..80dd0af46 100644
--- a/src/frontend/src/content/docs/integrations/cloud/azure/azure-cache-redis/azure-cache-redis-get-started.mdx
+++ b/src/frontend/src/content/docs/integrations/cloud/azure/azure-cache-redis/azure-cache-redis-get-started.mdx
@@ -1,6 +1,6 @@
---
title: Get started with the Azure Cache for Redis integrations
-description: Understand why you use the Aspire Azure Cache for Redis integrations and how they fit together.
+description: Understand why you use the Aspire Azure Cache for Redis integrations and how they fit together in your Aspire AppHost.
---
import { Image } from 'astro:assets';
diff --git a/src/frontend/src/content/docs/integrations/cloud/azure/azure-container-registry/azure-container-registry-get-started.mdx b/src/frontend/src/content/docs/integrations/cloud/azure/azure-container-registry/azure-container-registry-get-started.mdx
index a0d2139d0..bdee88ad2 100644
--- a/src/frontend/src/content/docs/integrations/cloud/azure/azure-container-registry/azure-container-registry-get-started.mdx
+++ b/src/frontend/src/content/docs/integrations/cloud/azure/azure-container-registry/azure-container-registry-get-started.mdx
@@ -1,6 +1,6 @@
---
-title: Get started with the Azure Container Registry integration
-description: Understand why you use the Aspire Azure Container Registry integration and how it fits together.
+title: Azure Container Registry integration overview
+description: Use the Aspire Azure Container Registry hosting and client integrations to provision registries, push images during deployment, and pull them at runtime from your apps.
---
import { Image } from 'astro:assets';
diff --git a/src/frontend/src/content/docs/integrations/cloud/azure/azure-cosmos-db/azure-cosmos-db-connect.mdx b/src/frontend/src/content/docs/integrations/cloud/azure/azure-cosmos-db/azure-cosmos-db-connect.mdx
index 14b2eb431..216a2cd14 100644
--- a/src/frontend/src/content/docs/integrations/cloud/azure/azure-cosmos-db/azure-cosmos-db-connect.mdx
+++ b/src/frontend/src/content/docs/integrations/cloud/azure/azure-cosmos-db/azure-cosmos-db-connect.mdx
@@ -1,5 +1,6 @@
---
title: Connect to Azure Cosmos DB
+seoTitle: Connect to Azure Cosmos DB from your .NET app with Aspire
description: Learn how to connect to Azure Cosmos DB from C#, Go, Python, and TypeScript consuming apps in an Aspire solution.
---
diff --git a/src/frontend/src/content/docs/integrations/cloud/azure/azure-cosmos-db/azure-cosmos-db-get-started.mdx b/src/frontend/src/content/docs/integrations/cloud/azure/azure-cosmos-db/azure-cosmos-db-get-started.mdx
index b267377b7..2eb041280 100644
--- a/src/frontend/src/content/docs/integrations/cloud/azure/azure-cosmos-db/azure-cosmos-db-get-started.mdx
+++ b/src/frontend/src/content/docs/integrations/cloud/azure/azure-cosmos-db/azure-cosmos-db-get-started.mdx
@@ -1,6 +1,6 @@
---
title: Get started with the Azure Cosmos DB integrations
-description: Understand why you use the Aspire Azure Cosmos DB integrations and how they fit together.
+description: Learn how the Aspire Azure Cosmos DB integrations provision an Azure Cosmos DB account resource and wire the .NET client into your AppHost projects.
prev: false
---
diff --git a/src/frontend/src/content/docs/integrations/cloud/azure/azure-default-credential.mdx b/src/frontend/src/content/docs/integrations/cloud/azure/azure-default-credential.mdx
index fc360631d..ebe53bc9e 100644
--- a/src/frontend/src/content/docs/integrations/cloud/azure/azure-default-credential.mdx
+++ b/src/frontend/src/content/docs/integrations/cloud/azure/azure-default-credential.mdx
@@ -1,6 +1,6 @@
---
title: Default Azure credential
-description: Learn about the default credential behavior in Aspire Azure client integrations and how to customize it.
+description: Learn about the default credential behavior in Aspire Azure client integrations and how to customize it in your Aspire AppHost.
---
import { Image } from 'astro:assets';
diff --git a/src/frontend/src/content/docs/integrations/cloud/azure/azure-event-hubs/azure-event-hubs-connect.mdx b/src/frontend/src/content/docs/integrations/cloud/azure/azure-event-hubs/azure-event-hubs-connect.mdx
index 765623ef4..899c87cad 100644
--- a/src/frontend/src/content/docs/integrations/cloud/azure/azure-event-hubs/azure-event-hubs-connect.mdx
+++ b/src/frontend/src/content/docs/integrations/cloud/azure/azure-event-hubs/azure-event-hubs-connect.mdx
@@ -1,5 +1,6 @@
---
title: Connect to Azure Event Hubs
+seoTitle: Connect to Azure Event Hubs from your .NET app with Aspire
description: Learn how to connect to Azure Event Hubs from C#, Go, Python, and TypeScript consuming apps in an Aspire solution.
---
diff --git a/src/frontend/src/content/docs/integrations/cloud/azure/azure-event-hubs/azure-event-hubs-get-started.mdx b/src/frontend/src/content/docs/integrations/cloud/azure/azure-event-hubs/azure-event-hubs-get-started.mdx
index 5797287b5..afb4d43c1 100644
--- a/src/frontend/src/content/docs/integrations/cloud/azure/azure-event-hubs/azure-event-hubs-get-started.mdx
+++ b/src/frontend/src/content/docs/integrations/cloud/azure/azure-event-hubs/azure-event-hubs-get-started.mdx
@@ -1,6 +1,6 @@
---
title: Get started with the Azure Event Hubs integrations
-description: Understand why you use the Aspire Azure Event Hubs integrations and how they fit together.
+description: Understand why you use the Aspire Azure Event Hubs integrations and how they fit together in your Aspire AppHost.
prev: false
---
diff --git a/src/frontend/src/content/docs/integrations/cloud/azure/azure-front-door.mdx b/src/frontend/src/content/docs/integrations/cloud/azure/azure-front-door.mdx
index 19f65a614..89e9589a3 100644
--- a/src/frontend/src/content/docs/integrations/cloud/azure/azure-front-door.mdx
+++ b/src/frontend/src/content/docs/integrations/cloud/azure/azure-front-door.mdx
@@ -1,5 +1,6 @@
---
title: Azure Front Door
+seoTitle: Azure Front Door integration for Aspire apps
description: Learn how to use the Aspire Azure Front Door hosting integration to put a global edge in front of your application's backends.
---
@@ -151,6 +152,10 @@ Front Door uses health probes to determine which origins are healthy. By default
When you publish your app, Aspire generates Bicep alongside the manifest. A Front Door resource with a single origin generates Bicep similar to the following:
+
+ **Upgrading from .NET Aspire 13.3.0-preview:** The resource names generated for Front Door profiles, endpoints, origin groups, origins, and routes changed in .NET Aspire 13.4. This can result in duplicate Azure resources (profiles, endpoints, origin groups, routes, and origins) during an upgrade. To avoid duplicates, either remove the existing Azure resources before redeploying, or set resource names explicitly using `ConfigureInfrastructure`.
+
+
```bicep title="Generated Bicep — frontdoor.bicep"
@description('The location for the resource(s) to be deployed.')
param location string = resourceGroup().location
@@ -158,7 +163,7 @@ param location string = resourceGroup().location
param my_api_host string
resource frontdoor 'Microsoft.Cdn/profiles@2025-06-01' = {
- name: take('frontdoor-${uniqueString(resourceGroup().id)}', 90)
+ name: take('frontdoor-${uniqueString(resourceGroup().id)}', 260)
location: 'Global'
sku: {
name: 'Standard_AzureFrontDoor'
@@ -169,13 +174,13 @@ resource frontdoor 'Microsoft.Cdn/profiles@2025-06-01' = {
}
resource my_apiEndpoint 'Microsoft.Cdn/profiles/afdEndpoints@2025-06-01' = {
- name: take('my-api-${uniqueString(resourceGroup().id)}', 46)
+ name: take('myapiEndpoint-${uniqueString(resourceGroup().id)}', 46)
location: 'Global'
parent: frontdoor
}
resource my_apiOriginGroup 'Microsoft.Cdn/profiles/originGroups@2025-06-01' = {
- name: take('my-api-og-${uniqueString(resourceGroup().id)}', 90)
+ name: take('myapiOriginGroup-${uniqueString(resourceGroup().id)}', 90)
properties: {
healthProbeSettings: {
probePath: '/'
@@ -191,7 +196,7 @@ resource my_apiOriginGroup 'Microsoft.Cdn/profiles/originGroups@2025-06-01' = {
}
resource my_apiOrigin 'Microsoft.Cdn/profiles/originGroups/origins@2025-06-01' = {
- name: take('my-api-origin-${uniqueString(resourceGroup().id)}', 90)
+ name: take('myapiOrigin-${uniqueString(resourceGroup().id)}', 90)
properties: {
hostName: my_api_host
originHostHeader: my_api_host
@@ -200,7 +205,7 @@ resource my_apiOrigin 'Microsoft.Cdn/profiles/originGroups/origins@2025-06-01' =
}
resource my_apiRoute 'Microsoft.Cdn/profiles/afdEndpoints/routes@2025-06-01' = {
- name: take('my-api-route-${uniqueString(resourceGroup().id)}', 90)
+ name: take('myapiRoute-${uniqueString(resourceGroup().id)}', 90)
properties: {
forwardingProtocol: 'HttpsOnly'
httpsRedirect: 'Enabled'
diff --git a/src/frontend/src/content/docs/integrations/cloud/azure/azure-functions/azure-functions-get-started.mdx b/src/frontend/src/content/docs/integrations/cloud/azure/azure-functions/azure-functions-get-started.mdx
index c61112603..beb786fec 100644
--- a/src/frontend/src/content/docs/integrations/cloud/azure/azure-functions/azure-functions-get-started.mdx
+++ b/src/frontend/src/content/docs/integrations/cloud/azure/azure-functions/azure-functions-get-started.mdx
@@ -1,6 +1,6 @@
---
title: Get started with the Azure Functions integration
-description: Understand why you use the Aspire Azure Functions integration and how it fits together.
+description: Learn how the Aspire Azure Functions integration runs an Azure Functions worker resource locally and orchestrates it alongside the rest of your AppHost.
prev: false
---
diff --git a/src/frontend/src/content/docs/integrations/cloud/azure/azure-key-vault/azure-key-vault-connect.mdx b/src/frontend/src/content/docs/integrations/cloud/azure/azure-key-vault/azure-key-vault-connect.mdx
index d0ce69438..ac49b9e07 100644
--- a/src/frontend/src/content/docs/integrations/cloud/azure/azure-key-vault/azure-key-vault-connect.mdx
+++ b/src/frontend/src/content/docs/integrations/cloud/azure/azure-key-vault/azure-key-vault-connect.mdx
@@ -1,5 +1,6 @@
---
title: Connect to Azure Key Vault
+seoTitle: Connect to Azure Key Vault from your .NET app with Aspire
description: Learn how to connect to Azure Key Vault from C#, Go, Python, and TypeScript consuming apps in an Aspire solution.
---
diff --git a/src/frontend/src/content/docs/integrations/cloud/azure/azure-key-vault/azure-key-vault-get-started.mdx b/src/frontend/src/content/docs/integrations/cloud/azure/azure-key-vault/azure-key-vault-get-started.mdx
index 86225f952..cd6ce8dda 100644
--- a/src/frontend/src/content/docs/integrations/cloud/azure/azure-key-vault/azure-key-vault-get-started.mdx
+++ b/src/frontend/src/content/docs/integrations/cloud/azure/azure-key-vault/azure-key-vault-get-started.mdx
@@ -1,6 +1,6 @@
---
title: Get started with the Azure Key Vault integrations
-description: Understand why you use the Aspire Azure Key Vault integrations and how they fit together.
+description: Learn how the Aspire Azure Key Vault integrations provision an Azure Key Vault resource and wire the .NET secret client into your AppHost projects.
---
import { Image } from 'astro:assets';
diff --git a/src/frontend/src/content/docs/integrations/cloud/azure/azure-log-analytics.mdx b/src/frontend/src/content/docs/integrations/cloud/azure/azure-log-analytics.mdx
index 6ecd5f7da..807b86137 100644
--- a/src/frontend/src/content/docs/integrations/cloud/azure/azure-log-analytics.mdx
+++ b/src/frontend/src/content/docs/integrations/cloud/azure/azure-log-analytics.mdx
@@ -1,5 +1,6 @@
---
title: Azure Log Analytics
+seoTitle: Azure Log Analytics integration for Aspire apps
description: Learn how to use the Azure Log Analytics hosting integration to add Log Analytics workspaces to your Aspire application for centralized logging and monitoring.
---
diff --git a/src/frontend/src/content/docs/integrations/cloud/azure/azure-openai/azure-openai-connect.mdx b/src/frontend/src/content/docs/integrations/cloud/azure/azure-openai/azure-openai-connect.mdx
index ef097566e..4aec4825d 100644
--- a/src/frontend/src/content/docs/integrations/cloud/azure/azure-openai/azure-openai-connect.mdx
+++ b/src/frontend/src/content/docs/integrations/cloud/azure/azure-openai/azure-openai-connect.mdx
@@ -1,5 +1,6 @@
---
title: Connect to Azure OpenAI
+seoTitle: Connect to Azure OpenAI from your .NET app with Aspire
description: Learn how to connect to Azure OpenAI from C#, Go, Python, and TypeScript consuming apps in an Aspire solution.
next: false
---
diff --git a/src/frontend/src/content/docs/integrations/cloud/azure/azure-openai/azure-openai-get-started.mdx b/src/frontend/src/content/docs/integrations/cloud/azure/azure-openai/azure-openai-get-started.mdx
index 9a194817f..73f124e5f 100644
--- a/src/frontend/src/content/docs/integrations/cloud/azure/azure-openai/azure-openai-get-started.mdx
+++ b/src/frontend/src/content/docs/integrations/cloud/azure/azure-openai/azure-openai-get-started.mdx
@@ -1,6 +1,6 @@
----
+---
title: Get started with the Azure OpenAI integrations
-description: Understand why you use the Aspire Azure OpenAI integrations and how they fit together.
+description: Learn how the Aspire Azure OpenAI integrations provision an Azure OpenAI resource and wire the .NET client to call chat and embedding models.
prev: false
---
diff --git a/src/frontend/src/content/docs/integrations/cloud/azure/azure-postgresql/azure-postgresql-get-started.mdx b/src/frontend/src/content/docs/integrations/cloud/azure/azure-postgresql/azure-postgresql-get-started.mdx
index 2ddab7137..307561b7c 100644
--- a/src/frontend/src/content/docs/integrations/cloud/azure/azure-postgresql/azure-postgresql-get-started.mdx
+++ b/src/frontend/src/content/docs/integrations/cloud/azure/azure-postgresql/azure-postgresql-get-started.mdx
@@ -1,6 +1,6 @@
---
-title: Get started with the Azure Database for PostgreSQL integrations
-description: Understand why you use the Aspire Azure Database for PostgreSQL integrations and how they fit together.
+title: Azure Database for PostgreSQL integrations overview
+description: "Use the Aspire Azure Database for PostgreSQL hosting and client integrations to provision flexible servers, configure firewalls, and connect from C# and TypeScript apps."
---
import { Image } from 'astro:assets';
diff --git a/src/frontend/src/content/docs/integrations/cloud/azure/azure-service-bus/azure-service-bus-connect.mdx b/src/frontend/src/content/docs/integrations/cloud/azure/azure-service-bus/azure-service-bus-connect.mdx
index dbde9b361..477204e2d 100644
--- a/src/frontend/src/content/docs/integrations/cloud/azure/azure-service-bus/azure-service-bus-connect.mdx
+++ b/src/frontend/src/content/docs/integrations/cloud/azure/azure-service-bus/azure-service-bus-connect.mdx
@@ -1,5 +1,6 @@
---
title: Connect to Azure Service Bus
+seoTitle: Connect to Azure Service Bus from your .NET app with Aspire
description: Learn how to connect to Azure Service Bus from C#, Go, Python, and TypeScript consuming apps in an Aspire solution.
---
diff --git a/src/frontend/src/content/docs/integrations/cloud/azure/azure-service-bus/azure-service-bus-get-started.mdx b/src/frontend/src/content/docs/integrations/cloud/azure/azure-service-bus/azure-service-bus-get-started.mdx
index aae3a132e..2ca6ef83c 100644
--- a/src/frontend/src/content/docs/integrations/cloud/azure/azure-service-bus/azure-service-bus-get-started.mdx
+++ b/src/frontend/src/content/docs/integrations/cloud/azure/azure-service-bus/azure-service-bus-get-started.mdx
@@ -1,6 +1,6 @@
---
title: Get started with the Azure Service Bus integrations
-description: Understand why you use the Aspire Azure Service Bus integrations and how they fit together.
+description: Understand why you use the Aspire Azure Service Bus integrations and how they fit together in your Aspire AppHost.
---
import { Image } from 'astro:assets';
diff --git a/src/frontend/src/content/docs/integrations/cloud/azure/azure-signalr/azure-signalr-get-started.mdx b/src/frontend/src/content/docs/integrations/cloud/azure/azure-signalr/azure-signalr-get-started.mdx
index 5f0c7074a..50c81d866 100644
--- a/src/frontend/src/content/docs/integrations/cloud/azure/azure-signalr/azure-signalr-get-started.mdx
+++ b/src/frontend/src/content/docs/integrations/cloud/azure/azure-signalr/azure-signalr-get-started.mdx
@@ -1,6 +1,6 @@
---
title: Get started with the Azure SignalR Service integration
-description: Understand why you use the Aspire Azure SignalR Service integration and how it fits together.
+description: Understand why you use the Aspire Azure SignalR Service integration and how it fits together in your Aspire AppHost.
---
import { Image } from 'astro:assets';
diff --git a/src/frontend/src/content/docs/integrations/cloud/azure/azure-sql-database/azure-sql-database-connect.mdx b/src/frontend/src/content/docs/integrations/cloud/azure/azure-sql-database/azure-sql-database-connect.mdx
index f276c654f..8120af5e3 100644
--- a/src/frontend/src/content/docs/integrations/cloud/azure/azure-sql-database/azure-sql-database-connect.mdx
+++ b/src/frontend/src/content/docs/integrations/cloud/azure/azure-sql-database/azure-sql-database-connect.mdx
@@ -1,5 +1,6 @@
---
title: Connect to Azure SQL Database
+seoTitle: Connect to Azure SQL Database from your .NET app with Aspire
description: Learn how to connect to Azure SQL Database from C#, Go, Python, and TypeScript consuming apps in an Aspire solution.
---
diff --git a/src/frontend/src/content/docs/integrations/cloud/azure/azure-sql-database/azure-sql-database-get-started.mdx b/src/frontend/src/content/docs/integrations/cloud/azure/azure-sql-database/azure-sql-database-get-started.mdx
index 80c4c3c99..93af903c1 100644
--- a/src/frontend/src/content/docs/integrations/cloud/azure/azure-sql-database/azure-sql-database-get-started.mdx
+++ b/src/frontend/src/content/docs/integrations/cloud/azure/azure-sql-database/azure-sql-database-get-started.mdx
@@ -1,6 +1,6 @@
---
title: Get started with the Azure SQL Database integrations
-description: Understand why you use the Aspire Azure SQL Database integrations and how they fit together.
+description: Understand why you use the Aspire Azure SQL Database integrations and how they fit together in your Aspire AppHost.
---
import { Image } from 'astro:assets';
diff --git a/src/frontend/src/content/docs/integrations/cloud/azure/azure-storage-blobs/azure-storage-blobs-connect.mdx b/src/frontend/src/content/docs/integrations/cloud/azure/azure-storage-blobs/azure-storage-blobs-connect.mdx
index a0cccd74d..2058ab406 100644
--- a/src/frontend/src/content/docs/integrations/cloud/azure/azure-storage-blobs/azure-storage-blobs-connect.mdx
+++ b/src/frontend/src/content/docs/integrations/cloud/azure/azure-storage-blobs/azure-storage-blobs-connect.mdx
@@ -1,5 +1,6 @@
---
title: Connect to Azure Blob Storage
+seoTitle: Connect to Azure Blob Storage from your .NET app with Aspire
description: Learn how to connect to Azure Blob Storage from C#, Go, Python, and TypeScript consuming apps in an Aspire solution.
---
diff --git a/src/frontend/src/content/docs/integrations/cloud/azure/azure-storage-blobs/azure-storage-blobs-get-started.mdx b/src/frontend/src/content/docs/integrations/cloud/azure/azure-storage-blobs/azure-storage-blobs-get-started.mdx
index 3197fab33..426d1e6c7 100644
--- a/src/frontend/src/content/docs/integrations/cloud/azure/azure-storage-blobs/azure-storage-blobs-get-started.mdx
+++ b/src/frontend/src/content/docs/integrations/cloud/azure/azure-storage-blobs/azure-storage-blobs-get-started.mdx
@@ -1,6 +1,6 @@
---
title: Get started with the Azure Blob Storage integrations
-description: Understand why you use the Aspire Azure Blob Storage integrations and how they fit together.
+description: Understand why you use the Aspire Azure Blob Storage integrations and how they fit together in your Aspire AppHost.
---
import { Image } from 'astro:assets';
diff --git a/src/frontend/src/content/docs/integrations/cloud/azure/azure-storage-queues/azure-storage-queues-get-started.mdx b/src/frontend/src/content/docs/integrations/cloud/azure/azure-storage-queues/azure-storage-queues-get-started.mdx
index 2620cb16a..f8dc5c04f 100644
--- a/src/frontend/src/content/docs/integrations/cloud/azure/azure-storage-queues/azure-storage-queues-get-started.mdx
+++ b/src/frontend/src/content/docs/integrations/cloud/azure/azure-storage-queues/azure-storage-queues-get-started.mdx
@@ -1,6 +1,6 @@
---
title: Get started with the Azure Queue Storage integrations
-description: Understand why you use the Aspire Azure Queue Storage integrations and how they fit together.
+description: Understand why you use the Aspire Azure Queue Storage integrations and how they fit together in your Aspire AppHost.
---
import { Image } from 'astro:assets';
diff --git a/src/frontend/src/content/docs/integrations/cloud/azure/azure-storage-tables/azure-storage-tables-get-started.mdx b/src/frontend/src/content/docs/integrations/cloud/azure/azure-storage-tables/azure-storage-tables-get-started.mdx
index 00b91185d..1e10b5bd6 100644
--- a/src/frontend/src/content/docs/integrations/cloud/azure/azure-storage-tables/azure-storage-tables-get-started.mdx
+++ b/src/frontend/src/content/docs/integrations/cloud/azure/azure-storage-tables/azure-storage-tables-get-started.mdx
@@ -1,6 +1,6 @@
---
title: Get started with the Azure Table Storage integrations
-description: Understand why you use the Aspire Azure Table Storage integrations and how they fit together.
+description: Understand why you use the Aspire Azure Table Storage integrations and how they fit together in your Aspire AppHost.
---
import { Image } from 'astro:assets';
diff --git a/src/frontend/src/content/docs/integrations/cloud/azure/azure-web-pubsub/azure-web-pubsub-connect.mdx b/src/frontend/src/content/docs/integrations/cloud/azure/azure-web-pubsub/azure-web-pubsub-connect.mdx
index ec62b1126..3dbc3dfae 100644
--- a/src/frontend/src/content/docs/integrations/cloud/azure/azure-web-pubsub/azure-web-pubsub-connect.mdx
+++ b/src/frontend/src/content/docs/integrations/cloud/azure/azure-web-pubsub/azure-web-pubsub-connect.mdx
@@ -1,5 +1,6 @@
---
title: Connect to Azure Web PubSub
+seoTitle: Connect to Azure Web PubSub from your .NET app with Aspire
description: Learn how to connect to Azure Web PubSub from C#, Go, Python, and TypeScript consuming apps in an Aspire solution.
---
diff --git a/src/frontend/src/content/docs/integrations/cloud/azure/azure-web-pubsub/azure-web-pubsub-get-started.mdx b/src/frontend/src/content/docs/integrations/cloud/azure/azure-web-pubsub/azure-web-pubsub-get-started.mdx
index 58b4bf925..359f40bc8 100644
--- a/src/frontend/src/content/docs/integrations/cloud/azure/azure-web-pubsub/azure-web-pubsub-get-started.mdx
+++ b/src/frontend/src/content/docs/integrations/cloud/azure/azure-web-pubsub/azure-web-pubsub-get-started.mdx
@@ -1,6 +1,6 @@
---
title: Get started with the Azure Web PubSub integrations
-description: Understand why you use the Aspire Azure Web PubSub integrations and how they fit together.
+description: Understand why you use the Aspire Azure Web PubSub integrations and how they fit together in your Aspire AppHost.
---
import { Image } from 'astro:assets';
diff --git a/src/frontend/src/content/docs/integrations/cloud/azure/configure-container-apps.mdx b/src/frontend/src/content/docs/integrations/cloud/azure/configure-container-apps.mdx
index af9ee1242..d88ff998a 100644
--- a/src/frontend/src/content/docs/integrations/cloud/azure/configure-container-apps.mdx
+++ b/src/frontend/src/content/docs/integrations/cloud/azure/configure-container-apps.mdx
@@ -1,6 +1,6 @@
---
title: Configure Azure Container Apps environments
-description: Learn how to configure Azure Container Apps environment settings for Aspire deployments.
+description: Learn how to configure Azure Container Apps environment settings, scaling rules, and ingress for Aspire AppHost projects deployed to Azure.
---
import { Aside, Tabs, TabItem } from '@astrojs/starlight/components';
diff --git a/src/frontend/src/content/docs/integrations/cloud/azure/local-provisioning.mdx b/src/frontend/src/content/docs/integrations/cloud/azure/local-provisioning.mdx
index 6ba9275c8..8fe010068 100644
--- a/src/frontend/src/content/docs/integrations/cloud/azure/local-provisioning.mdx
+++ b/src/frontend/src/content/docs/integrations/cloud/azure/local-provisioning.mdx
@@ -1,6 +1,6 @@
---
title: Local Azure provisioning
-description: Learn how to automatically provision Azure resources during local development with Aspire.
+description: Learn how to automatically provision Azure resources during local development with Aspire in your Aspire AppHost.
---
import { Image } from 'astro:assets';
diff --git a/src/frontend/src/content/docs/integrations/cloud/azure/role-assignments.mdx b/src/frontend/src/content/docs/integrations/cloud/azure/role-assignments.mdx
index 4ab0bb2c7..eb3383372 100644
--- a/src/frontend/src/content/docs/integrations/cloud/azure/role-assignments.mdx
+++ b/src/frontend/src/content/docs/integrations/cloud/azure/role-assignments.mdx
@@ -1,6 +1,6 @@
---
title: Manage Azure role assignments
-description: Learn how to configure Azure role-based access control (RBAC) for Aspire applications.
+description: Learn how to configure Azure role-based access control (RBAC) for Aspire AppHost projects so resources get the minimum permissions they need.
---
import { Image } from 'astro:assets';
@@ -82,6 +82,54 @@ When you replace the default role assignments with the `SearchIndexDataReader` r
For more information, see [Azure built-in roles](https://learn.microsoft.com/azure/role-based-access-control/built-in-roles).
+## Inspect role assignments programmatically
+
+Aspire represents each set of role assignments as an `AzureRoleAssignmentResource` in the distributed application model. You can enumerate these resources to inspect what role assignments are configured, which Azure resource they target, and which Aspire resource owns them. This is useful in [pipeline steps](/deployment/pipelines/) that need to reason about security configuration before deployment.
+
+`AzureRoleAssignmentResource` exposes three properties:
+
+| Property | Type | Description |
+| --- | --- | --- |
+| `TargetAzureResource` | `AzureProvisioningResource` | The Azure resource that the roles are assigned on (the scope, for example, a Key Vault or Storage account). |
+| `OwnerResource` | `IResource?` | The Aspire resource whose managed identity receives the role assignments (the resource on which `WithRoleAssignments` was called). `null` for global role assignments granted to the deployment principal. |
+| `IdentityResource` | `AzureUserAssignedIdentityResource?` | The user-assigned managed identity whose principal receives the role assignments. `null` for global role assignments granted to the deployment principal. |
+
+The following example shows how to add a pipeline step that runs during `WellKnownPipelineSteps.BeforeStart` and enumerates all `AzureRoleAssignmentResource` instances that target a specific Azure resource:
+
+```csharp title="AppHost.cs"
+#pragma warning disable ASPIREAZURE001 // AzureEnvironmentResource is Experimental
+
+var builder = DistributedApplication.CreateBuilder(args);
+
+var keyVault = builder.AddAzureKeyVault("vault");
+
+builder.AddProject("api")
+ .WithReference(keyVault);
+
+builder.Pipeline.AddStep(
+ "inspect-role-assignments",
+ async context =>
+ {
+ var roleAssignments = context.Model.Resources
+ .OfType()
+ .Where(r => r.TargetAzureResource == keyVault.Resource)
+ .ToList();
+
+ foreach (var ra in roleAssignments)
+ {
+ Console.WriteLine($"Owner: {ra.OwnerResource?.Name}, Identity: {ra.IdentityResource?.Name}");
+ }
+ },
+ dependsOn: AzureEnvironmentResource.PrepareResourcesStepName,
+ requiredBy: WellKnownPipelineSteps.BeforeStart);
+
+builder.Build().Run();
+```
+
+:::note
+`OwnerResource` and `IdentityResource` are both `null` for global role assignments granted to the deployment principal. When either property is non-`null`, both are non-`null`.
+:::
+
## Built-in role assignment reference
All built-in roles are defined within the `Azure.Provisioning` namespaces and are included in the corresponding [📦 Azure.Provisioning.\*](https://www.nuget.org/packages?q=Azure.Provisioning) NuGet packages. Each Aspire Azure hosting integration automatically depends on the appropriate provisioning package. For more information, see [Customized Azure resources](/integrations/cloud/azure/customize-resources/).
diff --git a/src/frontend/src/content/docs/integrations/cloud/azure/user-assigned-identity.mdx b/src/frontend/src/content/docs/integrations/cloud/azure/user-assigned-identity.mdx
index 1303d6374..cb7c2e671 100644
--- a/src/frontend/src/content/docs/integrations/cloud/azure/user-assigned-identity.mdx
+++ b/src/frontend/src/content/docs/integrations/cloud/azure/user-assigned-identity.mdx
@@ -1,6 +1,6 @@
---
title: User-assigned managed identity
-description: Learn how to configure user-assigned managed identities for Aspire applications in Azure.
+description: Learn how to configure user-assigned managed identities for Aspire AppHost resources so deployed apps authenticate to Azure without secrets.
---
import { Image } from 'astro:assets';
diff --git a/src/frontend/src/content/docs/integrations/compute/docker.mdx b/src/frontend/src/content/docs/integrations/compute/docker.mdx
index 56b6833b5..33851219b 100644
--- a/src/frontend/src/content/docs/integrations/compute/docker.mdx
+++ b/src/frontend/src/content/docs/integrations/compute/docker.mdx
@@ -1,5 +1,6 @@
---
title: Docker integration
+seoTitle: Aspire Docker integration for containerized resources
description: Learn how to use the Aspire Docker hosting integration to deploy your app with Docker Compose.
---
diff --git a/src/frontend/src/content/docs/integrations/compute/kubernetes.mdx b/src/frontend/src/content/docs/integrations/compute/kubernetes.mdx
index 4a12e81be..0b29779ed 100644
--- a/src/frontend/src/content/docs/integrations/compute/kubernetes.mdx
+++ b/src/frontend/src/content/docs/integrations/compute/kubernetes.mdx
@@ -1,5 +1,6 @@
---
title: Kubernetes integration
+seoTitle: "Kubernetes integration for Aspire: hosting and client wiring"
description: Learn how to add Kubernetes deployment support to your Aspire application using the Aspire.Hosting.Kubernetes hosting integration.
---
diff --git a/src/frontend/src/content/docs/integrations/custom-integrations/client-integrations.mdx b/src/frontend/src/content/docs/integrations/custom-integrations/client-integrations.mdx
index 3c0d6019d..1ca0d4d41 100644
--- a/src/frontend/src/content/docs/integrations/custom-integrations/client-integrations.mdx
+++ b/src/frontend/src/content/docs/integrations/custom-integrations/client-integrations.mdx
@@ -1,6 +1,6 @@
---
title: Create custom client integrations
-description: Learn how to create a custom Aspire client integration for an existing containerized application.
+description: Learn how to create a custom Aspire client integration for an existing containerized application in your Aspire AppHost.
---
import { Aside, Badge, Steps } from '@astrojs/starlight/components';
diff --git a/src/frontend/src/content/docs/integrations/custom-integrations/hosting-integrations.mdx b/src/frontend/src/content/docs/integrations/custom-integrations/hosting-integrations.mdx
index b09fdfd84..3f2ea2722 100644
--- a/src/frontend/src/content/docs/integrations/custom-integrations/hosting-integrations.mdx
+++ b/src/frontend/src/content/docs/integrations/custom-integrations/hosting-integrations.mdx
@@ -1,6 +1,6 @@
---
title: Create custom hosting integrations
-description: Learn how to create a custom Aspire hosting integration for an existing containerized application.
+description: Learn how to create a custom Aspire hosting integration for an existing containerized application in your Aspire AppHost.
---
import { Image } from 'astro:assets';
diff --git a/src/frontend/src/content/docs/integrations/custom-integrations/secure-communication.mdx b/src/frontend/src/content/docs/integrations/custom-integrations/secure-communication.mdx
index 5192f9a62..a86a59183 100644
--- a/src/frontend/src/content/docs/integrations/custom-integrations/secure-communication.mdx
+++ b/src/frontend/src/content/docs/integrations/custom-integrations/secure-communication.mdx
@@ -1,6 +1,6 @@
---
title: Secure communication between integrations
-description: Learn how to secure communication between hosting and client integrations.
+description: Learn how to secure communication between Aspire hosting and client integrations with HTTPS, mutual TLS, secret-backed parameters, and managed identities in production.
---
import { Aside, Steps } from '@astrojs/starlight/components';
diff --git a/src/frontend/src/content/docs/integrations/databases/clickhouse/clickhouse-connect.mdx b/src/frontend/src/content/docs/integrations/databases/clickhouse/clickhouse-connect.mdx
index 8e050a1d2..5cdf40ce9 100644
--- a/src/frontend/src/content/docs/integrations/databases/clickhouse/clickhouse-connect.mdx
+++ b/src/frontend/src/content/docs/integrations/databases/clickhouse/clickhouse-connect.mdx
@@ -1,6 +1,7 @@
---
title: Connect to ClickHouse
-description: Learn how to connect to ClickHouse from C#, Go, Python, and TypeScript consuming apps in an Aspire solution.
+seoTitle: Connect to ClickHouse from your .NET app with Aspire
+description: "Learn how to connect to ClickHouse from C#, Go, Python, and TypeScript consuming apps in an Aspire solution in your Aspire AppHost."
---
import { Image } from 'astro:assets';
diff --git a/src/frontend/src/content/docs/integrations/databases/clickhouse/clickhouse-get-started.mdx b/src/frontend/src/content/docs/integrations/databases/clickhouse/clickhouse-get-started.mdx
index 97f47f3f0..ca50aa747 100644
--- a/src/frontend/src/content/docs/integrations/databases/clickhouse/clickhouse-get-started.mdx
+++ b/src/frontend/src/content/docs/integrations/databases/clickhouse/clickhouse-get-started.mdx
@@ -1,6 +1,6 @@
---
title: Get started with the ClickHouse integrations
-description: Understand why you use the Aspire ClickHouse integrations and how they fit together.
+description: Learn how the Aspire ClickHouse integrations host a ClickHouse analytics database resource and configure the .NET client for fast OLAP queries.
---
import { Image } from 'astro:assets';
diff --git a/src/frontend/src/content/docs/integrations/databases/clickhouse/clickhouse-host.mdx b/src/frontend/src/content/docs/integrations/databases/clickhouse/clickhouse-host.mdx
index 1262c7517..33524689a 100644
--- a/src/frontend/src/content/docs/integrations/databases/clickhouse/clickhouse-host.mdx
+++ b/src/frontend/src/content/docs/integrations/databases/clickhouse/clickhouse-host.mdx
@@ -1,5 +1,6 @@
---
title: Set up ClickHouse in the AppHost
+seoTitle: "Set up ClickHouse in the Aspire AppHost: hosting integration"
description: Learn how to use the Aspire ClickHouse Hosting integration to orchestrate and configure a ClickHouse database in an Aspire solution.
---
diff --git a/src/frontend/src/content/docs/integrations/databases/efcore/azure-cosmos-db/azure-cosmos-db-get-started.mdx b/src/frontend/src/content/docs/integrations/databases/efcore/azure-cosmos-db/azure-cosmos-db-get-started.mdx
index 7a20b028d..dfa37ac3c 100644
--- a/src/frontend/src/content/docs/integrations/databases/efcore/azure-cosmos-db/azure-cosmos-db-get-started.mdx
+++ b/src/frontend/src/content/docs/integrations/databases/efcore/azure-cosmos-db/azure-cosmos-db-get-started.mdx
@@ -1,6 +1,6 @@
---
-title: Get started with the EF Core Azure Cosmos DB integrations
-description: Understand why you use the Aspire EF Core Azure Cosmos DB integrations and how they fit together.
+title: EF Core Azure Cosmos DB integrations overview
+description: "Use the Aspire Entity Framework Core Azure Cosmos DB integrations to model your DbContext, provision a Cosmos DB account, and connect from C# apps with health checks."
---
import { Image } from 'astro:assets';
diff --git a/src/frontend/src/content/docs/integrations/databases/efcore/azure-postgresql/azure-postgresql-get-started.mdx b/src/frontend/src/content/docs/integrations/databases/efcore/azure-postgresql/azure-postgresql-get-started.mdx
index 916ac49ee..d183a992d 100644
--- a/src/frontend/src/content/docs/integrations/databases/efcore/azure-postgresql/azure-postgresql-get-started.mdx
+++ b/src/frontend/src/content/docs/integrations/databases/efcore/azure-postgresql/azure-postgresql-get-started.mdx
@@ -1,6 +1,6 @@
---
-title: Get started with the Azure PostgreSQL EF Core integrations
-description: Understand why you use the Aspire Azure PostgreSQL EF Core integrations and how they fit together.
+title: EF Core Azure PostgreSQL integrations overview
+description: "Use the Aspire EF Core Azure PostgreSQL hosting and client integrations to provision flexible servers and connect from your C# DbContext with resilience and telemetry."
---
import { Image } from 'astro:assets';
diff --git a/src/frontend/src/content/docs/integrations/databases/efcore/azure-sql/azure-sql-get-started.mdx b/src/frontend/src/content/docs/integrations/databases/efcore/azure-sql/azure-sql-get-started.mdx
index 5ce516998..75fba62fb 100644
--- a/src/frontend/src/content/docs/integrations/databases/efcore/azure-sql/azure-sql-get-started.mdx
+++ b/src/frontend/src/content/docs/integrations/databases/efcore/azure-sql/azure-sql-get-started.mdx
@@ -1,6 +1,6 @@
---
title: Get started with the Azure SQL EF Core integrations
-description: Understand why you use the Aspire Azure SQL EF Core integrations and how they fit together.
+description: Understand why you use the Aspire Azure SQL EF Core integrations and how they fit together in your Aspire AppHost.
---
import { Image } from 'astro:assets';
diff --git a/src/frontend/src/content/docs/integrations/databases/efcore/mongodb/mongodb-efcore-connect.mdx b/src/frontend/src/content/docs/integrations/databases/efcore/mongodb/mongodb-efcore-connect.mdx
index e9da30b58..c7e80fcfa 100644
--- a/src/frontend/src/content/docs/integrations/databases/efcore/mongodb/mongodb-efcore-connect.mdx
+++ b/src/frontend/src/content/docs/integrations/databases/efcore/mongodb/mongodb-efcore-connect.mdx
@@ -1,6 +1,6 @@
---
title: MongoDB EF Core client integration
-description: Learn how to use the MongoDB EF Core client integration to interact with MongoDB instances.
+description: Learn how to use the MongoDB EF Core client integration to interact with MongoDB instances in your Aspire AppHost.
---
import { Image } from 'astro:assets';
diff --git a/src/frontend/src/content/docs/integrations/databases/efcore/mongodb/mongodb-efcore-get-started.mdx b/src/frontend/src/content/docs/integrations/databases/efcore/mongodb/mongodb-efcore-get-started.mdx
index 032744537..16be8a22f 100644
--- a/src/frontend/src/content/docs/integrations/databases/efcore/mongodb/mongodb-efcore-get-started.mdx
+++ b/src/frontend/src/content/docs/integrations/databases/efcore/mongodb/mongodb-efcore-get-started.mdx
@@ -1,6 +1,6 @@
---
-title: Get started with the MongoDB Entity Framework Core integrations
-description: Understand why you use the Aspire MongoDB EF Core integrations and how they fit together.
+title: MongoDB EF Core integrations overview
+description: "Use the Aspire MongoDB Entity Framework Core integrations to host a Mongo container, share a connection string, and bind a C# DbContext with health checks and tracing."
---
import { Image } from 'astro:assets';
diff --git a/src/frontend/src/content/docs/integrations/databases/efcore/mysql/mysql-connect.mdx b/src/frontend/src/content/docs/integrations/databases/efcore/mysql/mysql-connect.mdx
index c874115d2..de6e8aec5 100644
--- a/src/frontend/src/content/docs/integrations/databases/efcore/mysql/mysql-connect.mdx
+++ b/src/frontend/src/content/docs/integrations/databases/efcore/mysql/mysql-connect.mdx
@@ -1,5 +1,6 @@
---
title: Connect to MySQL with EF Core
+seoTitle: Connect to MySQL with EF Core from your .NET app with Aspire
description: Learn how to register an EF Core DbContext for MySQL from a C# consuming app in an Aspire solution, including connection properties, configuration, health checks, and telemetry.
---
diff --git a/src/frontend/src/content/docs/integrations/databases/efcore/mysql/mysql-get-started.mdx b/src/frontend/src/content/docs/integrations/databases/efcore/mysql/mysql-get-started.mdx
index bc348c204..f802562f0 100644
--- a/src/frontend/src/content/docs/integrations/databases/efcore/mysql/mysql-get-started.mdx
+++ b/src/frontend/src/content/docs/integrations/databases/efcore/mysql/mysql-get-started.mdx
@@ -1,6 +1,6 @@
---
title: Get started with the MySQL EF Core integration
-description: Understand why you use the Aspire MySQL Pomelo Entity Framework Core integration and how it fits together.
+description: Understand why you use the Aspire MySQL Pomelo Entity Framework Core integration and how it fits together in your Aspire AppHost.
---
import { Image } from 'astro:assets';
diff --git a/src/frontend/src/content/docs/integrations/databases/efcore/oracle/oracle-get-started.mdx b/src/frontend/src/content/docs/integrations/databases/efcore/oracle/oracle-get-started.mdx
index 9806687a7..a482e29d4 100644
--- a/src/frontend/src/content/docs/integrations/databases/efcore/oracle/oracle-get-started.mdx
+++ b/src/frontend/src/content/docs/integrations/databases/efcore/oracle/oracle-get-started.mdx
@@ -1,6 +1,6 @@
---
title: Get started with the Oracle EF Core integrations
-description: Understand why you use the Aspire Oracle EF Core integrations and how they fit together.
+description: Learn how the Aspire Oracle EF Core integrations host an Oracle database resource and register the Entity Framework Core DbContext for your AppHost.
---
import { Image } from 'astro:assets';
diff --git a/src/frontend/src/content/docs/integrations/databases/efcore/oracle/oracle-host.mdx b/src/frontend/src/content/docs/integrations/databases/efcore/oracle/oracle-host.mdx
index 27aac4394..698208b5f 100644
--- a/src/frontend/src/content/docs/integrations/databases/efcore/oracle/oracle-host.mdx
+++ b/src/frontend/src/content/docs/integrations/databases/efcore/oracle/oracle-host.mdx
@@ -1,5 +1,6 @@
---
title: Set up Oracle in the AppHost
+seoTitle: "Set up Oracle in the Aspire AppHost: hosting integration"
description: Learn how to use the Aspire Oracle Hosting integration to orchestrate and configure an Oracle database in an Aspire solution.
---
diff --git a/src/frontend/src/content/docs/integrations/databases/efcore/postgres/postgresql-get-started.mdx b/src/frontend/src/content/docs/integrations/databases/efcore/postgres/postgresql-get-started.mdx
index 88490beb9..6766ebc4a 100644
--- a/src/frontend/src/content/docs/integrations/databases/efcore/postgres/postgresql-get-started.mdx
+++ b/src/frontend/src/content/docs/integrations/databases/efcore/postgres/postgresql-get-started.mdx
@@ -1,6 +1,6 @@
---
title: Get started with the PostgreSQL EF Core integrations
-description: Understand why you use the Aspire PostgreSQL EF Core integrations and how they fit together.
+description: Understand why you use the Aspire PostgreSQL EF Core integrations and how they fit together in your Aspire AppHost.
---
import { Image } from 'astro:assets';
diff --git a/src/frontend/src/content/docs/integrations/databases/efcore/sql-server/sql-server-connect.mdx b/src/frontend/src/content/docs/integrations/databases/efcore/sql-server/sql-server-connect.mdx
index 75c0843fc..f19aefe31 100644
--- a/src/frontend/src/content/docs/integrations/databases/efcore/sql-server/sql-server-connect.mdx
+++ b/src/frontend/src/content/docs/integrations/databases/efcore/sql-server/sql-server-connect.mdx
@@ -1,6 +1,6 @@
---
title: Connect to SQL Server (EF Core)
-description: Learn how to connect to SQL Server from C# consuming apps using Entity Framework Core in an Aspire solution.
+description: "Learn how to connect to SQL Server from C# consuming apps using Entity Framework Core in an Aspire solution in your Aspire AppHost."
---
import { Image } from 'astro:assets';
diff --git a/src/frontend/src/content/docs/integrations/databases/efcore/sql-server/sql-server-get-started.mdx b/src/frontend/src/content/docs/integrations/databases/efcore/sql-server/sql-server-get-started.mdx
index 284ed5e74..b98c5f59a 100644
--- a/src/frontend/src/content/docs/integrations/databases/efcore/sql-server/sql-server-get-started.mdx
+++ b/src/frontend/src/content/docs/integrations/databases/efcore/sql-server/sql-server-get-started.mdx
@@ -1,6 +1,6 @@
---
-title: Get started with the SQL Server Entity Framework Core integrations
-description: Understand why you use the Aspire SQL Server EF Core integrations and how they fit together.
+title: SQL Server EF Core integrations overview
+description: "Use the Aspire SQL Server Entity Framework Core hosting and client integrations to provision SQL Server, share a connection, and wire up your C# DbContext seamlessly."
---
import { Image } from 'astro:assets';
diff --git a/src/frontend/src/content/docs/integrations/databases/elasticsearch/elasticsearch-connect.mdx b/src/frontend/src/content/docs/integrations/databases/elasticsearch/elasticsearch-connect.mdx
index 2f7fcf27b..85c589e58 100644
--- a/src/frontend/src/content/docs/integrations/databases/elasticsearch/elasticsearch-connect.mdx
+++ b/src/frontend/src/content/docs/integrations/databases/elasticsearch/elasticsearch-connect.mdx
@@ -1,5 +1,6 @@
---
title: Connect to Elasticsearch
+seoTitle: Connect to Elasticsearch from your .NET app with Aspire
description: Learn how to connect to Elasticsearch from C#, Go, Python, and TypeScript consuming apps in an Aspire solution.
---
diff --git a/src/frontend/src/content/docs/integrations/databases/elasticsearch/elasticsearch-get-started.mdx b/src/frontend/src/content/docs/integrations/databases/elasticsearch/elasticsearch-get-started.mdx
index e3ececa52..a3c3d8f2f 100644
--- a/src/frontend/src/content/docs/integrations/databases/elasticsearch/elasticsearch-get-started.mdx
+++ b/src/frontend/src/content/docs/integrations/databases/elasticsearch/elasticsearch-get-started.mdx
@@ -1,6 +1,6 @@
---
title: Get started with the Elasticsearch integrations
-description: Understand why you use the Aspire Elasticsearch integrations and how they fit together.
+description: Learn how the Aspire Elasticsearch integrations provision an Elasticsearch resource and configure the .NET client for search and analytics workloads.
---
import { Image } from 'astro:assets';
diff --git a/src/frontend/src/content/docs/integrations/databases/kurrentdb/kurrentdb-connect.mdx b/src/frontend/src/content/docs/integrations/databases/kurrentdb/kurrentdb-connect.mdx
index 09d98525a..88efc27d7 100644
--- a/src/frontend/src/content/docs/integrations/databases/kurrentdb/kurrentdb-connect.mdx
+++ b/src/frontend/src/content/docs/integrations/databases/kurrentdb/kurrentdb-connect.mdx
@@ -1,5 +1,6 @@
---
title: Connect to KurrentDB
+seoTitle: "Connect to KurrentDB from Aspire apps (C#, Node.js)"
description: Learn how to connect to KurrentDB from C#, Go, Python, and TypeScript consuming apps in an Aspire solution.
---
diff --git a/src/frontend/src/content/docs/integrations/databases/kurrentdb/kurrentdb-get-started.mdx b/src/frontend/src/content/docs/integrations/databases/kurrentdb/kurrentdb-get-started.mdx
index 55e004773..227bea252 100644
--- a/src/frontend/src/content/docs/integrations/databases/kurrentdb/kurrentdb-get-started.mdx
+++ b/src/frontend/src/content/docs/integrations/databases/kurrentdb/kurrentdb-get-started.mdx
@@ -1,6 +1,6 @@
---
title: Get started with the KurrentDB integrations
-description: Understand why you use the Aspire KurrentDB integrations and how they fit together.
+description: Learn how the Aspire KurrentDB integrations host a KurrentDB event store resource and connect the .NET client to your Aspire AppHost projects.
---
import { Image } from 'astro:assets';
diff --git a/src/frontend/src/content/docs/integrations/databases/kurrentdb/kurrentdb-host.mdx b/src/frontend/src/content/docs/integrations/databases/kurrentdb/kurrentdb-host.mdx
index 820671835..0ffec9388 100644
--- a/src/frontend/src/content/docs/integrations/databases/kurrentdb/kurrentdb-host.mdx
+++ b/src/frontend/src/content/docs/integrations/databases/kurrentdb/kurrentdb-host.mdx
@@ -1,5 +1,6 @@
---
title: Set up KurrentDB in the AppHost
+seoTitle: "Set up KurrentDB in the Aspire AppHost: hosting integration"
description: Learn how to use the Aspire KurrentDB Hosting integration to orchestrate and configure a KurrentDB resource in an Aspire solution.
---
diff --git a/src/frontend/src/content/docs/integrations/databases/meilisearch/meilisearch-connect.mdx b/src/frontend/src/content/docs/integrations/databases/meilisearch/meilisearch-connect.mdx
index 82c099ee9..c2b7988f9 100644
--- a/src/frontend/src/content/docs/integrations/databases/meilisearch/meilisearch-connect.mdx
+++ b/src/frontend/src/content/docs/integrations/databases/meilisearch/meilisearch-connect.mdx
@@ -1,6 +1,7 @@
---
title: Connect to Meilisearch
-description: Learn how to connect to Meilisearch from C#, Go, Python, and TypeScript consuming apps in an Aspire solution.
+seoTitle: Connect to Meilisearch from your .NET app with Aspire
+description: "Learn how to connect to Meilisearch from C#, Go, Python, and TypeScript consuming apps in an Aspire solution in your Aspire AppHost."
next: false
---
diff --git a/src/frontend/src/content/docs/integrations/databases/meilisearch/meilisearch-get-started.mdx b/src/frontend/src/content/docs/integrations/databases/meilisearch/meilisearch-get-started.mdx
index 0075865a5..19eb2a64a 100644
--- a/src/frontend/src/content/docs/integrations/databases/meilisearch/meilisearch-get-started.mdx
+++ b/src/frontend/src/content/docs/integrations/databases/meilisearch/meilisearch-get-started.mdx
@@ -1,6 +1,6 @@
---
title: Get started with the Meilisearch integrations
-description: Understand why you use the Aspire Meilisearch integrations and how they fit together.
+description: Learn how the Aspire Meilisearch integrations run a Meilisearch search engine resource and wire the typed .NET client into your AppHost projects.
prev: false
---
diff --git a/src/frontend/src/content/docs/integrations/databases/meilisearch/meilisearch-host.mdx b/src/frontend/src/content/docs/integrations/databases/meilisearch/meilisearch-host.mdx
index 450fcd70d..b183592ad 100644
--- a/src/frontend/src/content/docs/integrations/databases/meilisearch/meilisearch-host.mdx
+++ b/src/frontend/src/content/docs/integrations/databases/meilisearch/meilisearch-host.mdx
@@ -1,5 +1,6 @@
---
title: Set up Meilisearch in the AppHost
+seoTitle: Host Meilisearch with the Aspire AppHost hosting integration
description: Learn how to use the Aspire Meilisearch Hosting integration to orchestrate and configure a Meilisearch resource in an Aspire solution.
---
diff --git a/src/frontend/src/content/docs/integrations/databases/milvus/milvus-connect.mdx b/src/frontend/src/content/docs/integrations/databases/milvus/milvus-connect.mdx
index 7c506af95..58781b107 100644
--- a/src/frontend/src/content/docs/integrations/databases/milvus/milvus-connect.mdx
+++ b/src/frontend/src/content/docs/integrations/databases/milvus/milvus-connect.mdx
@@ -1,5 +1,6 @@
---
title: Connect to Milvus
+seoTitle: "Connect to Milvus from Aspire apps (C#, Python, TypeScript)"
description: Learn how to connect to Milvus from C#, Go, Python, and TypeScript consuming apps in an Aspire solution.
---
diff --git a/src/frontend/src/content/docs/integrations/databases/milvus/milvus-get-started.mdx b/src/frontend/src/content/docs/integrations/databases/milvus/milvus-get-started.mdx
index af1bc24c1..6fe27285a 100644
--- a/src/frontend/src/content/docs/integrations/databases/milvus/milvus-get-started.mdx
+++ b/src/frontend/src/content/docs/integrations/databases/milvus/milvus-get-started.mdx
@@ -1,6 +1,7 @@
---
title: Get started with the Milvus integrations
-description: Understand why you use the Aspire Milvus integrations and how they fit together.
+seoTitle: Get started with the Aspire Milvus integration in .NET
+description: Learn how the Aspire Milvus integrations provision a Milvus vector database resource and wire your .NET client for similarity search.
---
import { Image } from 'astro:assets';
diff --git a/src/frontend/src/content/docs/integrations/databases/milvus/milvus-host.mdx b/src/frontend/src/content/docs/integrations/databases/milvus/milvus-host.mdx
index 95ce2ed43..fe65540fd 100644
--- a/src/frontend/src/content/docs/integrations/databases/milvus/milvus-host.mdx
+++ b/src/frontend/src/content/docs/integrations/databases/milvus/milvus-host.mdx
@@ -1,5 +1,6 @@
---
title: Set up Milvus in the AppHost
+seoTitle: "Set up Milvus in the Aspire AppHost: hosting integration"
description: Learn how to use the Aspire Milvus Hosting integration to orchestrate and configure Milvus vector databases in an Aspire solution.
---
diff --git a/src/frontend/src/content/docs/integrations/databases/mongodb/mongodb-connect.mdx b/src/frontend/src/content/docs/integrations/databases/mongodb/mongodb-connect.mdx
index d48147834..07d9350f2 100644
--- a/src/frontend/src/content/docs/integrations/databases/mongodb/mongodb-connect.mdx
+++ b/src/frontend/src/content/docs/integrations/databases/mongodb/mongodb-connect.mdx
@@ -1,5 +1,6 @@
---
title: Connect to MongoDB
+seoTitle: "Connect to MongoDB from Aspire apps (C#, Python, TypeScript)"
description: Learn how to connect to MongoDB from C#, Go, Python, and TypeScript consuming apps in an Aspire solution.
---
diff --git a/src/frontend/src/content/docs/integrations/databases/mongodb/mongodb-get-started.mdx b/src/frontend/src/content/docs/integrations/databases/mongodb/mongodb-get-started.mdx
index 03299979c..5e8d73c6d 100644
--- a/src/frontend/src/content/docs/integrations/databases/mongodb/mongodb-get-started.mdx
+++ b/src/frontend/src/content/docs/integrations/databases/mongodb/mongodb-get-started.mdx
@@ -1,6 +1,6 @@
---
title: Get started with the MongoDB integrations
-description: Understand why you use the Aspire MongoDB integrations and how they fit together.
+description: Learn how the Aspire MongoDB integrations provision a MongoDB container resource and configure the .NET client driver for your AppHost.
---
import { Image } from 'astro:assets';
diff --git a/src/frontend/src/content/docs/integrations/databases/mongodb/mongodb-host.mdx b/src/frontend/src/content/docs/integrations/databases/mongodb/mongodb-host.mdx
index 2eb404efa..aa0373b12 100644
--- a/src/frontend/src/content/docs/integrations/databases/mongodb/mongodb-host.mdx
+++ b/src/frontend/src/content/docs/integrations/databases/mongodb/mongodb-host.mdx
@@ -1,5 +1,6 @@
---
title: Set up MongoDB in the AppHost
+seoTitle: "Set up MongoDB in the Aspire AppHost: hosting integration"
description: Learn how to use the Aspire MongoDB Hosting integration to orchestrate and configure a MongoDB database in an Aspire solution.
---
diff --git a/src/frontend/src/content/docs/integrations/databases/mysql/mysql-connect.mdx b/src/frontend/src/content/docs/integrations/databases/mysql/mysql-connect.mdx
index b57d7c1cb..33bf2a94b 100644
--- a/src/frontend/src/content/docs/integrations/databases/mysql/mysql-connect.mdx
+++ b/src/frontend/src/content/docs/integrations/databases/mysql/mysql-connect.mdx
@@ -1,5 +1,6 @@
----
+---
title: Connect to MySQL
+seoTitle: "Connect to MySQL from Aspire apps (C#, Python, TypeScript)"
description: Learn how to connect to MySQL from C#, Go, Python, and TypeScript consuming apps in an Aspire solution.
---
diff --git a/src/frontend/src/content/docs/integrations/databases/mysql/mysql-get-started.mdx b/src/frontend/src/content/docs/integrations/databases/mysql/mysql-get-started.mdx
index 53cbc1dd1..20e384868 100644
--- a/src/frontend/src/content/docs/integrations/databases/mysql/mysql-get-started.mdx
+++ b/src/frontend/src/content/docs/integrations/databases/mysql/mysql-get-started.mdx
@@ -1,6 +1,7 @@
----
+---
title: Get started with the MySQL integrations
-description: Understand why you use the Aspire MySQL integrations and how they fit together.
+seoTitle: Get started with the Aspire MySQL integration in .NET
+description: "Use the Aspire MySQL hosting and client integrations to spin up MySQL containers, share connections from C# and TypeScript apps, and add health checks and tracing."
---
import { Image } from 'astro:assets';
diff --git a/src/frontend/src/content/docs/integrations/databases/mysql/mysql-host.mdx b/src/frontend/src/content/docs/integrations/databases/mysql/mysql-host.mdx
index e7bbc6b11..fd18b9eb5 100644
--- a/src/frontend/src/content/docs/integrations/databases/mysql/mysql-host.mdx
+++ b/src/frontend/src/content/docs/integrations/databases/mysql/mysql-host.mdx
@@ -1,5 +1,6 @@
----
+---
title: Set up MySQL in the AppHost
+seoTitle: "Set up MySQL in the Aspire AppHost: hosting integration"
description: Learn how to use the Aspire MySQL Hosting integration to orchestrate and configure a MySQL database in an Aspire solution.
---
diff --git a/src/frontend/src/content/docs/integrations/databases/postgres/postgres-connect.mdx b/src/frontend/src/content/docs/integrations/databases/postgres/postgres-connect.mdx
index f25c0d638..04b671bbe 100644
--- a/src/frontend/src/content/docs/integrations/databases/postgres/postgres-connect.mdx
+++ b/src/frontend/src/content/docs/integrations/databases/postgres/postgres-connect.mdx
@@ -1,6 +1,7 @@
---
title: Connect to PostgreSQL
-description: Learn how to connect to PostgreSQL from C#, Go, Python, and TypeScript consuming apps in an Aspire solution.
+seoTitle: Connect to PostgreSQL from your .NET app with Aspire
+description: "Learn how to connect to PostgreSQL from C#, Go, Python, and TypeScript consuming apps in an Aspire solution in your Aspire AppHost."
---
import { Image } from 'astro:assets';
diff --git a/src/frontend/src/content/docs/integrations/databases/postgres/postgres-host.mdx b/src/frontend/src/content/docs/integrations/databases/postgres/postgres-host.mdx
index f3c0596c6..34bfeb6d2 100644
--- a/src/frontend/src/content/docs/integrations/databases/postgres/postgres-host.mdx
+++ b/src/frontend/src/content/docs/integrations/databases/postgres/postgres-host.mdx
@@ -1,5 +1,6 @@
---
title: Set up PostgreSQL in the AppHost
+seoTitle: "Set up PostgreSQL in the Aspire AppHost: hosting integration"
description: Learn how to use the Aspire PostgreSQL Hosting integration to orchestrate and configure a PostgreSQL database in an Aspire solution.
---
diff --git a/src/frontend/src/content/docs/integrations/databases/qdrant/qdrant-connect.mdx b/src/frontend/src/content/docs/integrations/databases/qdrant/qdrant-connect.mdx
index 2c769bdf0..353f855f0 100644
--- a/src/frontend/src/content/docs/integrations/databases/qdrant/qdrant-connect.mdx
+++ b/src/frontend/src/content/docs/integrations/databases/qdrant/qdrant-connect.mdx
@@ -1,5 +1,6 @@
---
title: Connect to Qdrant
+seoTitle: "Connect to Qdrant from Aspire apps (C#, Python, TypeScript)"
description: Learn how to connect to Qdrant from C#, Go, Python, and TypeScript consuming apps in an Aspire solution.
---
diff --git a/src/frontend/src/content/docs/integrations/databases/qdrant/qdrant-get-started.mdx b/src/frontend/src/content/docs/integrations/databases/qdrant/qdrant-get-started.mdx
index 8cccb61c9..d7f0c990b 100644
--- a/src/frontend/src/content/docs/integrations/databases/qdrant/qdrant-get-started.mdx
+++ b/src/frontend/src/content/docs/integrations/databases/qdrant/qdrant-get-started.mdx
@@ -1,6 +1,7 @@
---
title: Get started with the Qdrant integrations
-description: Understand why you use the Aspire Qdrant integrations and how they fit together.
+seoTitle: Get started with the Aspire Qdrant integration in .NET
+description: Learn how the Aspire Qdrant integrations host a Qdrant vector database resource and connect your .NET client for semantic search workloads.
---
import { Image } from 'astro:assets';
diff --git a/src/frontend/src/content/docs/integrations/databases/qdrant/qdrant-host.mdx b/src/frontend/src/content/docs/integrations/databases/qdrant/qdrant-host.mdx
index bd13d15d4..144cb0f1e 100644
--- a/src/frontend/src/content/docs/integrations/databases/qdrant/qdrant-host.mdx
+++ b/src/frontend/src/content/docs/integrations/databases/qdrant/qdrant-host.mdx
@@ -1,5 +1,6 @@
---
title: Set up Qdrant in the AppHost
+seoTitle: "Set up Qdrant in the Aspire AppHost: hosting integration"
description: Learn how to use the Aspire Qdrant Hosting integration to orchestrate and configure a Qdrant vector database in an Aspire solution.
---
diff --git a/src/frontend/src/content/docs/integrations/databases/ravendb/ravendb-connect.mdx b/src/frontend/src/content/docs/integrations/databases/ravendb/ravendb-connect.mdx
index ec53bfe74..a76789495 100644
--- a/src/frontend/src/content/docs/integrations/databases/ravendb/ravendb-connect.mdx
+++ b/src/frontend/src/content/docs/integrations/databases/ravendb/ravendb-connect.mdx
@@ -1,5 +1,6 @@
---
title: Connect to RavenDB
+seoTitle: "Connect to RavenDB from Aspire apps (C# and Node.js)"
description: Learn how to connect to RavenDB from C#, Go, Python, and TypeScript consuming apps in an Aspire solution.
---
diff --git a/src/frontend/src/content/docs/integrations/databases/ravendb/ravendb-get-started.mdx b/src/frontend/src/content/docs/integrations/databases/ravendb/ravendb-get-started.mdx
index fd60d7616..000a839b1 100644
--- a/src/frontend/src/content/docs/integrations/databases/ravendb/ravendb-get-started.mdx
+++ b/src/frontend/src/content/docs/integrations/databases/ravendb/ravendb-get-started.mdx
@@ -1,6 +1,6 @@
---
title: Get started with the RavenDB integrations
-description: Understand why you use the Aspire RavenDB integrations and how they fit together.
+description: Learn how the Aspire RavenDB integrations host a RavenDB document database resource and wire the .NET document store client into your app.
---
import { Image } from 'astro:assets';
diff --git a/src/frontend/src/content/docs/integrations/databases/ravendb/ravendb-host.mdx b/src/frontend/src/content/docs/integrations/databases/ravendb/ravendb-host.mdx
index 9ead73e71..1226f3568 100644
--- a/src/frontend/src/content/docs/integrations/databases/ravendb/ravendb-host.mdx
+++ b/src/frontend/src/content/docs/integrations/databases/ravendb/ravendb-host.mdx
@@ -1,5 +1,6 @@
---
title: Set up RavenDB in the AppHost
+seoTitle: "Set up RavenDB in the Aspire AppHost: hosting integration"
description: Learn how to use the Aspire RavenDB Hosting integration to orchestrate and configure a RavenDB database in an Aspire solution.
---
diff --git a/src/frontend/src/content/docs/integrations/databases/sql-server/sql-server-connect.mdx b/src/frontend/src/content/docs/integrations/databases/sql-server/sql-server-connect.mdx
index 52f2e5983..62d876394 100644
--- a/src/frontend/src/content/docs/integrations/databases/sql-server/sql-server-connect.mdx
+++ b/src/frontend/src/content/docs/integrations/databases/sql-server/sql-server-connect.mdx
@@ -1,6 +1,7 @@
---
title: Connect to SQL Server
-description: Learn how to connect to SQL Server from C#, Go, Python, and TypeScript consuming apps in an Aspire solution.
+seoTitle: Connect to SQL Server from your .NET app with Aspire
+description: "Learn how to connect to SQL Server from C#, Go, Python, and TypeScript consuming apps in an Aspire solution in your Aspire AppHost."
---
import { Image } from 'astro:assets';
diff --git a/src/frontend/src/content/docs/integrations/databases/sql-server/sql-server-get-started.mdx b/src/frontend/src/content/docs/integrations/databases/sql-server/sql-server-get-started.mdx
index 5cc26c2f7..9eaa99673 100644
--- a/src/frontend/src/content/docs/integrations/databases/sql-server/sql-server-get-started.mdx
+++ b/src/frontend/src/content/docs/integrations/databases/sql-server/sql-server-get-started.mdx
@@ -1,6 +1,6 @@
---
title: Get started with the SQL Server integrations
-description: Understand why you use the Aspire SQL Server integrations and how they fit together.
+description: Learn how the Aspire SQL Server integrations provision a SQL Server container resource and configure the .NET client connection from your AppHost.
---
import { Image } from 'astro:assets';
diff --git a/src/frontend/src/content/docs/integrations/databases/sql-server/sql-server-host.mdx b/src/frontend/src/content/docs/integrations/databases/sql-server/sql-server-host.mdx
index 3cdfe6660..5ccf0be2e 100644
--- a/src/frontend/src/content/docs/integrations/databases/sql-server/sql-server-host.mdx
+++ b/src/frontend/src/content/docs/integrations/databases/sql-server/sql-server-host.mdx
@@ -1,5 +1,6 @@
---
title: Set up SQL Server in the AppHost
+seoTitle: "Set up SQL Server in the Aspire AppHost: hosting integration"
description: Learn how to use the Aspire SQL Server Hosting integration to orchestrate and configure a SQL Server database in an Aspire solution.
---
diff --git a/src/frontend/src/content/docs/integrations/databases/sqlite/sqlite-connect.mdx b/src/frontend/src/content/docs/integrations/databases/sqlite/sqlite-connect.mdx
index 687506ddc..2ff191911 100644
--- a/src/frontend/src/content/docs/integrations/databases/sqlite/sqlite-connect.mdx
+++ b/src/frontend/src/content/docs/integrations/databases/sqlite/sqlite-connect.mdx
@@ -1,5 +1,6 @@
---
title: Connect to SQLite
+seoTitle: "Connect to SQLite from Aspire apps (C#, Python, TypeScript)"
description: Learn how to connect to SQLite from C#, Go, Python, and TypeScript consuming apps in an Aspire solution.
---
diff --git a/src/frontend/src/content/docs/integrations/databases/sqlite/sqlite-get-started.mdx b/src/frontend/src/content/docs/integrations/databases/sqlite/sqlite-get-started.mdx
index 82b158b6d..dbcabf5f4 100644
--- a/src/frontend/src/content/docs/integrations/databases/sqlite/sqlite-get-started.mdx
+++ b/src/frontend/src/content/docs/integrations/databases/sqlite/sqlite-get-started.mdx
@@ -1,6 +1,7 @@
---
title: Get started with the SQLite integrations
-description: Understand why you use the Aspire SQLite integrations and how they fit together.
+seoTitle: Get started with the Aspire SQLite integration in .NET
+description: Learn how the Aspire SQLite integrations register a file-backed SQLite database resource and wire your .NET client with one AppHost call.
---
import { Image } from 'astro:assets';
diff --git a/src/frontend/src/content/docs/integrations/databases/sqlite/sqlite-host.mdx b/src/frontend/src/content/docs/integrations/databases/sqlite/sqlite-host.mdx
index 2a1c7c74f..f9a8e37fe 100644
--- a/src/frontend/src/content/docs/integrations/databases/sqlite/sqlite-host.mdx
+++ b/src/frontend/src/content/docs/integrations/databases/sqlite/sqlite-host.mdx
@@ -1,5 +1,6 @@
---
title: Set up SQLite in the AppHost
+seoTitle: "Set up SQLite in the Aspire AppHost: hosting integration"
description: Learn how to use the Aspire SQLite Hosting integration to orchestrate and configure a SQLite database resource in an Aspire solution.
---
diff --git a/src/frontend/src/content/docs/integrations/databases/surrealdb/surrealdb-connect.mdx b/src/frontend/src/content/docs/integrations/databases/surrealdb/surrealdb-connect.mdx
index e18650d4a..4abea8344 100644
--- a/src/frontend/src/content/docs/integrations/databases/surrealdb/surrealdb-connect.mdx
+++ b/src/frontend/src/content/docs/integrations/databases/surrealdb/surrealdb-connect.mdx
@@ -1,5 +1,6 @@
---
title: Connect to SurrealDB
+seoTitle: "Connect to SurrealDB from Aspire apps (C# and Node.js)"
description: Learn how to connect to SurrealDB from C#, Go, Python, and TypeScript consuming apps in an Aspire solution.
---
diff --git a/src/frontend/src/content/docs/integrations/databases/surrealdb/surrealdb-get-started.mdx b/src/frontend/src/content/docs/integrations/databases/surrealdb/surrealdb-get-started.mdx
index 04878ec90..9e296cf1b 100644
--- a/src/frontend/src/content/docs/integrations/databases/surrealdb/surrealdb-get-started.mdx
+++ b/src/frontend/src/content/docs/integrations/databases/surrealdb/surrealdb-get-started.mdx
@@ -1,6 +1,6 @@
---
title: Get started with the SurrealDB integrations
-description: Understand why you use the Aspire SurrealDB integrations and how they fit together.
+description: Learn how the Aspire SurrealDB integrations provision a SurrealDB multi-model database resource and wire the .NET client into your AppHost.
---
import { Image } from 'astro:assets';
diff --git a/src/frontend/src/content/docs/integrations/databases/surrealdb/surrealdb-host.mdx b/src/frontend/src/content/docs/integrations/databases/surrealdb/surrealdb-host.mdx
index b273eb930..8ff99aa49 100644
--- a/src/frontend/src/content/docs/integrations/databases/surrealdb/surrealdb-host.mdx
+++ b/src/frontend/src/content/docs/integrations/databases/surrealdb/surrealdb-host.mdx
@@ -1,5 +1,6 @@
---
title: Set up SurrealDB in the AppHost
+seoTitle: "Set up SurrealDB in the Aspire AppHost: hosting integration"
description: Learn how to use the Aspire SurrealDB Hosting integration to orchestrate and configure a SurrealDB resource in an Aspire solution.
---
diff --git a/src/frontend/src/content/docs/integrations/devtools/browser-logs.mdx b/src/frontend/src/content/docs/integrations/devtools/browser-logs.mdx
index 5ace9c01c..c5062a2bc 100644
--- a/src/frontend/src/content/docs/integrations/devtools/browser-logs.mdx
+++ b/src/frontend/src/content/docs/integrations/devtools/browser-logs.mdx
@@ -1,5 +1,6 @@
---
title: Browser logs
+seoTitle: Aspire browser logs and developer tools integration
description: Learn how to capture and configure browser console logs in Aspire using the BrowserLogs resource.
---
diff --git a/src/frontend/src/content/docs/integrations/devtools/dab.mdx b/src/frontend/src/content/docs/integrations/devtools/dab.mdx
index 65f8ade94..c95976ab3 100644
--- a/src/frontend/src/content/docs/integrations/devtools/dab.mdx
+++ b/src/frontend/src/content/docs/integrations/devtools/dab.mdx
@@ -1,5 +1,6 @@
---
title: Data API builder integration
+seoTitle: Data API builder integration for Aspire AppHost projects
description: Learn how to use the Aspire Data API Builder hosting integration to orchestrate and configure a Data API Builder resource in an Aspire solution.
---
diff --git a/src/frontend/src/content/docs/integrations/devtools/dev-tunnels.mdx b/src/frontend/src/content/docs/integrations/devtools/dev-tunnels.mdx
index ab955776b..d765a8f49 100644
--- a/src/frontend/src/content/docs/integrations/devtools/dev-tunnels.mdx
+++ b/src/frontend/src/content/docs/integrations/devtools/dev-tunnels.mdx
@@ -1,6 +1,7 @@
---
title: Dev Tunnels integration
-description: Learn how to use the Dev Tunnels integration for exposing local web services to the internet.
+seoTitle: Dev Tunnels integration for Aspire AppHost projects
+description: Learn how to use the Dev Tunnels integration for exposing local web services to the internet in your Aspire AppHost.
---
import { Image } from 'astro:assets';
diff --git a/src/frontend/src/content/docs/integrations/devtools/flagd/flagd-connect.mdx b/src/frontend/src/content/docs/integrations/devtools/flagd/flagd-connect.mdx
index 0c103ae56..7acba12b0 100644
--- a/src/frontend/src/content/docs/integrations/devtools/flagd/flagd-connect.mdx
+++ b/src/frontend/src/content/docs/integrations/devtools/flagd/flagd-connect.mdx
@@ -1,5 +1,6 @@
---
title: Connect to flagd
+seoTitle: "Connect to flagd from Aspire apps (C# and TypeScript)"
description: Learn how to connect to flagd from C#, Go, Python, and TypeScript consuming apps in an Aspire solution.
next: false
---
diff --git a/src/frontend/src/content/docs/integrations/devtools/flagd/flagd-get-started.mdx b/src/frontend/src/content/docs/integrations/devtools/flagd/flagd-get-started.mdx
index 794043233..25a59927d 100644
--- a/src/frontend/src/content/docs/integrations/devtools/flagd/flagd-get-started.mdx
+++ b/src/frontend/src/content/docs/integrations/devtools/flagd/flagd-get-started.mdx
@@ -1,6 +1,7 @@
---
title: Get started with the flagd integrations
-description: Understand why you use the Aspire flagd integrations and how they fit together.
+seoTitle: Get started with the Aspire flagd integration in .NET
+description: "Use the Aspire flagd hosting and client integrations to run flagd feature-flag servers locally, share configuration, and consume flags from C# and TypeScript apps."
prev: false
---
diff --git a/src/frontend/src/content/docs/integrations/devtools/flagd/flagd-host.mdx b/src/frontend/src/content/docs/integrations/devtools/flagd/flagd-host.mdx
index 7f0a8aa0f..96df7ac27 100644
--- a/src/frontend/src/content/docs/integrations/devtools/flagd/flagd-host.mdx
+++ b/src/frontend/src/content/docs/integrations/devtools/flagd/flagd-host.mdx
@@ -1,5 +1,6 @@
---
title: Set up flagd in the AppHost
+seoTitle: "Set up flagd in the Aspire AppHost: hosting integration"
description: Learn how to use the Aspire flagd hosting integration to orchestrate and configure a flagd resource in an Aspire solution.
---
diff --git a/src/frontend/src/content/docs/integrations/devtools/goff/goff-connect.mdx b/src/frontend/src/content/docs/integrations/devtools/goff/goff-connect.mdx
index c7cb87325..c4bfaed89 100644
--- a/src/frontend/src/content/docs/integrations/devtools/goff/goff-connect.mdx
+++ b/src/frontend/src/content/docs/integrations/devtools/goff/goff-connect.mdx
@@ -1,5 +1,6 @@
---
title: Connect to GO Feature Flag
+seoTitle: Connect to GO Feature Flag from your .NET app with Aspire
description: Learn how to connect to a GO Feature Flag relay proxy from C#, Go, Python, and TypeScript consuming apps in an Aspire solution.
---
diff --git a/src/frontend/src/content/docs/integrations/devtools/goff/goff-get-started.mdx b/src/frontend/src/content/docs/integrations/devtools/goff/goff-get-started.mdx
index bd05ea9b4..9f0a45b65 100644
--- a/src/frontend/src/content/docs/integrations/devtools/goff/goff-get-started.mdx
+++ b/src/frontend/src/content/docs/integrations/devtools/goff/goff-get-started.mdx
@@ -1,6 +1,6 @@
---
title: Get started with the GO Feature Flag integrations
-description: Understand why you use the Aspire GO Feature Flag integrations and how they fit together.
+description: Learn how the Aspire GO Feature Flag integrations host a GO Feature Flag relay resource and wire the OpenFeature .NET provider into your AppHost.
---
import { Image } from 'astro:assets';
diff --git a/src/frontend/src/content/docs/integrations/devtools/mailpit/mailpit-connect.mdx b/src/frontend/src/content/docs/integrations/devtools/mailpit/mailpit-connect.mdx
index 112d743d0..1a59ac9bb 100644
--- a/src/frontend/src/content/docs/integrations/devtools/mailpit/mailpit-connect.mdx
+++ b/src/frontend/src/content/docs/integrations/devtools/mailpit/mailpit-connect.mdx
@@ -1,5 +1,6 @@
---
title: Connect to Mailpit
+seoTitle: Connect to Mailpit from Aspire apps for local email testing
description: Learn how to connect to Mailpit from C#, Go, Python, and TypeScript consuming apps in an Aspire solution.
---
diff --git a/src/frontend/src/content/docs/integrations/devtools/mailpit/mailpit-get-started.mdx b/src/frontend/src/content/docs/integrations/devtools/mailpit/mailpit-get-started.mdx
index 759894e2b..291978e08 100644
--- a/src/frontend/src/content/docs/integrations/devtools/mailpit/mailpit-get-started.mdx
+++ b/src/frontend/src/content/docs/integrations/devtools/mailpit/mailpit-get-started.mdx
@@ -1,6 +1,6 @@
---
title: Get started with the Mailpit integrations
-description: Understand why you use the Aspire Mailpit integrations and how they fit together.
+description: Learn how the Aspire Mailpit integrations run a Mailpit SMTP test server resource locally so your AppHost can capture and inspect outgoing email.
---
import { Badge, LinkButton, Steps } from '@astrojs/starlight/components';
diff --git a/src/frontend/src/content/docs/integrations/devtools/mailpit/mailpit-host.mdx b/src/frontend/src/content/docs/integrations/devtools/mailpit/mailpit-host.mdx
index ed65f484a..30e885c32 100644
--- a/src/frontend/src/content/docs/integrations/devtools/mailpit/mailpit-host.mdx
+++ b/src/frontend/src/content/docs/integrations/devtools/mailpit/mailpit-host.mdx
@@ -1,5 +1,6 @@
---
title: Set up Mailpit in the AppHost
+seoTitle: "Set up Mailpit in the Aspire AppHost: hosting integration"
description: Learn how to use the Aspire Mailpit Hosting integration to orchestrate and configure a Mailpit resource in an Aspire solution.
---
diff --git a/src/frontend/src/content/docs/integrations/devtools/sql-projects.mdx b/src/frontend/src/content/docs/integrations/devtools/sql-projects.mdx
index b2d921838..ddec08a3e 100644
--- a/src/frontend/src/content/docs/integrations/devtools/sql-projects.mdx
+++ b/src/frontend/src/content/docs/integrations/devtools/sql-projects.mdx
@@ -1,6 +1,6 @@
---
title: SQL Database Projects integration
-description: Learn about the Aspire hosting integration for SQL Database Projects.
+description: Learn about the Aspire hosting integration for SQL Database Projects — model your schema, deploy DACPACs to SQL Server containers, and wire up CI/CD database pipelines.
next: false
---
diff --git a/src/frontend/src/content/docs/integrations/dotnet/csharp-file-based-apps.mdx b/src/frontend/src/content/docs/integrations/dotnet/csharp-file-based-apps.mdx
index d9f8ce330..9dcd195c2 100644
--- a/src/frontend/src/content/docs/integrations/dotnet/csharp-file-based-apps.mdx
+++ b/src/frontend/src/content/docs/integrations/dotnet/csharp-file-based-apps.mdx
@@ -1,5 +1,6 @@
---
title: C# file-based apps
+seoTitle: "Aspire C# file-based apps in the AppHost"
description: Learn how to use the Aspire C# file-based apps hosting integration to run single .cs files without a project file alongside your other AppHost resources.
---
diff --git a/src/frontend/src/content/docs/integrations/dotnet/dotnet-tool-resources.mdx b/src/frontend/src/content/docs/integrations/dotnet/dotnet-tool-resources.mdx
index 8f8454bcb..3f75c94c1 100644
--- a/src/frontend/src/content/docs/integrations/dotnet/dotnet-tool-resources.mdx
+++ b/src/frontend/src/content/docs/integrations/dotnet/dotnet-tool-resources.mdx
@@ -1,5 +1,6 @@
---
title: .NET tool resources
+seoTitle: Add .NET tool resources to your Aspire AppHost
description: Learn how to use the AddDotnetTool AppHost API to run .NET CLI tools as resources in your Aspire solution.
---
diff --git a/src/frontend/src/content/docs/integrations/dotnet/launch-profiles.mdx b/src/frontend/src/content/docs/integrations/dotnet/launch-profiles.mdx
index b5e469b7e..a00f201f3 100644
--- a/src/frontend/src/content/docs/integrations/dotnet/launch-profiles.mdx
+++ b/src/frontend/src/content/docs/integrations/dotnet/launch-profiles.mdx
@@ -1,5 +1,6 @@
---
title: C# launch profiles
+seoTitle: "C# launch profiles in the Aspire AppHost"
description: Learn how Aspire integrates with .NET launch profiles for C# AppHosts and service projects.
---
diff --git a/src/frontend/src/content/docs/integrations/dotnet/maui.mdx b/src/frontend/src/content/docs/integrations/dotnet/maui.mdx
index 1d437e1a9..40bfe1b23 100644
--- a/src/frontend/src/content/docs/integrations/dotnet/maui.mdx
+++ b/src/frontend/src/content/docs/integrations/dotnet/maui.mdx
@@ -1,5 +1,6 @@
---
title: .NET MAUI integration
+seoTitle: ".NET MAUI integration for Aspire: hosting and client wiring"
description: Learn how to use the Aspire .NET MAUI integration to orchestrate .NET MAUI mobile and desktop applications alongside backend services in your AppHost.
---
diff --git a/src/frontend/src/content/docs/integrations/dotnet/project-resources.mdx b/src/frontend/src/content/docs/integrations/dotnet/project-resources.mdx
index 48ff7d2ea..ac0c0a4fe 100644
--- a/src/frontend/src/content/docs/integrations/dotnet/project-resources.mdx
+++ b/src/frontend/src/content/docs/integrations/dotnet/project-resources.mdx
@@ -1,5 +1,6 @@
---
title: Project resources
+seoTitle: "Add C# project resources to your Aspire AppHost"
description: Learn how to add .NET projects as resources in your Aspire AppHost — with examples for both AppHost.cs (C#) and apphost.ts (TypeScript).
---
diff --git a/src/frontend/src/content/docs/integrations/frameworks/bun-apps.mdx b/src/frontend/src/content/docs/integrations/frameworks/bun-apps.mdx
index c579f906f..3a56b9c67 100644
--- a/src/frontend/src/content/docs/integrations/frameworks/bun-apps.mdx
+++ b/src/frontend/src/content/docs/integrations/frameworks/bun-apps.mdx
@@ -1,5 +1,6 @@
---
title: Bun integration
+seoTitle: Bun integration for Aspire AppHost (Community Toolkit)
description: Learn how to use the Aspire Community Toolkit Bun hosting integration to orchestrate Bun applications alongside other resources in the Aspire app host.
---
diff --git a/src/frontend/src/content/docs/integrations/frameworks/dapr.mdx b/src/frontend/src/content/docs/integrations/frameworks/dapr.mdx
index 54baf053b..ea3c9dbc1 100644
--- a/src/frontend/src/content/docs/integrations/frameworks/dapr.mdx
+++ b/src/frontend/src/content/docs/integrations/frameworks/dapr.mdx
@@ -1,5 +1,6 @@
---
title: Dapr framework integration
+seoTitle: Dapr framework integration for Aspire AppHost projects
description: Learn how to use the Aspire Community Toolkit Dapr hosting integration to add Dapr sidecars, state stores, pub/sub components, and more to your Aspire AppHost project.
---
diff --git a/src/frontend/src/content/docs/integrations/frameworks/deno-apps.mdx b/src/frontend/src/content/docs/integrations/frameworks/deno-apps.mdx
index d6ca2994c..34d900a30 100644
--- a/src/frontend/src/content/docs/integrations/frameworks/deno-apps.mdx
+++ b/src/frontend/src/content/docs/integrations/frameworks/deno-apps.mdx
@@ -1,5 +1,6 @@
---
title: Deno integration
+seoTitle: Deno integration for Aspire AppHost (Community Toolkit)
description: Learn how to use the Aspire Deno Hosting integration to run Deno applications alongside your other Aspire resources in the AppHost.
---
diff --git a/src/frontend/src/content/docs/integrations/frameworks/go-apps.mdx b/src/frontend/src/content/docs/integrations/frameworks/go-apps.mdx
deleted file mode 100644
index 9e7fe67b6..000000000
--- a/src/frontend/src/content/docs/integrations/frameworks/go-apps.mdx
+++ /dev/null
@@ -1,167 +0,0 @@
----
-title: Go integration
-description: Learn how to use the Aspire Community Toolkit Go hosting integration to orchestrate Go applications alongside other resources in the Aspire app host.
----
-
-import { Badge } from '@astrojs/starlight/components';
-
-import { Image } from 'astro:assets';
-import InstallPackage from '@components/InstallPackage.astro';
-import goIcon from '@assets/icons/go.svg';
-
-
-
-
-
-The Aspire Go hosting integration enables you to run Go applications alongside your other Aspire resources in the app host. Go apps participate in the same service discovery, health checks, OpenTelemetry export, and Aspire dashboard support as the rest of your solution.
-
-:::note
-TypeScript AppHost support for this integration is not yet available. The examples on this page use the C# AppHost only.
-:::
-
-## Hosting integration
-
-To access the Go hosting APIs in your [`AppHost`](/get-started/app-host/) project, install the [📦 CommunityToolkit.Aspire.Hosting.Golang](https://www.nuget.org/packages/CommunityToolkit.Aspire.Hosting.Golang) NuGet package:
-
-
-
-### Add Go app
-
-Add a Go application to your app host using the `AddGolangApp` extension method:
-
-```csharp title="C# — AppHost.cs"
-var builder = DistributedApplication.CreateBuilder(args);
-
-var goApp = builder.AddGolangApp("go-api", "../go-api")
- .WithHttpEndpoint(env: "PORT")
- .WithHttpHealthCheck("/health");
-
-builder.AddProject("apiservice")
- .WithReference(goApp);
-
-builder.Build().Run();
-```
-
-`AddGolangApp` requires:
-
-- **name**: The name of the resource in the Aspire dashboard.
-- **workingDirectory**: The path to the directory containing your Go application, relative to the AppHost project. The app host runs `go run ` in this directory.
-
-By default, the executable target is `.` (the Go module root), which is equivalent to `go run .`.
-
-### Specify the executable target
-
-Pass an explicit `executable` argument to run a package at a specific path inside the working directory:
-
-```csharp title="C# — AppHost.cs"
-var builder = DistributedApplication.CreateBuilder(args);
-
-var goApp = builder.AddGolangApp(
- name: "go-api",
- workingDirectory: "../go-api",
- executable: "./cmd/server")
- .WithHttpEndpoint(env: "PORT");
-
-builder.Build().Run();
-```
-
-### Configure HTTP endpoints
-
-Go applications typically read the port from an environment variable. Use `WithHttpEndpoint` to declare the HTTP endpoint and bind it to a named environment variable:
-
-```csharp title="C# — AppHost.cs"
-var builder = DistributedApplication.CreateBuilder(args);
-
-var goApp = builder.AddGolangApp("go-api", "../go-api")
- .WithHttpEndpoint(port: 8080, env: "PORT");
-
-builder.Build().Run();
-```
-
-Your Go application reads the `PORT` variable at startup:
-
-```go title="Go — main.go"
-package main
-
-import (
- "fmt"
- "net/http"
- "os"
-)
-
-func main() {
- port := os.Getenv("PORT")
- if port == "" {
- port = "8080"
- }
-
- http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
- fmt.Fprintf(w, "Hello from Go!")
- })
-
- fmt.Printf("Server listening on port %s\n", port)
- http.ListenAndServe(":"+port, nil)
-}
-```
-
-### Manage module dependencies
-
-Call `WithGoModTidy` to run `go mod tidy` before the Go app starts. This ensures the module's dependency graph is consistent and removes unused entries from `go.mod` and `go.sum`:
-
-```csharp title="C# — AppHost.cs"
-var builder = DistributedApplication.CreateBuilder(args);
-
-var goApp = builder.AddGolangApp("go-api", "../go-api")
- .WithGoModTidy()
- .WithHttpEndpoint(env: "PORT");
-
-builder.Build().Run();
-```
-
-Call `WithGoModDownload` to run `go mod download` instead. This downloads all module dependencies to the local module cache without modifying `go.mod` or `go.sum`:
-
-```csharp title="C# — AppHost.cs"
-var builder = DistributedApplication.CreateBuilder(args);
-
-var goApp = builder.AddGolangApp("go-api", "../go-api")
- .WithGoModDownload()
- .WithHttpEndpoint(env: "PORT");
-
-builder.Build().Run();
-```
-
-Both methods run only in run mode and have no effect during publish.
-
-### Use build tags
-
-Pass `buildTags` to control conditional compilation in the Go source:
-
-```csharp title="C# — AppHost.cs"
-var builder = DistributedApplication.CreateBuilder(args);
-
-var goApp = builder.AddGolangApp(
- name: "go-api",
- workingDirectory: "../go-api",
- executable: ".",
- buildTags: ["integration"])
- .WithHttpEndpoint(env: "PORT");
-
-builder.Build().Run();
-```
-
-The build tags are passed to `go run` as `-tags integration` and to the generated Dockerfile's build stage as `go build -tags integration`.
-
-## See also
-
-- [📦 CommunityToolkit.Aspire.Hosting.Golang](https://www.nuget.org/packages/CommunityToolkit.Aspire.Hosting.Golang)
-- [Go documentation](https://go.dev/doc/)
-- [Aspire Community Toolkit](https://github.com/CommunityToolkit/Aspire)
-- [Aspire integrations overview](/integrations/overview/)
-- [Aspire GitHub repo](https://github.com/microsoft/aspire)
diff --git a/src/frontend/src/content/docs/integrations/frameworks/go/go-get-started.mdx b/src/frontend/src/content/docs/integrations/frameworks/go/go-get-started.mdx
new file mode 100644
index 000000000..fba14adb3
--- /dev/null
+++ b/src/frontend/src/content/docs/integrations/frameworks/go/go-get-started.mdx
@@ -0,0 +1,91 @@
+---
+title: Get started with the Go integration
+description: Understand how the Aspire Go hosting integration runs Go apps from your AppHost and how to choose the right setup path.
+---
+
+import { LinkButton, Steps } from '@astrojs/starlight/components';
+import ThemeImage from '@components/ThemeImage.astro';
+import goIcon from '@assets/icons/go-icon.png';
+import goLightIcon from '@assets/icons/go-light-icon.png';
+
+
+
+The Aspire Go hosting integration lets you run Go applications alongside your other Aspire resources from the AppHost. Aspire runs Go apps with the local Go toolchain during development, wires them into the Aspire app model, supports service discovery and endpoint configuration, and can emit Dockerfile-based container build artifacts for deployment targets that need them.
+
+:::caution[Community Toolkit package deprecated]
+As of Aspire 13.4, Go hosting support is available in the official `Aspire.Hosting.Go` package. The previous `CommunityToolkit.Aspire.Hosting.Golang` package is deprecated because Go support has graduated into core Aspire. Use `Aspire.Hosting.Go` and `AddGoApp` / `addGoApp` for new Aspire 13.4+ applications.
+:::
+
+## Why use Go with Aspire
+
+Adding Go apps through Aspire gives you:
+
+- **One app model for every service.** Model Go applications, projects, containers, and backing services together in the AppHost.
+- **Local development with the Go toolchain.** Aspire runs Go apps with commands such as `go run .` or `go run ./cmd/server` instead of requiring a container for every edit-run loop.
+- **Endpoint and environment wiring.** Configure ports, environment variables, service discovery, and resource dependencies from the AppHost.
+- **Dashboard visibility.** Go app resources appear in the Aspire dashboard with logs, status, endpoints, and lifecycle controls.
+- **Publish-time container artifacts.** Deployment targets that need container build artifacts can use an existing Dockerfile or let Aspire generate one from the Go app resource.
+
+## How the pieces fit together
+
+The Go integration is a **hosting integration**. You install it in the AppHost, add one or more Go app resources, and configure how Aspire runs, debugs, and publishes each app.
+
+```mermaid
+architecture-beta
+
+ group apphost(server)[AppHost]
+ group goapp(server)[Go app]
+
+ service hosting(server)[Go hosting integration] in apphost
+ service resource(logos:go)[Go app resource] in apphost
+ service toolchain(logos:go)[Go toolchain] in goapp
+ service app(logos:go)[Go process] in goapp
+
+ hosting:R --> L:resource
+ resource:R --> L:toolchain
+ toolchain:R --> L:app
+```
+
+
+
+1. ### Set up Go apps in the AppHost
+
+ Add the `Aspire.Hosting.Go` hosting integration to your AppHost, then use `AddGoApp` / `addGoApp` to model a Go app resource. The host reference covers package installation, common Go layouts, app arguments, build options, Go module helper commands, Delve debugging, private modules, and publish behavior.
+
+
+ Set up Go apps in the AppHost
+
+
+2. ### Optionally try the Go AppHost templates
+
+ The `Aspire.Hosting.Go` integration works from C# and TypeScript AppHosts. Aspire also includes experimental Go AppHost and Go starter template support in the Aspire CLI. These templates use experimental Go AppHost APIs instead of the `Aspire.Hosting.Go` package.
+
+
+ Try the experimental Go templates
+
+
+
+
+## See also
+
+- [Go documentation](https://go.dev/doc/)
+- [Go AppHost setup reference](/integrations/frameworks/go/go-host/)
+- [Aspire integrations overview](/integrations/overview/)
diff --git a/src/frontend/src/content/docs/integrations/frameworks/go/go-host.mdx b/src/frontend/src/content/docs/integrations/frameworks/go/go-host.mdx
new file mode 100644
index 000000000..637156aa1
--- /dev/null
+++ b/src/frontend/src/content/docs/integrations/frameworks/go/go-host.mdx
@@ -0,0 +1,469 @@
+---
+title: Set up Go apps in the AppHost
+seoTitle: "Set up Go apps in the Aspire AppHost: hosting integration"
+description: Learn how to use the Aspire Go hosting integration to orchestrate and configure Go applications in an Aspire solution.
+---
+
+import { TabItem, Tabs } from '@astrojs/starlight/components';
+import LearnMore from '@components/LearnMore.astro';
+import ThemeImage from '@components/ThemeImage.astro';
+import goIcon from '@assets/icons/go-icon.png';
+import goLightIcon from '@assets/icons/go-light-icon.png';
+
+
+
+This article is the reference for the Aspire Go hosting integration. It enumerates the AppHost APIs — with examples for both `AppHost.cs` and `apphost.ts` — that you use to orchestrate Go applications in your [`AppHost`](/get-started/app-host/) project.
+
+If you're new to the Go integration, start with the [Get started with the Go integration](/integrations/frameworks/go/go-get-started/) guide.
+
+:::caution[Community Toolkit package deprecated]
+As of Aspire 13.4, Go hosting support is available in the official `Aspire.Hosting.Go` package. The previous `CommunityToolkit.Aspire.Hosting.Golang` package is deprecated because Go support has graduated into core Aspire. Use `Aspire.Hosting.Go` and `AddGoApp` / `addGoApp` for new Aspire 13.4+ applications.
+:::
+
+:::note[Prerequisites]
+Install the [Go toolchain](https://go.dev/dl/) and make sure the `go` command is available on your `PATH`. Install [Delve](https://github.com/go-delve/delve) and make sure the `dlv` command is available on your `PATH` when you use headless Delve debugging.
+:::
+
+## Installation
+
+To start building an Aspire app that uses Go, install the [📦 Aspire.Hosting.Go](https://www.nuget.org/packages/Aspire.Hosting.Go) NuGet package:
+
+
+
+
+```bash title="Terminal"
+aspire add go
+```
+
+
+ Learn more about [`aspire add`](/reference/cli/commands/aspire-add/) in the
+ command reference.
+
+
+Or, choose a manual installation approach:
+
+```csharp title="C# — AppHost.cs"
+#:package Aspire.Hosting.Go@*
+```
+
+```xml title="XML — AppHost.csproj"
+
+```
+
+
+
+
+```bash title="Terminal"
+aspire add go
+```
+
+
+ Learn more about [`aspire add`](/reference/cli/commands/aspire-add/) in the
+ command reference.
+
+
+This updates your `aspire.config.json` with the Go hosting integration package:
+
+```json title="aspire.config.json" ins={3}
+{
+ "packages": {
+ "Aspire.Hosting.Go": "13.4.0"
+ }
+}
+```
+
+
+
+
+## Add Go app
+
+Use `AddGoApp` / `addGoApp` to add a Go application to your AppHost. By default, Aspire runs `go run .` from the application directory.
+
+
+
+
+```csharp title="C# — AppHost.cs"
+var builder = DistributedApplication.CreateBuilder(args);
+
+var api = builder.AddGoApp("api", "./api")
+ .WithHttpEndpoint(port: 8080, env: "PORT")
+ .WithExternalHttpEndpoints();
+
+builder.Build().Run();
+```
+
+
+
+
+```typescript title="TypeScript — apphost.ts"
+import { createBuilder } from './.modules/aspire.js';
+
+const builder = await createBuilder();
+
+const api = await builder.addGoApp('api', './api');
+await api.withHttpEndpoint({ port: 8080, env: 'PORT' });
+await api.withExternalHttpEndpoints();
+
+await builder.build().run();
+```
+
+
+
+
+The method accepts the following common parameters:
+
+- **name**: The name of the resource in the Aspire dashboard.
+- **appDirectory**: The path to the Go module root. This directory usually contains `go.mod` and is also the Docker build context for deployment targets that emit container build artifacts.
+- **packagePath**: The Go package to run or build relative to `appDirectory`. Defaults to `"."`.
+
+Go applications commonly read the `PORT` environment variable set by `WithHttpEndpoint` / `withHttpEndpoint`:
+
+```go title="main.go"
+package main
+
+import (
+ "fmt"
+ "log"
+ "net/http"
+ "os"
+)
+
+func main() {
+ port := os.Getenv("PORT")
+ if port == "" {
+ port = "8080"
+ }
+
+ http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
+ fmt.Fprintln(w, "Hello from Go!")
+ })
+
+ log.Printf("Listening on :%s", port)
+ log.Fatal(http.ListenAndServe(":"+port, nil))
+}
+```
+
+## Configure app directory and package path
+
+Use `appDirectory` for the Go module root, and use `packagePath` when the `main` package is under a subdirectory such as `cmd/server`.
+
+For a common layout like this:
+
+```text title="Go app layout"
+api/
+|-- go.mod
+|-- internal/
+`-- cmd/
+ `-- server/
+ `-- main.go
+```
+
+Configure the AppHost to run `go run ./cmd/server` from `./api`:
+
+
+
+
+```csharp title="C# — AppHost.cs"
+var builder = DistributedApplication.CreateBuilder(args);
+
+var api = builder.AddGoApp(
+ name: "api",
+ appDirectory: "./api",
+ packagePath: "./cmd/server")
+ .WithHttpEndpoint(env: "PORT");
+
+builder.Build().Run();
+```
+
+
+
+
+```typescript title="TypeScript — apphost.ts"
+import { createBuilder } from './.modules/aspire.js';
+
+const builder = await createBuilder();
+
+const api = await builder.addGoApp('api', './api', {
+ packagePath: './cmd/server',
+});
+await api.withHttpEndpoint({ env: 'PORT' });
+
+await builder.build().run();
+```
+
+
+
+
+The same `packagePath` is used for local run mode, headless Delve debugging, and publish-time `go build`.
+
+## Configure build options
+
+Go build-time options are parameters on `AddGoApp` / `addGoApp`. Aspire passes them to `go run` during local development and to `go build` when it generates a Dockerfile for publish.
+
+
+
+
+```csharp title="C# — AppHost.cs"
+var builder = DistributedApplication.CreateBuilder(args);
+
+var api = builder.AddGoApp(
+ name: "api",
+ appDirectory: "./api",
+ packagePath: "./cmd/server",
+ buildTags: ["netgo", "integration"],
+ ldFlags: "-X main.version=1.2.3 -s -w",
+ gcFlags: "all=-N -l",
+ raceDetector: true);
+
+builder.Build().Run();
+```
+
+
+
+
+```typescript title="TypeScript — apphost.ts"
+import { createBuilder } from './.modules/aspire.js';
+
+const builder = await createBuilder();
+
+const api = await builder.addGoApp('api', './api', {
+ packagePath: './cmd/server',
+ buildTags: ['netgo', 'integration'],
+ ldFlags: '-X main.version=1.2.3 -s -w',
+ gcFlags: 'all=-N -l',
+ raceDetector: true,
+});
+
+await builder.build().run();
+```
+
+
+
+
+The options map to Go command-line flags:
+
+- `buildTags`: Adds `-tags=,`.
+- `ldFlags`: Adds `-ldflags=`.
+- `gcFlags`: Adds `-gcflags=`.
+- `raceDetector`: Adds `-race` in local run mode. The generated Dockerfile excludes `-race` because race detection requires CGO and publish builds create a static Linux binary.
+
+## Pass app arguments
+
+Use `WithAppArgs` / `withAppArgs` to pass arguments to the Go program after the package path.
+
+
+
+
+```csharp title="C# — AppHost.cs"
+var builder = DistributedApplication.CreateBuilder(args);
+
+var api = builder.AddGoApp("api", "./api")
+ .WithAppArgs("--config", "dev.yaml")
+ .WithHttpEndpoint(env: "PORT");
+
+builder.Build().Run();
+```
+
+
+
+
+```typescript title="TypeScript — apphost.ts"
+import { createBuilder } from './.modules/aspire.js';
+
+const builder = await createBuilder();
+
+const api = await builder.addGoApp('api', './api');
+await api.withAppArgs(['--config', 'dev.yaml']);
+await api.withHttpEndpoint({ env: 'PORT' });
+
+await builder.build().run();
+```
+
+
+
+
+In normal run mode, this produces a command like `go run . --config dev.yaml`. In headless Delve mode, Aspire passes the app arguments after Delve's `--` separator.
+
+## Run Go module helper commands
+
+The Go integration can run common module and static analysis commands before the app starts. These helpers create setup resources in run mode and make the Go app wait for them to complete.
+
+
+
+
+```csharp title="C# — AppHost.cs"
+var builder = DistributedApplication.CreateBuilder(args);
+
+var api = builder.AddGoApp("api", "./api")
+ .WithModTidy()
+ .WithModVendor()
+ .WithModDownload()
+ .WithVetTool()
+ .WithHttpEndpoint(env: "PORT");
+
+builder.Build().Run();
+```
+
+
+
+
+```typescript title="TypeScript — apphost.ts"
+import { createBuilder } from './.modules/aspire.js';
+
+const builder = await createBuilder();
+
+const api = await builder.addGoApp('api', './api');
+await api.withModTidy();
+await api.withModVendor();
+await api.withModDownload();
+await api.withVetTool();
+await api.withHttpEndpoint({ env: 'PORT' });
+
+await builder.build().run();
+```
+
+
+
+
+The helper methods run these commands:
+
+- `WithModTidy` / `withModTidy`: Runs `go mod tidy -e`.
+- `WithModVendor` / `withModVendor`: Runs `go mod vendor`.
+- `WithModDownload` / `withModDownload`: Runs `go mod download`.
+- `WithVetTool` / `withVetTool`: Runs `go vet ./...`.
+
+When multiple module helpers are configured, Aspire orders them so dependency-changing steps complete before later module cache or vendor steps.
+
+## Debug Go apps with Delve
+
+Go app resources enable VS Code Go debugging support by default. Install the [Go extension for Visual Studio Code](https://marketplace.visualstudio.com/items?itemName=golang.go), then use the normal Aspire debugging workflow.
+
+For GoLand, VS Code attach mode, or another Delve-compatible client, use `WithDelveServer` / `withDelveServer`. This replaces the application command with a headless Delve server, such as `dlv --headless=true --listen=127.0.0.1:2345 --api-version=2 debug .`.
+
+
+
+
+```csharp title="C# — AppHost.cs"
+var builder = DistributedApplication.CreateBuilder(args);
+
+var api = builder.AddGoApp("api", "./api")
+ .WithDelveServer(port: 2345)
+ .WithHttpEndpoint(port: 8080, env: "PORT");
+
+builder.Build().Run();
+```
+
+
+
+
+```typescript title="TypeScript — apphost.ts"
+import { createBuilder } from './.modules/aspire.js';
+
+const builder = await createBuilder();
+
+const api = await builder.addGoApp('api', './api');
+await api.withDelveServer({ port: 2345 });
+await api.withHttpEndpoint({ port: 8080, env: 'PORT' });
+
+await builder.build().run();
+```
+
+
+
+
+Start your attach configuration after the Go resource is running in the Aspire dashboard. For GoLand, create a **Go Remote** configuration with host `localhost` and port `2345`. For VS Code attach mode, add a launch configuration like this:
+
+```json title=".vscode/launch.json"
+{
+ "name": "Attach to api",
+ "type": "go",
+ "request": "attach",
+ "mode": "remote",
+ "host": "localhost",
+ "port": 2345
+}
+```
+
+## Publish Go apps
+
+When a publisher or deployment target emits container build artifacts for a Go app, Aspire uses the `appDirectory` as the Docker build context:
+
+- If the app directory already contains a `Dockerfile`, Aspire uses it.
+- If no `Dockerfile` exists, Aspire generates a multi-stage Dockerfile.
+- The generated Dockerfile uses a `golang:-alpine` build image by default. Aspire detects the Go version from `go.mod`, preferring a `toolchain` directive over the `go` directive when both are present.
+- The build stage runs `go mod download`, caches the module and build caches, and builds a static Linux binary with `CGO_ENABLED=0` and `GOOS=linux`.
+- The runtime stage uses a small runtime image, installs certificate and time zone data for Alpine-based images, creates a non-root `app` user, and starts the compiled binary.
+- The generated `go build` command uses the same `packagePath`, `buildTags`, `ldFlags`, and `gcFlags` configured on the Go app resource. It intentionally excludes `raceDetector` for publish builds.
+
+For private modules, use `WithGoPrivate` / `withGoPrivate` to configure the generated Dockerfile with `GOPRIVATE` and BuildKit secret-based authentication. This setting only affects generated Dockerfiles; local run mode continues to use the developer's local Go and Git credentials.
+
+
+
+
+```csharp title="C# — AppHost.cs"
+var builder = DistributedApplication.CreateBuilder(args);
+
+var api = builder.AddGoApp("api", "./api")
+ .WithGoPrivate(["github.com/myorg"], "github.com");
+
+builder.Build().Run();
+```
+
+
+
+
+```typescript title="TypeScript — apphost.ts"
+import { createBuilder } from './.modules/aspire.js';
+
+const builder = await createBuilder();
+
+const api = await builder.addGoApp('api', './api');
+await api.withGoPrivate(['github.com/myorg'], 'github.com');
+
+await builder.build().run();
+```
+
+
+
+
+
+ For more information about publishing Aspire apps, see [Deployment
+ overview](/deployment/overview/).
+
+
+## Experimental Go AppHost templates
+
+The `Aspire.Hosting.Go` integration can be used from C# and TypeScript AppHosts. Aspire also includes experimental Go AppHost and Go starter template support in the Aspire CLI. The Go AppHost templates use experimental Go AppHost APIs instead of the `Aspire.Hosting.Go` package. To enable Go AppHost language support for CLI templates, enable the Go polyglot feature flag:
+
+```bash title="Aspire CLI"
+aspire config set features:experimentalPolyglot:go true --global
+```
+
+After enabling the feature, you can create a Go starter app with:
+
+```bash title="Aspire CLI"
+aspire new aspire-go-starter
+```
+
+
+ For more information about feature flags, see [Aspire CLI
+ configuration](/reference/cli/configuration/#toggle-preview-feature-experiences).
+ For template command details, see [`aspire
+ new`](/reference/cli/commands/aspire-new/).
+
+
+## See also
+
+- [Go documentation](https://go.dev/doc/)
+- [Delve debugger](https://github.com/go-delve/delve)
+- [Get started with the Go integration](/integrations/frameworks/go/go-get-started/)
+- [Aspire integrations overview](/integrations/overview/)
+- [Aspire GitHub repo](https://github.com/microsoft/aspire)
diff --git a/src/frontend/src/content/docs/integrations/frameworks/java.mdx b/src/frontend/src/content/docs/integrations/frameworks/java.mdx
index 37a1ed816..d1564b970 100644
--- a/src/frontend/src/content/docs/integrations/frameworks/java.mdx
+++ b/src/frontend/src/content/docs/integrations/frameworks/java.mdx
@@ -1,5 +1,6 @@
---
title: Java integration
+seoTitle: Java integration for Aspire AppHost and apps
description: Learn how to use the Aspire Java hosting integration from the Community Toolkit to run Spring Boot and other Java applications alongside your Aspire projects.
---
diff --git a/src/frontend/src/content/docs/integrations/frameworks/orleans.mdx b/src/frontend/src/content/docs/integrations/frameworks/orleans.mdx
index 27023ad6d..5e138bdb6 100644
--- a/src/frontend/src/content/docs/integrations/frameworks/orleans.mdx
+++ b/src/frontend/src/content/docs/integrations/frameworks/orleans.mdx
@@ -1,5 +1,6 @@
---
title: Orleans integration
+seoTitle: Microsoft Orleans integration for Aspire AppHost
description: Learn how to use the Aspire Orleans Hosting integration to orchestrate and configure an Orleans cluster in your Aspire solution.
---
diff --git a/src/frontend/src/content/docs/integrations/frameworks/powershell.mdx b/src/frontend/src/content/docs/integrations/frameworks/powershell.mdx
index d5b528d98..eac07ec46 100644
--- a/src/frontend/src/content/docs/integrations/frameworks/powershell.mdx
+++ b/src/frontend/src/content/docs/integrations/frameworks/powershell.mdx
@@ -1,6 +1,7 @@
---
title: PowerShell integration
-description: Learn about the Aspire hosting integration for PowerShell scripts.
+seoTitle: "PowerShell integration for Aspire: hosting and client wiring"
+description: Learn about the Aspire hosting integration for PowerShell scripts — orchestrate provisioning scripts, share parameters, and run PowerShell tasks alongside your apps.
---
import { Badge } from '@astrojs/starlight/components';
diff --git a/src/frontend/src/content/docs/integrations/frameworks/python.mdx b/src/frontend/src/content/docs/integrations/frameworks/python.mdx
index e63e6b7f3..371662f21 100644
--- a/src/frontend/src/content/docs/integrations/frameworks/python.mdx
+++ b/src/frontend/src/content/docs/integrations/frameworks/python.mdx
@@ -1,5 +1,6 @@
---
title: Python integration
+seoTitle: Python integration for Aspire AppHost and apps
description: Add Python apps, modules, and ASGI services to an Aspire AppHost and orchestrate them alongside your other resources with full service discovery, environment injection, and debugging support.
---
diff --git a/src/frontend/src/content/docs/integrations/frameworks/rust.mdx b/src/frontend/src/content/docs/integrations/frameworks/rust.mdx
index 52de6d495..74c06be6e 100644
--- a/src/frontend/src/content/docs/integrations/frameworks/rust.mdx
+++ b/src/frontend/src/content/docs/integrations/frameworks/rust.mdx
@@ -1,5 +1,6 @@
---
title: Rust integration
+seoTitle: Rust integration for Aspire AppHost (Community Toolkit)
description: Learn how to use the Aspire Community Toolkit hosting integration to run Rust applications alongside other resources in your AppHost project.
---
diff --git a/src/frontend/src/content/docs/integrations/gallery.mdx b/src/frontend/src/content/docs/integrations/gallery.mdx
index e197cedaa..9eb05b215 100644
--- a/src/frontend/src/content/docs/integrations/gallery.mdx
+++ b/src/frontend/src/content/docs/integrations/gallery.mdx
@@ -1,5 +1,6 @@
---
title: Integrations gallery
+seoTitle: "Aspire integrations gallery: browse all integrations"
description: Explore the Aspire gallery of integrations and extensions to enhance your Aspire solution.
tableOfContents: false
lastUpdated: false
diff --git a/src/frontend/src/content/docs/integrations/index.mdx b/src/frontend/src/content/docs/integrations/index.mdx
index 5c77cf01d..4ffb20286 100644
--- a/src/frontend/src/content/docs/integrations/index.mdx
+++ b/src/frontend/src/content/docs/integrations/index.mdx
@@ -1,5 +1,6 @@
---
title: Aspire Integrations
+seoTitle: Aspire integrations for databases, messaging, cloud
prev:
link: /docs/
label: Foundations
diff --git a/src/frontend/src/content/docs/integrations/messaging/apache-kafka/apache-kafka-connect.mdx b/src/frontend/src/content/docs/integrations/messaging/apache-kafka/apache-kafka-connect.mdx
index 23c00f248..bec1af0b0 100644
--- a/src/frontend/src/content/docs/integrations/messaging/apache-kafka/apache-kafka-connect.mdx
+++ b/src/frontend/src/content/docs/integrations/messaging/apache-kafka/apache-kafka-connect.mdx
@@ -1,5 +1,6 @@
---
title: Connect to Apache Kafka
+seoTitle: Connect to Apache Kafka from your .NET app with Aspire
description: Learn how to connect to Apache Kafka from C#, Go, Python, and TypeScript consuming apps in an Aspire solution.
---
diff --git a/src/frontend/src/content/docs/integrations/messaging/apache-kafka/apache-kafka-get-started.mdx b/src/frontend/src/content/docs/integrations/messaging/apache-kafka/apache-kafka-get-started.mdx
index df863d126..f47212e9c 100644
--- a/src/frontend/src/content/docs/integrations/messaging/apache-kafka/apache-kafka-get-started.mdx
+++ b/src/frontend/src/content/docs/integrations/messaging/apache-kafka/apache-kafka-get-started.mdx
@@ -1,6 +1,6 @@
---
title: Get started with the Apache Kafka integrations
-description: Understand why you use the Aspire Apache Kafka integrations and how they fit together.
+description: Learn how the Aspire Apache Kafka integrations host a Kafka broker resource and wire the .NET producer and consumer clients into your AppHost.
---
import { Image } from 'astro:assets';
diff --git a/src/frontend/src/content/docs/integrations/messaging/lavinmq.mdx b/src/frontend/src/content/docs/integrations/messaging/lavinmq.mdx
index 01a399f51..85fabc2cc 100644
--- a/src/frontend/src/content/docs/integrations/messaging/lavinmq.mdx
+++ b/src/frontend/src/content/docs/integrations/messaging/lavinmq.mdx
@@ -1,5 +1,6 @@
---
title: LavinMQ integration
+seoTitle: LavinMQ integration for Aspire AppHost and apps
description: Learn how to use the Aspire LavinMQ Hosting integration to orchestrate and configure a LavinMQ resource in an Aspire solution.
---
diff --git a/src/frontend/src/content/docs/integrations/messaging/nats/nats-connect.mdx b/src/frontend/src/content/docs/integrations/messaging/nats/nats-connect.mdx
index e89a1bc7d..4a06123e3 100644
--- a/src/frontend/src/content/docs/integrations/messaging/nats/nats-connect.mdx
+++ b/src/frontend/src/content/docs/integrations/messaging/nats/nats-connect.mdx
@@ -1,5 +1,6 @@
---
title: Connect to NATS
+seoTitle: "Connect to NATS from Aspire apps (C#, Python, TypeScript)"
description: Learn how to connect to NATS from C#, Go, Python, and TypeScript consuming apps in an Aspire solution.
---
diff --git a/src/frontend/src/content/docs/integrations/messaging/nats/nats-get-started.mdx b/src/frontend/src/content/docs/integrations/messaging/nats/nats-get-started.mdx
index 38eeb0570..01f9558f8 100644
--- a/src/frontend/src/content/docs/integrations/messaging/nats/nats-get-started.mdx
+++ b/src/frontend/src/content/docs/integrations/messaging/nats/nats-get-started.mdx
@@ -1,6 +1,7 @@
---
title: Get started with the NATS integrations
-description: Understand why you use the Aspire NATS integrations and how they fit together.
+seoTitle: Get started with the Aspire NATS integration in .NET
+description: "Use the Aspire NATS hosting and client integrations to spin up NATS servers locally, share credentials, and connect from C# and TypeScript apps with health checks."
---
import { Image } from 'astro:assets';
diff --git a/src/frontend/src/content/docs/integrations/messaging/nats/nats-host.mdx b/src/frontend/src/content/docs/integrations/messaging/nats/nats-host.mdx
index 8957736a3..c1d455b63 100644
--- a/src/frontend/src/content/docs/integrations/messaging/nats/nats-host.mdx
+++ b/src/frontend/src/content/docs/integrations/messaging/nats/nats-host.mdx
@@ -1,5 +1,6 @@
---
title: Set up NATS in the AppHost
+seoTitle: "Set up NATS in the Aspire AppHost: hosting integration"
description: Learn how to use the Aspire NATS Hosting integration to orchestrate and configure a NATS resource in an Aspire solution.
---
diff --git a/src/frontend/src/content/docs/integrations/messaging/rabbitmq/rabbitmq-connect.mdx b/src/frontend/src/content/docs/integrations/messaging/rabbitmq/rabbitmq-connect.mdx
index 002a59d11..4bd68f8d0 100644
--- a/src/frontend/src/content/docs/integrations/messaging/rabbitmq/rabbitmq-connect.mdx
+++ b/src/frontend/src/content/docs/integrations/messaging/rabbitmq/rabbitmq-connect.mdx
@@ -1,5 +1,6 @@
---
title: Connect to RabbitMQ
+seoTitle: "Connect to RabbitMQ from Aspire apps (C# and TypeScript)"
description: Learn how to connect to RabbitMQ from C#, Go, Python, and TypeScript consuming apps in an Aspire solution.
---
diff --git a/src/frontend/src/content/docs/integrations/messaging/rabbitmq/rabbitmq-get-started.mdx b/src/frontend/src/content/docs/integrations/messaging/rabbitmq/rabbitmq-get-started.mdx
index 15f16f53d..279483230 100644
--- a/src/frontend/src/content/docs/integrations/messaging/rabbitmq/rabbitmq-get-started.mdx
+++ b/src/frontend/src/content/docs/integrations/messaging/rabbitmq/rabbitmq-get-started.mdx
@@ -1,6 +1,6 @@
---
title: Get started with the RabbitMQ integrations
-description: Understand why you use the Aspire RabbitMQ integrations and how they fit together.
+description: Learn how the Aspire RabbitMQ integrations provision a RabbitMQ broker resource and wire the .NET client for queues, exchanges, and consumers.
---
import { Image } from 'astro:assets';
diff --git a/src/frontend/src/content/docs/integrations/messaging/rabbitmq/rabbitmq-host.mdx b/src/frontend/src/content/docs/integrations/messaging/rabbitmq/rabbitmq-host.mdx
index 97e72e618..60d2f33df 100644
--- a/src/frontend/src/content/docs/integrations/messaging/rabbitmq/rabbitmq-host.mdx
+++ b/src/frontend/src/content/docs/integrations/messaging/rabbitmq/rabbitmq-host.mdx
@@ -1,5 +1,6 @@
---
title: Set up RabbitMQ in the AppHost
+seoTitle: "Set up RabbitMQ in the Aspire AppHost: hosting integration"
description: Learn how to use the Aspire RabbitMQ Hosting integration to orchestrate and configure a RabbitMQ resource in an Aspire solution.
---
diff --git a/src/frontend/src/content/docs/integrations/observability/seq/seq-connect.mdx b/src/frontend/src/content/docs/integrations/observability/seq/seq-connect.mdx
index 94b80c709..92ce322a0 100644
--- a/src/frontend/src/content/docs/integrations/observability/seq/seq-connect.mdx
+++ b/src/frontend/src/content/docs/integrations/observability/seq/seq-connect.mdx
@@ -1,5 +1,6 @@
---
title: Connect to Seq
+seoTitle: Connect to Seq from Aspire apps for log search and dashboards
description: Learn how to connect to Seq from C#, Go, Python, and TypeScript consuming apps in an Aspire solution.
next: false
---
diff --git a/src/frontend/src/content/docs/integrations/observability/seq/seq-get-started.mdx b/src/frontend/src/content/docs/integrations/observability/seq/seq-get-started.mdx
index 634972265..3408be387 100644
--- a/src/frontend/src/content/docs/integrations/observability/seq/seq-get-started.mdx
+++ b/src/frontend/src/content/docs/integrations/observability/seq/seq-get-started.mdx
@@ -1,6 +1,7 @@
---
title: Get started with the Seq integrations
-description: Understand why you use the Aspire Seq integrations and how they fit together.
+seoTitle: Get started with the Aspire Seq integration in .NET
+description: "Use the Aspire Seq hosting and client integrations to run Seq locally, ship logs from C# and TypeScript apps, and explore structured events with built-in dashboards."
prev: false
---
diff --git a/src/frontend/src/content/docs/integrations/observability/seq/seq-host.mdx b/src/frontend/src/content/docs/integrations/observability/seq/seq-host.mdx
index 6ce989e22..5f8cac820 100644
--- a/src/frontend/src/content/docs/integrations/observability/seq/seq-host.mdx
+++ b/src/frontend/src/content/docs/integrations/observability/seq/seq-host.mdx
@@ -1,5 +1,6 @@
---
title: Set up Seq in the AppHost
+seoTitle: "Set up Seq in the Aspire AppHost: hosting integration"
description: Learn how to use the Aspire Seq hosting integration to orchestrate and configure a Seq resource in an Aspire solution.
---
diff --git a/src/frontend/src/content/docs/integrations/overview.mdx b/src/frontend/src/content/docs/integrations/overview.mdx
index d2dafd9d4..c06e800de 100644
--- a/src/frontend/src/content/docs/integrations/overview.mdx
+++ b/src/frontend/src/content/docs/integrations/overview.mdx
@@ -1,6 +1,6 @@
---
title: What are Aspire integrations?
-description: Aspire integrations overview page, showcasing how Aspire works with various tools and platforms.
+description: Aspire integrations overview page, showcasing how Aspire works with various tools and platforms in your Aspire AppHost.
tableOfContents: true
lastUpdated: false
editUrl: false
diff --git a/src/frontend/src/content/docs/integrations/reverse-proxies/yarp.mdx b/src/frontend/src/content/docs/integrations/reverse-proxies/yarp.mdx
index 605f16789..b59215ca7 100644
--- a/src/frontend/src/content/docs/integrations/reverse-proxies/yarp.mdx
+++ b/src/frontend/src/content/docs/integrations/reverse-proxies/yarp.mdx
@@ -1,5 +1,6 @@
---
title: YARP integration
+seoTitle: YARP integration for Aspire AppHost and apps
description: Learn how to use the YARP (Yet Another Reverse Proxy) integration for reverse proxy functionality.
---
diff --git a/src/frontend/src/content/docs/integrations/security/keycloak.mdx b/src/frontend/src/content/docs/integrations/security/keycloak.mdx
index ba43801b8..e2fff6d0c 100644
--- a/src/frontend/src/content/docs/integrations/security/keycloak.mdx
+++ b/src/frontend/src/content/docs/integrations/security/keycloak.mdx
@@ -1,5 +1,6 @@
---
title: Keycloak integration
+seoTitle: Keycloak integration for Aspire AppHost and apps
description: Learn how to use the Keycloak integration, which includes both hosting and client integrations.
---
diff --git a/src/frontend/src/content/docs/it/index.mdx b/src/frontend/src/content/docs/it/index.mdx
index 1fdeb0dea..13a1e6b28 100644
--- a/src/frontend/src/content/docs/it/index.mdx
+++ b/src/frontend/src/content/docs/it/index.mdx
@@ -11,7 +11,7 @@ prev: false
next: false
banner:
content: |
- 🚀 Aspire 13.3 è disponibile! — Scopri le novità di Aspire 13.3.
+ 🚀 Aspire 13.4 è disponibile! — Scopri le novità di Aspire 13.4.
hero:
tagline: Il tuo stack, semplificato. Orchestra frontend, API, container e database senza sforzo—senza riscritture, senza limiti. Estendi Aspire per potenziare qualsiasi progetto.
image:
diff --git a/src/frontend/src/content/docs/ja/get-started/app-host.mdx b/src/frontend/src/content/docs/ja/get-started/app-host.mdx
index fe6ac31c0..05fd87c42 100644
--- a/src/frontend/src/content/docs/ja/get-started/app-host.mdx
+++ b/src/frontend/src/content/docs/ja/get-started/app-host.mdx
@@ -109,7 +109,7 @@ architecture-beta
このアーキテクチャは、**Go API** が **PostgreSQL データベース**に接続し、**React フロントエンド**がその API を利用する構成を示しています。Go API は標準ライブラリの `net/http` パッケージ、または Gin や Echo などのフレームワークを使用し、pgx や database/sql などのライブラリを用いて PostgreSQL に接続します。React フロントエンドは Vite で構築され、HTTP 経由で API と通信します。
-Go との統合は、NuGet パッケージの [CommunityToolkit.Aspire.Hosting.Golang](https://www.nuget.org/packages/CommunityToolkit.Aspire.Hosting.Golang) によって提供されます。詳細については、ドキュメントの [Go との統合](/integrations/frameworks/go-apps/)をご覧ください。
+Go との統合は、NuGet パッケージの [Aspire.Hosting.Go](https://www.nuget.org/packages/Aspire.Hosting.Go) によって提供されます。詳細については、ドキュメントの [Go との統合](/integrations/frameworks/go/go-get-started/)をご覧ください。
diff --git a/src/frontend/src/content/docs/ja/index.mdx b/src/frontend/src/content/docs/ja/index.mdx
index 0f63c8286..083246007 100644
--- a/src/frontend/src/content/docs/ja/index.mdx
+++ b/src/frontend/src/content/docs/ja/index.mdx
@@ -11,7 +11,7 @@ prev: false
next: false
banner:
content: |
- Aspire 13.3 が登場しました! — 新機能を見る
+ Aspire 13.4 が登場しました! — 新機能を見る
hero:
tagline: あなたのスタックをもっとシンプルに。 フロントエンド、API、コンテナ、データベースを再実装不要、制限なしでオーケストレーションします。Aspire を拡張してあらゆるプロジェクトを強化しましょう。
image:
diff --git a/src/frontend/src/content/docs/ko/index.mdx b/src/frontend/src/content/docs/ko/index.mdx
index d3f0fe3b6..349855544 100644
--- a/src/frontend/src/content/docs/ko/index.mdx
+++ b/src/frontend/src/content/docs/ko/index.mdx
@@ -11,7 +11,7 @@ prev: false
next: false
banner:
content: |
- 🚀 Aspire 13.3이 출시되었습니다! — Aspire 13.3의 새로운 기능 확인하기.
+ 🚀 Aspire 13.4이 출시되었습니다! — Aspire 13.4의 새로운 기능 확인하기.
hero:
tagline: 당신의 스택, 단순화. 프론트엔드, API, 컨테이너, 데이터베이스를 손쉽게 오케스트레이션—재작성 불필요, 무한한 가능성. Aspire를 확장하여 모든 프로젝트를 강화하세요.
image:
diff --git a/src/frontend/src/content/docs/languages-and-runtimes/index.mdx b/src/frontend/src/content/docs/languages-and-runtimes/index.mdx
index d9be3b222..d01a2ca70 100644
--- a/src/frontend/src/content/docs/languages-and-runtimes/index.mdx
+++ b/src/frontend/src/content/docs/languages-and-runtimes/index.mdx
@@ -1,6 +1,7 @@
---
title: Languages & runtimes
-description: Learn how Aspire works across AppHost languages, app languages, and runtime ecosystems, and find the right starting point for your stack.
+seoTitle: Aspire languages and runtimes overview for AppHost authors
+description: "Learn how Aspire works across AppHost languages, app languages, and runtime ecosystems — and find the right starting point for C#, TypeScript, Python, Java, and more."
---
import { Aside, Card, CardGrid } from '@astrojs/starlight/components';
@@ -62,17 +63,17 @@ The sections below use the labels that are most helpful when you're trying to an
Start with [Python integration](/integrations/frameworks/python/) and [Standalone Aspire dashboard for Python](/dashboard/standalone-for-python/).
-
-
-### Community Toolkit guides
-
- Add Go services through the Community Toolkit.
+ Use Aspire with Go services and the local Go toolchain.
- Start with [Go integration](/integrations/frameworks/go-apps/).
+ Start with [Go integration](/integrations/frameworks/go/go-get-started/).
+
+
+### Community Toolkit guides
+
Add Java services through the Community Toolkit.
diff --git a/src/frontend/src/content/docs/pt-br/index.mdx b/src/frontend/src/content/docs/pt-br/index.mdx
index 2818c33a9..9a9767427 100644
--- a/src/frontend/src/content/docs/pt-br/index.mdx
+++ b/src/frontend/src/content/docs/pt-br/index.mdx
@@ -11,7 +11,7 @@ prev: false
next: false
banner:
content: |
- 🚀 Aspire 13.3 foi lançado! — Veja o que há de novo no Aspire 13.3.
+ 🚀 Aspire 13.4 foi lançado! — Veja o que há de novo no Aspire 13.4.
hero:
tagline: Seu stack, simplificado. Orquestre frontends, APIs, contêineres e bancos de dados sem esforço—sem reescritas, sem limites. Estenda o Aspire para impulsionar qualquer projeto.
image:
diff --git a/src/frontend/src/content/docs/reference/cli/commands/aspire-add.mdx b/src/frontend/src/content/docs/reference/cli/commands/aspire-add.mdx
index 73d2812f3..bb14bd2dd 100644
--- a/src/frontend/src/content/docs/reference/cli/commands/aspire-add.mdx
+++ b/src/frontend/src/content/docs/reference/cli/commands/aspire-add.mdx
@@ -1,5 +1,6 @@
---
title: aspire add command
+seoTitle: aspire add command reference for the Aspire CLI
description: Learn about the aspire add command and its usage. This command adds an integration package to an Aspire AppHost project.
---
diff --git a/src/frontend/src/content/docs/reference/cli/commands/aspire-agent.mdx b/src/frontend/src/content/docs/reference/cli/commands/aspire-agent.mdx
index 06d48305b..2f843ab59 100644
--- a/src/frontend/src/content/docs/reference/cli/commands/aspire-agent.mdx
+++ b/src/frontend/src/content/docs/reference/cli/commands/aspire-agent.mdx
@@ -1,5 +1,6 @@
---
title: aspire agent command
+seoTitle: aspire agent command reference for the Aspire CLI
description: Learn about the aspire agent command and its usage. This command driver manages AI agent integrations, Aspire skill files, and MCP (Model Context Protocol) server operations.
---
diff --git a/src/frontend/src/content/docs/reference/cli/commands/aspire-cache.mdx b/src/frontend/src/content/docs/reference/cli/commands/aspire-cache.mdx
index 222f79373..ef219161e 100644
--- a/src/frontend/src/content/docs/reference/cli/commands/aspire-cache.mdx
+++ b/src/frontend/src/content/docs/reference/cli/commands/aspire-cache.mdx
@@ -1,5 +1,6 @@
---
title: aspire cache command
+seoTitle: aspire cache command reference for the Aspire CLI
description: Learn about the aspire cache command and its usage. This command driver is used to manage disk cache for Aspire CLI operations.
---
diff --git a/src/frontend/src/content/docs/reference/cli/commands/aspire-certs.mdx b/src/frontend/src/content/docs/reference/cli/commands/aspire-certs.mdx
index d045e84a0..ef30fc685 100644
--- a/src/frontend/src/content/docs/reference/cli/commands/aspire-certs.mdx
+++ b/src/frontend/src/content/docs/reference/cli/commands/aspire-certs.mdx
@@ -1,5 +1,6 @@
---
title: aspire certs command
+seoTitle: aspire certs command reference for the Aspire CLI
description: Learn about the aspire certs command and its usage. This command manages HTTPS development certificates.
---
diff --git a/src/frontend/src/content/docs/reference/cli/commands/aspire-do.mdx b/src/frontend/src/content/docs/reference/cli/commands/aspire-do.mdx
index 00af88f7d..66acde01d 100644
--- a/src/frontend/src/content/docs/reference/cli/commands/aspire-do.mdx
+++ b/src/frontend/src/content/docs/reference/cli/commands/aspire-do.mdx
@@ -1,5 +1,6 @@
---
title: aspire do command
+seoTitle: aspire do command reference for the Aspire CLI
description: Learn about the aspire do command and its usage. This command executes a specific pipeline step and its dependencies.
sidebar:
badge: Preview
diff --git a/src/frontend/src/content/docs/reference/cli/commands/aspire-docs.mdx b/src/frontend/src/content/docs/reference/cli/commands/aspire-docs.mdx
index aa15db771..3650df97f 100644
--- a/src/frontend/src/content/docs/reference/cli/commands/aspire-docs.mdx
+++ b/src/frontend/src/content/docs/reference/cli/commands/aspire-docs.mdx
@@ -1,5 +1,6 @@
---
title: aspire docs command
+seoTitle: aspire docs command reference for the Aspire CLI
description: Learn about the aspire docs command and its usage. This command is used to browse and search Aspire documentation from aspire.dev.
---
diff --git a/src/frontend/src/content/docs/reference/cli/commands/aspire-init.mdx b/src/frontend/src/content/docs/reference/cli/commands/aspire-init.mdx
index 9a3210824..6a35a582c 100644
--- a/src/frontend/src/content/docs/reference/cli/commands/aspire-init.mdx
+++ b/src/frontend/src/content/docs/reference/cli/commands/aspire-init.mdx
@@ -1,5 +1,6 @@
---
title: aspire init command
+seoTitle: aspire init command reference for the Aspire CLI
description: Learn about the aspire init command and how it uses the aspireify agent skill to wire up Aspire support in an existing codebase.
---
diff --git a/src/frontend/src/content/docs/reference/cli/commands/aspire-logs.mdx b/src/frontend/src/content/docs/reference/cli/commands/aspire-logs.mdx
index b52c48714..8d1292bbc 100644
--- a/src/frontend/src/content/docs/reference/cli/commands/aspire-logs.mdx
+++ b/src/frontend/src/content/docs/reference/cli/commands/aspire-logs.mdx
@@ -1,5 +1,6 @@
---
title: aspire logs command
+seoTitle: aspire logs command reference for the Aspire CLI
description: Learn about the aspire logs command and its usage. This command displays logs from resources in a running apphost.
---
diff --git a/src/frontend/src/content/docs/reference/cli/commands/aspire-mcp.mdx b/src/frontend/src/content/docs/reference/cli/commands/aspire-mcp.mdx
index 6015fbd42..3acd9fc2c 100644
--- a/src/frontend/src/content/docs/reference/cli/commands/aspire-mcp.mdx
+++ b/src/frontend/src/content/docs/reference/cli/commands/aspire-mcp.mdx
@@ -1,5 +1,6 @@
---
title: aspire mcp command
+seoTitle: aspire mcp command reference for the Aspire CLI
description: Learn about the aspire mcp command and its usage. This command interacts with MCP tools exposed by Aspire resources.
---
diff --git a/src/frontend/src/content/docs/reference/cli/commands/aspire-new.mdx b/src/frontend/src/content/docs/reference/cli/commands/aspire-new.mdx
index 70c5d161a..4e015290d 100644
--- a/src/frontend/src/content/docs/reference/cli/commands/aspire-new.mdx
+++ b/src/frontend/src/content/docs/reference/cli/commands/aspire-new.mdx
@@ -1,5 +1,6 @@
---
title: aspire new command
+seoTitle: aspire new command reference for the Aspire CLI
description: Learn about the aspire new command and its usage. This command creates new Aspire projects or solutions.
---
diff --git a/src/frontend/src/content/docs/reference/cli/commands/aspire-otel.mdx b/src/frontend/src/content/docs/reference/cli/commands/aspire-otel.mdx
index 5bd3f6629..55100dd02 100644
--- a/src/frontend/src/content/docs/reference/cli/commands/aspire-otel.mdx
+++ b/src/frontend/src/content/docs/reference/cli/commands/aspire-otel.mdx
@@ -1,5 +1,6 @@
---
title: aspire otel command
+seoTitle: aspire otel command reference for the Aspire CLI
description: Learn about the aspire otel command and its usage. This command is used to view OpenTelemetry data (logs, spans, traces) from a running apphost.
sidebar:
badge: Preview
diff --git a/src/frontend/src/content/docs/reference/cli/commands/aspire-ps.mdx b/src/frontend/src/content/docs/reference/cli/commands/aspire-ps.mdx
index 2be199ac3..4a38cfa41 100644
--- a/src/frontend/src/content/docs/reference/cli/commands/aspire-ps.mdx
+++ b/src/frontend/src/content/docs/reference/cli/commands/aspire-ps.mdx
@@ -1,5 +1,6 @@
---
title: aspire ps command
+seoTitle: aspire ps command reference for the Aspire CLI
description: Learn about the aspire ps command which lists all running Aspire AppHost processes with their process IDs and dashboard URLs.
---
diff --git a/src/frontend/src/content/docs/reference/cli/commands/aspire-resource.mdx b/src/frontend/src/content/docs/reference/cli/commands/aspire-resource.mdx
index 0defa4115..8e897a27b 100644
--- a/src/frontend/src/content/docs/reference/cli/commands/aspire-resource.mdx
+++ b/src/frontend/src/content/docs/reference/cli/commands/aspire-resource.mdx
@@ -13,7 +13,8 @@ import { Aside, Steps } from '@astrojs/starlight/components';
## Synopsis
```bash title="Aspire CLI"
-aspire resource [options]
+aspire resource [command-options] [options]
+aspire resource -- [command-options]
```
## Description
@@ -30,6 +31,68 @@ selected resource at runtime. This is why the CLI reference documents
`aspire resource start`.
+### Command arguments as named options
+
+When a resource command defines arguments, those arguments are passed as **named options** on the command line. Named options make it easier to supply only the arguments you need, skip optional ones, and pass values in any order.
+
+To see what arguments a specific command accepts, use the command-specific `--help` flag:
+
+```bash title="Aspire CLI"
+aspire resource --help
+```
+
+The help output lists each argument with its type, whether it's required, its default value (if any), and the set of allowed values for choice arguments. For example:
+
+```console
+Echo a message with text, number, boolean, choice, and secret command arguments.
+
+Usage:
+ aspire resource [command-options] [options]
+ aspire resource -- [command-options]
+
+Command options:
+ --message Text value to echo. Required.
+ --repeat How many times to echo the message. Default: 1.
+ --shout Uppercase the echoed message. Default: false.
+ --flavor The message flavor. Allowed values: vanilla, chocolate, strawberry. Default: vanilla.
+ --secret Secret text command argument. The command only returns its length.
+
+Options:
+ --apphost The path to the Aspire AppHost file or a directory to search
+ -?, -h, --help Show help and usage information
+```
+
+#### Handling option name collisions
+
+If a command argument name conflicts with an Aspire CLI option (such as `--apphost`), use `--` to separate Aspire CLI options from command-specific options:
+
+```bash title="Aspire CLI"
+aspire resource --apphost './MyApp.AppHost.cs' -- --apphost myvalue
+```
+
+Everything after `--` is treated as command argument options and is not parsed as Aspire CLI flags.
+
+### Discovering available resource commands
+
+Running `aspire resource --help` with a specific resource name queries the running AppHost and appends an **Available resource commands** section to the help output. This lets you discover what commands a resource supports without opening the dashboard.
+
+```text title="Example output"
+Available resource commands:
+ restart Restart the resource.
+ start Start the resource.
+ stop Stop the resource.
+```
+
+If no single in-scope AppHost can be determined without an explicit `--apphost`, the resource-scoped help is shown without the commands section rather than prompting for AppHost selection.
+
+To pass `--help` as an argument to the resource command itself (rather than as a CLI help flag), separate it with `--`:
+
+```bash title="Aspire CLI"
+aspire resource myresource mycommand -- --help
+```
+
+### AppHost selection
+
When executed without the `--apphost` option, the command:
@@ -55,10 +118,16 @@ When executed without the `--apphost` option, the command:
The following options are available:
--
+- **`--apphost `**
+
+ The path to the Aspire AppHost file or a directory to search.
-
+- **`--include-hidden`**
+
+ Includes resource commands that are marked as hidden. By default, hidden commands are not shown in help output or executed. Use this option to expose and run commands that are intentionally hidden from the default command listing.
+
-
-
@@ -83,10 +152,58 @@ The following options are available:
aspire resource worker stop
```
-- Target a specific AppHost project:
+- Target a specific AppHost file:
+
+ ```bash title="Aspire CLI"
+ # C# AppHost
+ aspire resource api restart --apphost './apphost.cs'
+
+ # TypeScript AppHost
+ aspire resource api restart --apphost './apphost.ts'
+ ```
+
+- List available commands for a specific resource:
+
+ ```bash title="Aspire CLI"
+ # C# AppHost
+ aspire resource myapi --help --apphost './apphost.cs'
+
+ # TypeScript AppHost
+ aspire resource myapi --help --apphost './apphost.ts'
+ ```
+
+- Include hidden commands when listing available commands:
+
+ ```bash title="Aspire CLI"
+ # C# AppHost
+ aspire resource myapi --help --include-hidden --apphost './apphost.cs'
+
+ # TypeScript AppHost
+ aspire resource myapi --help --include-hidden --apphost './apphost.ts'
+ ```
+
+- Show command-specific help for a resource command with arguments:
+
+ ```bash title="Aspire CLI"
+ aspire resource my-resource echo-message --help
+ ```
+
+- Execute a resource command with named arguments:
+
+ ```bash title="Aspire CLI"
+ aspire resource my-resource echo-message --message "hello" --repeat 3 --shout true
+ ```
+
+- Supply only some optional command arguments (skipping others):
+
+ ```bash title="Aspire CLI"
+ aspire resource my-resource echo-message --message "hello" --flavor chocolate
+ ```
+
+- Use `--` to avoid conflict with an Aspire CLI option named `--apphost`:
```bash title="Aspire CLI"
- aspire resource api restart --apphost './src/MyApp.AppHost/MyApp.AppHost.csproj'
+ aspire resource my-resource custom-cmd --apphost './apphost.ts' -- --apphost myvalue
```
## See also
diff --git a/src/frontend/src/content/docs/reference/cli/commands/aspire-run.mdx b/src/frontend/src/content/docs/reference/cli/commands/aspire-run.mdx
index 66d7e81d3..09df61a78 100644
--- a/src/frontend/src/content/docs/reference/cli/commands/aspire-run.mdx
+++ b/src/frontend/src/content/docs/reference/cli/commands/aspire-run.mdx
@@ -1,6 +1,7 @@
---
title: aspire run command
-description: Learn about the aspire run command and its usage. This command runs an Aspire AppHost.
+seoTitle: aspire run command reference for the Aspire CLI
+description: Learn about the aspire run command, which builds and runs an Aspire AppHost project locally and streams logs and telemetry to your terminal.
---
import AsciinemaPlayer from '@components/AsciinemaPlayer.astro';
diff --git a/src/frontend/src/content/docs/reference/cli/commands/aspire-start.mdx b/src/frontend/src/content/docs/reference/cli/commands/aspire-start.mdx
index 69af3fcb6..e06665335 100644
--- a/src/frontend/src/content/docs/reference/cli/commands/aspire-start.mdx
+++ b/src/frontend/src/content/docs/reference/cli/commands/aspire-start.mdx
@@ -1,5 +1,6 @@
---
title: aspire start command
+seoTitle: aspire start command reference for the Aspire CLI
description: Learn about the aspire start command and its usage. This command starts an apphost in the background.
---
diff --git a/src/frontend/src/content/docs/reference/cli/commands/aspire-stop.mdx b/src/frontend/src/content/docs/reference/cli/commands/aspire-stop.mdx
index 38e3622f1..17a431cff 100644
--- a/src/frontend/src/content/docs/reference/cli/commands/aspire-stop.mdx
+++ b/src/frontend/src/content/docs/reference/cli/commands/aspire-stop.mdx
@@ -1,6 +1,7 @@
---
title: aspire stop command
-description: Learn about the aspire stop command which stops a running Aspire AppHost process.
+seoTitle: aspire stop command reference for the Aspire CLI
+description: Learn about the aspire stop command, which gracefully stops a running Aspire AppHost process so resources are torn down in the correct order.
---
import AsciinemaPlayer from '@components/AsciinemaPlayer.astro';
diff --git a/src/frontend/src/content/docs/reference/cli/commands/aspire-update.mdx b/src/frontend/src/content/docs/reference/cli/commands/aspire-update.mdx
index 9bde62a00..bba8416bc 100644
--- a/src/frontend/src/content/docs/reference/cli/commands/aspire-update.mdx
+++ b/src/frontend/src/content/docs/reference/cli/commands/aspire-update.mdx
@@ -36,6 +36,20 @@ The command performs the following:
- Validates package compatibility before applying changes
- Provides colorized output with detailed summary of changes
+### Non-interactive usage
+
+When you use `--non-interactive`, also pass `--yes` to explicitly confirm the update operation. Omitting `--yes` when using `--non-interactive` is an error:
+
+```bash title="Aspire CLI"
+aspire update --yes --non-interactive
+```
+
+If you specify `--non-interactive` without `--yes`, the command exits with an error:
+
+```text title="Output"
+The update command requires --yes when the --non-interactive option is specified.
+```
+
## Options
The following options are available:
diff --git a/src/frontend/src/content/docs/reference/cli/commands/aspire-wait.mdx b/src/frontend/src/content/docs/reference/cli/commands/aspire-wait.mdx
index 26982b6d1..8cf64842a 100644
--- a/src/frontend/src/content/docs/reference/cli/commands/aspire-wait.mdx
+++ b/src/frontend/src/content/docs/reference/cli/commands/aspire-wait.mdx
@@ -1,5 +1,6 @@
---
title: aspire wait command
+seoTitle: aspire wait command reference for the Aspire CLI
description: Learn about the aspire wait command which blocks until a named resource reaches a target status, with a configurable timeout.
---
diff --git a/src/frontend/src/content/docs/reference/cli/commands/aspire.mdx b/src/frontend/src/content/docs/reference/cli/commands/aspire.mdx
index 887c5e34c..e112cf6cc 100644
--- a/src/frontend/src/content/docs/reference/cli/commands/aspire.mdx
+++ b/src/frontend/src/content/docs/reference/cli/commands/aspire.mdx
@@ -1,6 +1,7 @@
---
title: aspire command
-description: Learn about the aspire command (the generic driver for the Aspire CLI) and its usage.
+seoTitle: aspire root command reference for the Aspire CLI
+description: Learn about the aspire command, the generic driver for the Aspire CLI used to run, deploy, and manage AppHost projects from the terminal.
---
import Include from '@components/Include.astro';
diff --git a/src/frontend/src/content/docs/reference/cli/includes/config-settings-table.md b/src/frontend/src/content/docs/reference/cli/includes/config-settings-table.md
index 219177173..a8a23dbf6 100644
--- a/src/frontend/src/content/docs/reference/cli/includes/config-settings-table.md
+++ b/src/frontend/src/content/docs/reference/cli/includes/config-settings-table.md
@@ -7,7 +7,6 @@ title: Config Settings Table
| `appHost.path` | `appHost.path` | Project-scoped path to the default AppHost entry point. This setting must be configured in the local `aspire.config.json` file. |
| `channel` | `channel` | Default Aspire channel used by channel-aware commands such as `aspire new`, `aspire init`, and `aspire update`. |
| `features.defaultWatchEnabled` | `features.defaultWatchEnabled` | Enable or disable watch mode by default when running Aspire applications for automatic restarts on file changes. |
-| `features.execCommandEnabled` | `features.execCommandEnabled` | Enable or disable the legacy `aspire exec` command for executing commands inside running resources. |
| `features.experimentalPolyglot:go` | `features.experimentalPolyglot:go` | Enable or disable experimental Go language support for polyglot Aspire applications. |
| `features.experimentalPolyglot:java` | `features.experimentalPolyglot:java` | Enable or disable experimental Java language support for polyglot Aspire applications. |
| `features.experimentalPolyglot:python` | `features.experimentalPolyglot:python` | Enable or disable experimental Python language support for polyglot Aspire applications. |
diff --git a/src/frontend/src/content/docs/reference/cli/install-script.mdx b/src/frontend/src/content/docs/reference/cli/install-script.mdx
index 51326bc66..9614eb4c8 100644
--- a/src/frontend/src/content/docs/reference/cli/install-script.mdx
+++ b/src/frontend/src/content/docs/reference/cli/install-script.mdx
@@ -1,5 +1,6 @@
---
title: Install script
+seoTitle: Aspire CLI install script for Windows, macOS, and Linux
description: Learn about the aspire-install scripts to install the Aspire CLI. Use the Aspire CLI to create, run, and manage Aspire solutions.
---
diff --git a/src/frontend/src/content/docs/reference/cli/microsoft-collected-cli-telemetry.mdx b/src/frontend/src/content/docs/reference/cli/microsoft-collected-cli-telemetry.mdx
index a04dfdd49..48c954dbd 100644
--- a/src/frontend/src/content/docs/reference/cli/microsoft-collected-cli-telemetry.mdx
+++ b/src/frontend/src/content/docs/reference/cli/microsoft-collected-cli-telemetry.mdx
@@ -1,6 +1,6 @@
---
title: Microsoft-collected CLI telemetry
-description: Learn about what telemetry the Aspire CLI collects and how to opt out.
+description: Learn what telemetry the Aspire CLI collects, how the data is used to improve the product, and how to opt out using environment variables or CLI configuration.
---
import OsAwareTabs from '@components/OsAwareTabs.astro';
diff --git a/src/frontend/src/content/docs/reference/cli/overview.mdx b/src/frontend/src/content/docs/reference/cli/overview.mdx
index d8e546f69..785944bcf 100644
--- a/src/frontend/src/content/docs/reference/cli/overview.mdx
+++ b/src/frontend/src/content/docs/reference/cli/overview.mdx
@@ -1,5 +1,7 @@
---
title: Aspire CLI overview
+description: Overview of the Aspire CLI, the cross-platform terminal tool for creating, running, and deploying Aspire AppHost projects from your shell.
+seoTitle: "Aspire CLI overview: commands, options, and workflows"
---
import { Aside, CardGrid, LinkCard } from '@astrojs/starlight/components';
diff --git a/src/frontend/src/content/docs/reference/overview.mdx b/src/frontend/src/content/docs/reference/overview.mdx
index e7b7eab1b..465e87c59 100644
--- a/src/frontend/src/content/docs/reference/overview.mdx
+++ b/src/frontend/src/content/docs/reference/overview.mdx
@@ -1,5 +1,6 @@
---
title: Aspire Reference
+seoTitle: "Aspire reference: APIs, CLI, and packages"
prev:
link: /deployment/
label: Deployment
diff --git a/src/frontend/src/content/docs/reference/samples.mdx b/src/frontend/src/content/docs/reference/samples.mdx
index 957c4dbfe..bc796cf0b 100644
--- a/src/frontend/src/content/docs/reference/samples.mdx
+++ b/src/frontend/src/content/docs/reference/samples.mdx
@@ -1,5 +1,6 @@
---
title: Samples
+seoTitle: Aspire samples and reference solutions
description: Explore Aspire sample projects — fully functional apps demonstrating real-world patterns, integrations, and best practices.
tableOfContents: false
lastUpdated: false
diff --git a/src/frontend/src/content/docs/ru/index.mdx b/src/frontend/src/content/docs/ru/index.mdx
index c7c4b5b1b..84f4d90ec 100644
--- a/src/frontend/src/content/docs/ru/index.mdx
+++ b/src/frontend/src/content/docs/ru/index.mdx
@@ -11,7 +11,7 @@ prev: false
next: false
banner:
content: |
- 🚀 Aspire 13.3 выпущен! — Что нового в Aspire 13.3.
+ 🚀 Aspire 13.4 выпущен! — Что нового в Aspire 13.4.
hero:
tagline: Ваш стек, упрощён. Оркестрируйте фронтенды, API, контейнеры и базы данных без усилий—без переписывания, без ограничений. Расширяйте Aspire для любого проекта.
image:
diff --git a/src/frontend/src/content/docs/support.mdx b/src/frontend/src/content/docs/support.mdx
index df8f0e8a1..6af6bec52 100644
--- a/src/frontend/src/content/docs/support.mdx
+++ b/src/frontend/src/content/docs/support.mdx
@@ -1,8 +1,8 @@
---
-title: Aspire support policy
+title: Aspire support policy and lifecycle
prev: false
next: false
-description: Official support policy for Aspire - lifecycle, release cadence, and support guidelines.
+description: "Review the official Aspire support policy: release cadence, lifecycle dates, and Microsoft Modern Lifecycle guidance for production deployments and upgrades."
template: splash
editUrl: false
---
diff --git a/src/frontend/src/content/docs/testing/accessing-resources.mdx b/src/frontend/src/content/docs/testing/accessing-resources.mdx
index e2034b235..e93608236 100644
--- a/src/frontend/src/content/docs/testing/accessing-resources.mdx
+++ b/src/frontend/src/content/docs/testing/accessing-resources.mdx
@@ -1,6 +1,7 @@
---
title: Access resources in tests
-description: Learn how to access the resources from the Aspire AppHost in your tests.
+seoTitle: Access Aspire resources from integration tests using xUnit
+description: Resolve and inspect Aspire AppHost resources from your tests — connection strings, endpoints, HTTP clients, and service discovery URIs for integration scenarios.
---
import { Aside } from '@astrojs/starlight/components';
diff --git a/src/frontend/src/content/docs/testing/advanced-scenarios.mdx b/src/frontend/src/content/docs/testing/advanced-scenarios.mdx
index 0d88c6423..52fd7f033 100644
--- a/src/frontend/src/content/docs/testing/advanced-scenarios.mdx
+++ b/src/frontend/src/content/docs/testing/advanced-scenarios.mdx
@@ -1,6 +1,7 @@
---
title: Advanced testing scenarios
-description: Learn advanced patterns for using DistributedApplicationTestingBuilder, including selectively disabling resources, overriding environment variables, and customizing the test AppHost.
+seoTitle: Advanced Aspire integration testing scenarios for AppHost
+description: Advanced patterns for DistributedApplicationTestingBuilder — selectively disabling resources, overriding configuration, and authoring resilient Aspire integration tests.
---
import { Aside } from '@astrojs/starlight/components';
diff --git a/src/frontend/src/content/docs/testing/manage-app-host.mdx b/src/frontend/src/content/docs/testing/manage-app-host.mdx
index d1bfae9d7..e43a5c9cc 100644
--- a/src/frontend/src/content/docs/testing/manage-app-host.mdx
+++ b/src/frontend/src/content/docs/testing/manage-app-host.mdx
@@ -1,6 +1,7 @@
---
title: Manage the AppHost in tests
-description: Learn how to manage the AppHost in Aspire tests.
+seoTitle: Manage the Aspire AppHost lifecycle in integration tests
+description: Manage the Aspire AppHost lifecycle in your tests — start, dispose, and configure DistributedApplicationTestingBuilder for fast, repeatable integration runs.
---
import { Aside, Steps } from '@astrojs/starlight/components';
diff --git a/src/frontend/src/content/docs/testing/overview.mdx b/src/frontend/src/content/docs/testing/overview.mdx
index ea623d4d6..8fa306393 100644
--- a/src/frontend/src/content/docs/testing/overview.mdx
+++ b/src/frontend/src/content/docs/testing/overview.mdx
@@ -1,6 +1,7 @@
---
title: Testing overview
-description: Learn how to write integration tests for your Aspire applications using the Aspire.Hosting.Testing package.
+seoTitle: Aspire integration testing overview for distributed apps
+description: Write integration tests for your Aspire applications using the Aspire.Hosting.Testing package — spin up the AppHost, resolve resources, and verify end-to-end behavior.
---
import { Aside, Steps } from '@astrojs/starlight/components';
diff --git a/src/frontend/src/content/docs/testing/testing-in-ci.mdx b/src/frontend/src/content/docs/testing/testing-in-ci.mdx
index 33cdc4a41..51ac4d3c5 100644
--- a/src/frontend/src/content/docs/testing/testing-in-ci.mdx
+++ b/src/frontend/src/content/docs/testing/testing-in-ci.mdx
@@ -1,6 +1,7 @@
---
title: Testing in CI/CD pipelines
-description: Learn how to run Aspire integration tests reliably in CI/CD environments, such as GitHub Actions and Azure DevOps, covering timeout configuration, Azure authentication, and container requirements.
+seoTitle: Test Aspire AppHost projects in CI/CD pipelines with xUnit
+description: Run Aspire integration tests reliably in CI/CD — GitHub Actions, Azure DevOps, container runtimes, port allocation, and managing flaky distributed application tests.
---
import { Aside, Tabs, TabItem } from '@astrojs/starlight/components';
diff --git a/src/frontend/src/content/docs/testing/write-your-first-test.mdx b/src/frontend/src/content/docs/testing/write-your-first-test.mdx
index c8b2ef228..4c62a68e4 100644
--- a/src/frontend/src/content/docs/testing/write-your-first-test.mdx
+++ b/src/frontend/src/content/docs/testing/write-your-first-test.mdx
@@ -1,6 +1,7 @@
---
title: Write your first test
-description: Learn how to test your Aspire solutions using xUnit.net, NUnit, and MSTest testing frameworks.
+seoTitle: Write your first Aspire integration test with xUnit
+description: Test your Aspire solutions using xUnit.net, NUnit, or MSTest — wire up DistributedApplicationTestingBuilder, start the AppHost, and assert on resources from your tests.
---
import { Aside, Steps } from '@astrojs/starlight/components';
diff --git a/src/frontend/src/content/docs/tr/index.mdx b/src/frontend/src/content/docs/tr/index.mdx
index 922ddcedd..8b5b18015 100644
--- a/src/frontend/src/content/docs/tr/index.mdx
+++ b/src/frontend/src/content/docs/tr/index.mdx
@@ -11,7 +11,7 @@ prev: false
next: false
banner:
content: |
- 🚀 Aspire 13.3 yayınlandı! — Aspire 13.3'deki yeniliklere bakın.
+ 🚀 Aspire 13.4 yayınlandı! — Aspire 13.4'deki yeniliklere bakın.
hero:
tagline: Yığınınız basitleştirildi. Frontend'leri, API'leri, konteynerleri ve veritabanlarını zahmetsizce orkestre edin—yeniden yazma yok, sınır yok. Her projeyi güçlendirmek için Aspire'ı genişletin.
image:
diff --git a/src/frontend/src/content/docs/uk/index.mdx b/src/frontend/src/content/docs/uk/index.mdx
index 972b7a6e2..620584f46 100644
--- a/src/frontend/src/content/docs/uk/index.mdx
+++ b/src/frontend/src/content/docs/uk/index.mdx
@@ -11,7 +11,7 @@ prev: false
next: false
banner:
content: |
- 🚀 Aspire 13.3 випущено! — Що нового в Aspire 13.3.
+ 🚀 Aspire 13.4 випущено! — Що нового в Aspire 13.4.
hero:
tagline: Ваш стек спрощено. Оркеструйте фронтенди, API, контейнери та бази даних без зусиль—без переписування, без обмежень. Розширюйте Aspire для будь-якого проєкту.
image:
diff --git a/src/frontend/src/content/docs/whats-new/aspire-13-1.mdx b/src/frontend/src/content/docs/whats-new/aspire-13-1.mdx
index 356d0a833..d469d62a3 100644
--- a/src/frontend/src/content/docs/whats-new/aspire-13-1.mdx
+++ b/src/frontend/src/content/docs/whats-new/aspire-13-1.mdx
@@ -1,6 +1,6 @@
---
-title: What's new in Aspire 13.1
-description: Aspire 13.1 delivers comprehensive MCP support for AI coding agents, CLI enhancements with channel persistence, dashboard improvements, Azure Managed Redis, container registry support, and numerous bug fixes.
+title: "What's new in Aspire 13.1"
+description: "Explore Aspire 13.1: comprehensive MCP support for AI coding agents, CLI channel persistence, dashboard improvements, Azure Managed Redis, and container registry updates."
sidebar:
label: Aspire 13.1
order: 0
diff --git a/src/frontend/src/content/docs/whats-new/aspire-13-3.mdx b/src/frontend/src/content/docs/whats-new/aspire-13-3.mdx
index 5ab930c59..0d58b60f5 100644
--- a/src/frontend/src/content/docs/whats-new/aspire-13-3.mdx
+++ b/src/frontend/src/content/docs/whats-new/aspire-13-3.mdx
@@ -1,6 +1,6 @@
---
-title: What's new in Aspire 13.3
-description: Aspire 13.3 brings the new aspire destroy command, browser console log and screenshot capture in the dashboard, end-to-end Helm-based Kubernetes deployment via aspire deploy, JavaScript publishing for Next.js/Vite/SSR frameworks, the container tunnel enabled by default, deeper TypeScript AppHost parity, and a refreshed Azure integration suite.
+title: "What's new in Aspire 13.3"
+description: "Explore Aspire 13.3: aspire destroy, Helm-based Kubernetes deploy, browser screenshot capture, JavaScript publishing, default container tunnel, and Azure updates."
sidebar:
label: Aspire 13.3
order: 0
diff --git a/src/frontend/src/content/docs/whats-new/aspire-13-4.mdx b/src/frontend/src/content/docs/whats-new/aspire-13-4.mdx
new file mode 100644
index 000000000..a4e141137
--- /dev/null
+++ b/src/frontend/src/content/docs/whats-new/aspire-13-4.mdx
@@ -0,0 +1,386 @@
+---
+title: "What's new in Aspire 13.4"
+description: "Explore Aspire 13.4: GA TypeScript AppHost, richer Kubernetes and AKS deployment APIs, process resource commands, CLI integration discovery, and dashboard updates."
+sidebar:
+ label: Aspire 13.4
+ order: 0
+tableOfContents:
+ minHeadingLevel: 2
+ maxHeadingLevel: 2
+---
+
+import {
+ Steps,
+ Aside,
+ Icon,
+ Tabs,
+ TabItem,
+} from '@astrojs/starlight/components';
+import LearnMore from '@components/LearnMore.astro';
+import OsAwareTabs from '@components/OsAwareTabs.astro';
+
+Aspire 13.4 is here, with a release focused on broadening the app model and smoothing day-to-day operations — led by **TypeScript AppHost support reaching general availability**, a new set of **TypeScript samples**, **TypeScript documentation parity with C#**, expanded **Kubernetes and AKS deployment APIs**, **process-backed resource commands**, **integration discovery** from the CLI, server-side **log and telemetry search**, a dashboard **AI Agents** entry point, and a more capable Aspire extension for Visual Studio Code.
+
+We'd love to hear what you think. Drop by [ Discord](https://aka.ms/aspire-discord) to chat with the team and the community, or file feedback and issues on [ GitHub](https://github.com/microsoft/aspire/issues).
+
+This release introduces:
+
+- **TypeScript AppHost general availability** with stronger startup validation, more complete TypeScript SDK generation, new TypeScript samples, and documentation parity with C# AppHost examples.
+- **Kubernetes and AKS deployment improvements** including [cert-manager integration, Gateway API and Azure Application Gateway for Containers (AGC) support](/deployment/kubernetes/aks/#expose-your-app-to-the-internet), Kubernetes manifest resources, external Helm charts, and consolidated Helm chart configuration.
+- **Richer resource commands** with typed arguments, visibility controls, immediate result display, named CLI options, resource-scoped help, and the experimental `WithProcessCommand` API.
+- **CLI discoverability and diagnostics** with `aspire integration list`, `aspire integration search`, `--search` for logs and telemetry, version checks in `aspire doctor`, better logs output, and more consistent command error handling.
+- **Dashboard and editor updates** including the AI Agents dialog, resource state fixes, CodeLens actions that appear without opening the Aspire panel, and improved VS Code terminal/debug output integration.
+- **Integration updates** for NATS, Azure Front Door, Foundry hosted agents, and more.
+- …and much more.
+
+## 🆙 Upgrade to Aspire 13.4
+
+
+
+
+
+ Aspire 13.4 includes several breaking changes — most notably removal of the
+ experimental `aspire exec` command, consolidated Kubernetes Helm configuration
+ APIs, and Azure Front Door resource name-generation changes. Please review the
+ [Breaking changes](#breaking-changes) section before upgrading.
+
+
+
+ If you are on a version of the Aspire CLI less than 13, please use the
+ [installation instructions](/get-started/install-cli/) to install the latest
+ stable version.
+
+
+For general purpose upgrade guidance, see [Upgrade Aspire](/whats-new/upgrade-aspire/).
+
+The easiest way to upgrade to Aspire 13.4 is using the [`aspire update` command](/reference/cli/commands/aspire-update/):
+
+
+
+1. Update the Aspire CLI itself:
+
+ ```bash title="Aspire CLI — Update the CLI"
+ aspire update --self
+ ```
+
+1. Update your projects (run from the root of your repository):
+
+ ```bash title="Aspire CLI — Update all Aspire packages"
+ aspire update
+ ```
+
+
+
+Or install the CLI from scratch:
+
+
+
+
+ ```bash title="Aspire CLI — Install Aspire CLI"
+ curl -sSL https://aspire.dev/install.sh | bash
+ ```
+
+
+
+
+ ```powershell title="Aspire CLI — Install Aspire CLI"
+ irm https://aspire.dev/install.ps1 | iex
+ ```
+
+
+
+
+
+ For more details on installing the Aspire CLI, see [Install the
+ CLI](/get-started/install-cli/).
+
+
+## 🌐 TypeScript AppHost general availability
+
+TypeScript AppHost support is now generally available. You can author Aspire app models in `apphost.ts` as a first-class AppHost experience, with the same code-first orchestration model used by C# AppHosts and a generated TypeScript SDK for Aspire resources and integrations.
+
+Aspire 13.4 strengthens the TypeScript experience by validating TypeScript AppHosts before startup, so type-checking and compile errors fail early instead of surfacing after the application starts. The generated TypeScript SDK also includes fixes for name collisions, inherited resource type exports, Docker service config/secret/ulimit reference exports, exact-target export shadowing across integrations, and builder and callback generation.
+
+The documentation now treats TypeScript AppHosts as a first-class peer to C# AppHosts: AppHost-focused guides and integration pages include TypeScript examples alongside C# where the API is available. The release also adds a new set of TypeScript samples so you can start from working `apphost.ts` projects instead of translating from C#.
+
+
+ For setup details, see [TypeScript AppHosts](/app-host/typescript-apphost/).
+ To explore working examples, browse the [Aspire samples](/reference/samples/).
+
+
+## 🛠️ CLI enhancements
+
+### Discover integrations from the CLI
+
+The new `aspire integration` command group helps you find available Aspire hosting integrations without modifying an AppHost project. Use `aspire integration list` to browse all integrations or `aspire integration search` to search by keyword.
+
+```bash title="Aspire CLI — Search integrations"
+aspire integration list
+aspire integration search redis
+```
+
+After you find the integration you need, use [`aspire add`](/reference/cli/commands/aspire-add/) to add it to your AppHost.
+
+### Search logs and telemetry
+
+`aspire logs` and the `aspire otel` commands now support `--search`, so you can filter logs and telemetry by keyword directly from the CLI. For console logs, Aspire searches the log message text and resource prefix. For structured logs, Aspire searches the message, attributes, scope name, event name, trace and span IDs, severity, and resource name. For spans and traces, Aspire searches span names, trace and span IDs, attributes, status, kind, scope, events, resource names, and trace names. Search, tail, and resource filters are applied before data is streamed back to the CLI, which keeps large log streams responsive.
+
+```bash title="Aspire CLI — Search logs"
+aspire logs --search "failed"
+aspire otel logs --search "checkout"
+aspire otel traces --search "POST /orders"
+```
+
+
+ See [`aspire logs`](/reference/cli/commands/aspire-logs/) and [`aspire otel
+ logs`](/reference/cli/commands/aspire-otel-logs/) for telemetry CLI usage.
+
+
+### Better environment diagnostics
+
+[`aspire doctor`](/reference/cli/commands/aspire-doctor/) now reports the current Aspire CLI version, shows an update notice when a newer version is available, and reports the AppHost SDK version when an AppHost is detected. This makes CLI/SDK version mismatches easier to spot before they become restore or runtime issues.
+
+### Resource command CLI improvements
+
+Resource command inputs are now passed as named CLI options instead of positional arguments. This makes optional inputs easier to skip and lets users supply values in any order. Running `aspire resource --help` also shows the commands available for that specific resource.
+
+```bash title="Aspire CLI — Resource command arguments"
+aspire resource cache seed-data --dataset small --force true
+aspire resource cache --help
+```
+
+
+ For more information, see [`aspire
+ resource`](/reference/cli/commands/aspire-resource/).
+
+
+### CLI quality-of-life
+
+Aspire 13.4 includes a set of smaller CLI improvements and fixes:
+
+- CLI commands now use centralized error and cancellation handling, so cancellation and help output are quieter and more consistent.
+- `aspire logs` dims timestamps for readability and shows `No logs found.` when there are no entries, while preserving JSON output for automation.
+- Log file paths in CLI output are clickable terminal links when the terminal supports hyperlinks and degrade gracefully to plain text otherwise.
+- Package-manager installs such as WinGet, Homebrew, and `dotnet tool` keep the CLI bundle beside the CLI binary, so uninstall and upgrade flows clean up the bundle correctly.
+- `aspire update` now requires `--yes` in non-interactive mode, matching `aspire destroy`.
+- `aspire stop --all` output includes the AppHost name and, when needed, the PID for clearer multi-instance shutdown output.
+- `aspire new`, `aspire init`, `aspire run`, and `aspire update` include fixes for NuGet feed errors, output paths, generated files, disabled dashboards, detached shutdown, and AppHost package-reference cleanup.
+
+## 🧩 App model and AppHost
+
+### Resource command arguments, visibility, and results
+
+Custom resource commands can now declare typed input arguments with labels, descriptions, default values, required-state metadata, allowed values, and custom validation. Commands can also control where they appear with `ResourceCommandVisibility`, so you can expose a command to the dashboard UI, automation APIs and MCP tools, both, or neither.
+
+Command results can be configured to display immediately in the dashboard, making interactive commands easier to use when they return structured output or captured text.
+
+
+ For the full API surface, see [Custom resource
+ commands](/fundamentals/custom-resource-commands/).
+
+
+### Process-backed resource commands
+
+Aspire 13.4 adds the experimental `WithProcessCommand` API for exposing local tools, scripts, and CLIs as resource commands. The helper starts a process on the AppHost machine, passes arguments without going through a shell, streams stdout and stderr to the command logger, captures bounded output, and maps process exit codes to resource command results.
+
+
+ `WithProcessCommand`, `ProcessCommandSpec`, and `ProcessCommandOptions` are
+ experimental APIs. C# callers must suppress
+ [`ASPIREPROCESSCOMMAND001`](/diagnostics/aspireprocesscommand001/) to use
+ them.
+
+
+
+
+
+```csharp title="AppHost.cs"
+#pragma warning disable ASPIREPROCESSCOMMAND001
+
+var builder = DistributedApplication.CreateBuilder(args);
+
+builder.AddRedis("cache")
+ .WithProcessCommand(
+ name: "dotnet-version",
+ displayName: "Show .NET version",
+ executablePath: "dotnet",
+ arguments: ["--version"]);
+
+builder.Build().Run();
+```
+
+
+
+
+```typescript title="apphost.ts"
+import { createBuilder } from './.modules/aspire.js';
+
+const builder = await createBuilder();
+
+const cache = await builder.addRedis('cache');
+
+await cache.withProcessCommand('node-version', 'Show Node.js version', {
+ executablePath: 'node',
+ arguments: ['--version'],
+});
+
+await builder.build().run();
+```
+
+
+
+
+
+ For static commands, dynamic process specs, stdin, environment variables, and
+ result options, see [Process-backed resource
+ commands](/fundamentals/custom-resource-commands/#process-backed-resource-commands).
+
+
+### AppHost and runtime reliability
+
+Aspire 13.4 also improves the AppHost runtime:
+
+- The active container runtime (Docker or Podman) is propagated to project image builds through `PublishContainer`, keeping project builds aligned with the runtime used for container resources.
+- YARP endpoint resolution is deferred until environment configuration generation, so late endpoint scheme changes are reflected in generated proxy configuration.
+- Container resources can no longer use the reserved name `aspire`, which avoids conflicts with the container tunnel.
+- Container tunnel errors include more diagnostic detail, and a startup deadlock for tunnel-dependent containers has been fixed.
+- Foundry hosted agents validate environment variable names up front, avoiding deploy-time failures caused by unsupported characters.
+- `AzureRoleAssignmentResource` is now public so deployment pipeline code can inspect Azure role assignments.
+
+### Aspire CLI bundle opt-in for C# AppHosts
+
+C# AppHost projects can opt in to using the installed Aspire CLI bundle as the source for DCP and Dashboard orchestration dependencies by setting `true `. This is a preview transition path for the upcoming shift where AppHost orchestration dependencies come from the CLI bundle by default, instead of being restored from platform-specific NuGet packages per AppHost project.
+
+
+ For setup details, see [Use the Aspire CLI bundle for orchestration
+ dependencies](/get-started/aspire-sdk/#use-the-aspire-cli-bundle-for-orchestration-dependencies)
+ in the Aspire SDK documentation.
+
+
+## 🚢 Kubernetes, AKS, and Azure deployment
+
+### Cert-manager, Gateway API, and AGC support
+
+Kubernetes and AKS deployment continue to expand in 13.4. Kubernetes environments can now model cert-manager resources through typed APIs, including cert-manager installation, ClusterIssuers backed by Let's Encrypt or custom ACME servers, and TLS wiring for gateways.
+
+For AKS, `AddAzureKubernetesEnvironment` now wires Azure Application Gateway for Containers (AGC) into the deployment flow. When `AddLoadBalancer(...)` is used, Aspire provisions the AGC ingress profile on AKS, assigns the required Network Contributor role to the controller identity, and exposes Gateway API routing for the application.
+
+
+ For a complete walkthrough including custom domains, see [Deploy to AKS — Expose your app to the internet](/deployment/kubernetes/aks/#expose-your-app-to-the-internet).
+
+
+### Kubernetes manifests and external Helm charts
+
+Aspire 13.4 adds a Kubernetes manifest resource API for arbitrary manifests and an `AddHelmChart` API for installing external Helm charts as deployment pipeline steps. These APIs make it possible to include Kubernetes-native resources, ingress controllers, monitoring stacks, and other third-party charts alongside the resources generated from your Aspire application model.
+
+### Consolidated Helm chart configuration
+
+Helm chart name, version, description, release name, and namespace are now configured through the `WithHelm(...)` extension method. This replaces the previous parallel property-based configuration surface on `KubernetesEnvironmentResource` with one fluent entry point.
+
+
+ For examples of `WithHelm(...)`, see the [Kubernetes
+ integration](/integrations/compute/kubernetes/#configure-helm-chart-options).
+
+
+## 📊 Dashboard improvements
+
+### AI Agents dialog
+
+The dashboard header now includes an **AI Agents** dialog with guidance for connecting AI coding agents to your Aspire app. This builds on the Aspire CLI and MCP server workflow where agents can query resource status, structured logs, console logs, traces, and other dashboard data while they work in your codebase.
+
+Administrators can hide the header button with the `Dashboard:UI:DisableAgentHelp` setting.
+
+
+ For the agent workflow, see [Dashboard and AI coding
+ agents](/dashboard/ai-coding-agents/). For the dashboard setting, see
+ [Dashboard configuration](/dashboard/configuration/).
+
+
+### Dashboard fixes
+
+Dashboard fixes in this release include:
+
+- `!=` and `not contains` filters on the Traces page now return the expected results.
+- Static web assets are served correctly when running the dashboard from source outside the `Development` environment.
+- The resource details panel now displays an `Unknown` state consistently when a resource has no state.
+- Containers in `FailedToStart` state now show a more accurate state detail instead of suggesting the container previously ran.
+
+## 🧰 VS Code extension
+
+The Aspire extension for Visual Studio Code now shows AppHost CodeLens actions directly in the editor without requiring the Aspire panel to be open. In addition to **Run**, **Stop**, and **Restart**, new **Open Dashboard** and **View Logs** CodeLens actions make common AppHost operations available where you're editing code.
+
+The extension also uses VS Code terminal shell integration when sending Aspire CLI commands to the Aspire terminal, forwards debug adapter output to dashboard logs, shows AppHost errors in the debug console, reduces TypeScript and C# AppHost debug-console noise, disables automatic `dotnet restore` on startup by default, and fixes a sticky **Finding apphosts** notification.
+
+
+ Learn more about the [Aspire Visual Studio Code
+ extension](/get-started/aspire-vscode-extension/).
+
+
+## 📦 Integration updates
+
+### Azure Front Door naming
+
+Azure Front Door CDN resources now use Azure.Provisioning's built-in name-generation algorithm instead of Aspire's custom logic. This removes Aspire's manual name-length cap and aligns generated resource names with Azure.Provisioning behavior.
+
+
+ Upgrading from Aspire 13.3 can produce duplicate Front Door endpoint, origin
+ group, or route names in existing deployments. Remove and re-add the affected
+ resource, or set the resource `Name` explicitly with
+ `ConfigureInfrastructure`, to avoid conflicts.
+
+
+
+ For Front Door setup, see the [Azure Front Door
+ integration](/integrations/cloud/azure/azure-front-door/).
+
+
+### NATS client updates
+
+`AddNatsClient` now also registers `INatsClient` and defaults the serializer registry to `NatsClientDefaultSerializerRegistry`. This enables typed publish/subscribe scenarios without requiring explicit serializer configuration. User-provided serializer registries still take precedence, and primitive/raw byte scenarios are unaffected.
+
+
+ For client setup, see [Connect to
+ NATS](/integrations/messaging/nats/nats-connect/).
+
+
+### Foundry fixes
+
+Azure AI Foundry hosted agents also include deployment fixes: project endpoints now use the correct `customSubDomainName` format, the Foundry-created agent identity receives the Cognitive Services User role automatically, and the app identity is no longer incorrectly injected into the hosted-agent environment.
+
+## 🐛 Bug fixes and full changelog
+
+For the complete list of bug fixes and smaller changes in this release, see the [Aspire 13.4 release notes on GitHub](https://github.com/microsoft/aspire/releases/tag/v13.4.0).
+
+## 🙏 Community contributions
+
+Aspire is built in the open, and this release wouldn't be what it is without you. A huge thank you to all community contributors who helped make Aspire 13.4 possible — including [@mtmk](https://github.com/mtmk) for the NATS client update, [@ellahathaway](https://github.com/ellahathaway) for friendlier `aspire new` NuGet feed errors, [@Bertolossi](https://github.com/Bertolossi) for fixing an `aspire run` watch-mode hang, and [@arpitjain099](https://github.com/arpitjain099) for CI permission hardening. We're always excited to [see community contributions](/community/contributors/)! If you'd like to get involved, check out our [contributing guide](/community/contributor-guide/).
+
+## ⚠️ Breaking changes
+
+
+
+| Change | Migration |
+| ---------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
+| The experimental `aspire exec` command was removed. | Remove scripts or workflows that call `aspire exec`. For resource-specific actions, use [`aspire resource`](/reference/cli/commands/aspire-resource/) when the resource exposes a command. |
+| Kubernetes Helm chart settings moved to `WithHelm(...)`. | Replace property-based configuration on `KubernetesEnvironmentResource` with the `WithHelm(...)` fluent builder. |
+| Azure Front Door CDN resources use Azure.Provisioning name generation. | If an upgrade produces duplicate endpoint, origin group, or route names, remove and re-add the affected resource or set `Name` explicitly with `ConfigureInfrastructure`. |
+
+### Behavior changes to audit
+
+- `aspire update` now requires `--yes` in non-interactive mode.
+- Resource command arguments are named options in the CLI instead of positional values.
+- TypeScript AppHosts are validated before startup, so invalid TypeScript fails earlier.
+
+### Migration from Aspire 13.3 to 13.4
+
+
+
+1. **Update the CLI** — run `aspire update --self`.
+2. **Update your projects** — run `aspire update` from the root of your repository.
+3. **Run `aspire doctor`** to check your environment setup.
+4. **Audit scripts and CI** for `aspire exec` and non-interactive `aspire update` calls.
+5. **Update Kubernetes Helm configuration** to use `WithHelm(...)` if your AppHost set Helm chart properties directly.
+6. **Review Azure Front Door deployments** and set explicit names if existing resources conflict with Azure.Provisioning name generation.
+
+
+
+**Build something amazing.** We'd love to hear about your experience with Aspire 13.4 — share what you're building on [GitHub](https://github.com/microsoft/aspire/issues) or come hang out with us on [Discord](https://aka.ms/aspire-discord).
diff --git a/src/frontend/src/content/docs/whats-new/aspire-13.mdx b/src/frontend/src/content/docs/whats-new/aspire-13.mdx
index 25eeb18f5..8f6aabdcf 100644
--- a/src/frontend/src/content/docs/whats-new/aspire-13.mdx
+++ b/src/frontend/src/content/docs/whats-new/aspire-13.mdx
@@ -1,6 +1,6 @@
---
-title: What's new in Aspire 13
-description: Aspire 13.0 introduces multi-language application development with first-class Python and JavaScript support, container-based builds, aspire do pipelines, VS Code extension, and modern CLI tooling updates and improvements.
+title: "What's new in Aspire 13"
+description: "Explore Aspire 13.0: multi-language app development with first-class Python and JavaScript support, container-based builds, aspire do pipelines, and VS Code extension."
sidebar:
label: Aspire 13.0
order: 2
diff --git a/src/frontend/src/content/docs/whats-new/aspire-9-1.mdx b/src/frontend/src/content/docs/whats-new/aspire-9-1.mdx
index 59256a802..3434fe130 100644
--- a/src/frontend/src/content/docs/whats-new/aspire-9-1.mdx
+++ b/src/frontend/src/content/docs/whats-new/aspire-9-1.mdx
@@ -1,6 +1,6 @@
---
-title: Aspire 9.1
-description: Learn what's new in Aspire 9.1.
+title: "What's new in Aspire 9.1"
+description: "Explore Aspire 9.1: parent and child resource grouping, dashboard language picker, telemetry filtering, console log downloads, and resource detail enhancements."
tableOfContents:
maxHeadingLevel: 2
publishDate: 2025-02-25
diff --git a/src/frontend/src/content/docs/whats-new/aspire-9-2.mdx b/src/frontend/src/content/docs/whats-new/aspire-9-2.mdx
index f4ebc3ad7..6c99bfb9e 100644
--- a/src/frontend/src/content/docs/whats-new/aspire-9-2.mdx
+++ b/src/frontend/src/content/docs/whats-new/aspire-9-2.mdx
@@ -1,6 +1,6 @@
---
-title: Aspire 9.2
-description: Learn what's new in the official general availability release of Aspire 9.2.
+title: "What's new in Aspire 9.2"
+description: "Explore Aspire 9.2: dashboard cardinality limits, UTC console logs, telemetry pause, resource icons, and broader app-host and integrations updates across the stack."
tableOfContents:
maxHeadingLevel: 2
publishDate: 2025-04-10
diff --git a/src/frontend/src/content/docs/whats-new/aspire-9-3.mdx b/src/frontend/src/content/docs/whats-new/aspire-9-3.mdx
index bb4f42685..42578b971 100644
--- a/src/frontend/src/content/docs/whats-new/aspire-9-3.mdx
+++ b/src/frontend/src/content/docs/whats-new/aspire-9-3.mdx
@@ -1,6 +1,6 @@
---
-title: What's new in Aspire 9.3
-description: Learn what's new in the official general availability release of Aspire 9.3.
+title: "What's new in Aspire 9.3"
+description: "Explore Aspire 9.3: GitHub Copilot in the dashboard, dashboard context menu, metric warnings, traces for uninstrumented resources, and dashboard filtering updates."
tableOfContents:
maxHeadingLevel: 2
publishDate: 2025-05-19
diff --git a/src/frontend/src/content/docs/whats-new/aspire-9-4.mdx b/src/frontend/src/content/docs/whats-new/aspire-9-4.mdx
index 2e7633268..f508370b3 100644
--- a/src/frontend/src/content/docs/whats-new/aspire-9-4.mdx
+++ b/src/frontend/src/content/docs/whats-new/aspire-9-4.mdx
@@ -1,6 +1,6 @@
---
-title: What's new in Aspire 9.4
-description: Learn what's new in the official general availability release of Aspire 9.4.
+title: "What's new in Aspire 9.4"
+description: "Explore Aspire 9.4: dashboard interaction service, hidden resources, connection-string display, tracing peers, console log wrapping, and parameter authoring updates."
tableOfContents:
maxHeadingLevel: 2
publishDate: 2025-07-29
diff --git a/src/frontend/src/content/docs/whats-new/aspire-9-5.mdx b/src/frontend/src/content/docs/whats-new/aspire-9-5.mdx
index 684ad2aa1..f2d3200ec 100644
--- a/src/frontend/src/content/docs/whats-new/aspire-9-5.mdx
+++ b/src/frontend/src/content/docs/whats-new/aspire-9-5.mdx
@@ -1,6 +1,6 @@
---
-title: What's new in Aspire 9.5
-description: Learn what's new in Aspire 9.5.
+title: "What's new in Aspire 9.5"
+description: "Explore Aspire 9.5: combined console logs view, GenAI trace visualizer, trace details, aspire update, richer property grids, and a refreshed dashboard."
tableOfContents:
maxHeadingLevel: 2
publishDate: 2025-09-25
diff --git a/src/frontend/src/content/docs/whats-new/aspire-9.mdx b/src/frontend/src/content/docs/whats-new/aspire-9.mdx
index 5eff71a40..bf6115ed7 100644
--- a/src/frontend/src/content/docs/whats-new/aspire-9.mdx
+++ b/src/frontend/src/content/docs/whats-new/aspire-9.mdx
@@ -1,6 +1,6 @@
---
-title: Aspire 9.0
-description: Learn what's new in Aspire 9.0.
+title: "What's new in Aspire 9.0"
+description: "Explore Aspire 9.0: ANSI console log formatting, browser telemetry, waiting-for-resource health gates, persistent containers, Redis Insight, and Azure Functions support."
tableOfContents:
maxHeadingLevel: 2
publishDate: 2024-11-12
diff --git a/src/frontend/src/content/docs/whats-new/upgrade-aspire.mdx b/src/frontend/src/content/docs/whats-new/upgrade-aspire.mdx
index ee09ffefa..0d9b8b647 100644
--- a/src/frontend/src/content/docs/whats-new/upgrade-aspire.mdx
+++ b/src/frontend/src/content/docs/whats-new/upgrade-aspire.mdx
@@ -1,6 +1,6 @@
---
-title: Upgrade Aspire
-description: Learn how to upgrade an Aspire app to the latest version.
+title: Upgrade Aspire to the latest version
+description: "Learn how to upgrade an existing Aspire app: update the Aspire CLI, run aspire update, refresh NuGet packages, and review breaking changes for each release."
---
import { Aside, Steps } from '@astrojs/starlight/components';
diff --git a/src/frontend/src/content/docs/zh-cn/index.mdx b/src/frontend/src/content/docs/zh-cn/index.mdx
index c25a097c8..224834e46 100644
--- a/src/frontend/src/content/docs/zh-cn/index.mdx
+++ b/src/frontend/src/content/docs/zh-cn/index.mdx
@@ -11,7 +11,7 @@ prev: false
next: false
banner:
content: |
- 🚀 Aspire 13.3 已发布! — 查看 Aspire 13.3 的新功能。
+ 🚀 Aspire 13.4 已发布! — 查看 Aspire 13.4 的新功能。
hero:
tagline: 精简你的技术栈。轻松编排前端、API、容器和数据库—无需重写,无限可能。扩展 Aspire 为任何项目赋能。
image:
diff --git a/src/frontend/src/data/aspire-integration-names.json b/src/frontend/src/data/aspire-integration-names.json
index 098d801bf..1b19fbcf1 100644
--- a/src/frontend/src/data/aspire-integration-names.json
+++ b/src/frontend/src/data/aspire-integration-names.json
@@ -40,6 +40,7 @@
"Aspire.Hosting.Elasticsearch",
"Aspire.Hosting.Garnet",
"Aspire.Hosting.GitHub.Models",
+ "Aspire.Hosting.Go",
"Aspire.Hosting.JavaScript",
"Aspire.Hosting.Kafka",
"Aspire.Hosting.Keycloak",
@@ -137,4 +138,4 @@
"CommunityToolkit.Aspire.OllamaSharp",
"CommunityToolkit.Aspire.RavenDB.Client",
"CommunityToolkit.Aspire.SurrealDb"
-]
\ No newline at end of file
+]
diff --git a/src/frontend/src/data/integration-docs.json b/src/frontend/src/data/integration-docs.json
index b6cb5330d..1905ae9c6 100644
--- a/src/frontend/src/data/integration-docs.json
+++ b/src/frontend/src/data/integration-docs.json
@@ -179,6 +179,10 @@
"match": "Aspire.Hosting.GitHub.Models",
"href": "/integrations/ai/github-models/github-models-get-started/"
},
+ {
+ "match": "Aspire.Hosting.Go",
+ "href": "/integrations/frameworks/go/go-get-started/"
+ },
{
"match": "Aspire.Hosting.JavaScript",
"href": "/integrations/frameworks/javascript/"
@@ -407,10 +411,6 @@
"match": "CommunityToolkit.Aspire.Hosting.GoFeatureFlag",
"href": "/integrations/devtools/goff/"
},
- {
- "match": "CommunityToolkit.Aspire.Hosting.Golang",
- "href": "/integrations/frameworks/go-apps/"
- },
{
"match": "CommunityToolkit.Aspire.Hosting.Java",
"href": "/integrations/frameworks/java/"
diff --git a/src/frontend/src/data/ts-modules/Aspire.Hosting.13.3.0.json b/src/frontend/src/data/ts-modules/Aspire.Hosting.13.3.0.json
index 5a1728840..af891b6b0 100644
--- a/src/frontend/src/data/ts-modules/Aspire.Hosting.13.3.0.json
+++ b/src/frontend/src/data/ts-modules/Aspire.Hosting.13.3.0.json
@@ -35,17 +35,20 @@
"name": "addContainer",
"capabilityId": "Aspire.Hosting/addContainer",
"qualifiedName": "addContainer",
- "description": "Adds a container resource",
+ "description": "Adds a container resource to the application.",
+ "returns": "The `IResourceBuilder`1` for chaining.",
"kind": "Method",
"signature": "addContainer(name: string, image: AddContainerOptions): ContainerResource",
"parameters": [
{
"name": "name",
- "type": "string"
+ "type": "string",
+ "description": "The name of the resource."
},
{
"name": "image",
- "type": "AddContainerOptions"
+ "type": "AddContainerOptions",
+ "description": "The image name or image options for the container."
}
],
"returnType": "ContainerResource",
@@ -169,27 +172,33 @@
"name": "addDockerfile",
"capabilityId": "Aspire.Hosting/addDockerfile",
"qualifiedName": "addDockerfile",
- "description": "Adds a container resource built from a Dockerfile",
+ "description": "Adds a Dockerfile to the application model that can be treated like a container resource.",
+ "remarks": "The `contextPath` is relative to the AppHost directory unless it is a fully qualified path.\nThe `dockerfilePath` is relative to the `contextPath` unless it is a fully qualified path.\nIf the `dockerfilePath` is not provided, it defaults to \"Dockerfile\" in the `contextPath`.\nWhen generating the manifest for deployment tools, the `AddDockerfile`\nmethod results in an additional attribute being added to the `container.v1` resource type which contains the configuration\nnecessary to allow the deployment tool to build the container image prior to deployment.\nCreates a container called `mycontainer` based on a Dockerfile in the context path `path/to/context`.\n```\nvar builder = DistributedApplication.CreateBuilder(args);\nbuilder.AddDockerfile(\"mycontainer\", \"path/to/context\");\nbuilder.Build().Run();\n```",
+ "returns": "A `IResourceBuilder`1`.",
"kind": "Method",
"signature": "addDockerfile(name: string, contextPath: string, dockerfilePath?: string, stage?: string): ContainerResource",
"parameters": [
{
"name": "name",
- "type": "string"
+ "type": "string",
+ "description": "The name of the resource."
},
{
"name": "contextPath",
- "type": "string"
+ "type": "string",
+ "description": "Path to be used as the context for the container image build."
},
{
"name": "dockerfilePath",
"type": "string",
- "isOptional": true
+ "isOptional": true,
+ "description": "Path to the Dockerfile relative to the `contextPath`. Defaults to \"Dockerfile\" if not specified."
},
{
"name": "stage",
"type": "string",
- "isOptional": true
+ "isOptional": true,
+ "description": "The stage representing the image to be published in a multi-stage Dockerfile."
}
],
"returnType": "ContainerResource",
@@ -203,28 +212,34 @@
"name": "addDockerfileBuilder",
"capabilityId": "Aspire.Hosting/addDockerfileBuilder",
"qualifiedName": "addDockerfileBuilder",
- "description": "Adds a container resource built from a programmatically generated Dockerfile",
+ "description": "Adds a Dockerfile to the application model that can be treated like a container resource, with the Dockerfile generated programmatically using the `DockerfileBuilder` API.",
+ "remarks": "This method provides a programmatic way to build Dockerfiles using the `DockerfileBuilder` API\ninstead of string manipulation.\nThe `contextPath` is relative to the AppHost directory unless it is fully qualified.\nCreates a container with a programmatically built Dockerfile:\n```\nvar builder = DistributedApplication.CreateBuilder(args);\nbuilder.AddDockerfileBuilder(\"mycontainer\", \"path/to/context\", context =>\n{\ncontext.Builder.From(\"alpine:latest\")\n.WorkDir(\"/app\")\n.Copy(\".\", \".\")\n.Cmd([\"./myapp\"]);\nreturn Task.CompletedTask;\n});\nbuilder.Build().Run();\n```",
+ "returns": "A `IResourceBuilder`1`.",
"kind": "Method",
- "signature": "addDockerfileBuilder(name: string, contextPath: string, callback: (arg: DockerfileBuilderCallbackContext) =\u003E Promise\u003Cvoid\u003E, stage?: string): ContainerResource",
+ "signature": "addDockerfileBuilder(name: string, contextPath: string, callback: (arg: DockerfileBuilderCallbackContext) => Promise, stage?: string): ContainerResource",
"parameters": [
{
"name": "name",
- "type": "string"
+ "type": "string",
+ "description": "The name of the resource."
},
{
"name": "contextPath",
- "type": "string"
+ "type": "string",
+ "description": "Path to be used as the context for the container image build."
},
{
"name": "callback",
"type": "callback",
"isCallback": true,
- "callbackSignature": "(arg: DockerfileBuilderCallbackContext) =\u003E Promise\u003Cvoid\u003E"
+ "callbackSignature": "(arg: DockerfileBuilderCallbackContext) => Promise",
+ "description": "A callback that uses the `DockerfileBuilder` API to construct the Dockerfile."
},
{
"name": "stage",
"type": "string",
- "isOptional": true
+ "isOptional": true,
+ "description": "The stage representing the image to be published in a multi-stage Dockerfile."
}
],
"returnType": "ContainerResource",
@@ -238,17 +253,20 @@
"name": "addDotnetTool",
"capabilityId": "Aspire.Hosting/addDotnetTool",
"qualifiedName": "addDotnetTool",
- "description": "Adds a .NET tool resource",
+ "description": "Adds a .NET tool resource to the application model.",
+ "returns": "The `IResourceBuilder`1`.",
"kind": "Method",
"signature": "addDotnetTool(name: string, packageId: string): DotnetToolResource",
"parameters": [
{
"name": "name",
- "type": "string"
+ "type": "string",
+ "description": "The name of the resource."
},
{
"name": "packageId",
- "type": "string"
+ "type": "string",
+ "description": "The package id of the tool."
}
],
"returnType": "DotnetToolResource",
@@ -262,15 +280,16 @@
"name": "addEventingSubscriber",
"capabilityId": "Aspire.Hosting/addEventingSubscriber",
"qualifiedName": "addEventingSubscriber",
- "description": "Adds an eventing subscriber",
+ "description": "Adds an ATS-friendly eventing subscriber callback to the distributed-application builder.",
"kind": "Method",
- "signature": "addEventingSubscriber(subscribe: (arg: EventingSubscriberRegistrationContext) =\u003E Promise\u003Cvoid\u003E): void",
+ "signature": "addEventingSubscriber(subscribe: (arg: EventingSubscriberRegistrationContext) => Promise): void",
"parameters": [
{
"name": "subscribe",
"type": "callback",
"isCallback": true,
- "callbackSignature": "(arg: EventingSubscriberRegistrationContext) =\u003E Promise\u003Cvoid\u003E"
+ "callbackSignature": "(arg: EventingSubscriberRegistrationContext) => Promise",
+ "description": "The callback that registers the event subscriptions."
}
],
"returnType": "void",
@@ -283,25 +302,31 @@
"name": "addExecutable",
"capabilityId": "Aspire.Hosting/addExecutable",
"qualifiedName": "addExecutable",
- "description": "Adds an executable resource",
+ "description": "Adds an executable resource to the application model.",
+ "remarks": "You can run any executable command using its full path.\nAs a security feature, Aspire doesn't run executable unless the command is located in a path listed in the PATH environment variable.\nTo run an executable file that's in the current directory, specify the full path or use the relative path `./` to represent the current directory.",
+ "returns": "The `IResourceBuilder`1`.",
"kind": "Method",
"signature": "addExecutable(name: string, command: string, workingDirectory: string, args: string[]): ExecutableResource",
"parameters": [
{
"name": "name",
- "type": "string"
+ "type": "string",
+ "description": "The name of the resource."
},
{
"name": "command",
- "type": "string"
+ "type": "string",
+ "description": "The executable path. This can be a fully qualified path or a executable to run from the shell/command line."
},
{
"name": "workingDirectory",
- "type": "string"
+ "type": "string",
+ "description": "The working directory of the executable."
},
{
"name": "args",
- "type": "string[]"
+ "type": "string[]",
+ "description": "The arguments to the executable."
}
],
"returnType": "ExecutableResource",
@@ -339,17 +364,19 @@
"name": "addMarkdown",
"capabilityId": "Aspire.Hosting/addMarkdown",
"qualifiedName": "addMarkdown",
- "description": "Adds a Markdown-formatted value to the pipeline summary",
+ "description": "Adds a key-value pair to the pipeline summary with a Markdown-formatted value.",
"kind": "Method",
"signature": "addMarkdown(key: string, markdownString: string): void",
"parameters": [
{
"name": "key",
- "type": "string"
+ "type": "string",
+ "description": "The key or label for the item."
},
{
"name": "markdownString",
- "type": "string"
+ "type": "string",
+ "description": "The Markdown-formatted value for the item."
}
],
"returnType": "void",
@@ -399,23 +426,27 @@
"name": "addParameterFromConfiguration",
"capabilityId": "Aspire.Hosting/addParameterFromConfiguration",
"qualifiedName": "addParameterFromConfiguration",
- "description": "Adds a parameter sourced from configuration",
+ "description": "Adds a parameter resource to the application, with a value coming from configuration.",
+ "returns": "Resource builder for the parameter.",
"kind": "Method",
"signature": "addParameterFromConfiguration(name: string, configurationKey: string, secret?: boolean): ParameterResource",
"parameters": [
{
"name": "name",
- "type": "string"
+ "type": "string",
+ "description": "Name of parameter resource"
},
{
"name": "configurationKey",
- "type": "string"
+ "type": "string",
+ "description": "Configuration key used to get the value of the parameter"
},
{
"name": "secret",
"type": "boolean",
"isOptional": true,
- "defaultValue": "False"
+ "defaultValue": "False",
+ "description": "Optional flag indicating whether the parameter should be regarded as secret."
}
],
"returnType": "ParameterResource",
@@ -494,29 +525,33 @@
"name": "addStep",
"capabilityId": "Aspire.Hosting/addStep",
"qualifiedName": "addStep",
- "description": "Adds a pipeline step to the application",
+ "description": "Adds an application-level pipeline step in a TypeScript-friendly shape.",
"kind": "Method",
- "signature": "addStep(stepName: string, callback: (arg: PipelineStepContext) =\u003E Promise\u003Cvoid\u003E, dependsOn?: string[], requiredBy?: string[]): void",
+ "signature": "addStep(stepName: string, callback: (arg: PipelineStepContext) => Promise, dependsOn?: string[], requiredBy?: string[]): void",
"parameters": [
{
"name": "stepName",
- "type": "string"
+ "type": "string",
+ "description": "The unique name of the pipeline step."
},
{
"name": "callback",
"type": "callback",
"isCallback": true,
- "callbackSignature": "(arg: PipelineStepContext) =\u003E Promise\u003Cvoid\u003E"
+ "callbackSignature": "(arg: PipelineStepContext) => Promise",
+ "description": "The callback to execute when the step runs."
},
{
"name": "dependsOn",
"type": "string[]",
- "isOptional": true
+ "isOptional": true,
+ "description": "Optional step names that this step depends on."
},
{
"name": "requiredBy",
"type": "string[]",
- "isOptional": true
+ "isOptional": true,
+ "description": "Optional step names that require this step."
}
],
"returnType": "void",
@@ -529,7 +564,7 @@
"name": "model",
"capabilityId": "Aspire.Hosting.ApplicationModel/AfterResourcesCreatedEvent.model",
"qualifiedName": "AfterResourcesCreatedEvent.model",
- "description": "Gets the Model property",
+ "description": "The `DistributedApplicationModel` instance.",
"kind": "PropertyGetter",
"signature": "model(): DistributedApplicationModel",
"parameters": [],
@@ -543,7 +578,7 @@
"name": "services",
"capabilityId": "Aspire.Hosting.ApplicationModel/AfterResourcesCreatedEvent.services",
"qualifiedName": "AfterResourcesCreatedEvent.services",
- "description": "Gets the Services property",
+ "description": "The `IServiceProvider` instance.",
"kind": "PropertyGetter",
"signature": "services(): IServiceProvider",
"parameters": [],
@@ -605,7 +640,8 @@
"name": "asHttp2Service",
"capabilityId": "Aspire.Hosting/asHttp2Service",
"qualifiedName": "asHttp2Service",
- "description": "Configures resource for HTTP/2",
+ "description": "Configures a resource to mark all endpoints' transport as HTTP/2. This is useful for HTTP/2 services that need prior knowledge.",
+ "returns": "The `IResourceBuilder`1`.",
"kind": "Method",
"signature": "asHttp2Service(): IResourceWithEndpoints",
"parameters": [],
@@ -652,7 +688,7 @@
"name": "model",
"capabilityId": "Aspire.Hosting.ApplicationModel/BeforeStartEvent.model",
"qualifiedName": "BeforeStartEvent.model",
- "description": "Gets the Model property",
+ "description": "The `DistributedApplicationModel` instance.",
"kind": "PropertyGetter",
"signature": "model(): DistributedApplicationModel",
"parameters": [],
@@ -666,7 +702,7 @@
"name": "services",
"capabilityId": "Aspire.Hosting.ApplicationModel/BeforeStartEvent.services",
"qualifiedName": "BeforeStartEvent.services",
- "description": "Gets the Services property",
+ "description": "The `IServiceProvider` instance.",
"kind": "PropertyGetter",
"signature": "services(): IServiceProvider",
"parameters": [],
@@ -680,23 +716,27 @@
"name": "build",
"capabilityId": "Aspire.Hosting/buildExecutionConfiguration",
"qualifiedName": "build",
- "description": "Builds the execution configuration",
+ "description": "Builds the execution configuration for the specified builder.",
+ "returns": "The resolved execution configuration.",
"kind": "Method",
"signature": "build(executionContext: DistributedApplicationExecutionContext, resourceLogger?: ILogger, cancellationToken?: cancellationToken): IExecutionConfigurationResult",
"parameters": [
{
"name": "executionContext",
- "type": "DistributedApplicationExecutionContext"
+ "type": "DistributedApplicationExecutionContext",
+ "description": "The execution context used while building the configuration."
},
{
"name": "resourceLogger",
"type": "ILogger",
- "isOptional": true
+ "isOptional": true,
+ "description": "The logger used while resolving values."
},
{
"name": "cancellationToken",
"type": "cancellationToken",
- "isOptional": true
+ "isOptional": true,
+ "description": "A cancellation token."
}
],
"returnType": "IExecutionConfigurationResult",
@@ -709,7 +749,8 @@
"name": "clearContainerFilesSources",
"capabilityId": "Aspire.Hosting/clearContainerFilesSources",
"qualifiedName": "clearContainerFilesSources",
- "description": "Clears all container file sources",
+ "description": "Removes any container files source annotation from the resource being built.",
+ "returns": "The resource builder instance with the container files source annotation applied.",
"kind": "Method",
"signature": "clearContainerFilesSources(): IResourceWithContainerFiles",
"parameters": [],
@@ -743,7 +784,7 @@
"name": "args",
"capabilityId": "Aspire.Hosting.ApplicationModel/CommandLineArgsCallbackContext.args",
"qualifiedName": "CommandLineArgsCallbackContext.args",
- "description": "Gets the command-line argument editor",
+ "description": "Gets the editor used to manipulate command-line arguments in polyglot callbacks.",
"kind": "PropertyGetter",
"signature": "args(): CommandLineArgsEditor",
"parameters": [],
@@ -757,7 +798,7 @@
"name": "executionContext",
"capabilityId": "Aspire.Hosting.ApplicationModel/CommandLineArgsCallbackContext.executionContext",
"qualifiedName": "CommandLineArgsCallbackContext.executionContext",
- "description": "Gets the execution context for this callback invocation",
+ "description": "Gets the execution context associated with this callback.",
"kind": "PropertyGetter",
"signature": "executionContext(): DistributedApplicationExecutionContext",
"parameters": [],
@@ -771,7 +812,7 @@
"name": "log",
"capabilityId": "Aspire.Hosting.ApplicationModel/CommandLineArgsCallbackContext.log",
"qualifiedName": "CommandLineArgsCallbackContext.log",
- "description": "Gets the callback logger facade",
+ "description": "Gets the logger facade used by polyglot callbacks.",
"kind": "PropertyGetter",
"signature": "log(): LogFacade",
"parameters": [],
@@ -785,7 +826,8 @@
"name": "resource",
"capabilityId": "Aspire.Hosting.ApplicationModel/CommandLineArgsCallbackContext.resource",
"qualifiedName": "CommandLineArgsCallbackContext.resource",
- "description": "Gets the resource associated with this callback",
+ "description": "The resource associated with this callback context.",
+ "remarks": "This will be set to the resource in all cases where Aspire invokes the callback.",
"kind": "PropertyGetter",
"signature": "resource(): IResource",
"parameters": [],
@@ -799,13 +841,14 @@
"name": "add",
"capabilityId": "Aspire.Hosting.ApplicationModel/add",
"qualifiedName": "CommandLineArgsEditor.add",
- "description": "Adds a command-line argument",
+ "description": "Adds a command-line argument.",
"kind": "InstanceMethod",
"signature": "add(value: IExpressionValue): void",
"parameters": [
{
"name": "value",
- "type": "IExpressionValue"
+ "type": "IExpressionValue",
+ "description": "The argument to add."
}
],
"returnType": "void",
@@ -837,7 +880,7 @@
"name": "completeLog",
"capabilityId": "Aspire.Hosting/completeLog",
"qualifiedName": "completeLog",
- "description": "Completes the log stream for a resource",
+ "description": "Completes the log stream for a resource.",
"kind": "Method",
"signature": "completeLog(resource: IResource): void",
"parameters": [
@@ -856,7 +899,7 @@
"name": "completeLogByName",
"capabilityId": "Aspire.Hosting/completeLogByName",
"qualifiedName": "completeLogByName",
- "description": "Completes the log stream by resource name",
+ "description": "Completes the log stream by resource name.",
"kind": "Method",
"signature": "completeLogByName(resourceName: string): void",
"parameters": [
@@ -875,7 +918,7 @@
"name": "completeStep",
"capabilityId": "Aspire.Hosting/completeStep",
"qualifiedName": "completeStep",
- "description": "Completes the reporting step with plain-text completion text",
+ "description": "Completes the reporting step with plain-text completion text.",
"kind": "Method",
"signature": "completeStep(completionText: string, completionState?: string, cancellationToken?: cancellationToken): void",
"parameters": [
@@ -905,7 +948,7 @@
"name": "completeStepMarkdown",
"capabilityId": "Aspire.Hosting/completeStepMarkdown",
"qualifiedName": "completeStepMarkdown",
- "description": "Completes the reporting step with Markdown-formatted completion text",
+ "description": "Completes the reporting step with Markdown-formatted completion text.",
"kind": "Method",
"signature": "completeStepMarkdown(markdownString: string, completionState?: string, cancellationToken?: cancellationToken): void",
"parameters": [
@@ -935,7 +978,7 @@
"name": "completeTask",
"capabilityId": "Aspire.Hosting/completeTask",
"qualifiedName": "completeTask",
- "description": "Completes the reporting task with plain-text completion text",
+ "description": "Completes the reporting task with plain-text completion text.",
"kind": "Method",
"signature": "completeTask(completionMessage?: string, completionState?: string, cancellationToken?: cancellationToken): void",
"parameters": [
@@ -966,7 +1009,7 @@
"name": "completeTaskMarkdown",
"capabilityId": "Aspire.Hosting/completeTaskMarkdown",
"qualifiedName": "completeTaskMarkdown",
- "description": "Completes the reporting task with Markdown-formatted completion text",
+ "description": "Completes the reporting task with Markdown-formatted completion text.",
"kind": "Method",
"signature": "completeTaskMarkdown(markdownString: string, completionState?: string, cancellationToken?: cancellationToken): void",
"parameters": [
@@ -996,15 +1039,16 @@
"name": "configure",
"capabilityId": "Aspire.Hosting/configure",
"qualifiedName": "configure",
- "description": "Configures the application pipeline via a callback",
+ "description": "Registers a pipeline configuration callback in a TypeScript-friendly shape.",
"kind": "Method",
- "signature": "configure(callback: (arg: PipelineConfigurationContext) =\u003E Promise\u003Cvoid\u003E): void",
+ "signature": "configure(callback: (arg: PipelineConfigurationContext) => Promise): void",
"parameters": [
{
"name": "callback",
"type": "callback",
"isCallback": true,
- "callbackSignature": "(arg: PipelineConfigurationContext) =\u003E Promise\u003Cvoid\u003E"
+ "callbackSignature": "(arg: PipelineConfigurationContext) => Promise",
+ "description": "The callback to execute during pipeline configuration."
}
],
"returnType": "void",
@@ -1045,7 +1089,7 @@
"name": "remoteImageName",
"capabilityId": "Aspire.Hosting.ApplicationModel/ContainerImagePushOptions.remoteImageName",
"qualifiedName": "ContainerImagePushOptions.remoteImageName",
- "description": "Gets the RemoteImageName property",
+ "description": "Gets or sets the remote image name (repository path without registry endpoint or tag).",
"kind": "PropertyGetter",
"signature": "remoteImageName(): string",
"parameters": [],
@@ -1059,7 +1103,7 @@
"name": "remoteImageTag",
"capabilityId": "Aspire.Hosting.ApplicationModel/ContainerImagePushOptions.remoteImageTag",
"qualifiedName": "ContainerImagePushOptions.remoteImageTag",
- "description": "Gets the RemoteImageTag property",
+ "description": "Gets or sets the remote image tag.",
"kind": "PropertyGetter",
"signature": "remoteImageTag(): string",
"parameters": [],
@@ -1073,7 +1117,7 @@
"name": "setRemoteImageName",
"capabilityId": "Aspire.Hosting.ApplicationModel/ContainerImagePushOptions.setRemoteImageName",
"qualifiedName": "ContainerImagePushOptions.setRemoteImageName",
- "description": "Sets the RemoteImageName property",
+ "description": "Gets or sets the remote image name (repository path without registry endpoint or tag).",
"kind": "PropertySetter",
"signature": "setRemoteImageName(value: string): ContainerImagePushOptions",
"parameters": [
@@ -1092,7 +1136,7 @@
"name": "setRemoteImageTag",
"capabilityId": "Aspire.Hosting.ApplicationModel/ContainerImagePushOptions.setRemoteImageTag",
"qualifiedName": "ContainerImagePushOptions.setRemoteImageTag",
- "description": "Sets the RemoteImageTag property",
+ "description": "Gets or sets the remote image tag.",
"kind": "PropertySetter",
"signature": "setRemoteImageTag(value: string): ContainerImagePushOptions",
"parameters": [
@@ -1111,7 +1155,7 @@
"name": "cancellationToken",
"capabilityId": "Aspire.Hosting.ApplicationModel/ContainerImagePushOptionsCallbackContext.cancellationToken",
"qualifiedName": "ContainerImagePushOptionsCallbackContext.cancellationToken",
- "description": "Gets the CancellationToken property",
+ "description": "Gets the cancellation token to observe while configuring image push options.",
"kind": "PropertyGetter",
"signature": "cancellationToken(): cancellationToken",
"parameters": [],
@@ -1125,7 +1169,7 @@
"name": "options",
"capabilityId": "Aspire.Hosting.ApplicationModel/ContainerImagePushOptionsCallbackContext.options",
"qualifiedName": "ContainerImagePushOptionsCallbackContext.options",
- "description": "Gets the Options property",
+ "description": "Gets the container image push options that can be modified by the callback.",
"kind": "PropertyGetter",
"signature": "options(): ContainerImagePushOptions",
"parameters": [],
@@ -1139,7 +1183,7 @@
"name": "resource",
"capabilityId": "Aspire.Hosting.ApplicationModel/ContainerImagePushOptionsCallbackContext.resource",
"qualifiedName": "ContainerImagePushOptionsCallbackContext.resource",
- "description": "Gets the Resource property",
+ "description": "Gets the resource being configured for container image push operations.",
"kind": "PropertyGetter",
"signature": "resource(): IResource",
"parameters": [],
@@ -1149,63 +1193,6 @@
"Aspire.Hosting.ApplicationModel.ContainerImagePushOptionsCallbackContext"
]
},
- {
- "name": "setCancellationToken",
- "capabilityId": "Aspire.Hosting.ApplicationModel/ContainerImagePushOptionsCallbackContext.setCancellationToken",
- "qualifiedName": "ContainerImagePushOptionsCallbackContext.setCancellationToken",
- "description": "Sets the CancellationToken property",
- "kind": "PropertySetter",
- "signature": "setCancellationToken(value: cancellationToken): ContainerImagePushOptionsCallbackContext",
- "parameters": [
- {
- "name": "value",
- "type": "cancellationToken"
- }
- ],
- "returnType": "ContainerImagePushOptionsCallbackContext",
- "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.ContainerImagePushOptionsCallbackContext",
- "expandedTargetTypes": [
- "Aspire.Hosting.ApplicationModel.ContainerImagePushOptionsCallbackContext"
- ]
- },
- {
- "name": "setOptions",
- "capabilityId": "Aspire.Hosting.ApplicationModel/ContainerImagePushOptionsCallbackContext.setOptions",
- "qualifiedName": "ContainerImagePushOptionsCallbackContext.setOptions",
- "description": "Sets the Options property",
- "kind": "PropertySetter",
- "signature": "setOptions(value: ContainerImagePushOptions): ContainerImagePushOptionsCallbackContext",
- "parameters": [
- {
- "name": "value",
- "type": "ContainerImagePushOptions"
- }
- ],
- "returnType": "ContainerImagePushOptionsCallbackContext",
- "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.ContainerImagePushOptionsCallbackContext",
- "expandedTargetTypes": [
- "Aspire.Hosting.ApplicationModel.ContainerImagePushOptionsCallbackContext"
- ]
- },
- {
- "name": "setResource",
- "capabilityId": "Aspire.Hosting.ApplicationModel/ContainerImagePushOptionsCallbackContext.setResource",
- "qualifiedName": "ContainerImagePushOptionsCallbackContext.setResource",
- "description": "Sets the Resource property",
- "kind": "PropertySetter",
- "signature": "setResource(value: IResource): ContainerImagePushOptionsCallbackContext",
- "parameters": [
- {
- "name": "value",
- "type": "IResource"
- }
- ],
- "returnType": "ContainerImagePushOptionsCallbackContext",
- "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.ContainerImagePushOptionsCallbackContext",
- "expandedTargetTypes": [
- "Aspire.Hosting.ApplicationModel.ContainerImagePushOptionsCallbackContext"
- ]
- },
{
"name": "copy",
"capabilityId": "Aspire.Hosting/dockerfileStageCopy",
@@ -1284,7 +1271,8 @@
"name": "createExecutionConfiguration",
"capabilityId": "Aspire.Hosting/createExecutionConfiguration",
"qualifiedName": "createExecutionConfiguration",
- "description": "Creates an execution configuration builder",
+ "description": "Creates an execution configuration builder for the specified resource.",
+ "returns": "The execution configuration builder.",
"kind": "Method",
"signature": "createExecutionConfiguration(): IExecutionConfigurationBuilder",
"parameters": [],
@@ -1305,13 +1293,15 @@
"name": "createLogger",
"capabilityId": "Aspire.Hosting/createLogger",
"qualifiedName": "createLogger",
- "description": "Creates a logger for a category",
+ "description": "Creates a logger for the specified category name.",
+ "returns": "A logger handle.",
"kind": "Method",
"signature": "createLogger(categoryName: string): ILogger",
"parameters": [
{
"name": "categoryName",
- "type": "string"
+ "type": "string",
+ "description": "The category name."
}
],
"returnType": "ILogger",
@@ -1324,7 +1314,7 @@
"name": "createMarkdownTask",
"capabilityId": "Aspire.Hosting/createMarkdownTask",
"qualifiedName": "createMarkdownTask",
- "description": "Creates a reporting task with Markdown-formatted status text",
+ "description": "Creates a reporting task with Markdown-formatted status text.",
"kind": "Method",
"signature": "createMarkdownTask(markdownString: string, cancellationToken?: cancellationToken): IReportingTask",
"parameters": [
@@ -1348,7 +1338,7 @@
"name": "createTask",
"capabilityId": "Aspire.Hosting/createTask",
"qualifiedName": "createTask",
- "description": "Creates a reporting task with plain-text status text",
+ "description": "Creates a reporting task with plain-text status text.",
"kind": "Method",
"signature": "createTask(statusText: string, cancellationToken?: cancellationToken): IReportingTask",
"parameters": [
@@ -1372,157 +1362,171 @@
"name": "Dict.clear",
"capabilityId": "Aspire.Hosting/Dict.clear",
"qualifiedName": "Dict.clear",
- "description": "Clears all entries from a dictionary",
+ "description": "Clears all entries from a dictionary.",
"kind": "Method",
"signature": "Dict.clear(): void",
"parameters": [],
"returnType": "void",
- "targetTypeId": "Aspire.Hosting/Dict\u003Cstring,any\u003E",
+ "targetTypeId": "Aspire.Hosting/Dict",
"expandedTargetTypes": [
- "Dict\u003Cstring,any\u003E"
+ "Dict"
]
},
{
"name": "Dict.count",
"capabilityId": "Aspire.Hosting/Dict.count",
"qualifiedName": "Dict.count",
- "description": "Gets the number of entries in a dictionary",
+ "description": "Gets the number of entries in a dictionary.",
+ "returns": "The number of key-value pairs.",
"kind": "Method",
"signature": "Dict.count(): number",
"parameters": [],
"returnType": "number",
- "targetTypeId": "Aspire.Hosting/Dict\u003Cstring,any\u003E",
+ "targetTypeId": "Aspire.Hosting/Dict",
"expandedTargetTypes": [
- "Dict\u003Cstring,any\u003E"
+ "Dict"
]
},
{
"name": "Dict.get",
"capabilityId": "Aspire.Hosting/Dict.get",
"qualifiedName": "Dict.get",
- "description": "Gets a value from a dictionary",
+ "description": "Gets a value from a dictionary by key.",
+ "returns": "The value, or null if not found.",
"kind": "Method",
"signature": "Dict.get(key: any): any",
"parameters": [
{
"name": "key",
- "type": "any"
+ "type": "any",
+ "description": "The key to look up."
}
],
"returnType": "any",
- "targetTypeId": "Aspire.Hosting/Dict\u003Cstring,any\u003E",
+ "targetTypeId": "Aspire.Hosting/Dict",
"expandedTargetTypes": [
- "Dict\u003Cstring,any\u003E"
+ "Dict"
]
},
{
"name": "Dict.has",
"capabilityId": "Aspire.Hosting/Dict.has",
"qualifiedName": "Dict.has",
- "description": "Checks if a dictionary contains a key",
+ "description": "Checks if a dictionary contains a key.",
+ "returns": "True if the key exists.",
"kind": "Method",
"signature": "Dict.has(key: any): boolean",
"parameters": [
{
"name": "key",
- "type": "any"
+ "type": "any",
+ "description": "The key to check."
}
],
"returnType": "boolean",
- "targetTypeId": "Aspire.Hosting/Dict\u003Cstring,any\u003E",
+ "targetTypeId": "Aspire.Hosting/Dict",
"expandedTargetTypes": [
- "Dict\u003Cstring,any\u003E"
+ "Dict"
]
},
{
"name": "Dict.keys",
"capabilityId": "Aspire.Hosting/Dict.keys",
"qualifiedName": "Dict.keys",
- "description": "Gets all keys from a dictionary",
+ "description": "Gets all keys from a dictionary.",
+ "returns": "An array of all keys.",
"kind": "Method",
"signature": "Dict.keys(): any[]",
"parameters": [],
"returnType": "any[]",
- "targetTypeId": "Aspire.Hosting/Dict\u003Cstring,any\u003E",
+ "targetTypeId": "Aspire.Hosting/Dict",
"expandedTargetTypes": [
- "Dict\u003Cstring,any\u003E"
+ "Dict"
]
},
{
"name": "Dict.remove",
"capabilityId": "Aspire.Hosting/Dict.remove",
"qualifiedName": "Dict.remove",
- "description": "Removes a key from a dictionary",
+ "description": "Removes a key from a dictionary.",
+ "returns": "True if the key was removed, false if not found.",
"kind": "Method",
"signature": "Dict.remove(key: any): boolean",
"parameters": [
{
"name": "key",
- "type": "any"
+ "type": "any",
+ "description": "The key to remove."
}
],
"returnType": "boolean",
- "targetTypeId": "Aspire.Hosting/Dict\u003Cstring,any\u003E",
+ "targetTypeId": "Aspire.Hosting/Dict",
"expandedTargetTypes": [
- "Dict\u003Cstring,any\u003E"
+ "Dict"
]
},
{
"name": "Dict.set",
"capabilityId": "Aspire.Hosting/Dict.set",
"qualifiedName": "Dict.set",
- "description": "Sets a value in a dictionary",
+ "description": "Sets a value in a dictionary.",
"kind": "Method",
"signature": "Dict.set(key: any, value: any): void",
"parameters": [
{
"name": "key",
- "type": "any"
+ "type": "any",
+ "description": "The key to set."
},
{
"name": "value",
- "type": "any"
+ "type": "any",
+ "description": "The value to set."
}
],
"returnType": "void",
- "targetTypeId": "Aspire.Hosting/Dict\u003Cstring,any\u003E",
+ "targetTypeId": "Aspire.Hosting/Dict",
"expandedTargetTypes": [
- "Dict\u003Cstring,any\u003E"
+ "Dict"
]
},
{
"name": "Dict.toObject",
"capabilityId": "Aspire.Hosting/Dict.toObject",
"qualifiedName": "Dict.toObject",
- "description": "Converts a dictionary to a plain object",
+ "description": "Converts the dictionary to a plain object (creates a copy).",
+ "returns": "A copy of the dictionary as an object.",
"kind": "Method",
- "signature": "Dict.toObject(): Dict\u003Cstring,any\u003E",
+ "signature": "Dict.toObject(): Dict",
"parameters": [],
- "returnType": "Dict\u003Cstring,any\u003E",
- "targetTypeId": "Aspire.Hosting/Dict\u003Cstring,any\u003E",
+ "returnType": "Dict",
+ "targetTypeId": "Aspire.Hosting/Dict",
"expandedTargetTypes": [
- "Dict\u003Cstring,any\u003E"
+ "Dict"
]
},
{
"name": "Dict.values",
"capabilityId": "Aspire.Hosting/Dict.values",
"qualifiedName": "Dict.values",
- "description": "Gets all values from a dictionary",
+ "description": "Gets all values from a dictionary.",
+ "returns": "An array of all values.",
"kind": "Method",
"signature": "Dict.values(): any[]",
"parameters": [],
"returnType": "any[]",
- "targetTypeId": "Aspire.Hosting/Dict\u003Cstring,any\u003E",
+ "targetTypeId": "Aspire.Hosting/Dict",
"expandedTargetTypes": [
- "Dict\u003Cstring,any\u003E"
+ "Dict"
]
},
{
"name": "disableBuildOnlyContainerValidation",
"capabilityId": "Aspire.Hosting/disableBuildOnlyContainerValidation",
"qualifiedName": "disableBuildOnlyContainerValidation",
- "description": "Disables publish and deploy validation for unconsumed build-only containers.",
+ "description": "Disables the publish and deploy validation that requires build-only containers to be consumed by another resource.",
+ "remarks": "This is an application-wide escape hatch for scenarios where the build-only container validation is too restrictive\nfor a particular app. Prefer wiring build-only containers through `PublishWithContainerFiles` or\n`PublishWithStaticFiles` when possible.",
+ "returns": "The distributed application pipeline for chaining.",
"kind": "Method",
"signature": "disableBuildOnlyContainerValidation(): IDistributedApplicationPipeline",
"parameters": [],
@@ -1536,7 +1540,9 @@
"name": "disableForwardedHeaders",
"capabilityId": "Aspire.Hosting/disableForwardedHeaders",
"qualifiedName": "disableForwardedHeaders",
- "description": "Disables forwarded headers for the project",
+ "description": "Configures the project to disable forwarded headers when being published.",
+ "remarks": "By default Aspire assumes that .NET applications which expose endpoints should be configured to\nuse forwarded headers. This is because most typical cloud native deployment scenarios involve a reverse\nproxy which translates an external endpoint hostname to an internal address.\nTo enable forwarded headers the `ASPNETCORE_FORWARDEDHEADERS_ENABLED` variable is injected\ninto the project and set to true. If the `DisableForwardedHeaders`\nextension is used this environment variable will not be set.\nDisable forwarded headers for a project.\n```\nvar builder = DistributedApplication.CreateBuilder(args);\nbuilder.AddProject(\"inventoryservice\")\n.DisableForwardedHeaders();\n```",
+ "returns": "A reference to the `IResourceBuilder`1`.",
"kind": "Method",
"signature": "disableForwardedHeaders(): ProjectResource",
"parameters": [],
@@ -1552,14 +1558,17 @@
"name": "run",
"capabilityId": "Aspire.Hosting/run",
"qualifiedName": "DistributedApplication.run",
- "description": "Runs the distributed application",
+ "description": "Runs an application and returns a Task that only completes when the token is triggered or shutdown is triggered and all `IHostedService` instances are stopped.",
+ "remarks": "When the Aspire app host is launched via `RunAsync` there are\ntwo possible modes that it is running in:\n-\n-\nDevelopers extending the Aspire application model should consider the lifetime\nof `IHostedService` instances which are added to the dependency injection\ncontainer. For more information on determining the mode that the app host is running\nin refer to `DistributedApplicationExecutionContext`.",
+ "returns": "The `Task` that represents the asynchronous operation.",
"kind": "InstanceMethod",
"signature": "run(cancellationToken?: cancellationToken): void",
"parameters": [
{
"name": "cancellationToken",
"type": "cancellationToken",
- "isOptional": true
+ "isOptional": true,
+ "description": "The token to trigger shutdown."
}
],
"returnType": "void",
@@ -1572,7 +1581,7 @@
"name": "isPublishMode",
"capabilityId": "Aspire.Hosting/DistributedApplicationExecutionContext.isPublishMode",
"qualifiedName": "DistributedApplicationExecutionContext.isPublishMode",
- "description": "Gets the IsPublishMode property",
+ "description": "Returns true if the current operation is publishing.",
"kind": "PropertyGetter",
"signature": "isPublishMode(): boolean",
"parameters": [],
@@ -1586,7 +1595,7 @@
"name": "isRunMode",
"capabilityId": "Aspire.Hosting/DistributedApplicationExecutionContext.isRunMode",
"qualifiedName": "DistributedApplicationExecutionContext.isRunMode",
- "description": "Gets the IsRunMode property",
+ "description": "Returns true if the current operation is running.",
"kind": "PropertyGetter",
"signature": "isRunMode(): boolean",
"parameters": [],
@@ -1600,7 +1609,7 @@
"name": "operation",
"capabilityId": "Aspire.Hosting/DistributedApplicationExecutionContext.operation",
"qualifiedName": "DistributedApplicationExecutionContext.operation",
- "description": "Gets the Operation property",
+ "description": "The operation currently being performed by the AppHost.",
"kind": "PropertyGetter",
"signature": "operation(): DistributedApplicationOperation",
"parameters": [],
@@ -1614,7 +1623,7 @@
"name": "publisherName",
"capabilityId": "Aspire.Hosting/DistributedApplicationExecutionContext.publisherName",
"qualifiedName": "DistributedApplicationExecutionContext.publisherName",
- "description": "Gets the PublisherName property",
+ "description": "The name of the publisher that is being used if `Operation` is set to `Publish`.",
"kind": "PropertyGetter",
"signature": "publisherName(): string",
"parameters": [],
@@ -1628,7 +1637,7 @@
"name": "serviceProvider",
"capabilityId": "Aspire.Hosting/DistributedApplicationExecutionContext.serviceProvider",
"qualifiedName": "DistributedApplicationExecutionContext.serviceProvider",
- "description": "Gets the ServiceProvider property",
+ "description": "The `IServiceProvider` for the AppHost.",
"kind": "PropertyGetter",
"signature": "serviceProvider(): IServiceProvider",
"parameters": [],
@@ -1642,7 +1651,7 @@
"name": "setPublisherName",
"capabilityId": "Aspire.Hosting/DistributedApplicationExecutionContext.setPublisherName",
"qualifiedName": "DistributedApplicationExecutionContext.setPublisherName",
- "description": "Sets the PublisherName property",
+ "description": "The name of the publisher that is being used if `Operation` is set to `Publish`.",
"kind": "PropertySetter",
"signature": "setPublisherName(value: string): DistributedApplicationExecutionContext",
"parameters": [
@@ -1661,7 +1670,7 @@
"name": "builder",
"capabilityId": "Aspire.Hosting.ApplicationModel/DockerfileBuilderCallbackContext.builder",
"qualifiedName": "DockerfileBuilderCallbackContext.builder",
- "description": "Gets the Builder property",
+ "description": "Gets the Dockerfile builder instance.",
"kind": "PropertyGetter",
"signature": "builder(): DockerfileBuilder",
"parameters": [],
@@ -1675,7 +1684,7 @@
"name": "cancellationToken",
"capabilityId": "Aspire.Hosting.ApplicationModel/DockerfileBuilderCallbackContext.cancellationToken",
"qualifiedName": "DockerfileBuilderCallbackContext.cancellationToken",
- "description": "Gets the CancellationToken property",
+ "description": "Gets the cancellation token to observe while waiting for the task to complete.",
"kind": "PropertyGetter",
"signature": "cancellationToken(): cancellationToken",
"parameters": [],
@@ -1689,7 +1698,7 @@
"name": "resource",
"capabilityId": "Aspire.Hosting.ApplicationModel/DockerfileBuilderCallbackContext.resource",
"qualifiedName": "DockerfileBuilderCallbackContext.resource",
- "description": "Gets the Resource property",
+ "description": "Gets the resource being built.",
"kind": "PropertyGetter",
"signature": "resource(): IResource",
"parameters": [],
@@ -1703,7 +1712,7 @@
"name": "services",
"capabilityId": "Aspire.Hosting.ApplicationModel/DockerfileBuilderCallbackContext.services",
"qualifiedName": "DockerfileBuilderCallbackContext.services",
- "description": "Gets the Services property",
+ "description": "Gets the service provider for dependency injection.",
"kind": "PropertyGetter",
"signature": "services(): IServiceProvider",
"parameters": [],
@@ -1731,7 +1740,7 @@
"name": "endpointName",
"capabilityId": "Aspire.Hosting.ApplicationModel/EndpointReference.endpointName",
"qualifiedName": "EndpointReference.endpointName",
- "description": "Gets the EndpointName property",
+ "description": "Gets the name of the endpoint associated with the endpoint reference.",
"kind": "PropertyGetter",
"signature": "endpointName(): string",
"parameters": [],
@@ -1745,7 +1754,7 @@
"name": "errorMessage",
"capabilityId": "Aspire.Hosting.ApplicationModel/EndpointReference.errorMessage",
"qualifiedName": "EndpointReference.errorMessage",
- "description": "Gets the ErrorMessage property",
+ "description": "Gets or sets a custom error message to be thrown when the endpoint annotation is not found.",
"kind": "PropertyGetter",
"signature": "errorMessage(): string",
"parameters": [],
@@ -1759,7 +1768,8 @@
"name": "excludeReferenceEndpoint",
"capabilityId": "Aspire.Hosting.ApplicationModel/EndpointReference.excludeReferenceEndpoint",
"qualifiedName": "EndpointReference.excludeReferenceEndpoint",
- "description": "Gets the ExcludeReferenceEndpoint property",
+ "description": "Gets a value indicating whether this endpoint is excluded from the default set when referencing the resource's endpoints.",
+ "remarks": "Returns `false` if the endpoint annotation has not been added to the resource yet.\nOnce the annotation exists, this property delegates to `ExcludeReferenceEndpoint`.",
"kind": "PropertyGetter",
"signature": "excludeReferenceEndpoint(): boolean",
"parameters": [],
@@ -1773,7 +1783,7 @@
"name": "exists",
"capabilityId": "Aspire.Hosting.ApplicationModel/EndpointReference.exists",
"qualifiedName": "EndpointReference.exists",
- "description": "Gets the Exists property",
+ "description": "Gets a value indicating whether the endpoint exists.",
"kind": "PropertyGetter",
"signature": "exists(): boolean",
"parameters": [],
@@ -1787,17 +1797,21 @@
"name": "getTlsValue",
"capabilityId": "Aspire.Hosting.ApplicationModel/EndpointReference.getTlsValue",
"qualifiedName": "EndpointReference.getTlsValue",
- "description": "Gets a conditional expression that resolves to the enabledValue when TLS is enabled on the endpoint, or to the disabledValue otherwise.",
+ "description": "Creates a conditional `ReferenceExpression` that resolves to `enabledValue` when `TlsEnabled` is `true` on this endpoint, or to `disabledValue` otherwise.",
+ "remarks": "The returned expression evaluates the TLS state lazily each time its value is resolved, making it\nsafe to embed in a `ReferenceExpression` that is built before TLS is configured\n(e.g., before `BeforeStartEvent` fires). Because the condition and branches are declarative,\npolyglot code generators can translate this into native conditional constructs in any target language.",
+ "returns": "A conditional `ReferenceExpression` whose value tracks the TLS state of this endpoint.",
"kind": "InstanceMethod",
"signature": "getTlsValue(enabledValue: ReferenceExpression, disabledValue: ReferenceExpression): ReferenceExpression",
"parameters": [
{
"name": "enabledValue",
- "type": "ReferenceExpression"
+ "type": "ReferenceExpression",
+ "description": "The expression to evaluate when TLS is enabled (e.g., `\",ssl=true\"`)."
},
{
"name": "disabledValue",
- "type": "ReferenceExpression"
+ "type": "ReferenceExpression",
+ "description": "The expression to evaluate when TLS is not enabled."
}
],
"returnType": "ReferenceExpression",
@@ -1810,14 +1824,16 @@
"name": "getValueAsync",
"capabilityId": "Aspire.Hosting.ApplicationModel/EndpointReference.getValueAsync",
"qualifiedName": "EndpointReference.getValueAsync",
- "description": "Gets the URL of the endpoint asynchronously",
+ "description": "Gets the URL of the endpoint asynchronously. Waits for the endpoint to be allocated if necessary.",
+ "returns": "The URL of the endpoint.",
"kind": "InstanceMethod",
"signature": "getValueAsync(cancellationToken?: cancellationToken): string",
"parameters": [
{
"name": "cancellationToken",
"type": "cancellationToken",
- "isOptional": true
+ "isOptional": true,
+ "description": "The cancellation token."
}
],
"returnType": "string",
@@ -1830,7 +1846,7 @@
"name": "host",
"capabilityId": "Aspire.Hosting.ApplicationModel/EndpointReference.host",
"qualifiedName": "EndpointReference.host",
- "description": "Gets the Host property",
+ "description": "Gets the host for this endpoint.",
"kind": "PropertyGetter",
"signature": "host(): string",
"parameters": [],
@@ -1844,7 +1860,7 @@
"name": "isAllocated",
"capabilityId": "Aspire.Hosting.ApplicationModel/EndpointReference.isAllocated",
"qualifiedName": "EndpointReference.isAllocated",
- "description": "Gets the IsAllocated property",
+ "description": "Gets a value indicating whether the endpoint is allocated.",
"kind": "PropertyGetter",
"signature": "isAllocated(): boolean",
"parameters": [],
@@ -1858,7 +1874,7 @@
"name": "isHttp",
"capabilityId": "Aspire.Hosting.ApplicationModel/EndpointReference.isHttp",
"qualifiedName": "EndpointReference.isHttp",
- "description": "Gets the IsHttp property",
+ "description": "Gets a value indicating whether the endpoint uses HTTP scheme.",
"kind": "PropertyGetter",
"signature": "isHttp(): boolean",
"parameters": [],
@@ -1872,7 +1888,7 @@
"name": "isHttps",
"capabilityId": "Aspire.Hosting.ApplicationModel/EndpointReference.isHttps",
"qualifiedName": "EndpointReference.isHttps",
- "description": "Gets the IsHttps property",
+ "description": "Gets a value indicating whether the endpoint uses HTTPS scheme.",
"kind": "PropertyGetter",
"signature": "isHttps(): boolean",
"parameters": [],
@@ -1886,7 +1902,7 @@
"name": "isHttpSchemeNamedEndpoint",
"capabilityId": "Aspire.Hosting.ApplicationModel/EndpointReference.isHttpSchemeNamedEndpoint",
"qualifiedName": "EndpointReference.isHttpSchemeNamedEndpoint",
- "description": "Gets the IsHttpSchemeNamedEndpoint property",
+ "description": "Gets a value indicating whether the endpoint name is \"http\" or \"https\", ignoring case. This is a convention used to identify endpoints that will be resolved based on the scheme of the endpoint in service discovery rather than by the specific endpoint name. This is done to allow http endpoints that are dynamically updated to https to be mapped correctly despite the endpoint name no longer matching the scheme.",
"kind": "PropertyGetter",
"signature": "isHttpSchemeNamedEndpoint(): boolean",
"parameters": [],
@@ -1900,7 +1916,7 @@
"name": "port",
"capabilityId": "Aspire.Hosting.ApplicationModel/EndpointReference.port",
"qualifiedName": "EndpointReference.port",
- "description": "Gets the Port property",
+ "description": "Gets the port for this endpoint.",
"kind": "PropertyGetter",
"signature": "port(): number",
"parameters": [],
@@ -1914,13 +1930,15 @@
"name": "property",
"capabilityId": "Aspire.Hosting.ApplicationModel/EndpointReference.property",
"qualifiedName": "EndpointReference.property",
- "description": "Gets the specified property expression of the endpoint",
+ "description": "Gets the specified property expression of the endpoint.",
+ "returns": "An `EndpointReferenceExpression` representing the specified `EndpointProperty`.",
"kind": "InstanceMethod",
"signature": "property(property: EndpointProperty): EndpointReferenceExpression",
"parameters": [
{
"name": "property",
- "type": "EndpointProperty"
+ "type": "EndpointProperty",
+ "description": "The `EndpointProperty` enum value to use in the reference."
}
],
"returnType": "EndpointReferenceExpression",
@@ -1933,7 +1951,7 @@
"name": "resource",
"capabilityId": "Aspire.Hosting.ApplicationModel/EndpointReference.resource",
"qualifiedName": "EndpointReference.resource",
- "description": "Gets the Resource property",
+ "description": "Gets the resource owner of the endpoint reference.",
"kind": "PropertyGetter",
"signature": "resource(): IResourceWithEndpoints",
"parameters": [],
@@ -1947,7 +1965,7 @@
"name": "scheme",
"capabilityId": "Aspire.Hosting.ApplicationModel/EndpointReference.scheme",
"qualifiedName": "EndpointReference.scheme",
- "description": "Gets the Scheme property",
+ "description": "Gets the scheme for this endpoint.",
"kind": "PropertyGetter",
"signature": "scheme(): string",
"parameters": [],
@@ -1957,30 +1975,11 @@
"Aspire.Hosting.ApplicationModel.EndpointReference"
]
},
- {
- "name": "setErrorMessage",
- "capabilityId": "Aspire.Hosting.ApplicationModel/EndpointReference.setErrorMessage",
- "qualifiedName": "EndpointReference.setErrorMessage",
- "description": "Sets the ErrorMessage property",
- "kind": "PropertySetter",
- "signature": "setErrorMessage(value: string): EndpointReference",
- "parameters": [
- {
- "name": "value",
- "type": "string"
- }
- ],
- "returnType": "EndpointReference",
- "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.EndpointReference",
- "expandedTargetTypes": [
- "Aspire.Hosting.ApplicationModel.EndpointReference"
- ]
- },
{
"name": "targetPort",
"capabilityId": "Aspire.Hosting.ApplicationModel/EndpointReference.targetPort",
"qualifiedName": "EndpointReference.targetPort",
- "description": "Gets the TargetPort property",
+ "description": "Gets the target port for this endpoint. If the port is dynamically allocated, this will return `null`.",
"kind": "PropertyGetter",
"signature": "targetPort(): number",
"parameters": [],
@@ -1994,7 +1993,8 @@
"name": "tlsEnabled",
"capabilityId": "Aspire.Hosting.ApplicationModel/EndpointReference.tlsEnabled",
"qualifiedName": "EndpointReference.tlsEnabled",
- "description": "Gets the TlsEnabled property",
+ "description": "Gets a value indicating whether TLS is enabled for this endpoint.",
+ "remarks": "Returns `false` if the endpoint annotation has not been added to the resource yet.\nOnce the annotation exists, this property delegates to `TlsEnabled`.",
"kind": "PropertyGetter",
"signature": "tlsEnabled(): boolean",
"parameters": [],
@@ -2008,7 +2008,7 @@
"name": "url",
"capabilityId": "Aspire.Hosting.ApplicationModel/EndpointReference.url",
"qualifiedName": "EndpointReference.url",
- "description": "Gets the Url property",
+ "description": "Gets the URL for this endpoint.",
"kind": "PropertyGetter",
"signature": "url(): string",
"parameters": [],
@@ -2022,7 +2022,7 @@
"name": "endpoint",
"capabilityId": "Aspire.Hosting.ApplicationModel/EndpointReferenceExpression.endpoint",
"qualifiedName": "EndpointReferenceExpression.endpoint",
- "description": "Gets the Endpoint property",
+ "description": "Gets the `EndpointReference`.",
"kind": "PropertyGetter",
"signature": "endpoint(): EndpointReference",
"parameters": [],
@@ -2036,7 +2036,7 @@
"name": "property",
"capabilityId": "Aspire.Hosting.ApplicationModel/EndpointReferenceExpression.property",
"qualifiedName": "EndpointReferenceExpression.property",
- "description": "Gets the Property property",
+ "description": "Gets the `EndpointProperty` for the property expression.",
"kind": "PropertyGetter",
"signature": "property(): EndpointProperty",
"parameters": [],
@@ -2050,7 +2050,7 @@
"name": "valueExpression",
"capabilityId": "Aspire.Hosting.ApplicationModel/EndpointReferenceExpression.valueExpression",
"qualifiedName": "EndpointReferenceExpression.valueExpression",
- "description": "Gets the ValueExpression property",
+ "description": "Gets the expression of the property of the endpoint.",
"kind": "PropertyGetter",
"signature": "valueExpression(): string",
"parameters": [],
@@ -2064,7 +2064,7 @@
"name": "excludeReferenceEndpoint",
"capabilityId": "Aspire.Hosting.ApplicationModel/EndpointUpdateContext.excludeReferenceEndpoint",
"qualifiedName": "EndpointUpdateContext.excludeReferenceEndpoint",
- "description": "Gets the ExcludeReferenceEndpoint property",
+ "description": "Gets or sets a value indicating whether the endpoint is excluded from the default reference set.",
"kind": "PropertyGetter",
"signature": "excludeReferenceEndpoint(): boolean",
"parameters": [],
@@ -2078,7 +2078,7 @@
"name": "isExternal",
"capabilityId": "Aspire.Hosting.ApplicationModel/EndpointUpdateContext.isExternal",
"qualifiedName": "EndpointUpdateContext.isExternal",
- "description": "Gets the IsExternal property",
+ "description": "Gets or sets a value indicating whether the endpoint is external.",
"kind": "PropertyGetter",
"signature": "isExternal(): boolean",
"parameters": [],
@@ -2092,7 +2092,7 @@
"name": "isProxied",
"capabilityId": "Aspire.Hosting.ApplicationModel/EndpointUpdateContext.isProxied",
"qualifiedName": "EndpointUpdateContext.isProxied",
- "description": "Gets the IsProxied property",
+ "description": "Gets or sets a value indicating whether the endpoint is proxied.",
"kind": "PropertyGetter",
"signature": "isProxied(): boolean",
"parameters": [],
@@ -2106,7 +2106,7 @@
"name": "name",
"capabilityId": "Aspire.Hosting.ApplicationModel/EndpointUpdateContext.name",
"qualifiedName": "EndpointUpdateContext.name",
- "description": "Gets the Name property",
+ "description": "Gets the endpoint name.",
"kind": "PropertyGetter",
"signature": "name(): string",
"parameters": [],
@@ -2120,7 +2120,7 @@
"name": "port",
"capabilityId": "Aspire.Hosting.ApplicationModel/EndpointUpdateContext.port",
"qualifiedName": "EndpointUpdateContext.port",
- "description": "Gets the Port property",
+ "description": "Gets or sets the desired host port.",
"kind": "PropertyGetter",
"signature": "port(): number",
"parameters": [],
@@ -2134,7 +2134,7 @@
"name": "protocol",
"capabilityId": "Aspire.Hosting.ApplicationModel/EndpointUpdateContext.protocol",
"qualifiedName": "EndpointUpdateContext.protocol",
- "description": "Gets the Protocol property",
+ "description": "Gets or sets the network protocol.",
"kind": "PropertyGetter",
"signature": "protocol(): ProtocolType",
"parameters": [],
@@ -2148,7 +2148,7 @@
"name": "setExcludeReferenceEndpoint",
"capabilityId": "Aspire.Hosting.ApplicationModel/EndpointUpdateContext.setExcludeReferenceEndpoint",
"qualifiedName": "EndpointUpdateContext.setExcludeReferenceEndpoint",
- "description": "Sets the ExcludeReferenceEndpoint property",
+ "description": "Gets or sets a value indicating whether the endpoint is excluded from the default reference set.",
"kind": "PropertySetter",
"signature": "setExcludeReferenceEndpoint(value: boolean): EndpointUpdateContext",
"parameters": [
@@ -2167,7 +2167,7 @@
"name": "setIsExternal",
"capabilityId": "Aspire.Hosting.ApplicationModel/EndpointUpdateContext.setIsExternal",
"qualifiedName": "EndpointUpdateContext.setIsExternal",
- "description": "Sets the IsExternal property",
+ "description": "Gets or sets a value indicating whether the endpoint is external.",
"kind": "PropertySetter",
"signature": "setIsExternal(value: boolean): EndpointUpdateContext",
"parameters": [
@@ -2186,7 +2186,7 @@
"name": "setIsProxied",
"capabilityId": "Aspire.Hosting.ApplicationModel/EndpointUpdateContext.setIsProxied",
"qualifiedName": "EndpointUpdateContext.setIsProxied",
- "description": "Sets the IsProxied property",
+ "description": "Gets or sets a value indicating whether the endpoint is proxied.",
"kind": "PropertySetter",
"signature": "setIsProxied(value: boolean): EndpointUpdateContext",
"parameters": [
@@ -2205,7 +2205,7 @@
"name": "setPort",
"capabilityId": "Aspire.Hosting.ApplicationModel/EndpointUpdateContext.setPort",
"qualifiedName": "EndpointUpdateContext.setPort",
- "description": "Sets the Port property",
+ "description": "Gets or sets the desired host port.",
"kind": "PropertySetter",
"signature": "setPort(value: number): EndpointUpdateContext",
"parameters": [
@@ -2224,7 +2224,7 @@
"name": "setProtocol",
"capabilityId": "Aspire.Hosting.ApplicationModel/EndpointUpdateContext.setProtocol",
"qualifiedName": "EndpointUpdateContext.setProtocol",
- "description": "Sets the Protocol property",
+ "description": "Gets or sets the network protocol.",
"kind": "PropertySetter",
"signature": "setProtocol(value: ProtocolType): EndpointUpdateContext",
"parameters": [
@@ -2243,7 +2243,7 @@
"name": "setTargetHost",
"capabilityId": "Aspire.Hosting.ApplicationModel/EndpointUpdateContext.setTargetHost",
"qualifiedName": "EndpointUpdateContext.setTargetHost",
- "description": "Sets the TargetHost property",
+ "description": "Gets or sets the target host.",
"kind": "PropertySetter",
"signature": "setTargetHost(value: string): EndpointUpdateContext",
"parameters": [
@@ -2262,7 +2262,7 @@
"name": "setTargetPort",
"capabilityId": "Aspire.Hosting.ApplicationModel/EndpointUpdateContext.setTargetPort",
"qualifiedName": "EndpointUpdateContext.setTargetPort",
- "description": "Sets the TargetPort property",
+ "description": "Gets or sets the target port.",
"kind": "PropertySetter",
"signature": "setTargetPort(value: number): EndpointUpdateContext",
"parameters": [
@@ -2281,7 +2281,7 @@
"name": "setTlsEnabled",
"capabilityId": "Aspire.Hosting.ApplicationModel/EndpointUpdateContext.setTlsEnabled",
"qualifiedName": "EndpointUpdateContext.setTlsEnabled",
- "description": "Sets the TlsEnabled property",
+ "description": "Gets or sets a value indicating whether TLS is enabled.",
"kind": "PropertySetter",
"signature": "setTlsEnabled(value: boolean): EndpointUpdateContext",
"parameters": [
@@ -2300,7 +2300,7 @@
"name": "setTransport",
"capabilityId": "Aspire.Hosting.ApplicationModel/EndpointUpdateContext.setTransport",
"qualifiedName": "EndpointUpdateContext.setTransport",
- "description": "Sets the Transport property",
+ "description": "Gets or sets the transport.",
"kind": "PropertySetter",
"signature": "setTransport(value: string): EndpointUpdateContext",
"parameters": [
@@ -2319,7 +2319,7 @@
"name": "setUriScheme",
"capabilityId": "Aspire.Hosting.ApplicationModel/EndpointUpdateContext.setUriScheme",
"qualifiedName": "EndpointUpdateContext.setUriScheme",
- "description": "Sets the UriScheme property",
+ "description": "Gets or sets the URI scheme.",
"kind": "PropertySetter",
"signature": "setUriScheme(value: string): EndpointUpdateContext",
"parameters": [
@@ -2338,7 +2338,7 @@
"name": "targetHost",
"capabilityId": "Aspire.Hosting.ApplicationModel/EndpointUpdateContext.targetHost",
"qualifiedName": "EndpointUpdateContext.targetHost",
- "description": "Gets the TargetHost property",
+ "description": "Gets or sets the target host.",
"kind": "PropertyGetter",
"signature": "targetHost(): string",
"parameters": [],
@@ -2352,7 +2352,7 @@
"name": "targetPort",
"capabilityId": "Aspire.Hosting.ApplicationModel/EndpointUpdateContext.targetPort",
"qualifiedName": "EndpointUpdateContext.targetPort",
- "description": "Gets the TargetPort property",
+ "description": "Gets or sets the target port.",
"kind": "PropertyGetter",
"signature": "targetPort(): number",
"parameters": [],
@@ -2366,7 +2366,7 @@
"name": "tlsEnabled",
"capabilityId": "Aspire.Hosting.ApplicationModel/EndpointUpdateContext.tlsEnabled",
"qualifiedName": "EndpointUpdateContext.tlsEnabled",
- "description": "Gets the TlsEnabled property",
+ "description": "Gets or sets a value indicating whether TLS is enabled.",
"kind": "PropertyGetter",
"signature": "tlsEnabled(): boolean",
"parameters": [],
@@ -2380,7 +2380,7 @@
"name": "transport",
"capabilityId": "Aspire.Hosting.ApplicationModel/EndpointUpdateContext.transport",
"qualifiedName": "EndpointUpdateContext.transport",
- "description": "Gets the Transport property",
+ "description": "Gets or sets the transport.",
"kind": "PropertyGetter",
"signature": "transport(): string",
"parameters": [],
@@ -2394,7 +2394,7 @@
"name": "uriScheme",
"capabilityId": "Aspire.Hosting.ApplicationModel/EndpointUpdateContext.uriScheme",
"qualifiedName": "EndpointUpdateContext.uriScheme",
- "description": "Gets the UriScheme property",
+ "description": "Gets or sets the URI scheme.",
"kind": "PropertyGetter",
"signature": "uriScheme(): string",
"parameters": [],
@@ -2450,7 +2450,7 @@
"name": "environment",
"capabilityId": "Aspire.Hosting.ApplicationModel/EnvironmentCallbackContext.environment",
"qualifiedName": "EnvironmentCallbackContext.environment",
- "description": "Gets the environment variable editor",
+ "description": "Gets the editor used to set environment variables in polyglot callbacks.",
"kind": "PropertyGetter",
"signature": "environment(): EnvironmentEditor",
"parameters": [],
@@ -2464,7 +2464,7 @@
"name": "executionContext",
"capabilityId": "Aspire.Hosting.ApplicationModel/EnvironmentCallbackContext.executionContext",
"qualifiedName": "EnvironmentCallbackContext.executionContext",
- "description": "Gets the execution context for this callback invocation",
+ "description": "Gets the execution context associated with this invocation of the AppHost.",
"kind": "PropertyGetter",
"signature": "executionContext(): DistributedApplicationExecutionContext",
"parameters": [],
@@ -2478,7 +2478,7 @@
"name": "log",
"capabilityId": "Aspire.Hosting.ApplicationModel/EnvironmentCallbackContext.log",
"qualifiedName": "EnvironmentCallbackContext.log",
- "description": "Gets the callback logger facade",
+ "description": "Gets the logger facade used by polyglot callbacks.",
"kind": "PropertyGetter",
"signature": "log(): LogFacade",
"parameters": [],
@@ -2492,7 +2492,8 @@
"name": "resource",
"capabilityId": "Aspire.Hosting.ApplicationModel/EnvironmentCallbackContext.resource",
"qualifiedName": "EnvironmentCallbackContext.resource",
- "description": "Gets the resource associated with this callback",
+ "description": "The resource associated with this callback context.",
+ "remarks": "This will be set to the resource in all cases where Aspire invokes the callback.",
"kind": "PropertyGetter",
"signature": "resource(): IResource",
"parameters": [],
@@ -2506,17 +2507,19 @@
"name": "set",
"capabilityId": "Aspire.Hosting.ApplicationModel/set",
"qualifiedName": "EnvironmentEditor.set",
- "description": "Sets an environment variable",
+ "description": "Sets an environment variable.",
"kind": "InstanceMethod",
"signature": "set(name: string, value: IExpressionValue): void",
"parameters": [
{
"name": "name",
- "type": "string"
+ "type": "string",
+ "description": "The name of the environment variable."
},
{
"name": "value",
- "type": "IExpressionValue"
+ "type": "IExpressionValue",
+ "description": "The value to assign to the environment variable."
}
],
"returnType": "void",
@@ -2529,7 +2532,7 @@
"name": "cancellationToken",
"capabilityId": "Aspire.Hosting.Ats/EventingSubscriberRegistrationContext.cancellationToken",
"qualifiedName": "EventingSubscriberRegistrationContext.cancellationToken",
- "description": "Gets the CancellationToken property",
+ "description": "The cancellation token associated with the subscriber registration.",
"kind": "PropertyGetter",
"signature": "cancellationToken(): cancellationToken",
"parameters": [],
@@ -2543,7 +2546,7 @@
"name": "executionContext",
"capabilityId": "Aspire.Hosting.Ats/EventingSubscriberRegistrationContext.executionContext",
"qualifiedName": "EventingSubscriberRegistrationContext.executionContext",
- "description": "Gets the ExecutionContext property",
+ "description": "The execution context for the AppHost invocation.",
"kind": "PropertyGetter",
"signature": "executionContext(): DistributedApplicationExecutionContext",
"parameters": [],
@@ -2557,7 +2560,8 @@
"name": "excludeFromManifest",
"capabilityId": "Aspire.Hosting/excludeFromManifest",
"qualifiedName": "excludeFromManifest",
- "description": "Excludes the resource from the deployment manifest",
+ "description": "Excludes a resource from being published to the manifest.",
+ "returns": "The `IResourceBuilder`1`.",
"kind": "Method",
"signature": "excludeFromManifest(): IResource",
"parameters": [],
@@ -2579,7 +2583,8 @@
"name": "excludeFromMcp",
"capabilityId": "Aspire.Hosting/excludeFromMcp",
"qualifiedName": "excludeFromMcp",
- "description": "Excludes the resource from MCP server exposure",
+ "description": "Exclude the resource from MCP operations using the Aspire MCP server. The resource is excluded from results that return resources, console logs and telemetry.",
+ "returns": "The `IResourceBuilder`1`.",
"kind": "Method",
"signature": "excludeFromMcp(): IResource",
"parameters": [],
@@ -2601,7 +2606,7 @@
"name": "cancellationToken",
"capabilityId": "Aspire.Hosting.ApplicationModel/ExecuteCommandContext.cancellationToken",
"qualifiedName": "ExecuteCommandContext.cancellationToken",
- "description": "Gets the CancellationToken property",
+ "description": "The cancellation token.",
"kind": "PropertyGetter",
"signature": "cancellationToken(): cancellationToken",
"parameters": [],
@@ -2615,7 +2620,7 @@
"name": "logger",
"capabilityId": "Aspire.Hosting.ApplicationModel/ExecuteCommandContext.logger",
"qualifiedName": "ExecuteCommandContext.logger",
- "description": "Gets the Logger property",
+ "description": "The logger for the resource.",
"kind": "PropertyGetter",
"signature": "logger(): ILogger",
"parameters": [],
@@ -2629,7 +2634,7 @@
"name": "resourceName",
"capabilityId": "Aspire.Hosting.ApplicationModel/ExecuteCommandContext.resourceName",
"qualifiedName": "ExecuteCommandContext.resourceName",
- "description": "Gets the ResourceName property",
+ "description": "The resource name.",
"kind": "PropertyGetter",
"signature": "resourceName(): string",
"parameters": [],
@@ -2643,7 +2648,7 @@
"name": "serviceProvider",
"capabilityId": "Aspire.Hosting.ApplicationModel/ExecuteCommandContext.serviceProvider",
"qualifiedName": "ExecuteCommandContext.serviceProvider",
- "description": "Gets the ServiceProvider property",
+ "description": "The service provider.",
"kind": "PropertyGetter",
"signature": "serviceProvider(): IServiceProvider",
"parameters": [],
@@ -2653,93 +2658,19 @@
"Aspire.Hosting.ApplicationModel.ExecuteCommandContext"
]
},
- {
- "name": "setCancellationToken",
- "capabilityId": "Aspire.Hosting.ApplicationModel/ExecuteCommandContext.setCancellationToken",
- "qualifiedName": "ExecuteCommandContext.setCancellationToken",
- "description": "Sets the CancellationToken property",
- "kind": "PropertySetter",
- "signature": "setCancellationToken(value: cancellationToken): ExecuteCommandContext",
- "parameters": [
- {
- "name": "value",
- "type": "cancellationToken"
- }
- ],
- "returnType": "ExecuteCommandContext",
- "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.ExecuteCommandContext",
- "expandedTargetTypes": [
- "Aspire.Hosting.ApplicationModel.ExecuteCommandContext"
- ]
- },
- {
- "name": "setLogger",
- "capabilityId": "Aspire.Hosting.ApplicationModel/ExecuteCommandContext.setLogger",
- "qualifiedName": "ExecuteCommandContext.setLogger",
- "description": "Sets the Logger property",
- "kind": "PropertySetter",
- "signature": "setLogger(value: ILogger): ExecuteCommandContext",
- "parameters": [
- {
- "name": "value",
- "type": "ILogger"
- }
- ],
- "returnType": "ExecuteCommandContext",
- "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.ExecuteCommandContext",
- "expandedTargetTypes": [
- "Aspire.Hosting.ApplicationModel.ExecuteCommandContext"
- ]
- },
- {
- "name": "setResourceName",
- "capabilityId": "Aspire.Hosting.ApplicationModel/ExecuteCommandContext.setResourceName",
- "qualifiedName": "ExecuteCommandContext.setResourceName",
- "description": "Sets the ResourceName property",
- "kind": "PropertySetter",
- "signature": "setResourceName(value: string): ExecuteCommandContext",
- "parameters": [
- {
- "name": "value",
- "type": "string"
- }
- ],
- "returnType": "ExecuteCommandContext",
- "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.ExecuteCommandContext",
- "expandedTargetTypes": [
- "Aspire.Hosting.ApplicationModel.ExecuteCommandContext"
- ]
- },
- {
- "name": "setServiceProvider",
- "capabilityId": "Aspire.Hosting.ApplicationModel/ExecuteCommandContext.setServiceProvider",
- "qualifiedName": "ExecuteCommandContext.setServiceProvider",
- "description": "Sets the ServiceProvider property",
- "kind": "PropertySetter",
- "signature": "setServiceProvider(value: IServiceProvider): ExecuteCommandContext",
- "parameters": [
- {
- "name": "value",
- "type": "IServiceProvider"
- }
- ],
- "returnType": "ExecuteCommandContext",
- "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.ExecuteCommandContext",
- "expandedTargetTypes": [
- "Aspire.Hosting.ApplicationModel.ExecuteCommandContext"
- ]
- },
{
"name": "exists",
"capabilityId": "Aspire.Hosting/exists",
"qualifiedName": "exists",
- "description": "Checks whether a configuration section exists",
+ "description": "Checks whether a configuration section exists.",
+ "returns": "`true` when the section exists; otherwise, `false`.",
"kind": "Method",
"signature": "exists(key: string): boolean",
"parameters": [
{
"name": "key",
- "type": "string"
+ "type": "string",
+ "description": "The configuration key."
}
],
"returnType": "boolean",
@@ -2771,13 +2702,15 @@
"name": "findResourceByName",
"capabilityId": "Aspire.Hosting/findResourceByName",
"qualifiedName": "findResourceByName",
- "description": "Finds a resource by name",
+ "description": "Finds a resource by name.",
+ "returns": "The matching resource, or `null` when not found.",
"kind": "Method",
"signature": "findResourceByName(name: string): IResource",
"parameters": [
{
"name": "name",
- "type": "string"
+ "type": "string",
+ "description": "The resource name."
}
],
"returnType": "IResource",
@@ -2814,7 +2747,8 @@
"name": "getAspireStore",
"capabilityId": "Aspire.Hosting/getAspireStore",
"qualifiedName": "getAspireStore",
- "description": "Gets the Aspire store from the service provider",
+ "description": "Gets the Aspire store from the service provider.",
+ "returns": "The Aspire store.",
"kind": "Method",
"signature": "getAspireStore(): IAspireStore",
"parameters": [],
@@ -2828,7 +2762,8 @@
"name": "getCertificateTrustData",
"capabilityId": "Aspire.Hosting/getCertificateTrustData",
"qualifiedName": "getCertificateTrustData",
- "description": "Gets certificate trust execution-configuration data",
+ "description": "Gets certificate trust execution-configuration data when present.",
+ "returns": "The certificate trust data. When no additional data is present, an empty DTO is returned.",
"kind": "Method",
"signature": "getCertificateTrustData(): CertificateTrustExecutionConfigurationExportData",
"parameters": [],
@@ -2842,7 +2777,8 @@
"name": "getChildren",
"capabilityId": "Aspire.Hosting/getChildren",
"qualifiedName": "getChildren",
- "description": "Gets child configuration sections",
+ "description": "Gets the child sections of a configuration handle.",
+ "returns": "The child sections.",
"kind": "Method",
"signature": "getChildren(): IConfigurationSection[]",
"parameters": [],
@@ -2856,7 +2792,8 @@
"name": "getConfiguration",
"capabilityId": "Aspire.Hosting/getConfiguration",
"qualifiedName": "getConfiguration",
- "description": "Gets the application configuration",
+ "description": "Gets the application configuration.",
+ "returns": "The configuration handle.",
"kind": "Method",
"signature": "getConfiguration(): IConfiguration",
"parameters": [],
@@ -2870,13 +2807,15 @@
"name": "getConfigValue",
"capabilityId": "Aspire.Hosting/getConfigValue",
"qualifiedName": "getConfigValue",
- "description": "Gets a configuration value by key",
+ "description": "Gets a configuration value by key.",
+ "returns": "The configuration value, or null if not found.",
"kind": "Method",
"signature": "getConfigValue(key: string): string",
"parameters": [
{
"name": "key",
- "type": "string"
+ "type": "string",
+ "description": "The configuration key (e.g., \"ConnectionStrings:Default\")."
}
],
"returnType": "string",
@@ -2889,13 +2828,16 @@
"name": "getConnectionProperty",
"capabilityId": "Aspire.Hosting/getConnectionProperty",
"qualifiedName": "getConnectionProperty",
- "description": "Gets a connection property by key",
+ "description": "Retrieves the value of a specified connection property from the resource's connection properties.",
+ "remarks": "Throws a KeyNotFoundException if the specified key does not exist in the resource's\nconnection properties.",
+ "returns": "The value associated with the specified connection property key.",
"kind": "Method",
"signature": "getConnectionProperty(key: string): ReferenceExpression",
"parameters": [
{
"name": "key",
- "type": "string"
+ "type": "string",
+ "description": "The key of the connection property to retrieve. Cannot be null."
}
],
"returnType": "ReferenceExpression",
@@ -2908,13 +2850,15 @@
"name": "getConnectionString",
"capabilityId": "Aspire.Hosting/getConnectionString",
"qualifiedName": "getConnectionString",
- "description": "Gets a connection string by name",
+ "description": "Gets a connection string by name.",
+ "returns": "The connection string value, or null if not found.",
"kind": "Method",
"signature": "getConnectionString(name: string): string",
"parameters": [
{
"name": "name",
- "type": "string"
+ "type": "string",
+ "description": "The connection string name."
}
],
"returnType": "string",
@@ -2927,7 +2871,8 @@
"name": "getDistributedApplicationModel",
"capabilityId": "Aspire.Hosting/getDistributedApplicationModel",
"qualifiedName": "getDistributedApplicationModel",
- "description": "Gets the distributed application model from the service provider",
+ "description": "Gets the distributed application model from the service provider.",
+ "returns": "The distributed application model handle.",
"kind": "Method",
"signature": "getDistributedApplicationModel(): DistributedApplicationModel",
"parameters": [],
@@ -2941,13 +2886,15 @@
"name": "getEndpoint",
"capabilityId": "Aspire.Hosting/getEndpoint",
"qualifiedName": "getEndpoint",
- "description": "Gets an endpoint reference",
+ "description": "Gets an `EndpointReference` by name from the resource. These endpoints are declared either using `WithEndpoint``1` or by launch settings (for project resources). The `EndpointReference` can be used to resolve the address of the endpoint in `WithEnvironment``1`.",
+ "returns": "An `EndpointReference` that can be used to resolve the address of the endpoint after resource allocation has occurred.",
"kind": "Method",
"signature": "getEndpoint(name: string): EndpointReference",
"parameters": [
{
"name": "name",
- "type": "string"
+ "type": "string",
+ "description": "The name of the endpoint."
}
],
"returnType": "EndpointReference",
@@ -2964,7 +2911,8 @@
"name": "getEventing",
"capabilityId": "Aspire.Hosting/getEventing",
"qualifiedName": "getEventing",
- "description": "Gets the distributed application eventing service from the service provider",
+ "description": "Gets the distributed application eventing service from the service provider.",
+ "returns": "The distributed application eventing handle.",
"kind": "Method",
"signature": "getEventing(): IDistributedApplicationEventing",
"parameters": [],
@@ -2978,17 +2926,20 @@
"name": "getFileNameWithContent",
"capabilityId": "Aspire.Hosting/getFileNameWithContent",
"qualifiedName": "getFileNameWithContent",
- "description": "Gets a deterministic file path for the specified file contents",
+ "description": "Gets a deterministic file path that is a copy of the `sourceFilename`. The resulting file name will depend on the content of the file.",
+ "returns": "A deterministic file path with the same content as `sourceFilename`.",
"kind": "Method",
"signature": "getFileNameWithContent(filenameTemplate: string, sourceFilename: string): string",
"parameters": [
{
"name": "filenameTemplate",
- "type": "string"
+ "type": "string",
+ "description": "A file name to base the result on."
},
{
"name": "sourceFilename",
- "type": "string"
+ "type": "string",
+ "description": "An existing file."
}
],
"returnType": "string",
@@ -3001,7 +2952,8 @@
"name": "getHttpsCertificateData",
"capabilityId": "Aspire.Hosting/getHttpsCertificateData",
"qualifiedName": "getHttpsCertificateData",
- "description": "Gets HTTPS certificate execution-configuration data",
+ "description": "Gets HTTPS certificate execution-configuration data when present.",
+ "returns": "The HTTPS certificate data. When no additional data is present, an empty DTO is returned.",
"kind": "Method",
"signature": "getHttpsCertificateData(): HttpsCertificateExecutionConfigurationExportData",
"parameters": [],
@@ -3015,7 +2967,8 @@
"name": "getLoggerFactory",
"capabilityId": "Aspire.Hosting/getLoggerFactory",
"qualifiedName": "getLoggerFactory",
- "description": "Gets the logger factory from the service provider",
+ "description": "Gets the logger factory from the service provider.",
+ "returns": "A logger factory handle.",
"kind": "Method",
"signature": "getLoggerFactory(): ILoggerFactory",
"parameters": [],
@@ -3029,21 +2982,24 @@
"name": "getOrSetSecret",
"capabilityId": "Aspire.Hosting/getOrSetSecret",
"qualifiedName": "getOrSetSecret",
- "description": "Gets a secret value if it exists, or sets it to the provided value if it does not",
+ "description": "Gets a secret value if it exists in configuration, or sets it to the provided value if it does not.",
"kind": "Method",
"signature": "getOrSetSecret(resourceBuilder: IResource, name: string, value: string): void",
"parameters": [
{
"name": "resourceBuilder",
- "type": "IResource"
+ "type": "IResource",
+ "description": "A resource builder from the target application."
},
{
"name": "name",
- "type": "string"
+ "type": "string",
+ "description": "The secret name."
},
{
"name": "value",
- "type": "string"
+ "type": "string",
+ "description": "The value to persist when the secret is missing."
}
],
"returnType": "void",
@@ -3056,7 +3012,8 @@
"name": "getResourceLoggerService",
"capabilityId": "Aspire.Hosting/getResourceLoggerService",
"qualifiedName": "getResourceLoggerService",
- "description": "Gets the resource logger service from the service provider",
+ "description": "Gets the resource logger service from the service provider.",
+ "returns": "A resource logger service handle.",
"kind": "Method",
"signature": "getResourceLoggerService(): ResourceLoggerService",
"parameters": [],
@@ -3070,7 +3027,9 @@
"name": "getResourceName",
"capabilityId": "Aspire.Hosting/getResourceName",
"qualifiedName": "getResourceName",
- "description": "Gets the resource name",
+ "description": "Gets the name of the resource from a builder.",
+ "remarks": "Why this wrapper exists: This capability accesses a nested property\n(`resource.Resource.Name`) which requires a wrapper method. There is no single\n.NET method that returns just the resource name that could be annotated directly.",
+ "returns": "The resource name.",
"kind": "Method",
"signature": "getResourceName(): string",
"parameters": [],
@@ -3091,7 +3050,8 @@
"name": "getResourceNotificationService",
"capabilityId": "Aspire.Hosting/getResourceNotificationService",
"qualifiedName": "getResourceNotificationService",
- "description": "Gets the resource notification service from the service provider",
+ "description": "Gets the resource notification service from the service provider.",
+ "returns": "A resource notification service handle.",
"kind": "Method",
"signature": "getResourceNotificationService(): ResourceNotificationService",
"parameters": [],
@@ -3105,7 +3065,8 @@
"name": "getResources",
"capabilityId": "Aspire.Hosting/getResources",
"qualifiedName": "getResources",
- "description": "Gets resources from the distributed application model",
+ "description": "Gets all resources in the distributed application model.",
+ "returns": "The resources in the model.",
"kind": "Method",
"signature": "getResources(): IResource[]",
"parameters": [],
@@ -3119,13 +3080,15 @@
"name": "getSection",
"capabilityId": "Aspire.Hosting/getSection",
"qualifiedName": "getSection",
- "description": "Gets a configuration section by key",
+ "description": "Gets a configuration section by key.",
+ "returns": "The configuration section handle.",
"kind": "Method",
"signature": "getSection(key: string): IConfigurationSection",
"parameters": [
{
"name": "key",
- "type": "string"
+ "type": "string",
+ "description": "The configuration key."
}
],
"returnType": "IConfigurationSection",
@@ -3138,7 +3101,8 @@
"name": "getUserSecretsManager",
"capabilityId": "Aspire.Hosting/getUserSecretsManager",
"qualifiedName": "getUserSecretsManager",
- "description": "Gets the user secrets manager from the service provider",
+ "description": "Gets the user secrets manager from the service provider.",
+ "returns": "A user secrets manager handle.",
"kind": "Method",
"signature": "getUserSecretsManager(): IUserSecretsManager",
"parameters": [],
@@ -3152,7 +3116,7 @@
"name": "appHostDirectory",
"capabilityId": "Aspire.Hosting/IDistributedApplicationBuilder.appHostDirectory",
"qualifiedName": "IDistributedApplicationBuilder.appHostDirectory",
- "description": "Gets the AppHostDirectory property",
+ "description": "Directory of the project where the app host is located. Defaults to the content root if there's no project.",
"kind": "PropertyGetter",
"signature": "appHostDirectory(): string",
"parameters": [],
@@ -3166,7 +3130,9 @@
"name": "build",
"capabilityId": "Aspire.Hosting/build",
"qualifiedName": "IDistributedApplicationBuilder.build",
- "description": "Builds the distributed application",
+ "description": "Builds and returns a new `DistributedApplication` instance. This can only be called once.",
+ "remarks": "Callers of the `Build` method should only call it once. are responsible for the lifecycle of the\n`DistributedApplication` instance that is returned. Note that the `DistributedApplication`\ntype implements `IDisposable` and should be disposed of when it is no longer needed. Note that in\nmany templates and samples Dispose is omitted for brevity because in those cases the instance is destroyed\nwhen the process exists.",
+ "returns": "A new `DistributedApplication` instance.",
"kind": "InstanceMethod",
"signature": "build(): DistributedApplication",
"parameters": [],
@@ -3194,7 +3160,7 @@
"name": "eventing",
"capabilityId": "Aspire.Hosting/IDistributedApplicationBuilder.eventing",
"qualifiedName": "IDistributedApplicationBuilder.eventing",
- "description": "Gets the Eventing property",
+ "description": "Eventing infrastructure for AppHost lifecycle.",
"kind": "PropertyGetter",
"signature": "eventing(): IDistributedApplicationEventing",
"parameters": [],
@@ -3208,7 +3174,8 @@
"name": "executionContext",
"capabilityId": "Aspire.Hosting/IDistributedApplicationBuilder.executionContext",
"qualifiedName": "IDistributedApplicationBuilder.executionContext",
- "description": "Gets the ExecutionContext property",
+ "description": "Execution context for this invocation of the AppHost.",
+ "remarks": "The `ExecutionContext` property provides access key information about the context\nin which the distributed application is running. The most important properties that\nthe `DistributedApplicationExecutionContext` provides is the\n`IsPublishMode` and `IsRunMode`\nproperties. Developers building Aspire based applications may whish to change the application\nmodel depending on whether they are running locally, or whether they are publishing to the cloud.\nAn example of using the `IsRunMode` property on the `IDistributedApplicationBuilder` via\nthe `ApplicationBuilder`. In this case an extension method is used to generate a stable node name for RabbitMQ for local\ndevelopment runs.\n```\nprivate static IResourceBuilder RunWithStableNodeName(this IResourceBuilder builder)\n{\nif (builder.ApplicationBuilder.ExecutionContext.IsRunMode)\n{\nbuilder.WithEnvironment(context =>\n{\n// Set a stable node name so queue storage is consistent between sessions\nvar nodeName = $\"{builder.Resource.Name}@localhost\";\ncontext.EnvironmentVariables[\"RABBITMQ_NODENAME\"] = nodeName;\n});\n}\nreturn builder;\n}\n```",
"kind": "PropertyGetter",
"signature": "executionContext(): DistributedApplicationExecutionContext",
"parameters": [],
@@ -3222,7 +3189,8 @@
"name": "pipeline",
"capabilityId": "Aspire.Hosting/IDistributedApplicationBuilder.pipeline",
"qualifiedName": "IDistributedApplicationBuilder.pipeline",
- "description": "Gets the Pipeline property",
+ "description": "Gets the deployment pipeline for this distributed application.",
+ "remarks": "The pipeline allows adding custom deployment steps that execute during the deploy process.\nSteps can declare dependencies on other steps to control execution order.",
"kind": "PropertyGetter",
"signature": "pipeline(): IDistributedApplicationPipeline",
"parameters": [],
@@ -3236,7 +3204,8 @@
"name": "userSecretsManager",
"capabilityId": "Aspire.Hosting/IDistributedApplicationBuilder.userSecretsManager",
"qualifiedName": "IDistributedApplicationBuilder.userSecretsManager",
- "description": "Gets the UserSecretsManager property",
+ "description": "Gets the service for managing user secrets.",
+ "remarks": "The `UserSecretsManager` provides a centralized way to manage user secrets\nused by Aspire, enabling testability and consistent secret management.",
"kind": "PropertyGetter",
"signature": "userSecretsManager(): IUserSecretsManager",
"parameters": [],
@@ -3250,13 +3219,14 @@
"name": "unsubscribe",
"capabilityId": "Aspire.Hosting.Eventing/IDistributedApplicationEventing.unsubscribe",
"qualifiedName": "IDistributedApplicationEventing.unsubscribe",
- "description": "Invokes the Unsubscribe method",
+ "description": "Unsubscribe from an event.",
"kind": "InstanceMethod",
"signature": "unsubscribe(subscription: DistributedApplicationEventSubscription): void",
"parameters": [
{
"name": "subscription",
- "type": "DistributedApplicationEventSubscription"
+ "type": "DistributedApplicationEventSubscription",
+ "description": "The specific subscription to unsubscribe."
}
],
"returnType": "void",
@@ -3269,7 +3239,7 @@
"name": "eventing",
"capabilityId": "Aspire.Hosting.ApplicationModel/InitializeResourceEvent.eventing",
"qualifiedName": "InitializeResourceEvent.eventing",
- "description": "Gets the Eventing property",
+ "description": "The `IDistributedApplicationEventing` service for the app host.",
"kind": "PropertyGetter",
"signature": "eventing(): IDistributedApplicationEventing",
"parameters": [],
@@ -3283,7 +3253,7 @@
"name": "logger",
"capabilityId": "Aspire.Hosting.ApplicationModel/InitializeResourceEvent.logger",
"qualifiedName": "InitializeResourceEvent.logger",
- "description": "Gets the Logger property",
+ "description": "An instance of `ILogger` that can be used to log messages for the resource.",
"kind": "PropertyGetter",
"signature": "logger(): ILogger",
"parameters": [],
@@ -3297,7 +3267,7 @@
"name": "notifications",
"capabilityId": "Aspire.Hosting.ApplicationModel/InitializeResourceEvent.notifications",
"qualifiedName": "InitializeResourceEvent.notifications",
- "description": "Gets the Notifications property",
+ "description": "The `ResourceNotificationService` for the app host.",
"kind": "PropertyGetter",
"signature": "notifications(): ResourceNotificationService",
"parameters": [],
@@ -3325,7 +3295,7 @@
"name": "services",
"capabilityId": "Aspire.Hosting.ApplicationModel/InitializeResourceEvent.services",
"qualifiedName": "InitializeResourceEvent.services",
- "description": "Gets the Services property",
+ "description": "The `IServiceProvider` for the app host.",
"kind": "PropertyGetter",
"signature": "services(): IServiceProvider",
"parameters": [],
@@ -3339,7 +3309,8 @@
"name": "isDevelopment",
"capabilityId": "Aspire.Hosting/isDevelopment",
"qualifiedName": "isDevelopment",
- "description": "Checks if running in Development environment",
+ "description": "Checks if the environment is Development.",
+ "returns": "True if running in Development environment.",
"kind": "Method",
"signature": "isDevelopment(): boolean",
"parameters": [],
@@ -3353,13 +3324,15 @@
"name": "isEnvironment",
"capabilityId": "Aspire.Hosting/isEnvironment",
"qualifiedName": "isEnvironment",
- "description": "Checks if the environment matches the specified name",
+ "description": "Checks if the environment matches the specified name.",
+ "returns": "True if the environment matches the specified name.",
"kind": "Method",
"signature": "isEnvironment(environmentName: string): boolean",
"parameters": [
{
"name": "environmentName",
- "type": "string"
+ "type": "string",
+ "description": "The environment name to compare against."
}
],
"returnType": "boolean",
@@ -3372,7 +3345,8 @@
"name": "isProduction",
"capabilityId": "Aspire.Hosting/isProduction",
"qualifiedName": "isProduction",
- "description": "Checks if running in Production environment",
+ "description": "Checks if the environment is Production.",
+ "returns": "True if running in Production environment.",
"kind": "Method",
"signature": "isProduction(): boolean",
"parameters": [],
@@ -3386,7 +3360,8 @@
"name": "isStaging",
"capabilityId": "Aspire.Hosting/isStaging",
"qualifiedName": "isStaging",
- "description": "Checks if running in Staging environment",
+ "description": "Checks if the environment is Staging.",
+ "returns": "True if running in Staging environment.",
"kind": "Method",
"signature": "isStaging(): boolean",
"parameters": [],
@@ -3400,7 +3375,7 @@
"name": "filePath",
"capabilityId": "Aspire.Hosting/IUserSecretsManager.filePath",
"qualifiedName": "IUserSecretsManager.filePath",
- "description": "Gets the FilePath property",
+ "description": "Gets the path to the user secrets file.",
"kind": "PropertyGetter",
"signature": "filePath(): string",
"parameters": [],
@@ -3414,7 +3389,8 @@
"name": "isAvailable",
"capabilityId": "Aspire.Hosting/IUserSecretsManager.isAvailable",
"qualifiedName": "IUserSecretsManager.isAvailable",
- "description": "Gets the IsAvailable property",
+ "description": "Gets a value indicating whether user secrets are available.",
+ "remarks": "Returns `true` if the project has a user secrets ID configured; otherwise, `false`.",
"kind": "PropertyGetter",
"signature": "isAvailable(): boolean",
"parameters": [],
@@ -3428,13 +3404,16 @@
"name": "tryDeleteSecret",
"capabilityId": "Aspire.Hosting/IUserSecretsManager.tryDeleteSecret",
"qualifiedName": "IUserSecretsManager.tryDeleteSecret",
- "description": "Attempts to delete a user secret value",
+ "description": "Attempts to delete a user secret value synchronously.",
+ "remarks": "The default implementation returns `false` so existing implementations remain compatible.",
+ "returns": "True if the secret was deleted successfully; otherwise, false.",
"kind": "InstanceMethod",
"signature": "tryDeleteSecret(name: string): boolean",
"parameters": [
{
"name": "name",
- "type": "string"
+ "type": "string",
+ "description": "The name of the secret."
}
],
"returnType": "boolean",
@@ -3447,17 +3426,20 @@
"name": "trySetSecret",
"capabilityId": "Aspire.Hosting/IUserSecretsManager.trySetSecret",
"qualifiedName": "IUserSecretsManager.trySetSecret",
- "description": "Attempts to set a user secret value",
+ "description": "Attempts to set a user secret value synchronously.",
+ "returns": "True if the secret was set successfully; otherwise, false.",
"kind": "InstanceMethod",
"signature": "trySetSecret(name: string, value: string): boolean",
"parameters": [
{
"name": "name",
- "type": "string"
+ "type": "string",
+ "description": "The name of the secret."
},
{
"name": "value",
- "type": "string"
+ "type": "string",
+ "description": "The value of the secret."
}
],
"returnType": "boolean",
@@ -3470,171 +3452,184 @@
"name": "List.add",
"capabilityId": "Aspire.Hosting/List.add",
"qualifiedName": "List.add",
- "description": "Adds an item to the end of a list",
+ "description": "Adds an item to the end of a list.",
"kind": "Method",
"signature": "List.add(item: any): void",
"parameters": [
{
"name": "item",
- "type": "any"
+ "type": "any",
+ "description": "The item to add."
}
],
"returnType": "void",
- "targetTypeId": "Aspire.Hosting/List\u003Cany\u003E",
+ "targetTypeId": "Aspire.Hosting/List",
"expandedTargetTypes": [
- "List\u003Cany\u003E"
+ "List"
]
},
{
"name": "List.clear",
"capabilityId": "Aspire.Hosting/List.clear",
"qualifiedName": "List.clear",
- "description": "Clears all items from a list",
+ "description": "Clears all items from a list.",
"kind": "Method",
"signature": "List.clear(): void",
"parameters": [],
"returnType": "void",
- "targetTypeId": "Aspire.Hosting/List\u003Cany\u003E",
+ "targetTypeId": "Aspire.Hosting/List",
"expandedTargetTypes": [
- "List\u003Cany\u003E"
+ "List"
]
},
{
"name": "List.get",
"capabilityId": "Aspire.Hosting/List.get",
"qualifiedName": "List.get",
- "description": "Gets an item from a list by index",
+ "description": "Gets an item from a list by index.",
+ "returns": "The item at the specified index.",
"kind": "Method",
"signature": "List.get(index: number): any",
"parameters": [
{
"name": "index",
- "type": "number"
+ "type": "number",
+ "description": "The zero-based index."
}
],
"returnType": "any",
- "targetTypeId": "Aspire.Hosting/List\u003Cany\u003E",
+ "targetTypeId": "Aspire.Hosting/List",
"expandedTargetTypes": [
- "List\u003Cany\u003E"
+ "List"
]
},
{
"name": "List.indexOf",
"capabilityId": "Aspire.Hosting/List.indexOf",
"qualifiedName": "List.indexOf",
- "description": "Gets the index of an item in a list",
+ "description": "Gets the index of an item in a list.",
+ "returns": "The zero-based index, or -1 if not found.",
"kind": "Method",
"signature": "List.indexOf(item: any): number",
"parameters": [
{
"name": "item",
- "type": "any"
+ "type": "any",
+ "description": "The item to find."
}
],
"returnType": "number",
- "targetTypeId": "Aspire.Hosting/List\u003Cany\u003E",
+ "targetTypeId": "Aspire.Hosting/List",
"expandedTargetTypes": [
- "List\u003Cany\u003E"
+ "List"
]
},
{
"name": "List.insert",
"capabilityId": "Aspire.Hosting/List.insert",
"qualifiedName": "List.insert",
- "description": "Inserts an item at a specific index in a list",
+ "description": "Inserts an item at a specific index in a list.",
"kind": "Method",
"signature": "List.insert(index: number, item: any): void",
"parameters": [
{
"name": "index",
- "type": "number"
+ "type": "number",
+ "description": "The zero-based index at which to insert."
},
{
"name": "item",
- "type": "any"
+ "type": "any",
+ "description": "The item to insert."
}
],
"returnType": "void",
- "targetTypeId": "Aspire.Hosting/List\u003Cany\u003E",
+ "targetTypeId": "Aspire.Hosting/List",
"expandedTargetTypes": [
- "List\u003Cany\u003E"
+ "List"
]
},
{
"name": "List.length",
"capabilityId": "Aspire.Hosting/List.length",
"qualifiedName": "List.length",
- "description": "Gets the number of items in a list",
+ "description": "Gets the number of items in a list.",
+ "returns": "The number of items.",
"kind": "Method",
"signature": "List.length(): number",
"parameters": [],
"returnType": "number",
- "targetTypeId": "Aspire.Hosting/List\u003Cany\u003E",
+ "targetTypeId": "Aspire.Hosting/List",
"expandedTargetTypes": [
- "List\u003Cany\u003E"
+ "List"
]
},
{
"name": "List.removeAt",
"capabilityId": "Aspire.Hosting/List.removeAt",
"qualifiedName": "List.removeAt",
- "description": "Removes an item at a specific index from a list",
+ "description": "Removes an item at a specific index from a list.",
+ "returns": "True if the item was removed.",
"kind": "Method",
"signature": "List.removeAt(index: number): boolean",
"parameters": [
{
"name": "index",
- "type": "number"
+ "type": "number",
+ "description": "The zero-based index of the item to remove."
}
],
"returnType": "boolean",
- "targetTypeId": "Aspire.Hosting/List\u003Cany\u003E",
+ "targetTypeId": "Aspire.Hosting/List",
"expandedTargetTypes": [
- "List\u003Cany\u003E"
+ "List"
]
},
{
"name": "List.set",
"capabilityId": "Aspire.Hosting/List.set",
"qualifiedName": "List.set",
- "description": "Sets an item in a list at a specific index",
+ "description": "Sets an item in a list at a specific index.",
"kind": "Method",
"signature": "List.set(index: number, value: any): void",
"parameters": [
{
"name": "index",
- "type": "number"
+ "type": "number",
+ "description": "The zero-based index."
},
{
"name": "value",
- "type": "any"
+ "type": "any",
+ "description": "The value to set."
}
],
"returnType": "void",
- "targetTypeId": "Aspire.Hosting/List\u003Cany\u003E",
+ "targetTypeId": "Aspire.Hosting/List",
"expandedTargetTypes": [
- "List\u003Cany\u003E"
+ "List"
]
},
{
"name": "List.toArray",
"capabilityId": "Aspire.Hosting/List.toArray",
"qualifiedName": "List.toArray",
- "description": "Converts a list to an array",
+ "description": "Converts the list to an array (creates a copy).",
+ "returns": "An array containing all items.",
"kind": "Method",
"signature": "List.toArray(): any[]",
"parameters": [],
"returnType": "any[]",
- "targetTypeId": "Aspire.Hosting/List\u003Cany\u003E",
+ "targetTypeId": "Aspire.Hosting/List",
"expandedTargetTypes": [
- "List\u003Cany\u003E"
+ "List"
]
},
{
"name": "log",
"capabilityId": "Aspire.Hosting/log",
"qualifiedName": "log",
- "description": "Logs a message with specified level",
+ "description": "Logs a message with a specified log level.",
"kind": "Method",
"signature": "log(level: string, message: string): void",
"parameters": [
@@ -3657,7 +3652,7 @@
"name": "logDebug",
"capabilityId": "Aspire.Hosting/logDebug",
"qualifiedName": "logDebug",
- "description": "Logs a debug message",
+ "description": "Logs a debug message.",
"kind": "Method",
"signature": "logDebug(message: string): void",
"parameters": [
@@ -3676,7 +3671,7 @@
"name": "logError",
"capabilityId": "Aspire.Hosting/logError",
"qualifiedName": "logError",
- "description": "Logs an error message",
+ "description": "Logs an error message.",
"kind": "Method",
"signature": "logError(message: string): void",
"parameters": [
@@ -3695,13 +3690,14 @@
"name": "debug",
"capabilityId": "Aspire.Hosting.ApplicationModel/debug",
"qualifiedName": "LogFacade.debug",
- "description": "Writes a debug log message",
+ "description": "Writes a debug log message.",
"kind": "InstanceMethod",
"signature": "debug(message: string): void",
"parameters": [
{
"name": "message",
- "type": "string"
+ "type": "string",
+ "description": "The message to write."
}
],
"returnType": "void",
@@ -3714,13 +3710,14 @@
"name": "error",
"capabilityId": "Aspire.Hosting.ApplicationModel/error",
"qualifiedName": "LogFacade.error",
- "description": "Writes an error log message",
+ "description": "Writes an error log message.",
"kind": "InstanceMethod",
"signature": "error(message: string): void",
"parameters": [
{
"name": "message",
- "type": "string"
+ "type": "string",
+ "description": "The message to write."
}
],
"returnType": "void",
@@ -3733,13 +3730,14 @@
"name": "info",
"capabilityId": "Aspire.Hosting.ApplicationModel/info",
"qualifiedName": "LogFacade.info",
- "description": "Writes an informational log message",
+ "description": "Writes an informational log message.",
"kind": "InstanceMethod",
"signature": "info(message: string): void",
"parameters": [
{
"name": "message",
- "type": "string"
+ "type": "string",
+ "description": "The message to write."
}
],
"returnType": "void",
@@ -3752,13 +3750,14 @@
"name": "warning",
"capabilityId": "Aspire.Hosting.ApplicationModel/warning",
"qualifiedName": "LogFacade.warning",
- "description": "Writes a warning log message",
+ "description": "Writes a warning log message.",
"kind": "InstanceMethod",
"signature": "warning(message: string): void",
"parameters": [
{
"name": "message",
- "type": "string"
+ "type": "string",
+ "description": "The message to write."
}
],
"returnType": "void",
@@ -3771,7 +3770,7 @@
"name": "logInformation",
"capabilityId": "Aspire.Hosting/logInformation",
"qualifiedName": "logInformation",
- "description": "Logs an information message",
+ "description": "Logs an information message.",
"kind": "Method",
"signature": "logInformation(message: string): void",
"parameters": [
@@ -3790,7 +3789,7 @@
"name": "logStep",
"capabilityId": "Aspire.Hosting/logStep",
"qualifiedName": "logStep",
- "description": "Logs a plain-text message for the reporting step",
+ "description": "Logs a plain-text message for the reporting step.",
"kind": "Method",
"signature": "logStep(level: string, message: string): void",
"parameters": [
@@ -3813,7 +3812,7 @@
"name": "logStepMarkdown",
"capabilityId": "Aspire.Hosting/logStepMarkdown",
"qualifiedName": "logStepMarkdown",
- "description": "Logs a Markdown-formatted message for the reporting step",
+ "description": "Logs a Markdown-formatted message for the reporting step.",
"kind": "Method",
"signature": "logStepMarkdown(level: string, markdownString: string): void",
"parameters": [
@@ -3836,7 +3835,7 @@
"name": "logWarning",
"capabilityId": "Aspire.Hosting/logWarning",
"qualifiedName": "logWarning",
- "description": "Logs a warning message",
+ "description": "Logs a warning message.",
"kind": "Method",
"signature": "logWarning(message: string): void",
"parameters": [
@@ -3855,15 +3854,17 @@
"name": "onAfterResourcesCreated",
"capabilityId": "Aspire.Hosting/eventingSubscriberOnAfterResourcesCreated",
"qualifiedName": "onAfterResourcesCreated",
- "description": "Subscribes an eventing subscriber to the AfterResourcesCreated event",
+ "description": "Subscribes to the AfterResourcesCreated event from an eventing subscriber registration context.",
+ "returns": "The event subscription.",
"kind": "Method",
- "signature": "onAfterResourcesCreated(callback: (arg: AfterResourcesCreatedEvent) =\u003E Promise\u003Cvoid\u003E): DistributedApplicationEventSubscription",
+ "signature": "onAfterResourcesCreated(callback: (arg: AfterResourcesCreatedEvent) => Promise): DistributedApplicationEventSubscription",
"parameters": [
{
"name": "callback",
"type": "callback",
"isCallback": true,
- "callbackSignature": "(arg: AfterResourcesCreatedEvent) =\u003E Promise\u003Cvoid\u003E"
+ "callbackSignature": "(arg: AfterResourcesCreatedEvent) => Promise",
+ "description": "The callback to invoke when the event fires."
}
],
"returnType": "DistributedApplicationEventSubscription",
@@ -3876,15 +3877,17 @@
"name": "onBeforeResourceStarted",
"capabilityId": "Aspire.Hosting/onBeforeResourceStarted",
"qualifiedName": "onBeforeResourceStarted",
- "description": "Subscribes to the BeforeResourceStarted event",
+ "description": "Subscribes to the BeforeResourceStarted event.",
+ "returns": "The resource builder.",
"kind": "Method",
- "signature": "onBeforeResourceStarted(callback: (arg: BeforeResourceStartedEvent) =\u003E Promise\u003Cvoid\u003E): IResource",
+ "signature": "onBeforeResourceStarted(callback: (arg: BeforeResourceStartedEvent) => Promise): IResource",
"parameters": [
{
"name": "callback",
"type": "callback",
"isCallback": true,
- "callbackSignature": "(arg: BeforeResourceStartedEvent) =\u003E Promise\u003Cvoid\u003E"
+ "callbackSignature": "(arg: BeforeResourceStartedEvent) => Promise",
+ "description": "The callback to invoke when the event fires."
}
],
"returnType": "IResource",
@@ -3905,15 +3908,17 @@
"name": "onBeforeStart",
"capabilityId": "Aspire.Hosting/eventingSubscriberOnBeforeStart",
"qualifiedName": "onBeforeStart",
- "description": "Subscribes an eventing subscriber to the BeforeStart event",
+ "description": "Subscribes to the BeforeStart event from an eventing subscriber registration context.",
+ "returns": "The event subscription.",
"kind": "Method",
- "signature": "onBeforeStart(callback: (arg: BeforeStartEvent) =\u003E Promise\u003Cvoid\u003E): DistributedApplicationEventSubscription",
+ "signature": "onBeforeStart(callback: (arg: BeforeStartEvent) => Promise): DistributedApplicationEventSubscription",
"parameters": [
{
"name": "callback",
"type": "callback",
"isCallback": true,
- "callbackSignature": "(arg: BeforeStartEvent) =\u003E Promise\u003Cvoid\u003E"
+ "callbackSignature": "(arg: BeforeStartEvent) => Promise",
+ "description": "The callback to invoke when the event fires."
}
],
"returnType": "DistributedApplicationEventSubscription",
@@ -3926,15 +3931,17 @@
"name": "onConnectionStringAvailable",
"capabilityId": "Aspire.Hosting/onConnectionStringAvailable",
"qualifiedName": "onConnectionStringAvailable",
- "description": "Subscribes to the ConnectionStringAvailable event",
+ "description": "Subscribes to the ConnectionStringAvailable event.",
+ "returns": "The resource builder.",
"kind": "Method",
- "signature": "onConnectionStringAvailable(callback: (arg: ConnectionStringAvailableEvent) =\u003E Promise\u003Cvoid\u003E): IResourceWithConnectionString",
+ "signature": "onConnectionStringAvailable(callback: (arg: ConnectionStringAvailableEvent) => Promise): IResourceWithConnectionString",
"parameters": [
{
"name": "callback",
"type": "callback",
"isCallback": true,
- "callbackSignature": "(arg: ConnectionStringAvailableEvent) =\u003E Promise\u003Cvoid\u003E"
+ "callbackSignature": "(arg: ConnectionStringAvailableEvent) => Promise",
+ "description": "The callback to invoke when the event fires."
}
],
"returnType": "IResourceWithConnectionString",
@@ -3948,15 +3955,17 @@
"name": "onInitializeResource",
"capabilityId": "Aspire.Hosting/onInitializeResource",
"qualifiedName": "onInitializeResource",
- "description": "Subscribes to the InitializeResource event",
+ "description": "Subscribes to the InitializeResource event.",
+ "returns": "The resource builder.",
"kind": "Method",
- "signature": "onInitializeResource(callback: (arg: InitializeResourceEvent) =\u003E Promise\u003Cvoid\u003E): IResource",
+ "signature": "onInitializeResource(callback: (arg: InitializeResourceEvent) => Promise): IResource",
"parameters": [
{
"name": "callback",
"type": "callback",
"isCallback": true,
- "callbackSignature": "(arg: InitializeResourceEvent) =\u003E Promise\u003Cvoid\u003E"
+ "callbackSignature": "(arg: InitializeResourceEvent) => Promise",
+ "description": "The callback to invoke when the event fires."
}
],
"returnType": "IResource",
@@ -3977,15 +3986,17 @@
"name": "onResourceEndpointsAllocated",
"capabilityId": "Aspire.Hosting/onResourceEndpointsAllocated",
"qualifiedName": "onResourceEndpointsAllocated",
- "description": "Subscribes to the ResourceEndpointsAllocated event",
+ "description": "Subscribes to the ResourceEndpointsAllocated event.",
+ "returns": "The resource builder.",
"kind": "Method",
- "signature": "onResourceEndpointsAllocated(callback: (arg: ResourceEndpointsAllocatedEvent) =\u003E Promise\u003Cvoid\u003E): IResourceWithEndpoints",
+ "signature": "onResourceEndpointsAllocated(callback: (arg: ResourceEndpointsAllocatedEvent) => Promise): IResourceWithEndpoints",
"parameters": [
{
"name": "callback",
"type": "callback",
"isCallback": true,
- "callbackSignature": "(arg: ResourceEndpointsAllocatedEvent) =\u003E Promise\u003Cvoid\u003E"
+ "callbackSignature": "(arg: ResourceEndpointsAllocatedEvent) => Promise",
+ "description": "The callback to invoke when the event fires."
}
],
"returnType": "IResourceWithEndpoints",
@@ -4003,15 +4014,17 @@
"name": "onResourceReady",
"capabilityId": "Aspire.Hosting/onResourceReady",
"qualifiedName": "onResourceReady",
- "description": "Subscribes to the ResourceReady event",
+ "description": "Subscribes to the ResourceReady event.",
+ "returns": "The resource builder.",
"kind": "Method",
- "signature": "onResourceReady(callback: (arg: ResourceReadyEvent) =\u003E Promise\u003Cvoid\u003E): IResource",
+ "signature": "onResourceReady(callback: (arg: ResourceReadyEvent) => Promise): IResource",
"parameters": [
{
"name": "callback",
"type": "callback",
"isCallback": true,
- "callbackSignature": "(arg: ResourceReadyEvent) =\u003E Promise\u003Cvoid\u003E"
+ "callbackSignature": "(arg: ResourceReadyEvent) => Promise",
+ "description": "The callback to invoke when the event fires."
}
],
"returnType": "IResource",
@@ -4032,15 +4045,17 @@
"name": "onResourceStopped",
"capabilityId": "Aspire.Hosting/onResourceStopped",
"qualifiedName": "onResourceStopped",
- "description": "Subscribes to the ResourceStopped event",
+ "description": "Subscribes to the ResourceStopped event.",
+ "returns": "The resource builder.",
"kind": "Method",
- "signature": "onResourceStopped(callback: (arg: ResourceStoppedEvent) =\u003E Promise\u003Cvoid\u003E): IResource",
+ "signature": "onResourceStopped(callback: (arg: ResourceStoppedEvent) => Promise): IResource",
"parameters": [
{
"name": "callback",
"type": "callback",
"isCallback": true,
- "callbackSignature": "(arg: ResourceStoppedEvent) =\u003E Promise\u003Cvoid\u003E"
+ "callbackSignature": "(arg: ResourceStoppedEvent) => Promise",
+ "description": "The callback to invoke when the event fires."
}
],
"returnType": "IResource",
@@ -4061,13 +4076,15 @@
"name": "getSteps",
"capabilityId": "Aspire.Hosting.Pipelines/getSteps",
"qualifiedName": "PipelineConfigurationContext.getSteps",
- "description": "Gets pipeline steps with the specified tag",
+ "description": "Gets all pipeline steps with the specified tag.",
+ "returns": "A collection of steps that have the specified tag.",
"kind": "InstanceMethod",
"signature": "getSteps(tag: string): PipelineStep[]",
"parameters": [
{
"name": "tag",
- "type": "string"
+ "type": "string",
+ "description": "The tag to search for."
}
],
"returnType": "PipelineStep[]",
@@ -4080,7 +4097,7 @@
"name": "log",
"capabilityId": "Aspire.Hosting.Pipelines/PipelineConfigurationContext.log",
"qualifiedName": "PipelineConfigurationContext.log",
- "description": "Gets the callback logger facade",
+ "description": "Gets the logger facade used by polyglot callbacks.",
"kind": "PropertyGetter",
"signature": "log(): LogFacade",
"parameters": [],
@@ -4094,7 +4111,7 @@
"name": "pipeline",
"capabilityId": "Aspire.Hosting.Pipelines/PipelineConfigurationContext.pipeline",
"qualifiedName": "PipelineConfigurationContext.pipeline",
- "description": "Gets the pipeline editor",
+ "description": "Gets the pipeline editor used by polyglot callbacks.",
"kind": "PropertyGetter",
"signature": "pipeline(): PipelineEditor",
"parameters": [],
@@ -4108,7 +4125,7 @@
"name": "cancellationToken",
"capabilityId": "Aspire.Hosting.Pipelines/PipelineContext.cancellationToken",
"qualifiedName": "PipelineContext.cancellationToken",
- "description": "Gets the CancellationToken property",
+ "description": "Gets the cancellation token for the pipeline operation.",
"kind": "PropertyGetter",
"signature": "cancellationToken(): cancellationToken",
"parameters": [],
@@ -4122,7 +4139,7 @@
"name": "executionContext",
"capabilityId": "Aspire.Hosting.Pipelines/PipelineContext.executionContext",
"qualifiedName": "PipelineContext.executionContext",
- "description": "Gets the ExecutionContext property",
+ "description": "Gets the execution context for the distributed application.",
"kind": "PropertyGetter",
"signature": "executionContext(): DistributedApplicationExecutionContext",
"parameters": [],
@@ -4136,7 +4153,7 @@
"name": "logger",
"capabilityId": "Aspire.Hosting.Pipelines/PipelineContext.logger",
"qualifiedName": "PipelineContext.logger",
- "description": "Gets the Logger property",
+ "description": "Gets the logger for pipeline operations.",
"kind": "PropertyGetter",
"signature": "logger(): ILogger",
"parameters": [],
@@ -4150,7 +4167,7 @@
"name": "model",
"capabilityId": "Aspire.Hosting.Pipelines/PipelineContext.model",
"qualifiedName": "PipelineContext.model",
- "description": "Gets the Model property",
+ "description": "Gets the distributed application model to be deployed.",
"kind": "PropertyGetter",
"signature": "model(): DistributedApplicationModel",
"parameters": [],
@@ -4164,7 +4181,7 @@
"name": "services",
"capabilityId": "Aspire.Hosting.Pipelines/PipelineContext.services",
"qualifiedName": "PipelineContext.services",
- "description": "Gets the Services property",
+ "description": "Gets the service provider for dependency resolution.",
"kind": "PropertyGetter",
"signature": "services(): IServiceProvider",
"parameters": [],
@@ -4178,7 +4195,7 @@
"name": "setCancellationToken",
"capabilityId": "Aspire.Hosting.Pipelines/PipelineContext.setCancellationToken",
"qualifiedName": "PipelineContext.setCancellationToken",
- "description": "Sets the CancellationToken property",
+ "description": "Gets the cancellation token for the pipeline operation.",
"kind": "PropertySetter",
"signature": "setCancellationToken(value: cancellationToken): PipelineContext",
"parameters": [
@@ -4197,7 +4214,8 @@
"name": "summary",
"capabilityId": "Aspire.Hosting.Pipelines/PipelineContext.summary",
"qualifiedName": "PipelineContext.summary",
- "description": "Gets the Summary property",
+ "description": "Gets the pipeline summary that steps can add information to. The summary will be displayed to users after pipeline execution completes.",
+ "remarks": "Pipeline steps can add key-value pairs to the summary to provide useful information\nabout the pipeline execution, such as deployment targets, resource names, URLs, etc.",
"kind": "PropertyGetter",
"signature": "summary(): PipelineSummary",
"parameters": [],
@@ -4211,7 +4229,8 @@
"name": "steps",
"capabilityId": "Aspire.Hosting.Pipelines/steps",
"qualifiedName": "PipelineEditor.steps",
- "description": "Gets all configured pipeline steps",
+ "description": "Gets all configured pipeline steps.",
+ "returns": "The configured pipeline steps.",
"kind": "InstanceMethod",
"signature": "steps(): PipelineStep[]",
"parameters": [],
@@ -4225,13 +4244,15 @@
"name": "stepsByTag",
"capabilityId": "Aspire.Hosting.Pipelines/stepsByTag",
"qualifiedName": "PipelineEditor.stepsByTag",
- "description": "Gets pipeline steps with the specified tag",
+ "description": "Gets all pipeline steps that have the specified tag.",
+ "returns": "The matching pipeline steps.",
"kind": "InstanceMethod",
"signature": "stepsByTag(tag: string): PipelineStep[]",
"parameters": [
{
"name": "tag",
- "type": "string"
+ "type": "string",
+ "description": "The tag to search for."
}
],
"returnType": "PipelineStep[]",
@@ -4244,13 +4265,14 @@
"name": "addTag",
"capabilityId": "Aspire.Hosting.Pipelines/addTag",
"qualifiedName": "PipelineStep.addTag",
- "description": "Adds a tag to the step",
+ "description": "Adds a tag to the step.",
"kind": "InstanceMethod",
"signature": "addTag(tag: string): void",
"parameters": [
{
"name": "tag",
- "type": "string"
+ "type": "string",
+ "description": "The tag to add."
}
],
"returnType": "void",
@@ -4263,13 +4285,14 @@
"name": "dependsOn",
"capabilityId": "Aspire.Hosting.Pipelines/dependsOn",
"qualifiedName": "PipelineStep.dependsOn",
- "description": "Adds a dependency on another step by name",
+ "description": "Adds a dependency on another step.",
"kind": "InstanceMethod",
"signature": "dependsOn(stepName: string): void",
"parameters": [
{
"name": "stepName",
- "type": "string"
+ "type": "string",
+ "description": "The name of the step to depend on."
}
],
"returnType": "void",
@@ -4282,7 +4305,8 @@
"name": "description",
"capabilityId": "Aspire.Hosting.Pipelines/PipelineStep.description",
"qualifiedName": "PipelineStep.description",
- "description": "Gets the human-readable description of the step",
+ "description": "Gets the exported description projection for polyglot SDKs.",
+ "remarks": "This projection avoids exporting an ATS setter for the public init-only `Description` property.",
"kind": "PropertyGetter",
"signature": "description(): string",
"parameters": [],
@@ -4296,7 +4320,8 @@
"name": "name",
"capabilityId": "Aspire.Hosting.Pipelines/PipelineStep.name",
"qualifiedName": "PipelineStep.name",
- "description": "Gets the unique name of the step",
+ "description": "Gets the exported name projection for polyglot SDKs.",
+ "remarks": "This projection avoids exporting an ATS setter for the public init-only `Name` property.",
"kind": "PropertyGetter",
"signature": "name(): string",
"parameters": [],
@@ -4310,13 +4335,14 @@
"name": "requiredBy",
"capabilityId": "Aspire.Hosting.Pipelines/requiredBy",
"qualifiedName": "PipelineStep.requiredBy",
- "description": "Specifies that another step requires this step by name",
+ "description": "Specifies that this step is required by another step. This creates the inverse relationship where the other step will depend on this step.",
"kind": "InstanceMethod",
"signature": "requiredBy(stepName: string): void",
"parameters": [
{
"name": "stepName",
- "type": "string"
+ "type": "string",
+ "description": "The name of the step that requires this step."
}
],
"returnType": "void",
@@ -4329,7 +4355,7 @@
"name": "cancellationToken",
"capabilityId": "Aspire.Hosting.Pipelines/PipelineStepContext.cancellationToken",
"qualifiedName": "PipelineStepContext.cancellationToken",
- "description": "Gets the CancellationToken property",
+ "description": "Gets the cancellation token for the pipeline operation.",
"kind": "PropertyGetter",
"signature": "cancellationToken(): cancellationToken",
"parameters": [],
@@ -4343,7 +4369,7 @@
"name": "executionContext",
"capabilityId": "Aspire.Hosting.Pipelines/PipelineStepContext.executionContext",
"qualifiedName": "PipelineStepContext.executionContext",
- "description": "Gets the ExecutionContext property",
+ "description": "Gets the execution context for the distributed application.",
"kind": "PropertyGetter",
"signature": "executionContext(): DistributedApplicationExecutionContext",
"parameters": [],
@@ -4357,7 +4383,7 @@
"name": "logger",
"capabilityId": "Aspire.Hosting.Pipelines/PipelineStepContext.logger",
"qualifiedName": "PipelineStepContext.logger",
- "description": "Gets the Logger property",
+ "description": "Gets the logger for pipeline operations that writes to both the pipeline logger and the step logger.",
"kind": "PropertyGetter",
"signature": "logger(): ILogger",
"parameters": [],
@@ -4371,7 +4397,7 @@
"name": "model",
"capabilityId": "Aspire.Hosting.Pipelines/PipelineStepContext.model",
"qualifiedName": "PipelineStepContext.model",
- "description": "Gets the Model property",
+ "description": "Gets the distributed application model to be deployed.",
"kind": "PropertyGetter",
"signature": "model(): DistributedApplicationModel",
"parameters": [],
@@ -4385,7 +4411,7 @@
"name": "pipelineContext",
"capabilityId": "Aspire.Hosting.Pipelines/PipelineStepContext.pipelineContext",
"qualifiedName": "PipelineStepContext.pipelineContext",
- "description": "Gets the PipelineContext property",
+ "description": "Gets the pipeline context shared across all steps.",
"kind": "PropertyGetter",
"signature": "pipelineContext(): PipelineContext",
"parameters": [],
@@ -4399,7 +4425,7 @@
"name": "reportingStep",
"capabilityId": "Aspire.Hosting.Pipelines/PipelineStepContext.reportingStep",
"qualifiedName": "PipelineStepContext.reportingStep",
- "description": "Gets the ReportingStep property",
+ "description": "Gets the publishing step associated with this specific step execution.",
"kind": "PropertyGetter",
"signature": "reportingStep(): IReportingStep",
"parameters": [],
@@ -4413,7 +4439,7 @@
"name": "services",
"capabilityId": "Aspire.Hosting.Pipelines/PipelineStepContext.services",
"qualifiedName": "PipelineStepContext.services",
- "description": "Gets the Services property",
+ "description": "Gets the service provider for dependency resolution.",
"kind": "PropertyGetter",
"signature": "services(): IServiceProvider",
"parameters": [],
@@ -4423,49 +4449,12 @@
"Aspire.Hosting.Pipelines.PipelineStepContext"
]
},
- {
- "name": "setPipelineContext",
- "capabilityId": "Aspire.Hosting.Pipelines/PipelineStepContext.setPipelineContext",
- "qualifiedName": "PipelineStepContext.setPipelineContext",
- "description": "Sets the PipelineContext property",
- "kind": "PropertySetter",
- "signature": "setPipelineContext(value: PipelineContext): PipelineStepContext",
- "parameters": [
- {
- "name": "value",
- "type": "PipelineContext"
- }
- ],
- "returnType": "PipelineStepContext",
- "targetTypeId": "Aspire.Hosting/Aspire.Hosting.Pipelines.PipelineStepContext",
- "expandedTargetTypes": [
- "Aspire.Hosting.Pipelines.PipelineStepContext"
- ]
- },
- {
- "name": "setReportingStep",
- "capabilityId": "Aspire.Hosting.Pipelines/PipelineStepContext.setReportingStep",
- "qualifiedName": "PipelineStepContext.setReportingStep",
- "description": "Sets the ReportingStep property",
- "kind": "PropertySetter",
- "signature": "setReportingStep(value: IReportingStep): PipelineStepContext",
- "parameters": [
- {
- "name": "value",
- "type": "IReportingStep"
- }
- ],
- "returnType": "PipelineStepContext",
- "targetTypeId": "Aspire.Hosting/Aspire.Hosting.Pipelines.PipelineStepContext",
- "expandedTargetTypes": [
- "Aspire.Hosting.Pipelines.PipelineStepContext"
- ]
- },
{
"name": "summary",
"capabilityId": "Aspire.Hosting.Pipelines/PipelineStepContext.summary",
"qualifiedName": "PipelineStepContext.summary",
- "description": "Gets the Summary property",
+ "description": "Gets the pipeline summary that steps can add information to. The summary will be displayed to users after pipeline execution completes.",
+ "remarks": "Pipeline steps can add key-value pairs to the summary to provide useful information\nabout the pipeline execution, such as deployment targets, resource names, URLs, etc.",
"kind": "PropertyGetter",
"signature": "summary(): PipelineSummary",
"parameters": [],
@@ -4479,7 +4468,7 @@
"name": "pipelineContext",
"capabilityId": "Aspire.Hosting.Pipelines/PipelineStepFactoryContext.pipelineContext",
"qualifiedName": "PipelineStepFactoryContext.pipelineContext",
- "description": "Gets the PipelineContext property",
+ "description": "Gets the pipeline context that has the model and other properties.",
"kind": "PropertyGetter",
"signature": "pipelineContext(): PipelineContext",
"parameters": [],
@@ -4493,7 +4482,7 @@
"name": "resource",
"capabilityId": "Aspire.Hosting.Pipelines/PipelineStepFactoryContext.resource",
"qualifiedName": "PipelineStepFactoryContext.resource",
- "description": "Gets the Resource property",
+ "description": "Gets the resource that this factory is associated with.",
"kind": "PropertyGetter",
"signature": "resource(): IResource",
"parameters": [],
@@ -4503,59 +4492,23 @@
"Aspire.Hosting.Pipelines.PipelineStepFactoryContext"
]
},
- {
- "name": "setPipelineContext",
- "capabilityId": "Aspire.Hosting.Pipelines/PipelineStepFactoryContext.setPipelineContext",
- "qualifiedName": "PipelineStepFactoryContext.setPipelineContext",
- "description": "Sets the PipelineContext property",
- "kind": "PropertySetter",
- "signature": "setPipelineContext(value: PipelineContext): PipelineStepFactoryContext",
- "parameters": [
- {
- "name": "value",
- "type": "PipelineContext"
- }
- ],
- "returnType": "PipelineStepFactoryContext",
- "targetTypeId": "Aspire.Hosting/Aspire.Hosting.Pipelines.PipelineStepFactoryContext",
- "expandedTargetTypes": [
- "Aspire.Hosting.Pipelines.PipelineStepFactoryContext"
- ]
- },
- {
- "name": "setResource",
- "capabilityId": "Aspire.Hosting.Pipelines/PipelineStepFactoryContext.setResource",
- "qualifiedName": "PipelineStepFactoryContext.setResource",
- "description": "Sets the Resource property",
- "kind": "PropertySetter",
- "signature": "setResource(value: IResource): PipelineStepFactoryContext",
- "parameters": [
- {
- "name": "value",
- "type": "IResource"
- }
- ],
- "returnType": "PipelineStepFactoryContext",
- "targetTypeId": "Aspire.Hosting/Aspire.Hosting.Pipelines.PipelineStepFactoryContext",
- "expandedTargetTypes": [
- "Aspire.Hosting.Pipelines.PipelineStepFactoryContext"
- ]
- },
{
"name": "add",
"capabilityId": "Aspire.Hosting.Pipelines/PipelineSummary.add",
"qualifiedName": "PipelineSummary.add",
- "description": "Invokes the Add method",
+ "description": "Adds a key-value pair to the pipeline summary with a plain-text value.",
"kind": "InstanceMethod",
"signature": "add(key: string, value: string): void",
"parameters": [
{
"name": "key",
- "type": "string"
+ "type": "string",
+ "description": "The key or label for the item (e.g., \"Namespace\", \"URL\")."
},
{
"name": "value",
- "type": "string"
+ "type": "string",
+ "description": "The plain-text value for the item."
}
],
"returnType": "void",
@@ -4568,7 +4521,7 @@
"name": "excludeKestrelEndpoints",
"capabilityId": "Aspire.Hosting/ProjectResourceOptions.excludeKestrelEndpoints",
"qualifiedName": "ProjectResourceOptions.excludeKestrelEndpoints",
- "description": "Gets the ExcludeKestrelEndpoints property",
+ "description": "If set, ignore endpoints coming from Kestrel configuration.",
"kind": "PropertyGetter",
"signature": "excludeKestrelEndpoints(): boolean",
"parameters": [],
@@ -4582,7 +4535,7 @@
"name": "excludeLaunchProfile",
"capabilityId": "Aspire.Hosting/ProjectResourceOptions.excludeLaunchProfile",
"qualifiedName": "ProjectResourceOptions.excludeLaunchProfile",
- "description": "Gets the ExcludeLaunchProfile property",
+ "description": "If set, no launch profile will be used, and LaunchProfileName will be ignored.",
"kind": "PropertyGetter",
"signature": "excludeLaunchProfile(): boolean",
"parameters": [],
@@ -4596,7 +4549,7 @@
"name": "launchProfileName",
"capabilityId": "Aspire.Hosting/ProjectResourceOptions.launchProfileName",
"qualifiedName": "ProjectResourceOptions.launchProfileName",
- "description": "Gets the LaunchProfileName property",
+ "description": "The launch profile to use. If `null` then the default launch profile will be used.",
"kind": "PropertyGetter",
"signature": "launchProfileName(): string",
"parameters": [],
@@ -4610,7 +4563,7 @@
"name": "setExcludeKestrelEndpoints",
"capabilityId": "Aspire.Hosting/ProjectResourceOptions.setExcludeKestrelEndpoints",
"qualifiedName": "ProjectResourceOptions.setExcludeKestrelEndpoints",
- "description": "Sets the ExcludeKestrelEndpoints property",
+ "description": "If set, ignore endpoints coming from Kestrel configuration.",
"kind": "PropertySetter",
"signature": "setExcludeKestrelEndpoints(value: boolean): ProjectResourceOptions",
"parameters": [
@@ -4629,7 +4582,7 @@
"name": "setExcludeLaunchProfile",
"capabilityId": "Aspire.Hosting/ProjectResourceOptions.setExcludeLaunchProfile",
"qualifiedName": "ProjectResourceOptions.setExcludeLaunchProfile",
- "description": "Sets the ExcludeLaunchProfile property",
+ "description": "If set, no launch profile will be used, and LaunchProfileName will be ignored.",
"kind": "PropertySetter",
"signature": "setExcludeLaunchProfile(value: boolean): ProjectResourceOptions",
"parameters": [
@@ -4648,7 +4601,7 @@
"name": "setLaunchProfileName",
"capabilityId": "Aspire.Hosting/ProjectResourceOptions.setLaunchProfileName",
"qualifiedName": "ProjectResourceOptions.setLaunchProfileName",
- "description": "Sets the LaunchProfileName property",
+ "description": "The launch profile to use. If `null` then the default launch profile will be used.",
"kind": "PropertySetter",
"signature": "setLaunchProfileName(value: string): ProjectResourceOptions",
"parameters": [
@@ -4667,7 +4620,8 @@
"name": "publishAsConnectionString",
"capabilityId": "Aspire.Hosting/publishAsConnectionString",
"qualifiedName": "publishAsConnectionString",
- "description": "Publishes the resource as a connection string",
+ "description": "Changes the resource to be published as a connection string reference in the manifest.",
+ "returns": "The configured `IResourceBuilder`1`.",
"kind": "Method",
"signature": "publishAsConnectionString(): ContainerResource",
"parameters": [],
@@ -4682,7 +4636,8 @@
"name": "publishAsContainer",
"capabilityId": "Aspire.Hosting/publishAsContainer",
"qualifiedName": "publishAsContainer",
- "description": "Configures the resource to be published as a container",
+ "description": "Changes the resource to be published as a container in the manifest.",
+ "returns": "The `IResourceBuilder`1`.",
"kind": "Method",
"signature": "publishAsContainer(): ContainerResource",
"parameters": [],
@@ -4697,15 +4652,18 @@
"name": "publishAsDockerFile",
"capabilityId": "Aspire.Hosting/publishAsDockerFile",
"qualifiedName": "publishAsDockerFile",
- "description": "Publishes an executable as a Docker file",
+ "description": "Adds support for containerizing this `ExecutableResource` during deployment. The resulting container image is built, and when the optional `configure` action is provided, it is used to configure the container resource.",
+ "remarks": "When the executable resource is converted to a container resource, the arguments to the executable\nare not used. This is because arguments to the executable often contain physical paths that are not valid\nin the container. The container can be set up with the correct arguments using the `configure` action.",
+ "returns": "A reference to the `IResourceBuilder`1`.",
"kind": "Method",
- "signature": "publishAsDockerFile(configure: (obj: ContainerResource) =\u003E Promise\u003Cvoid\u003E): ExecutableResource",
+ "signature": "publishAsDockerFile(configure: (obj: ContainerResource) => Promise): ExecutableResource",
"parameters": [
{
"name": "configure",
"type": "callback",
"isCallback": true,
- "callbackSignature": "(obj: ContainerResource) =\u003E Promise\u003Cvoid\u003E"
+ "callbackSignature": "(obj: ContainerResource) => Promise",
+ "description": "Optional action to configure the container resource"
}
],
"returnType": "ExecutableResource",
@@ -4720,16 +4678,19 @@
"name": "publishAsDockerFile",
"capabilityId": "Aspire.Hosting/publishProjectAsDockerFileWithConfigure",
"qualifiedName": "publishAsDockerFile",
- "description": "Publishes a project as a Docker file with optional container configuration",
+ "description": "Adds support for containerizing this `ProjectResource` during deployment. The resulting container image is built, and when the optional `configure` action is provided, it is used to configure the container resource.",
+ "remarks": "When the executable resource is converted to a container resource, the arguments to the executable\nare not used. This is because arguments to the project often contain physical paths that are not valid\nin the container. The container can be set up with the correct arguments using the `configure` action.",
+ "returns": "A reference to the `IResourceBuilder`1`.",
"kind": "Method",
- "signature": "publishAsDockerFile(configure?: (obj: ContainerResource) =\u003E Promise\u003Cvoid\u003E): ProjectResource",
+ "signature": "publishAsDockerFile(configure?: (obj: ContainerResource) => Promise): ProjectResource",
"parameters": [
{
"name": "configure",
"type": "callback",
"isOptional": true,
"isCallback": true,
- "callbackSignature": "(obj: ContainerResource) =\u003E Promise\u003Cvoid\u003E"
+ "callbackSignature": "(obj: ContainerResource) => Promise",
+ "description": "Optional action to configure the container resource"
}
],
"returnType": "ProjectResource",
@@ -4744,7 +4705,7 @@
"name": "publishResourceUpdate",
"capabilityId": "Aspire.Hosting/publishResourceUpdate",
"qualifiedName": "publishResourceUpdate",
- "description": "Publishes an update for a resource\u0027s state",
+ "description": "Publishes an update for a resource's state.",
"kind": "Method",
"signature": "publishResourceUpdate(resource: IResource, state?: string, stateStyle?: string): void",
"parameters": [
@@ -4773,17 +4734,19 @@
"name": "publishWithContainerFiles",
"capabilityId": "Aspire.Hosting/publishWithContainerFilesFromResource",
"qualifiedName": "publishWithContainerFiles",
- "description": "Configures the resource to copy container files from the specified source during publishing",
+ "description": "Configures the resource to copy container files from the specified source resource during publishing.",
"kind": "Method",
"signature": "publishWithContainerFiles(source: IResourceWithContainerFiles, destinationPath: string): IContainerFilesDestinationResource",
"parameters": [
{
"name": "source",
- "type": "IResourceWithContainerFiles"
+ "type": "IResourceWithContainerFiles",
+ "description": "The resource which contains the container files to be copied."
},
{
"name": "destinationPath",
- "type": "string"
+ "type": "string",
+ "description": "The destination path within the resource's container where the files will be copied."
}
],
"returnType": "IContainerFilesDestinationResource",
@@ -4798,13 +4761,14 @@
"name": "getValueAsync",
"capabilityId": "Aspire.Hosting.ApplicationModel/getValueAsync",
"qualifiedName": "ReferenceExpression.getValueAsync",
- "description": "Gets the resolved string value of the reference expression asynchronously",
+ "description": "Gets the value of the expression. The final string value after evaluating the format string and its parameters.",
"kind": "InstanceMethod",
"signature": "getValueAsync(cancellationToken: cancellationToken): string",
"parameters": [
{
"name": "cancellationToken",
- "type": "cancellationToken"
+ "type": "cancellationToken",
+ "description": "A `CancellationToken`."
}
],
"returnType": "string",
@@ -4817,18 +4781,20 @@
"name": "appendFormatted",
"capabilityId": "Aspire.Hosting.ApplicationModel/appendFormatted",
"qualifiedName": "ReferenceExpressionBuilder.appendFormatted",
- "description": "Appends a formatted string value to the reference expression",
+ "description": "Appends a formatted value to the expression.",
"kind": "InstanceMethod",
"signature": "appendFormatted(value: string, format?: string): void",
"parameters": [
{
"name": "value",
- "type": "string"
+ "type": "string",
+ "description": "The formatted string to be appended to the interpolated string."
},
{
"name": "format",
"type": "string",
- "isOptional": true
+ "isOptional": true,
+ "description": "The format to be applied to the value. e.g., \"uri\""
}
],
"returnType": "void",
@@ -4841,13 +4807,14 @@
"name": "appendLiteral",
"capabilityId": "Aspire.Hosting.ApplicationModel/appendLiteral",
"qualifiedName": "ReferenceExpressionBuilder.appendLiteral",
- "description": "Appends a literal string to the reference expression",
+ "description": "Appends a literal value to the expression.",
"kind": "InstanceMethod",
"signature": "appendLiteral(value: string): void",
"parameters": [
{
"name": "value",
- "type": "string"
+ "type": "string",
+ "description": "The literal string value to be appended to the interpolated string."
}
],
"returnType": "void",
@@ -4860,18 +4827,20 @@
"name": "appendValueProvider",
"capabilityId": "Aspire.Hosting.ApplicationModel/appendValueProvider",
"qualifiedName": "ReferenceExpressionBuilder.appendValueProvider",
- "description": "Appends a value provider to the reference expression",
+ "description": "Appends a value provider to the expression using late binding. The object must implement both `IValueProvider` and `IManifestExpressionProvider`, or be an `IResourceBuilder`1` where T implements both interfaces.",
"kind": "InstanceMethod",
"signature": "appendValueProvider(valueProvider: any, format?: string): void",
"parameters": [
{
"name": "valueProvider",
- "type": "any"
+ "type": "any",
+ "description": "An object that implements both interfaces, or an IResourceBuilder wrapping such an object."
},
{
"name": "format",
"type": "string",
- "isOptional": true
+ "isOptional": true,
+ "description": "Optional format specifier."
}
],
"returnType": "void",
@@ -4884,7 +4853,7 @@
"name": "build",
"capabilityId": "Aspire.Hosting.ApplicationModel/build",
"qualifiedName": "ReferenceExpressionBuilder.build",
- "description": "Builds the reference expression",
+ "description": "Builds the `ReferenceExpression`.",
"kind": "InstanceMethod",
"signature": "build(): ReferenceExpression",
"parameters": [],
@@ -4898,7 +4867,7 @@
"name": "isEmpty",
"capabilityId": "Aspire.Hosting.ApplicationModel/ReferenceExpressionBuilder.isEmpty",
"qualifiedName": "ReferenceExpressionBuilder.isEmpty",
- "description": "Gets the IsEmpty property",
+ "description": "Indicates whether the expression is empty.",
"kind": "PropertyGetter",
"signature": "isEmpty(): boolean",
"parameters": [],
@@ -4940,7 +4909,7 @@
"name": "resource",
"capabilityId": "Aspire.Hosting.ApplicationModel/ResourceReadyEvent.resource",
"qualifiedName": "ResourceReadyEvent.resource",
- "description": "Gets the Resource property",
+ "description": "The resource that is in a healthy state.",
"kind": "PropertyGetter",
"signature": "resource(): IResource",
"parameters": [],
@@ -4996,7 +4965,7 @@
"name": "executionContext",
"capabilityId": "Aspire.Hosting.ApplicationModel/ResourceUrlsCallbackContext.executionContext",
"qualifiedName": "ResourceUrlsCallbackContext.executionContext",
- "description": "Gets the execution context for this callback invocation",
+ "description": "Gets the execution context associated with this invocation of the AppHost.",
"kind": "PropertyGetter",
"signature": "executionContext(): DistributedApplicationExecutionContext",
"parameters": [],
@@ -5010,13 +4979,14 @@
"name": "getEndpoint",
"capabilityId": "Aspire.Hosting.ApplicationModel/getEndpoint",
"qualifiedName": "ResourceUrlsCallbackContext.getEndpoint",
- "description": "Gets an endpoint reference from the associated resource",
+ "description": "Gets an endpoint reference from `Resource` for the specified endpoint name. If `Resource` does not implement `IResourceWithEndpoints` then returns `null`.",
"kind": "InstanceMethod",
"signature": "getEndpoint(name: string): EndpointReference",
"parameters": [
{
"name": "name",
- "type": "string"
+ "type": "string",
+ "description": "The name of the endpoint."
}
],
"returnType": "EndpointReference",
@@ -5029,7 +4999,7 @@
"name": "log",
"capabilityId": "Aspire.Hosting.ApplicationModel/ResourceUrlsCallbackContext.log",
"qualifiedName": "ResourceUrlsCallbackContext.log",
- "description": "Gets the callback logger facade",
+ "description": "Gets the logger facade used by polyglot callbacks.",
"kind": "PropertyGetter",
"signature": "log(): LogFacade",
"parameters": [],
@@ -5043,7 +5013,7 @@
"name": "resource",
"capabilityId": "Aspire.Hosting.ApplicationModel/ResourceUrlsCallbackContext.resource",
"qualifiedName": "ResourceUrlsCallbackContext.resource",
- "description": "Gets the resource associated with these URLs",
+ "description": "Gets the resource this the URLs are associated with.",
"kind": "PropertyGetter",
"signature": "resource(): IResource",
"parameters": [],
@@ -5057,7 +5027,7 @@
"name": "urls",
"capabilityId": "Aspire.Hosting.ApplicationModel/ResourceUrlsCallbackContext.urls",
"qualifiedName": "ResourceUrlsCallbackContext.urls",
- "description": "Gets the URL editor",
+ "description": "Gets the editor used to manipulate displayed URLs in polyglot callbacks.",
"kind": "PropertyGetter",
"signature": "urls(): ResourceUrlsEditor",
"parameters": [],
@@ -5071,18 +5041,20 @@
"name": "add",
"capabilityId": "Aspire.Hosting.ApplicationModel/ResourceUrlsEditor.add",
"qualifiedName": "ResourceUrlsEditor.add",
- "description": "Adds a displayed URL",
+ "description": "Adds a displayed URL.",
"kind": "InstanceMethod",
"signature": "add(url: ReferenceExpression, displayText?: string): void",
"parameters": [
{
"name": "url",
- "type": "ReferenceExpression"
+ "type": "ReferenceExpression",
+ "description": "The URL to add, specified as a string or reference expression."
},
{
"name": "displayText",
"type": "string",
- "isOptional": true
+ "isOptional": true,
+ "description": "The optional display text to show for the URL."
}
],
"returnType": "void",
@@ -5095,22 +5067,25 @@
"name": "addForEndpoint",
"capabilityId": "Aspire.Hosting.ApplicationModel/ResourceUrlsEditor.addForEndpoint",
"qualifiedName": "ResourceUrlsEditor.addForEndpoint",
- "description": "Adds a displayed URL for a specific endpoint",
+ "description": "Adds a displayed URL for a specific endpoint.",
"kind": "InstanceMethod",
"signature": "addForEndpoint(endpoint: EndpointReference, url: ReferenceExpression, displayText?: string): void",
"parameters": [
{
"name": "endpoint",
- "type": "EndpointReference"
+ "type": "EndpointReference",
+ "description": "The endpoint the URL is associated with."
},
{
"name": "url",
- "type": "ReferenceExpression"
+ "type": "ReferenceExpression",
+ "description": "The URL to add, specified as a string or reference expression."
},
{
"name": "displayText",
"type": "string",
- "isOptional": true
+ "isOptional": true,
+ "description": "The optional display text to show for the URL."
}
],
"returnType": "void",
@@ -5123,7 +5098,7 @@
"name": "executionContext",
"capabilityId": "Aspire.Hosting.ApplicationModel/ResourceUrlsEditor.executionContext",
"qualifiedName": "ResourceUrlsEditor.executionContext",
- "description": "Gets the execution context for this URL editor",
+ "description": "Gets the execution context associated with this editor.",
"kind": "PropertyGetter",
"signature": "executionContext(): DistributedApplicationExecutionContext",
"parameters": [],
@@ -5179,18 +5154,21 @@
"name": "saveStateJson",
"capabilityId": "Aspire.Hosting/saveStateJson",
"qualifiedName": "saveStateJson",
- "description": "Saves state to user secrets from a JSON string",
+ "description": "Saves state to user secrets from a JSON string.",
+ "returns": "A task that completes when the state is saved.",
"kind": "Method",
"signature": "saveStateJson(json: string, cancellationToken?: cancellationToken): void",
"parameters": [
{
"name": "json",
- "type": "string"
+ "type": "string",
+ "description": "The JSON object payload to persist."
},
{
"name": "cancellationToken",
"type": "cancellationToken",
- "isOptional": true
+ "isOptional": true,
+ "description": "The cancellation token."
}
],
"returnType": "void",
@@ -5203,15 +5181,18 @@
"name": "subscribeAfterResourcesCreated",
"capabilityId": "Aspire.Hosting/subscribeAfterResourcesCreated",
"qualifiedName": "subscribeAfterResourcesCreated",
- "description": "Subscribes to the AfterResourcesCreated event",
+ "description": "Subscribes to the AfterResourcesCreated event, which fires after all resources are created.",
+ "remarks": "At this point, all resources have been instantiated but may not yet be running.\nThis is useful for performing cross-resource configuration.",
+ "returns": "A subscription handle that can be used to unsubscribe.",
"kind": "Method",
- "signature": "subscribeAfterResourcesCreated(callback: (arg: AfterResourcesCreatedEvent) =\u003E Promise\u003Cvoid\u003E): DistributedApplicationEventSubscription",
+ "signature": "subscribeAfterResourcesCreated(callback: (arg: AfterResourcesCreatedEvent) => Promise): DistributedApplicationEventSubscription",
"parameters": [
{
"name": "callback",
"type": "callback",
"isCallback": true,
- "callbackSignature": "(arg: AfterResourcesCreatedEvent) =\u003E Promise\u003Cvoid\u003E"
+ "callbackSignature": "(arg: AfterResourcesCreatedEvent) => Promise",
+ "description": "A callback that receives the exported event when the event fires."
}
],
"returnType": "DistributedApplicationEventSubscription",
@@ -5224,15 +5205,18 @@
"name": "subscribeBeforeStart",
"capabilityId": "Aspire.Hosting/subscribeBeforeStart",
"qualifiedName": "subscribeBeforeStart",
- "description": "Subscribes to the BeforeStart event",
+ "description": "Subscribes to the BeforeStart event, which fires before the application starts.",
+ "remarks": "This event provides access to the service provider and distributed application model,\nallowing you to perform final configuration or validation before resources start.",
+ "returns": "A subscription handle that can be used to unsubscribe.",
"kind": "Method",
- "signature": "subscribeBeforeStart(callback: (arg: BeforeStartEvent) =\u003E Promise\u003Cvoid\u003E): DistributedApplicationEventSubscription",
+ "signature": "subscribeBeforeStart(callback: (arg: BeforeStartEvent) => Promise): DistributedApplicationEventSubscription",
"parameters": [
{
"name": "callback",
"type": "callback",
"isCallback": true,
- "callbackSignature": "(arg: BeforeStartEvent) =\u003E Promise\u003Cvoid\u003E"
+ "callbackSignature": "(arg: BeforeStartEvent) => Promise",
+ "description": "A callback that receives the exported event when the event fires."
}
],
"returnType": "DistributedApplicationEventSubscription",
@@ -5245,15 +5229,16 @@
"name": "tryAddEventingSubscriber",
"capabilityId": "Aspire.Hosting/tryAddEventingSubscriber",
"qualifiedName": "tryAddEventingSubscriber",
- "description": "Attempts to add an eventing subscriber",
+ "description": "Attempts to add an ATS-friendly eventing subscriber callback to the distributed-application builder.",
"kind": "Method",
- "signature": "tryAddEventingSubscriber(subscribe: (arg: EventingSubscriberRegistrationContext) =\u003E Promise\u003Cvoid\u003E): void",
+ "signature": "tryAddEventingSubscriber(subscribe: (arg: EventingSubscriberRegistrationContext) => Promise): void",
"parameters": [
{
"name": "subscribe",
"type": "callback",
"isCallback": true,
- "callbackSignature": "(arg: EventingSubscriberRegistrationContext) =\u003E Promise\u003Cvoid\u003E"
+ "callbackSignature": "(arg: EventingSubscriberRegistrationContext) => Promise",
+ "description": "The callback that registers the event subscriptions."
}
],
"returnType": "void",
@@ -5266,7 +5251,7 @@
"name": "tryGetResourceState",
"capabilityId": "Aspire.Hosting/tryGetResourceState",
"qualifiedName": "tryGetResourceState",
- "description": "Tries to get the current state of a resource",
+ "description": "Tries to get the current state of a resource.",
"kind": "Method",
"signature": "tryGetResourceState(resourceName: string): ResourceEventDto",
"parameters": [
@@ -5285,7 +5270,7 @@
"name": "serviceProvider",
"capabilityId": "Aspire.Hosting.ApplicationModel/UpdateCommandStateContext.serviceProvider",
"qualifiedName": "UpdateCommandStateContext.serviceProvider",
- "description": "Gets the ServiceProvider property",
+ "description": "The service provider.",
"kind": "PropertyGetter",
"signature": "serviceProvider(): IServiceProvider",
"parameters": [],
@@ -5295,30 +5280,11 @@
"Aspire.Hosting.ApplicationModel.UpdateCommandStateContext"
]
},
- {
- "name": "setServiceProvider",
- "capabilityId": "Aspire.Hosting.ApplicationModel/UpdateCommandStateContext.setServiceProvider",
- "qualifiedName": "UpdateCommandStateContext.setServiceProvider",
- "description": "Sets the ServiceProvider property",
- "kind": "PropertySetter",
- "signature": "setServiceProvider(value: IServiceProvider): UpdateCommandStateContext",
- "parameters": [
- {
- "name": "value",
- "type": "IServiceProvider"
- }
- ],
- "returnType": "UpdateCommandStateContext",
- "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.UpdateCommandStateContext",
- "expandedTargetTypes": [
- "Aspire.Hosting.ApplicationModel.UpdateCommandStateContext"
- ]
- },
{
"name": "updateTask",
"capabilityId": "Aspire.Hosting/updateTask",
"qualifiedName": "updateTask",
- "description": "Updates the reporting task with plain-text status text",
+ "description": "Updates the reporting task with plain-text status text.",
"kind": "Method",
"signature": "updateTask(statusText: string, cancellationToken?: cancellationToken): void",
"parameters": [
@@ -5342,7 +5308,7 @@
"name": "updateTaskMarkdown",
"capabilityId": "Aspire.Hosting/updateTaskMarkdown",
"qualifiedName": "updateTaskMarkdown",
- "description": "Updates the reporting task with Markdown-formatted status text",
+ "description": "Updates the reporting task with Markdown-formatted status text.",
"kind": "Method",
"signature": "updateTaskMarkdown(markdownString: string, cancellationToken?: cancellationToken): void",
"parameters": [
@@ -5415,19 +5381,23 @@
"name": "waitForCompletion",
"capabilityId": "Aspire.Hosting/waitForResourceCompletion",
"qualifiedName": "waitForCompletion",
- "description": "Waits for resource completion",
+ "description": "Waits for the dependency resource to enter the Exited or Finished state before starting the resource.",
+ "remarks": "This method is useful when a resource should wait until another has completed. A common usage pattern\nwould be to include a console application that initializes the database schema or performs other one off\ninitialization tasks.\nNote that this method has no impact at deployment time and only works for local development.\nWait for database initialization app to complete running.\n```\nvar builder = DistributedApplication.CreateBuilder(args);\nvar pgsql = builder.AddPostgres(\"postgres\");\nvar dbprep = builder.AddProject(\"dbprep\")\n.WithReference(pgsql);\nbuilder.AddProject(\"dbpreptool\")\n.WithReference(pgsql)\n.WaitForCompletion(dbprep);\n```",
+ "returns": "The `IResourceBuilder`1`.",
"kind": "Method",
"signature": "waitForCompletion(dependency: IResource, exitCode?: number): IResourceWithWaitSupport",
"parameters": [
{
"name": "dependency",
- "type": "IResource"
+ "type": "IResource",
+ "description": "The resource builder for the dependency resource."
},
{
"name": "exitCode",
"type": "number",
"isOptional": true,
- "defaultValue": "0"
+ "defaultValue": "0",
+ "description": "The exit code which is interpreted as successful."
}
],
"returnType": "IResourceWithWaitSupport",
@@ -5445,7 +5415,7 @@
"name": "waitForDependencies",
"capabilityId": "Aspire.Hosting/waitForDependencies",
"qualifiedName": "waitForDependencies",
- "description": "Waits for all dependencies of a resource to be ready",
+ "description": "Waits for all dependencies of a resource to be ready.",
"kind": "Method",
"signature": "waitForDependencies(resource: IResource): void",
"parameters": [
@@ -5464,7 +5434,7 @@
"name": "waitForResourceHealthy",
"capabilityId": "Aspire.Hosting/waitForResourceHealthy",
"qualifiedName": "waitForResourceHealthy",
- "description": "Waits for a resource to become healthy",
+ "description": "Waits for a resource to become healthy.",
"kind": "Method",
"signature": "waitForResourceHealthy(resourceName: string): ResourceEventDto",
"parameters": [
@@ -5483,7 +5453,7 @@
"name": "waitForResourceState",
"capabilityId": "Aspire.Hosting/waitForResourceState",
"qualifiedName": "waitForResourceState",
- "description": "Waits for a resource to reach a specified state",
+ "description": "Waits for a resource to reach a specified state.",
"kind": "Method",
"signature": "waitForResourceState(resourceName: string, targetState?: string): void",
"parameters": [
@@ -5507,7 +5477,7 @@
"name": "waitForResourceStates",
"capabilityId": "Aspire.Hosting/waitForResourceStates",
"qualifiedName": "waitForResourceStates",
- "description": "Waits for a resource to reach one of the specified states",
+ "description": "Waits for a resource to reach one of the specified states.",
"kind": "Method",
"signature": "waitForResourceStates(resourceName: string, targetStates: string[]): string",
"parameters": [
@@ -5560,13 +5530,15 @@
"name": "withArgs",
"capabilityId": "Aspire.Hosting/withArgs",
"qualifiedName": "withArgs",
- "description": "Adds arguments",
+ "description": "Adds arguments to be passed to a resource that supports arguments when it is launched.",
+ "returns": "The `IResourceBuilder`1`.",
"kind": "Method",
"signature": "withArgs(args: string[]): IResourceWithArgs",
"parameters": [
{
"name": "args",
- "type": "string[]"
+ "type": "string[]",
+ "description": "The arguments to be passed to the resource when it is started."
}
],
"returnType": "IResourceWithArgs",
@@ -5584,15 +5556,17 @@
"name": "withArgsCallback",
"capabilityId": "Aspire.Hosting/withArgsCallback",
"qualifiedName": "withArgsCallback",
- "description": "Sets command-line arguments via callback",
+ "description": "Adds a callback to be executed with a list of command-line arguments when a resource is started.",
+ "returns": "The `IResourceBuilder`1`.",
"kind": "Method",
- "signature": "withArgsCallback(callback: (obj: CommandLineArgsCallbackContext) =\u003E Promise\u003Cvoid\u003E): IResourceWithArgs",
+ "signature": "withArgsCallback(callback: (obj: CommandLineArgsCallbackContext) => Promise): IResourceWithArgs",
"parameters": [
{
"name": "callback",
"type": "callback",
"isCallback": true,
- "callbackSignature": "(obj: CommandLineArgsCallbackContext) =\u003E Promise\u003Cvoid\u003E"
+ "callbackSignature": "(obj: CommandLineArgsCallbackContext) => Promise",
+ "description": "A callback that allows for deferred execution for computing arguments. This runs after resources have been allocated by the orchestrator and allows access to other resources to resolve computed data, e.g. connection strings, ports."
}
],
"returnType": "IResourceWithArgs",
@@ -5610,7 +5584,8 @@
"name": "withArgumentsConfig",
"capabilityId": "Aspire.Hosting/withArgumentsConfig",
"qualifiedName": "withArgumentsConfig",
- "description": "Adds an arguments configuration gatherer",
+ "description": "Adds a command line arguments configuration gatherer to the builder.",
+ "returns": "The builder with the configuration gatherer added.",
"kind": "Method",
"signature": "withArgumentsConfig(): IExecutionConfigurationBuilder",
"parameters": [],
@@ -5624,23 +5599,28 @@
"name": "withBindMount",
"capabilityId": "Aspire.Hosting/withBindMount",
"qualifiedName": "withBindMount",
- "description": "Adds a bind mount",
+ "description": "Adds a bind mount to a container resource.",
+ "remarks": "Bind mounts are used to mount files or directories from the host file-system into the container. If the host doesn't require access to the files, consider\nusing volumes instead via `WithVolume``1`.\nThe `source` path specifies the path of the file or directory on the host that will be mounted in the container. If the path is not absolute,\nit will be evaluated relative to the app host project directory path.\nThe `target` path specifies the path the file or directory will be mounted inside the container's file system.\nAdds a bind mount that will mount the `config` directory in the app host project directory, to the container's file system at the path `/database/config`,\nand mark it read-only so that the container cannot modify it:\n```\nvar builder = DistributedApplication.CreateBuilder(args);\nbuilder.AddContainer(\"mycontainer\", \"myimage\")\n.WithBindMount(\"./config\", \"/database/config\", isReadOnly: true);\nbuilder.Build().Run();\n```\nAdds a bind mount that will mount the `init.sh` file from a directory outside the app host project directory, to the container's file system at the path `/usr/config/initialize.sh`,\nand mark it read-only so that the container cannot modify it:\n```\nvar builder = DistributedApplication.CreateBuilder(args);\nbuilder.AddContainer(\"mycontainer\", \"myimage\")\n.WithBindMount(\"../containerconfig/scripts/init.sh\", \"/usr/config/initialize.sh\", isReadOnly: true);\nbuilder.Build().Run();\n```",
+ "returns": "The `IResourceBuilder`1`.",
"kind": "Method",
"signature": "withBindMount(source: string, target: string, isReadOnly?: boolean): ContainerResource",
"parameters": [
{
"name": "source",
- "type": "string"
+ "type": "string",
+ "description": "The source path of the mount. This is the path to the file or directory on the host, relative to the app host project directory."
},
{
"name": "target",
- "type": "string"
+ "type": "string",
+ "description": "The target path where the file or directory is mounted in the container."
},
{
"name": "isReadOnly",
"type": "boolean",
"isOptional": true,
- "defaultValue": "False"
+ "defaultValue": "False",
+ "description": "A flag that indicates if this is a read-only mount."
}
],
"returnType": "ContainerResource",
@@ -5654,17 +5634,20 @@
"name": "withBuildArg",
"capabilityId": "Aspire.Hosting/withBuildArg",
"qualifiedName": "withBuildArg",
- "description": "Adds a build argument from a string value or parameter resource",
+ "description": "Adds a build argument when the container is built from a Dockerfile.",
+ "returns": "The `IResourceBuilder`1`.",
"kind": "Method",
"signature": "withBuildArg(name: string, value: ParameterResource): ContainerResource",
"parameters": [
{
"name": "name",
- "type": "string"
+ "type": "string",
+ "description": "The name of the build argument."
},
{
"name": "value",
- "type": "ParameterResource"
+ "type": "ParameterResource",
+ "description": "The build argument value, either a string or a parameter resource."
}
],
"returnType": "ContainerResource",
@@ -5678,17 +5661,21 @@
"name": "withBuildSecret",
"capabilityId": "Aspire.Hosting/withParameterBuildSecret",
"qualifiedName": "withBuildSecret",
- "description": "Adds a build secret from a parameter resource",
+ "description": "Adds a secret build argument when the container is built from a Dockerfile.",
+ "remarks": "The `WithBuildSecret``1` extension method\nresults in a `--secret` argument being appended to the `docker build` or `podman build` command. This overload results in an environment\nvariable-based secret being passed to the build process. The value of the environment variable is the value of the secret referenced by the `ParameterResource`.\nAdding a build secret based on a parameter.\n```\nvar builder = DistributedApplication.CreateBuilder(args);\nvar accessToken = builder.AddParameter(\"accessToken\", secret: true);\nbuilder.AddContainer(\"mycontainer\", \"myimage\")\n.WithDockerfile(\"../mycontainer\")\n.WithBuildSecret(\"ACCESS_TOKEN\", accessToken);\nbuilder.Build().Run();\n```",
+ "returns": "The `IResourceBuilder`1`.",
"kind": "Method",
"signature": "withBuildSecret(name: string, value: ParameterResource): ContainerResource",
"parameters": [
{
"name": "name",
- "type": "string"
+ "type": "string",
+ "description": "The name of the secret build argument."
},
{
"name": "value",
- "type": "ParameterResource"
+ "type": "ParameterResource",
+ "description": "The resource builder for a parameter resource."
}
],
"returnType": "ContainerResource",
@@ -5702,15 +5689,17 @@
"name": "withCertificateTrustConfig",
"capabilityId": "Aspire.Hosting/withCertificateTrustConfig",
"qualifiedName": "withCertificateTrustConfig",
- "description": "Adds a certificate trust configuration gatherer",
+ "description": "Adds a certificate trust configuration gatherer to the builder.",
+ "returns": "The builder with the configuration gatherer added.",
"kind": "Method",
- "signature": "withCertificateTrustConfig(configContextFactory: (arg: CertificateTrustScope) =\u003E Promise\u003CCertificateTrustExecutionConfigurationContext\u003E): IExecutionConfigurationBuilder",
+ "signature": "withCertificateTrustConfig(configContextFactory: (arg: CertificateTrustScope) => Promise): IExecutionConfigurationBuilder",
"parameters": [
{
"name": "configContextFactory",
"type": "callback",
"isCallback": true,
- "callbackSignature": "(arg: CertificateTrustScope) =\u003E Promise\u003CCertificateTrustExecutionConfigurationContext\u003E"
+ "callbackSignature": "(arg: CertificateTrustScope) => Promise",
+ "description": "A factory function to create the configuration context."
}
],
"returnType": "IExecutionConfigurationBuilder",
@@ -5723,13 +5712,16 @@
"name": "withCertificateTrustScope",
"capabilityId": "Aspire.Hosting/withCertificateTrustScope",
"qualifiedName": "withCertificateTrustScope",
- "description": "Sets the certificate trust scope",
+ "description": "Sets the `CertificateTrustScope` for custom certificate authorities associated with the resource. The scope specifies how custom certificate authorities should be applied to a resource at run time in local development scenarios. Custom certificate trust is only applied in run mode; in publish mode resources will use their default certificate trust behavior.",
+ "remarks": "The default scope if not overridden is `Append` which means that custom certificate\nauthorities should be appended to the default trusted certificate authorities for the resource. Setting the scope to\n`Override` indicates the set of certificates in referenced\n`CertificateAuthorityCollection` (and optionally Aspire developer certificiates) should be used as the\nexclusive source of trust for a resource.\nIn all cases, this is a best effort implementation as not all resources support full customization of certificate\ntrust.\nSet the scope for custom certificate authorities to override the default trusted certificate authorities for a container resource.\n```\nvar caCollection = builder.AddCertificateAuthorityCollection(\"my-cas\")\n.WithCertificate(new X509Certificate2(\"my-ca.pem\"));\nvar container = builder.AddContainer(\"my-service\", \"my-service:latest\")\n.WithCertificateAuthorityCollection(caCollection)\n.WithCertificateTrustScope(CertificateTrustScope.Override);\n```",
+ "returns": "The `IResourceBuilder`1`.",
"kind": "Method",
"signature": "withCertificateTrustScope(scope: CertificateTrustScope): IResourceWithEnvironment",
"parameters": [
{
"name": "scope",
- "type": "CertificateTrustScope"
+ "type": "CertificateTrustScope",
+ "description": "The scope to apply to custom certificate authorities associated with the resource."
}
],
"returnType": "IResourceWithEnvironment",
@@ -5747,13 +5739,16 @@
"name": "withChildRelationship",
"capabilityId": "Aspire.Hosting/withBuilderChildRelationship",
"qualifiedName": "withChildRelationship",
- "description": "Sets a child relationship",
+ "description": "Adds a `ResourceRelationshipAnnotation` to the resource annotations to add a parent-child relationship.",
+ "remarks": "The `WithChildRelationship` method is used to add child relationships to the resource. Relationships are used to link\nresources together in UI.\nThis example shows adding a relationship between two resources.\n```\nvar builder = DistributedApplication.CreateBuilder(args);\nvar parameter = builder.AddParameter(\"parameter\");\nvar backend = builder.AddProject(\"backend\");\n.WithChildRelationship(parameter);\n```",
+ "returns": "A resource builder.",
"kind": "Method",
"signature": "withChildRelationship(child: IResource): IResource",
"parameters": [
{
"name": "child",
- "type": "IResource"
+ "type": "IResource",
+ "description": "The child of `builder`."
}
],
"returnType": "IResource",
@@ -5774,28 +5769,34 @@
"name": "withCommand",
"capabilityId": "Aspire.Hosting/withCommand",
"qualifiedName": "withCommand",
- "description": "Adds a resource command",
+ "description": "Adds a `ResourceCommandAnnotation` to the resource annotations to add a resource command.",
+ "remarks": "The `WithCommand` method is used to add commands to the resource. Commands are displayed in the dashboard\nand can be executed by a user using the dashboard UI.\nWhen a command is executed, the `executeCommand` callback is called and is run inside the Aspire host.",
+ "returns": "The `IResourceBuilder`1`.",
"kind": "Method",
- "signature": "withCommand(name: string, displayName: string, executeCommand: (arg: ExecuteCommandContext) =\u003E Promise\u003CExecuteCommandResult\u003E, commandOptions?: CommandOptions): IResource",
+ "signature": "withCommand(name: string, displayName: string, executeCommand: (arg: ExecuteCommandContext) => Promise, commandOptions?: CommandOptions): IResource",
"parameters": [
{
"name": "name",
- "type": "string"
+ "type": "string",
+ "description": "The name of the command. The name uniquely identifies the command."
},
{
"name": "displayName",
- "type": "string"
+ "type": "string",
+ "description": "The display name visible in UI."
},
{
"name": "executeCommand",
"type": "callback",
"isCallback": true,
- "callbackSignature": "(arg: ExecuteCommandContext) =\u003E Promise\u003CExecuteCommandResult\u003E"
+ "callbackSignature": "(arg: ExecuteCommandContext) => Promise",
+ "description": "A callback that is executed when the command is executed. The callback is run inside the Aspire host. The callback result is used to indicate success or failure in the UI."
},
{
"name": "commandOptions",
"type": "CommandOptions",
- "isOptional": true
+ "isOptional": true,
+ "description": "Optional configuration for the command."
}
],
"returnType": "IResource",
@@ -5816,17 +5817,20 @@
"name": "withConnectionProperty",
"capabilityId": "Aspire.Hosting/withConnectionProperty",
"qualifiedName": "withConnectionProperty",
- "description": "Adds a connection property with a string or reference expression value",
+ "description": "Adds a connection property annotation to the resource being built.",
+ "returns": "The same resource builder instance with the specified connection property annotation applied.",
"kind": "Method",
"signature": "withConnectionProperty(name: string, value: ReferenceExpression): IResourceWithConnectionString",
"parameters": [
{
"name": "name",
- "type": "string"
+ "type": "string",
+ "description": "The name of the connection property to add."
},
{
"name": "value",
- "type": "ReferenceExpression"
+ "type": "ReferenceExpression",
+ "description": "The value to assign to the connection property, specified as a string or reference expression."
}
],
"returnType": "IResourceWithConnectionString",
@@ -5840,24 +5844,28 @@
"name": "withContainerCertificatePaths",
"capabilityId": "Aspire.Hosting/withContainerCertificatePaths",
"qualifiedName": "withContainerCertificatePaths",
- "description": "Overrides container certificate bundle and directory paths used for trust configuration",
+ "description": "Adds container certificate path overrides used for certificate trust at run time.",
+ "returns": "The updated resource builder.",
"kind": "Method",
"signature": "withContainerCertificatePaths(customCertificatesDestination?: string, defaultCertificateBundlePaths?: string[], defaultCertificateDirectoryPaths?: string[]): ContainerResource",
"parameters": [
{
"name": "customCertificatesDestination",
"type": "string",
- "isOptional": true
+ "isOptional": true,
+ "description": "The destination path in the container where custom certificates will be copied."
},
{
"name": "defaultCertificateBundlePaths",
"type": "string[]",
- "isOptional": true
+ "isOptional": true,
+ "description": "Default certificate bundle paths in the container that will be replaced."
},
{
"name": "defaultCertificateDirectoryPaths",
"type": "string[]",
- "isOptional": true
+ "isOptional": true,
+ "description": "Default certificate directory paths in the container that may be appended."
}
],
"returnType": "ContainerResource",
@@ -5871,13 +5879,15 @@
"name": "withContainerFilesSource",
"capabilityId": "Aspire.Hosting/withContainerFilesSource",
"qualifiedName": "withContainerFilesSource",
- "description": "Sets the source directory for container files",
+ "description": "Adds a container files source annotation to the resource being built, specifying the path to the container files source.",
+ "returns": "The resource builder instance with the container files source annotation applied.",
"kind": "Method",
"signature": "withContainerFilesSource(sourcePath: string): IResourceWithContainerFiles",
"parameters": [
{
"name": "sourcePath",
- "type": "string"
+ "type": "string",
+ "description": "The path to the container files source to associate with the resource. Cannot be null."
}
],
"returnType": "IResourceWithContainerFiles",
@@ -5891,13 +5901,16 @@
"name": "withContainerName",
"capabilityId": "Aspire.Hosting/withContainerName",
"qualifiedName": "withContainerName",
- "description": "Sets the container name",
+ "description": "Overrides the default container name for this resource. By default Aspire generates a unique container name based on the resource name and a random postfix (or a postfix based on a hash of the AppHost project path for persistent container resources). This method allows you to override that behavior with a custom name, but could lead to naming conflicts if the specified name is not unique.",
+ "remarks": "Combining this with `Persistent` will allow Aspire to re-use an existing container that was not\ncreated by an Aspire AppHost.",
+ "returns": "The `IResourceBuilder`1`.",
"kind": "Method",
"signature": "withContainerName(name: string): ContainerResource",
"parameters": [
{
"name": "name",
- "type": "string"
+ "type": "string",
+ "description": "The desired container name. Must be a valid container name or your runtime will report an error."
}
],
"returnType": "ContainerResource",
@@ -5911,13 +5924,16 @@
"name": "withContainerNetworkAlias",
"capabilityId": "Aspire.Hosting/withContainerNetworkAlias",
"qualifiedName": "withContainerNetworkAlias",
- "description": "Adds a network alias for the container",
+ "description": "Adds a network alias to container resource.",
+ "remarks": "Network aliases enable DNS resolution of the container on the network by custom names.\nBy default, containers are accessible on the network using their resource name as a DNS alias.\nThis method allows adding additional aliases for the same container.\nMultiple aliases can be added by calling this method multiple times.",
+ "returns": "The `IResourceBuilder`1`.",
"kind": "Method",
"signature": "withContainerNetworkAlias(alias: string): ContainerResource",
"parameters": [
{
"name": "alias",
- "type": "string"
+ "type": "string",
+ "description": "The network alias for the container."
}
],
"returnType": "ContainerResource",
@@ -5931,13 +5947,16 @@
"name": "withContainerRegistry",
"capabilityId": "Aspire.Hosting/withContainerRegistry",
"qualifiedName": "withContainerRegistry",
- "description": "Configures a resource to use a container registry",
+ "description": "Configures the resource to use the specified container registry for container image operations.",
+ "remarks": "This method adds a `ContainerRegistryReferenceAnnotation` to the resource,\nindicating that the resource should use the specified container registry for container image operations.",
+ "returns": "The resource builder for chaining.",
"kind": "Method",
"signature": "withContainerRegistry(registry: IResource): IResource",
"parameters": [
{
"name": "registry",
- "type": "IResource"
+ "type": "IResource",
+ "description": "The container registry resource builder."
}
],
"returnType": "IResource",
@@ -5958,13 +5977,16 @@
"name": "withContainerRuntimeArgs",
"capabilityId": "Aspire.Hosting/withContainerRuntimeArgs",
"qualifiedName": "withContainerRuntimeArgs",
- "description": "Adds runtime arguments for the container",
+ "description": "Adds a callback to be executed with a list of arguments to add to the container runtime run command when a container resource is started.",
+ "remarks": "This is intended to pass additional arguments to the underlying container runtime run command to enable advanced features such as exposing GPUs to the container. To pass runtime arguments to the actual container, use the `WithArgs``1` method.",
+ "returns": "The `IResourceBuilder`1`.",
"kind": "Method",
"signature": "withContainerRuntimeArgs(args: string[]): ContainerResource",
"parameters": [
{
"name": "args",
- "type": "string[]"
+ "type": "string[]",
+ "description": "The arguments to be passed to the container runtime run command when the container resource is started."
}
],
"returnType": "ContainerResource",
@@ -5978,19 +6000,22 @@
"name": "withDescription",
"capabilityId": "Aspire.Hosting/withDescription",
"qualifiedName": "withDescription",
- "description": "Sets a parameter description",
+ "description": "Sets the description of the parameter resource.",
+ "returns": "Resource builder for the parameter.",
"kind": "Method",
"signature": "withDescription(description: string, enableMarkdown?: boolean): ParameterResource",
"parameters": [
{
"name": "description",
- "type": "string"
+ "type": "string",
+ "description": "The parameter description."
},
{
"name": "enableMarkdown",
"type": "boolean",
"isOptional": true,
- "defaultValue": "False"
+ "defaultValue": "False",
+ "description": "A value indicating whether the description should be rendered as Markdown. `true` allows the description to contain Markdown elements such as links, text decoration and lists."
}
],
"returnType": "ParameterResource",
@@ -6004,13 +6029,16 @@
"name": "withDeveloperCertificateTrust",
"capabilityId": "Aspire.Hosting/withDeveloperCertificateTrust",
"qualifiedName": "withDeveloperCertificateTrust",
- "description": "Configures developer certificate trust",
+ "description": "Indicates whether developer certificates should be treated as trusted certificate authorities for the resource at run time. Currently this indicates trust for the ASP.NET Core developer certificate. The developer certificate will only be trusted when running in local development scenarios; in publish mode resources will use their default certificate trust.",
+ "remarks": "Disable trust for app host managed developer certificate(s) for a container resource.\n```\nvar container = builder.AddContainer(\"my-service\", \"my-service:latest\")\n.WithDeveloperCertificateTrust(false);\n```\nDisable automatic trust for app host managed developer certificate(s), but explicitly enable it for a specific resource.\n```\nvar builder = DistributedApplication.CreateBuilder(new DistributedApplicationOptions()\n{\nArgs = args,\nTrustDeveloperCertificate = false,\n});\nvar project = builder.AddProject(\"my-service\")\n.WithDeveloperCertificateTrust(true);\n```",
+ "returns": "The `IResourceBuilder`1`.",
"kind": "Method",
"signature": "withDeveloperCertificateTrust(trust: boolean): IResourceWithEnvironment",
"parameters": [
{
"name": "trust",
- "type": "boolean"
+ "type": "boolean",
+ "description": "Indicates whether the developer certificate should be treated as trusted."
}
],
"returnType": "IResourceWithEnvironment",
@@ -6028,23 +6056,28 @@
"name": "withDockerfile",
"capabilityId": "Aspire.Hosting/withDockerfile",
"qualifiedName": "withDockerfile",
- "description": "Configures the resource to use a Dockerfile",
+ "description": "Causes Aspire to build the specified container image from a Dockerfile.",
+ "remarks": "When this method is called an annotation is added to the `ContainerResource` that specifies the context path and\nDockerfile path to be used when building the container image. These details are then used by the orchestrator to build the image\nbefore using that image to start the container.\nThe `contextPath` is relative to the AppHost directory unless it is a fully qualified path.\nThe `dockerfilePath` is relative to the `contextPath` unless it is a fully qualified path.\nIf the `dockerfilePath` is not provided, it defaults to \"Dockerfile\" in the `contextPath`.\nWhen generating the manifest for deployment tools, the `WithDockerfile``1`\nmethod results in an additional attribute being added to the `container.v0` resource type which contains the configuration\nnecessary to allow the deployment tool to build the container image prior to deployment.\nCreates a container called `mycontainer` with an image called `myimage`.\n```\nvar builder = DistributedApplication.CreateBuilder(args);\nbuilder.AddContainer(\"mycontainer\", \"myimage\")\n.WithDockerfile(\"path/to/context\");\nbuilder.Build().Run();\n```",
+ "returns": "The `IResourceBuilder`1`.",
"kind": "Method",
"signature": "withDockerfile(contextPath: string, dockerfilePath?: string, stage?: string): ContainerResource",
"parameters": [
{
"name": "contextPath",
- "type": "string"
+ "type": "string",
+ "description": "Path to be used as the context for the container image build."
},
{
"name": "dockerfilePath",
"type": "string",
- "isOptional": true
+ "isOptional": true,
+ "description": "Path to the Dockerfile relative to the `contextPath`. Defaults to \"Dockerfile\" if not specified."
},
{
"name": "stage",
"type": "string",
- "isOptional": true
+ "isOptional": true,
+ "description": "The stage representing the image to be published in a multi-stage Dockerfile."
}
],
"returnType": "ContainerResource",
@@ -6058,19 +6091,23 @@
"name": "withDockerfileBaseImage",
"capabilityId": "Aspire.Hosting/withDockerfileBaseImage",
"qualifiedName": "withDockerfileBaseImage",
- "description": "Sets the base image for a Dockerfile build",
+ "description": "Configures custom base images for generated Dockerfiles.",
+ "remarks": "This extension method allows customization of the base images used in generated Dockerfiles.\nFor multi-stage Dockerfiles (e.g., Python with UV), you can specify separate build and runtime images.\nSpecify custom base images for a Python application:\n```\nvar builder = DistributedApplication.CreateBuilder(args);\nbuilder.AddPythonApp(\"myapp\", \"path/to/app\", \"main.py\")\n.WithDockerfileBaseImage(\nbuildImage: \"ghcr.io/astral-sh/uv:python3.12-bookworm-slim\",\nruntimeImage: \"python:3.12-slim-bookworm\");\nbuilder.Build().Run();\n```",
+ "returns": "The `IResourceBuilder`1`.",
"kind": "Method",
"signature": "withDockerfileBaseImage(buildImage?: string, runtimeImage?: string): IResource",
"parameters": [
{
"name": "buildImage",
"type": "string",
- "isOptional": true
+ "isOptional": true,
+ "description": "The base image to use for the build stage. If null, uses the default build image."
},
{
"name": "runtimeImage",
"type": "string",
- "isOptional": true
+ "isOptional": true,
+ "description": "The base image to use for the runtime stage. If null, uses the default runtime image."
}
],
"returnType": "IResource",
@@ -6091,24 +6128,29 @@
"name": "withDockerfileBuilder",
"capabilityId": "Aspire.Hosting/withDockerfileBuilder",
"qualifiedName": "withDockerfileBuilder",
- "description": "Configures the resource to use a programmatically generated Dockerfile",
+ "description": "Builds the specified container image from a Dockerfile generated by a callback using the `DockerfileBuilder` API.",
+ "remarks": "This method provides a programmatic way to build Dockerfiles using the `DockerfileBuilder` API\ninstead of string manipulation. Callbacks can be composed by calling this method multiple times - each callback will be invoked\nin order to build up the final Dockerfile.\nThe `contextPath` is relative to the AppHost directory unless it is fully qualified.\nCreates a container with a programmatically built Dockerfile using fluent API:\n```\nvar builder = DistributedApplication.CreateBuilder(args);\nbuilder.AddContainer(\"mycontainer\", \"myimage\")\n.WithDockerfileBuilder(\"path/to/context\", context =>\n{\ncontext.Builder.From(\"alpine:latest\")\n.WorkDir(\"/app\")\n.Run(\"apk add curl\")\n.Copy(\".\", \".\")\n.Cmd([\"./myapp\"]);\nreturn Task.CompletedTask;\n});\nbuilder.Build().Run();\n```",
+ "returns": "The `IResourceBuilder`1`.",
"kind": "Method",
- "signature": "withDockerfileBuilder(contextPath: string, callback: (arg: DockerfileBuilderCallbackContext) =\u003E Promise\u003Cvoid\u003E, stage?: string): ContainerResource",
+ "signature": "withDockerfileBuilder(contextPath: string, callback: (arg: DockerfileBuilderCallbackContext) => Promise, stage?: string): ContainerResource",
"parameters": [
{
"name": "contextPath",
- "type": "string"
+ "type": "string",
+ "description": "Path to be used as the context for the container image build."
},
{
"name": "callback",
"type": "callback",
"isCallback": true,
- "callbackSignature": "(arg: DockerfileBuilderCallbackContext) =\u003E Promise\u003Cvoid\u003E"
+ "callbackSignature": "(arg: DockerfileBuilderCallbackContext) => Promise",
+ "description": "A callback that uses the `DockerfileBuilder` API to construct the Dockerfile."
},
{
"name": "stage",
"type": "string",
- "isOptional": true
+ "isOptional": true,
+ "description": "The stage representing the image to be published in a multi-stage Dockerfile."
}
],
"returnType": "ContainerResource",
@@ -6122,7 +6164,8 @@
"name": "withEndpoint",
"capabilityId": "Aspire.Hosting/withEndpoint",
"qualifiedName": "withEndpoint",
- "description": "Adds a network endpoint",
+ "description": "Exposes an endpoint on a resource. A reference to this endpoint can be retrieved using `GetEndpoint``1`. The endpoint name will be the scheme name if not specified.",
+ "returns": "The `IResourceBuilder`1`.",
"kind": "Method",
"signature": "withEndpoint(port?: number, targetPort?: number, scheme?: string, name?: string, env?: string, isProxied?: boolean, isExternal?: boolean, protocol?: ProtocolType): IResourceWithEndpoints",
"parameters": [
@@ -6130,46 +6173,54 @@
"name": "port",
"type": "number",
"isOptional": true,
- "isNullable": true
+ "isNullable": true,
+ "description": "An optional port. This is the port that will be given to other resource to communicate with this resource."
},
{
"name": "targetPort",
"type": "number",
"isOptional": true,
- "isNullable": true
+ "isNullable": true,
+ "description": "This is the port the resource is listening on. If the endpoint is used for the container, it is the container port."
},
{
"name": "scheme",
"type": "string",
- "isOptional": true
+ "isOptional": true,
+ "description": "An optional scheme e.g. (http/https). Defaults to the `protocol` argument if it is defined or \"tcp\" otherwise."
},
{
"name": "name",
"type": "string",
- "isOptional": true
+ "isOptional": true,
+ "description": "An optional name of the endpoint. Defaults to the scheme name if not specified."
},
{
"name": "env",
"type": "string",
- "isOptional": true
+ "isOptional": true,
+ "description": "An optional name of the environment variable that will be used to inject the `targetPort`. If the target port is null one will be dynamically generated and assigned to the environment variable."
},
{
"name": "isProxied",
"type": "boolean",
"isOptional": true,
- "defaultValue": "True"
+ "defaultValue": "True",
+ "description": "Specifies if the endpoint will be proxied by DCP. Defaults to true."
},
{
"name": "isExternal",
"type": "boolean",
"isOptional": true,
- "isNullable": true
+ "isNullable": true,
+ "description": "Indicates that this endpoint should be exposed externally at publish time."
},
{
"name": "protocol",
"type": "ProtocolType",
"isOptional": true,
- "isNullable": true
+ "isNullable": true,
+ "description": "Network protocol: TCP or UDP are supported today, others possibly in future."
}
],
"returnType": "IResourceWithEndpoints",
@@ -6189,7 +6240,7 @@
"qualifiedName": "withEndpointCallback",
"description": "Updates a named endpoint via callback",
"kind": "Method",
- "signature": "withEndpointCallback(endpointName: string, callback: (obj: EndpointUpdateContext) =\u003E Promise\u003Cvoid\u003E, createIfNotExists?: boolean): IResourceWithEndpoints",
+ "signature": "withEndpointCallback(endpointName: string, callback: (obj: EndpointUpdateContext) => Promise, createIfNotExists?: boolean): IResourceWithEndpoints",
"parameters": [
{
"name": "endpointName",
@@ -6199,7 +6250,7 @@
"name": "callback",
"type": "callback",
"isCallback": true,
- "callbackSignature": "(obj: EndpointUpdateContext) =\u003E Promise\u003Cvoid\u003E"
+ "callbackSignature": "(obj: EndpointUpdateContext) => Promise"
},
{
"name": "createIfNotExists",
@@ -6223,13 +6274,16 @@
"name": "withEndpointProxySupport",
"capabilityId": "Aspire.Hosting/withEndpointProxySupport",
"qualifiedName": "withEndpointProxySupport",
- "description": "Configures endpoint proxy support",
+ "description": "Set whether a container resource can use proxied endpoints or whether they should be disabled for all endpoints belonging to the container. If set to `false`, endpoints belonging to the container resource will ignore the configured proxy settings and run proxy-less.",
+ "remarks": "This method is intended to support scenarios with persistent lifetime containers where it is desirable for the container to be accessible over the same\nport whether the Aspire application is running or not. Proxied endpoints bind ports that are only accessible while the Aspire application is running.\nThe user needs to be careful to ensure that container endpoints are using unique ports when disabling proxy support as by default for proxy-less\nendpoints, Aspire will allocate the internal container port as the host port, which will increase the chance of port conflicts.",
+ "returns": "The `IResourceBuilder`1`.",
"kind": "Method",
"signature": "withEndpointProxySupport(proxyEnabled: boolean): ContainerResource",
"parameters": [
{
"name": "proxyEnabled",
- "type": "boolean"
+ "type": "boolean",
+ "description": "Should endpoints for the container resource support using a proxy?"
}
],
"returnType": "ContainerResource",
@@ -6243,13 +6297,15 @@
"name": "withEntrypoint",
"capabilityId": "Aspire.Hosting/withEntrypoint",
"qualifiedName": "withEntrypoint",
- "description": "Sets the container entrypoint",
+ "description": "Sets the Entrypoint for the container.",
+ "returns": "The `IResourceBuilder`1`.",
"kind": "Method",
"signature": "withEntrypoint(entrypoint: string): ContainerResource",
"parameters": [
{
"name": "entrypoint",
- "type": "string"
+ "type": "string",
+ "description": "The new entrypoint for the container."
}
],
"returnType": "ContainerResource",
@@ -6291,15 +6347,17 @@
"name": "withEnvironmentCallback",
"capabilityId": "Aspire.Hosting/withEnvironmentCallback",
"qualifiedName": "withEnvironmentCallback",
- "description": "Sets environment variables via callback",
+ "description": "Allows for the population of environment variables on a resource.",
+ "returns": "The `IResourceBuilder`1`.",
"kind": "Method",
- "signature": "withEnvironmentCallback(callback: (arg: EnvironmentCallbackContext) =\u003E Promise\u003Cvoid\u003E): IResourceWithEnvironment",
+ "signature": "withEnvironmentCallback(callback: (arg: EnvironmentCallbackContext) => Promise): IResourceWithEnvironment",
"parameters": [
{
"name": "callback",
"type": "callback",
"isCallback": true,
- "callbackSignature": "(arg: EnvironmentCallbackContext) =\u003E Promise\u003Cvoid\u003E"
+ "callbackSignature": "(arg: EnvironmentCallbackContext) => Promise",
+ "description": "A callback that allows for deferred execution for computing many environment variables. This runs after resources have been allocated by the orchestrator and allows access to other resources to resolve computed data, e.g. connection strings, ports."
}
],
"returnType": "IResourceWithEnvironment",
@@ -6317,7 +6375,8 @@
"name": "withEnvironmentVariablesConfig",
"capabilityId": "Aspire.Hosting/withEnvironmentVariablesConfig",
"qualifiedName": "withEnvironmentVariablesConfig",
- "description": "Adds an environment variables configuration gatherer",
+ "description": "Adds an environment variables configuration gatherer to the builder.",
+ "returns": "The builder with the configuration gatherer added.",
"kind": "Method",
"signature": "withEnvironmentVariablesConfig(): IExecutionConfigurationBuilder",
"parameters": [],
@@ -6331,13 +6390,15 @@
"name": "withExecutableCommand",
"capabilityId": "Aspire.Hosting/withExecutableCommand",
"qualifiedName": "withExecutableCommand",
- "description": "Sets the executable command",
+ "description": "Sets the command for the executable resource.",
+ "returns": "The `IResourceBuilder`1`.",
"kind": "Method",
"signature": "withExecutableCommand(command: string): ExecutableResource",
"parameters": [
{
"name": "command",
- "type": "string"
+ "type": "string",
+ "description": "Command."
}
],
"returnType": "ExecutableResource",
@@ -6352,7 +6413,9 @@
"name": "withExplicitStart",
"capabilityId": "Aspire.Hosting/withExplicitStart",
"qualifiedName": "withExplicitStart",
- "description": "Prevents resource from starting automatically",
+ "description": "Adds a `ExplicitStartupAnnotation` annotation to the resource so it doesn't automatically start with the app host startup.",
+ "remarks": "This method is useful when a resource shouldn't automatically start when the app host starts.\nThe database clean up tool project isn't started with the app host.\nThe resource start command can be used to run it ondemand later.\n```\nvar builder = DistributedApplication.CreateBuilder(args);\nvar pgsql = builder.AddPostgres(\"postgres\");\nbuilder.AddProject(\"dbcleanuptool\")\n.WithReference(pgsql)\n.WithExplicitStart();\n```",
+ "returns": "The `IResourceBuilder`1`.",
"kind": "Method",
"signature": "withExplicitStart(): IResource",
"parameters": [],
@@ -6374,7 +6437,8 @@
"name": "withExternalHttpEndpoints",
"capabilityId": "Aspire.Hosting/withExternalHttpEndpoints",
"qualifiedName": "withExternalHttpEndpoints",
- "description": "Makes HTTP endpoints externally accessible",
+ "description": "Marks existing http or https endpoints on a resource as external.",
+ "returns": "The `IResourceBuilder`1`.",
"kind": "Method",
"signature": "withExternalHttpEndpoints(): IResourceWithEndpoints",
"parameters": [],
@@ -6393,13 +6457,16 @@
"name": "withHealthCheck",
"capabilityId": "Aspire.Hosting/withHealthCheck",
"qualifiedName": "withHealthCheck",
- "description": "Adds a health check by key",
+ "description": "Adds a `HealthCheckAnnotation` to the resource annotations to associate a resource with a named health check managed by the health check service.",
+ "remarks": "The `WithHealthCheck``1` method is used in conjunction with\nthe `WaitFor``1` to associate a resource\nregistered in the application hosts dependency injection container. The `WithHealthCheck``1`\nmethod does not inject the health check itself it is purely an association mechanism.\nDefine a custom health check and associate it with a resource.\n```\nvar builder = DistributedApplication.CreateBuilder(args);\nvar startAfter = DateTime.Now.AddSeconds(30);\nbuilder.Services.AddHealthChecks().AddCheck(mycheck\", () =>\n{\nreturn DateTime.Now > startAfter ? HealthCheckResult.Healthy() : HealthCheckResult.Unhealthy();\n});\nvar pg = builder.AddPostgres(\"pg\")\n.WithHealthCheck(\"mycheck\");\nbuilder.AddProject(\"myapp\")\n.WithReference(pg)\n.WaitFor(pg); // This will result in waiting for the building check, and the\n// custom check defined in the code.\n```",
+ "returns": "The `IResourceBuilder`1`.",
"kind": "Method",
"signature": "withHealthCheck(key: string): IResource",
"parameters": [
{
"name": "key",
- "type": "string"
+ "type": "string",
+ "description": "The key for the health check."
}
],
"returnType": "IResource",
@@ -6453,7 +6520,9 @@
"name": "withHttpEndpoint",
"capabilityId": "Aspire.Hosting/withHttpEndpoint",
"qualifiedName": "withHttpEndpoint",
- "description": "Adds an HTTP endpoint",
+ "description": "Exposes an HTTP endpoint on a resource, or updates the existing HTTP endpoint if one with the same name already exists. This endpoint reference can be retrieved using `GetEndpoint``1`. The endpoint name will be \"http\" if not specified.",
+ "remarks": "If an endpoint with the same name already exists on the resource, the existing endpoint is updated\nwith any non-null parameter values. Parameters left as `null` will not modify the existing endpoint's values.",
+ "returns": "The `IResourceBuilder`1`.",
"kind": "Method",
"signature": "withHttpEndpoint(port?: number, targetPort?: number, name?: string, env?: string, isProxied?: boolean): IResourceWithEndpoints",
"parameters": [
@@ -6461,29 +6530,34 @@
"name": "port",
"type": "number",
"isOptional": true,
- "isNullable": true
+ "isNullable": true,
+ "description": "An optional port. This is the port that will be given to other resource to communicate with this resource."
},
{
"name": "targetPort",
"type": "number",
"isOptional": true,
- "isNullable": true
+ "isNullable": true,
+ "description": "This is the port the resource is listening on. If the endpoint is used for the container, it is the container port."
},
{
"name": "name",
"type": "string",
- "isOptional": true
+ "isOptional": true,
+ "description": "An optional name of the endpoint. Defaults to \"http\" if not specified."
},
{
"name": "env",
"type": "string",
- "isOptional": true
+ "isOptional": true,
+ "description": "An optional name of the environment variable to inject."
},
{
"name": "isProxied",
"type": "boolean",
"isOptional": true,
- "defaultValue": "True"
+ "defaultValue": "True",
+ "description": "Specifies if the endpoint will be proxied by DCP. Defaults to true."
}
],
"returnType": "IResourceWithEndpoints",
@@ -6503,13 +6577,13 @@
"qualifiedName": "withHttpEndpointCallback",
"description": "Updates an HTTP endpoint via callback",
"kind": "Method",
- "signature": "withHttpEndpointCallback(callback: (obj: EndpointUpdateContext) =\u003E Promise\u003Cvoid\u003E, name?: string, createIfNotExists?: boolean): IResourceWithEndpoints",
+ "signature": "withHttpEndpointCallback(callback: (obj: EndpointUpdateContext) => Promise, name?: string, createIfNotExists?: boolean): IResourceWithEndpoints",
"parameters": [
{
"name": "callback",
"type": "callback",
"isCallback": true,
- "callbackSignature": "(obj: EndpointUpdateContext) =\u003E Promise\u003Cvoid\u003E"
+ "callbackSignature": "(obj: EndpointUpdateContext) => Promise"
},
{
"name": "name",
@@ -6538,7 +6612,7 @@
"name": "withHttpHealthCheck",
"capabilityId": "Aspire.Hosting/withExternalServiceHttpHealthCheck",
"qualifiedName": "withHttpHealthCheck",
- "description": "Adds an HTTP health check to the external service",
+ "description": "Adds an HTTP health check to the external service for polyglot app hosts.",
"kind": "Method",
"signature": "withHttpHealthCheck(path?: string, statusCode?: number, endpointName?: string): ExternalServiceResource",
"parameters": [
@@ -6570,25 +6644,30 @@
"name": "withHttpHealthCheck",
"capabilityId": "Aspire.Hosting/withHttpHealthCheck",
"qualifiedName": "withHttpHealthCheck",
- "description": "Adds an HTTP health check",
+ "description": "Adds a health check to the resource which is mapped to a specific endpoint.",
+ "remarks": "This method adds a health check to the health check service which polls the specified endpoint on the resource\non a periodic basis. The base address is dynamically determined based on the endpoint that was selected. By\ndefault the path is set to \"/\" and the status code is set to 200.\nThis example shows adding an HTTP health check to a backend project.\nThe health check makes sure that the front end does not start until the backend is\nreporting a healthy status based on the return code returned from the\n\"/health\" path on the backend server.\n```\nvar builder = DistributedApplication.CreateBuilder(args);\nvar backend = builder.AddProject(\"backend\")\n.WithHttpHealthCheck(\"/health\");\nbuilder.AddProject(\"frontend\")\n.WithReference(backend).WaitFor(backend);\n```",
+ "returns": "The `IResourceBuilder`1`.",
"kind": "Method",
"signature": "withHttpHealthCheck(path?: string, statusCode?: number, endpointName?: string): IResourceWithEndpoints",
"parameters": [
{
"name": "path",
"type": "string",
- "isOptional": true
+ "isOptional": true,
+ "description": "The relative path to test."
},
{
"name": "statusCode",
"type": "number",
"isOptional": true,
- "isNullable": true
+ "isNullable": true,
+ "description": "The result code to interpret as healthy."
},
{
"name": "endpointName",
"type": "string",
- "isOptional": true
+ "isOptional": true,
+ "description": "The name of the endpoint to derive the base address from."
}
],
"returnType": "IResourceWithEndpoints",
@@ -6606,7 +6685,7 @@
"name": "withHttpProbe",
"capabilityId": "Aspire.Hosting/withHttpProbe",
"qualifiedName": "withHttpProbe",
- "description": "Adds an HTTP health probe to the resource",
+ "description": "ATS export stub for `WithHttpProbe``1` with renamed parameter to avoid reserved keyword conflicts in Go and Rust.",
"kind": "Method",
"signature": "withHttpProbe(probeType: ProbeType, path?: string, initialDelaySeconds?: number, periodSeconds?: number, timeoutSeconds?: number, failureThreshold?: number, successThreshold?: number, endpointName?: string): IResourceWithEndpoints",
"parameters": [
@@ -6670,15 +6749,17 @@
"name": "withHttpsCertificateConfig",
"capabilityId": "Aspire.Hosting/withHttpsCertificateConfigExport",
"qualifiedName": "withHttpsCertificateConfig",
- "description": "Adds an HTTPS certificate configuration gatherer",
+ "description": "Adds an HTTPS certificate configuration gatherer using certificate metadata instead of a raw X509 certificate.",
+ "returns": "The execution configuration builder.",
"kind": "Method",
- "signature": "withHttpsCertificateConfig(configContextFactory: (arg: HttpsCertificateInfo) =\u003E Promise\u003CHttpsCertificateExecutionConfigurationContext\u003E): IExecutionConfigurationBuilder",
+ "signature": "withHttpsCertificateConfig(configContextFactory: (arg: HttpsCertificateInfo) => Promise): IExecutionConfigurationBuilder",
"parameters": [
{
"name": "configContextFactory",
"type": "callback",
"isCallback": true,
- "callbackSignature": "(arg: HttpsCertificateInfo) =\u003E Promise\u003CHttpsCertificateExecutionConfigurationContext\u003E"
+ "callbackSignature": "(arg: HttpsCertificateInfo) => Promise",
+ "description": "The factory that creates the HTTPS certificate configuration context."
}
],
"returnType": "IExecutionConfigurationBuilder",
@@ -6691,14 +6772,17 @@
"name": "withHttpsDeveloperCertificate",
"capabilityId": "Aspire.Hosting/withParameterHttpsDeveloperCertificate",
"qualifiedName": "withHttpsDeveloperCertificate",
- "description": "Configures HTTPS with a developer certificate",
+ "description": "Indicates that a resource should use the developer certificate key pair for HTTPS endpoints at run time. Currently this indicates use of the ASP.NET Core developer certificate. The developer certificate will only be used when running in local development scenarios; in publish mode resources will use their default certificate configuration.",
+ "remarks": "Use the developer certificate for HTTPS/TLS endpoints on a container resource:\n```\nbuilder.AddContainer(\"my-service\", \"my-image\")\n.WithHttpsDeveloperCertificate()\n```",
+ "returns": "The `IResourceBuilder`1`.",
"kind": "Method",
"signature": "withHttpsDeveloperCertificate(password?: ParameterResource): IResourceWithEnvironment",
"parameters": [
{
"name": "password",
"type": "ParameterResource",
- "isOptional": true
+ "isOptional": true,
+ "description": "A parameter specifying the password used to encrypt the certificate private key."
}
],
"returnType": "IResourceWithEnvironment",
@@ -6716,7 +6800,9 @@
"name": "withHttpsEndpoint",
"capabilityId": "Aspire.Hosting/withHttpsEndpoint",
"qualifiedName": "withHttpsEndpoint",
- "description": "Adds an HTTPS endpoint",
+ "description": "Exposes an HTTPS endpoint on a resource, or updates the existing HTTPS endpoint if one with the same name already exists. This endpoint reference can be retrieved using `GetEndpoint``1`. The endpoint name will be \"https\" if not specified.",
+ "remarks": "If an endpoint with the same name already exists on the resource, the existing endpoint is updated\nwith any non-null parameter values. Parameters left as `null` will not modify the existing endpoint's values.",
+ "returns": "The `IResourceBuilder`1`.",
"kind": "Method",
"signature": "withHttpsEndpoint(port?: number, targetPort?: number, name?: string, env?: string, isProxied?: boolean): IResourceWithEndpoints",
"parameters": [
@@ -6724,29 +6810,34 @@
"name": "port",
"type": "number",
"isOptional": true,
- "isNullable": true
+ "isNullable": true,
+ "description": "An optional host port."
},
{
"name": "targetPort",
"type": "number",
"isOptional": true,
- "isNullable": true
+ "isNullable": true,
+ "description": "This is the port the resource is listening on. If the endpoint is used for the container, it is the container port."
},
{
"name": "name",
"type": "string",
- "isOptional": true
+ "isOptional": true,
+ "description": "An optional name of the endpoint. Defaults to \"https\" if not specified."
},
{
"name": "env",
"type": "string",
- "isOptional": true
+ "isOptional": true,
+ "description": "An optional name of the environment variable to inject."
},
{
"name": "isProxied",
"type": "boolean",
"isOptional": true,
- "defaultValue": "True"
+ "defaultValue": "True",
+ "description": "Specifies if the endpoint will be proxied by DCP. Defaults to true."
}
],
"returnType": "IResourceWithEndpoints",
@@ -6766,13 +6857,13 @@
"qualifiedName": "withHttpsEndpointCallback",
"description": "Updates an HTTPS endpoint via callback",
"kind": "Method",
- "signature": "withHttpsEndpointCallback(callback: (obj: EndpointUpdateContext) =\u003E Promise\u003Cvoid\u003E, name?: string, createIfNotExists?: boolean): IResourceWithEndpoints",
+ "signature": "withHttpsEndpointCallback(callback: (obj: EndpointUpdateContext) => Promise, name?: string, createIfNotExists?: boolean): IResourceWithEndpoints",
"parameters": [
{
"name": "callback",
"type": "callback",
"isCallback": true,
- "callbackSignature": "(obj: EndpointUpdateContext) =\u003E Promise\u003Cvoid\u003E"
+ "callbackSignature": "(obj: EndpointUpdateContext) => Promise"
},
{
"name": "name",
@@ -6801,19 +6892,23 @@
"name": "withIconName",
"capabilityId": "Aspire.Hosting/withIconName",
"qualifiedName": "withIconName",
- "description": "Sets the icon for the resource",
+ "description": "Specifies the icon to use when displaying the resource in the dashboard.",
+ "remarks": "This method allows you to specify a custom FluentUI icon that will be displayed for the resource in the dashboard.\nIf no custom icon is specified, the dashboard will use default icons based on the resource type.\nSet a Redis resource to use the Database icon:\n```\nvar redis = builder.AddContainer(\"redis\", \"redis:latest\")\n.WithIconName(\"Database\");\n```\nSet a custom service to use a specific icon with Regular variant:\n```\nvar service = builder.AddProject(\"service\")\n.WithIconName(\"CloudArrowUp\", IconVariant.Regular);\n```",
+ "returns": "The `IResourceBuilder`1`.",
"kind": "Method",
"signature": "withIconName(iconName: string, iconVariant?: IconVariant): IResource",
"parameters": [
{
"name": "iconName",
- "type": "string"
+ "type": "string",
+ "description": "The name of the FluentUI icon to use. See https://aka.ms/fluentui-system-icons for available icons."
},
{
"name": "iconVariant",
"type": "IconVariant",
"isOptional": true,
- "defaultValue": "Filled"
+ "defaultValue": "Filled",
+ "description": "The variant of the icon (Regular or Filled). Defaults to Filled."
}
],
"returnType": "IResource",
@@ -6834,18 +6929,21 @@
"name": "withImage",
"capabilityId": "Aspire.Hosting/withImage",
"qualifiedName": "withImage",
- "description": "Sets the container image",
+ "description": "Allows overriding the image on a container.",
+ "returns": "The `IResourceBuilder`1`.",
"kind": "Method",
"signature": "withImage(image: string, tag?: string): ContainerResource",
"parameters": [
{
"name": "image",
- "type": "string"
+ "type": "string",
+ "description": "Image value."
},
{
"name": "tag",
"type": "string",
- "isOptional": true
+ "isOptional": true,
+ "description": "Tag value."
}
],
"returnType": "ContainerResource",
@@ -6859,13 +6957,15 @@
"name": "withImagePullPolicy",
"capabilityId": "Aspire.Hosting/withImagePullPolicy",
"qualifiedName": "withImagePullPolicy",
- "description": "Sets the container image pull policy",
+ "description": "Sets the pull policy for the container resource.",
+ "returns": "The `IResourceBuilder`1`.",
"kind": "Method",
"signature": "withImagePullPolicy(pullPolicy: ImagePullPolicy): ContainerResource",
"parameters": [
{
"name": "pullPolicy",
- "type": "ImagePullPolicy"
+ "type": "ImagePullPolicy",
+ "description": "The pull policy behavior for the container resource."
}
],
"returnType": "ContainerResource",
@@ -6879,15 +6979,18 @@
"name": "withImagePushOptions",
"capabilityId": "Aspire.Hosting/withImagePushOptions",
"qualifiedName": "withImagePushOptions",
- "description": "Sets image push options via callback",
+ "description": "Adds an asynchronous callback to configure container image push options for the resource.",
+ "remarks": "This method allows customization of how container images are named and tagged when pushed to a registry using an asynchronous callback.\nUse this overload when the callback needs to perform asynchronous operations such as retrieving configuration values from external sources.\nThe callback receives a `ContainerImagePushOptionsCallbackContext` that provides access to the resource\nand the `ContainerImagePushOptions` that can be modified.\nMultiple callbacks can be registered on the same resource, and they will be invoked in the order they were added.",
+ "returns": "The `IResourceBuilder`1`.",
"kind": "Method",
- "signature": "withImagePushOptions(callback: (arg: ContainerImagePushOptionsCallbackContext) =\u003E Promise\u003Cvoid\u003E): IComputeResource",
+ "signature": "withImagePushOptions(callback: (arg: ContainerImagePushOptionsCallbackContext) => Promise): IComputeResource",
"parameters": [
{
"name": "callback",
"type": "callback",
"isCallback": true,
- "callbackSignature": "(arg: ContainerImagePushOptionsCallbackContext) =\u003E Promise\u003Cvoid\u003E"
+ "callbackSignature": "(arg: ContainerImagePushOptionsCallbackContext) => Promise",
+ "description": "The asynchronous callback to configure push options."
}
],
"returnType": "IComputeResource",
@@ -6905,13 +7008,15 @@
"name": "withImageRegistry",
"capabilityId": "Aspire.Hosting/withImageRegistry",
"qualifiedName": "withImageRegistry",
- "description": "Sets the container image registry",
+ "description": "Allows overriding the image registry on a container.",
+ "returns": "The `IResourceBuilder`1`.",
"kind": "Method",
"signature": "withImageRegistry(registry: string): ContainerResource",
"parameters": [
{
"name": "registry",
- "type": "string"
+ "type": "string",
+ "description": "Registry value."
}
],
"returnType": "ContainerResource",
@@ -6925,13 +7030,15 @@
"name": "withImageSHA256",
"capabilityId": "Aspire.Hosting/withImageSHA256",
"qualifiedName": "withImageSHA256",
- "description": "Sets the image SHA256 digest",
+ "description": "Allows setting the image to a specific sha256 on a container.",
+ "returns": "The `IResourceBuilder`1`.",
"kind": "Method",
"signature": "withImageSHA256(sha256: string): ContainerResource",
"parameters": [
{
"name": "sha256",
- "type": "string"
+ "type": "string",
+ "description": "Registry value."
}
],
"returnType": "ContainerResource",
@@ -6945,13 +7052,15 @@
"name": "withImageTag",
"capabilityId": "Aspire.Hosting/withImageTag",
"qualifiedName": "withImageTag",
- "description": "Sets the container image tag",
+ "description": "Allows overriding the image tag on a container.",
+ "returns": "The `IResourceBuilder`1`.",
"kind": "Method",
"signature": "withImageTag(tag: string): ContainerResource",
"parameters": [
{
"name": "tag",
- "type": "string"
+ "type": "string",
+ "description": "Tag value."
}
],
"returnType": "ContainerResource",
@@ -6965,13 +7074,16 @@
"name": "withLifetime",
"capabilityId": "Aspire.Hosting/withLifetime",
"qualifiedName": "withLifetime",
- "description": "Sets the lifetime behavior of the container resource",
+ "description": "Sets the lifetime behavior of the container resource.",
+ "remarks": "Marking a container resource to have a `Persistent` lifetime.\n```\nvar builder = DistributedApplication.CreateBuilder(args);\nbuilder.AddContainer(\"mycontainer\", \"myimage\")\n.WithLifetime(ContainerLifetime.Persistent);\nbuilder.Build().Run();\n```",
+ "returns": "The `IResourceBuilder`1`.",
"kind": "Method",
"signature": "withLifetime(lifetime: ContainerLifetime): ContainerResource",
"parameters": [
{
"name": "lifetime",
- "type": "ContainerLifetime"
+ "type": "ContainerLifetime",
+ "description": "The lifetime behavior of the container resource. The defaults behavior is `Session`."
}
],
"returnType": "ContainerResource",
@@ -6985,7 +7097,9 @@
"name": "withMcpServer",
"capabilityId": "Aspire.Hosting/withMcpServer",
"qualifiedName": "withMcpServer",
- "description": "Configures an MCP server endpoint on the resource",
+ "description": "Marks the resource as hosting a Model Context Protocol (MCP) server on the specified endpoint.",
+ "remarks": "This method adds an `McpServerEndpointAnnotation` to the resource, enabling the Aspire tooling\nto discover and proxy the MCP server exposed by the resource.",
+ "returns": "A reference to the `IResourceBuilder`1` for chaining additional configuration.",
"kind": "Method",
"signature": "withMcpServer(path?: string, endpointName?: string): IResourceWithEndpoints",
"parameters": [
@@ -6993,12 +7107,14 @@
"name": "path",
"type": "string",
"isOptional": true,
- "defaultValue": "/mcp"
+ "defaultValue": "/mcp",
+ "description": "An optional path to append to the endpoint URL when forming the MCP server address. Defaults to `\"/mcp\"`."
},
{
"name": "endpointName",
"type": "string",
- "isOptional": true
+ "isOptional": true,
+ "description": "An optional name of the endpoint that hosts the MCP server. If not specified, defaults to the first HTTPS or HTTP endpoint."
}
],
"returnType": "IResourceWithEndpoints",
@@ -7042,7 +7158,9 @@
"name": "withoutHttpsCertificate",
"capabilityId": "Aspire.Hosting/withoutHttpsCertificate",
"qualifiedName": "withoutHttpsCertificate",
- "description": "Removes HTTPS certificate configuration",
+ "description": "Disable HTTPS/TLS server certificate configuration for the resource. No HTTPS/TLS termination configuration will be applied.",
+ "remarks": "Disable HTTPS certificate configuration for a Redis resource:\n```\nvar redis = builder.AddRedis(\"cache\")\n.WithoutHttpsCertificate();\n```",
+ "returns": "The `IResourceBuilder`1`.",
"kind": "Method",
"signature": "withoutHttpsCertificate(): IResourceWithEnvironment",
"parameters": [],
@@ -7061,13 +7179,16 @@
"name": "withParentRelationship",
"capabilityId": "Aspire.Hosting/withBuilderParentRelationship",
"qualifiedName": "withParentRelationship",
- "description": "Sets the parent relationship",
+ "description": "Adds a `ResourceRelationshipAnnotation` to the resource annotations to add a parent-child relationship.",
+ "remarks": "The `WithParentRelationship` method is used to add parent relationships to the resource. Relationships are used to link\nresources together in UI.\nThis example shows adding a relationship between two resources.\n```\nvar builder = DistributedApplication.CreateBuilder(args);\nvar backend = builder.AddProject(\"backend\");\nvar frontend = builder.AddProject(\"frontend\")\n.WithParentRelationship(backend);\n```",
+ "returns": "A resource builder.",
"kind": "Method",
"signature": "withParentRelationship(parent: IResource): IResource",
"parameters": [
{
"name": "parent",
- "type": "IResource"
+ "type": "IResource",
+ "description": "The parent of `builder`."
}
],
"returnType": "IResource",
@@ -7088,15 +7209,17 @@
"name": "withPipelineConfiguration",
"capabilityId": "Aspire.Hosting/withPipelineConfiguration",
"qualifiedName": "withPipelineConfiguration",
- "description": "Configures pipeline step dependencies via a callback",
+ "description": "Registers a callback to be executed during the pipeline configuration phase, allowing modification of step dependencies and relationships.",
+ "returns": "The resource builder for chaining.",
"kind": "Method",
- "signature": "withPipelineConfiguration(callback: (obj: PipelineConfigurationContext) =\u003E Promise\u003Cvoid\u003E): IResource",
+ "signature": "withPipelineConfiguration(callback: (obj: PipelineConfigurationContext) => Promise): IResource",
"parameters": [
{
"name": "callback",
"type": "callback",
"isCallback": true,
- "callbackSignature": "(obj: PipelineConfigurationContext) =\u003E Promise\u003Cvoid\u003E"
+ "callbackSignature": "(obj: PipelineConfigurationContext) => Promise",
+ "description": "The callback function to execute during the configuration phase."
}
],
"returnType": "IResource",
@@ -7117,39 +7240,46 @@
"name": "withPipelineStepFactory",
"capabilityId": "Aspire.Hosting/withPipelineStepFactory",
"qualifiedName": "withPipelineStepFactory",
- "description": "Adds a pipeline step to the resource",
+ "description": "Adds a pipeline step to the resource that will be executed during deployment.",
+ "returns": "The resource builder for chaining.",
"kind": "Method",
- "signature": "withPipelineStepFactory(stepName: string, callback: (arg: PipelineStepContext) =\u003E Promise\u003Cvoid\u003E, dependsOn?: string[], requiredBy?: string[], tags?: string[], description?: string): IResource",
+ "signature": "withPipelineStepFactory(stepName: string, callback: (arg: PipelineStepContext) => Promise, dependsOn?: string[], requiredBy?: string[], tags?: string[], description?: string): IResource",
"parameters": [
{
"name": "stepName",
- "type": "string"
+ "type": "string",
+ "description": "The unique name of the pipeline step."
},
{
"name": "callback",
"type": "callback",
"isCallback": true,
- "callbackSignature": "(arg: PipelineStepContext) =\u003E Promise\u003Cvoid\u003E"
+ "callbackSignature": "(arg: PipelineStepContext) => Promise",
+ "description": "The callback to execute when the step runs."
},
{
"name": "dependsOn",
"type": "string[]",
- "isOptional": true
+ "isOptional": true,
+ "description": "Optional step names that this step depends on."
},
{
"name": "requiredBy",
"type": "string[]",
- "isOptional": true
+ "isOptional": true,
+ "description": "Optional step names that require this step."
},
{
"name": "tags",
"type": "string[]",
- "isOptional": true
+ "isOptional": true,
+ "description": "Optional tags that categorize this step."
},
{
"name": "description",
"type": "string",
- "isOptional": true
+ "isOptional": true,
+ "description": "An optional human-readable description of the step."
}
],
"returnType": "IResource",
@@ -7210,13 +7340,15 @@
"name": "withReferenceEnvironment",
"capabilityId": "Aspire.Hosting/withReferenceEnvironment",
"qualifiedName": "withReferenceEnvironment",
- "description": "Configures which reference values are injected into environment variables",
+ "description": "Configures how information is injected into environment variables when the resource references other resources.",
+ "returns": "The `IResourceBuilder`1`.",
"kind": "Method",
"signature": "withReferenceEnvironment(options: ReferenceEnvironmentInjectionOptions): IResourceWithEnvironment",
"parameters": [
{
"name": "options",
- "type": "ReferenceEnvironmentInjectionOptions"
+ "type": "ReferenceEnvironmentInjectionOptions",
+ "description": "Options controlling which reference information is emitted."
}
],
"returnType": "IResourceWithEnvironment",
@@ -7234,17 +7366,20 @@
"name": "withRelationship",
"capabilityId": "Aspire.Hosting/withBuilderRelationship",
"qualifiedName": "withRelationship",
- "description": "Adds a relationship to another resource",
+ "description": "Adds a relationship to another resource using its builder.",
+ "returns": "A resource builder.",
"kind": "Method",
"signature": "withRelationship(resourceBuilder: IResource, type: string): IResource",
"parameters": [
{
"name": "resourceBuilder",
- "type": "IResource"
+ "type": "IResource",
+ "description": "The resource builder that the relationship is to."
},
{
"name": "type",
- "type": "string"
+ "type": "string",
+ "description": "The relationship type."
}
],
"returnType": "IResource",
@@ -7265,13 +7400,16 @@
"name": "withRemoteImageName",
"capabilityId": "Aspire.Hosting/withRemoteImageName",
"qualifiedName": "withRemoteImageName",
- "description": "Sets the remote image name for publishing",
+ "description": "Sets the remote image name (without registry endpoint or tag) for container push operations.",
+ "remarks": "This is a convenience method that registers a callback to set the `RemoteImageName` property.\nThe remote image name should not include the registry endpoint or tag. Those are managed separately.\nThis method can be combined with `WithRemoteImageTag``1` to fully customize the image reference.",
+ "returns": "The `IResourceBuilder`1`.",
"kind": "Method",
"signature": "withRemoteImageName(remoteImageName: string): IComputeResource",
"parameters": [
{
"name": "remoteImageName",
- "type": "string"
+ "type": "string",
+ "description": "The remote image name (e.g., \"myapp\" or \"myorg/myapp\")."
}
],
"returnType": "IComputeResource",
@@ -7289,13 +7427,16 @@
"name": "withRemoteImageTag",
"capabilityId": "Aspire.Hosting/withRemoteImageTag",
"qualifiedName": "withRemoteImageTag",
- "description": "Sets the remote image tag for publishing",
+ "description": "Sets the remote image tag for container push operations.",
+ "remarks": "This is a convenience method that registers a callback to set the `RemoteImageTag` property.\nThe tag can be any valid container image tag such as version numbers, environment names, or deployment identifiers.\nThis method can be combined with `WithRemoteImageName``1` to fully customize the image reference.",
+ "returns": "The `IResourceBuilder`1`.",
"kind": "Method",
"signature": "withRemoteImageTag(remoteImageTag: string): IComputeResource",
"parameters": [
{
"name": "remoteImageTag",
- "type": "string"
+ "type": "string",
+ "description": "The remote image tag (e.g., \"latest\", \"v1.0.0\")."
}
],
"returnType": "IComputeResource",
@@ -7313,13 +7454,16 @@
"name": "withReplicas",
"capabilityId": "Aspire.Hosting/withReplicas",
"qualifiedName": "withReplicas",
- "description": "Sets the number of replicas",
+ "description": "Configures how many replicas of the project should be created for the project.",
+ "remarks": "When this method is applied to a project resource it will configure the app host to start multiple instances\nof the application based on the specified number of replicas. By default the app host automatically starts a\nreverse proxy for each process. When `WithReplicas` is\nused the reverse proxy will load balance traffic between the replicas.\nThis capability can be useful when debugging scale out scenarios to ensure state is appropriately managed\nwithin a cluster of instances.\nStart multiple instances of the same service.\n```\nvar builder = DistributedApplication.CreateBuilder(args);\nbuilder.AddProject(\"inventoryservice\")\n.WithReplicas(3);\n```",
+ "returns": "A reference to the `IResourceBuilder`1`.",
"kind": "Method",
"signature": "withReplicas(replicas: number): ProjectResource",
"parameters": [
{
"name": "replicas",
- "type": "number"
+ "type": "number",
+ "description": "The number of replicas."
}
],
"returnType": "ProjectResource",
@@ -7334,18 +7478,22 @@
"name": "withRequiredCommand",
"capabilityId": "Aspire.Hosting/withRequiredCommand",
"qualifiedName": "withRequiredCommand",
- "description": "Adds a required command dependency",
+ "description": "Declares that a resource requires a specific command/executable to be available on the local machine PATH before it can start.",
+ "remarks": "The command is considered valid if either:\n1. It is an absolute or relative path (contains a directory separator) that points to an existing file, or\n2. It is discoverable on the current process PATH (respecting PATHEXT on Windows).\nIf the command is not found, a warning message will be logged but the resource will be allowed to attempt to start.",
+ "returns": "The resource builder.",
"kind": "Method",
"signature": "withRequiredCommand(command: string, helpLink?: string): IResource",
"parameters": [
{
"name": "command",
- "type": "string"
+ "type": "string",
+ "description": "The command string (file name or path) that should be validated."
},
{
"name": "helpLink",
"type": "string",
- "isOptional": true
+ "isOptional": true,
+ "description": "An optional help link URL to guide users when the command is missing."
}
],
"returnType": "IResource",
@@ -7366,7 +7514,8 @@
"name": "withToolIgnoreExistingFeeds",
"capabilityId": "Aspire.Hosting/withToolIgnoreExistingFeeds",
"qualifiedName": "withToolIgnoreExistingFeeds",
- "description": "Ignores existing NuGet feeds",
+ "description": "Configures the tool to use only the specified package sources, ignoring existing NuGet configuration.",
+ "returns": "The `IResourceBuilder`1` for chaining.",
"kind": "Method",
"signature": "withToolIgnoreExistingFeeds(): DotnetToolResource",
"parameters": [],
@@ -7381,7 +7530,8 @@
"name": "withToolIgnoreFailedSources",
"capabilityId": "Aspire.Hosting/withToolIgnoreFailedSources",
"qualifiedName": "withToolIgnoreFailedSources",
- "description": "Ignores failed NuGet sources",
+ "description": "Configures the resource to treat package source failures as warnings.",
+ "returns": "The `IResourceBuilder`1` for chaining.",
"kind": "Method",
"signature": "withToolIgnoreFailedSources(): DotnetToolResource",
"parameters": [],
@@ -7396,13 +7546,15 @@
"name": "withToolPackage",
"capabilityId": "Aspire.Hosting/withToolPackage",
"qualifiedName": "withToolPackage",
- "description": "Sets the tool package ID",
+ "description": "Sets the package identifier for the tool configuration associated with the resource builder.",
+ "returns": "The `IResourceBuilder`1` for chaining.",
"kind": "Method",
"signature": "withToolPackage(packageId: string): DotnetToolResource",
"parameters": [
{
"name": "packageId",
- "type": "string"
+ "type": "string",
+ "description": "The package identifier to assign to the tool configuration. Cannot be null."
}
],
"returnType": "DotnetToolResource",
@@ -7416,7 +7568,8 @@
"name": "withToolPrerelease",
"capabilityId": "Aspire.Hosting/withToolPrerelease",
"qualifiedName": "withToolPrerelease",
- "description": "Allows prerelease tool versions",
+ "description": "Allows prerelease versions of the tool to be used",
+ "returns": "The `IResourceBuilder`1` for chaining.",
"kind": "Method",
"signature": "withToolPrerelease(): DotnetToolResource",
"parameters": [],
@@ -7431,13 +7584,15 @@
"name": "withToolSource",
"capabilityId": "Aspire.Hosting/withToolSource",
"qualifiedName": "withToolSource",
- "description": "Adds a NuGet source for the tool",
+ "description": "Adds a NuGet package source for tool acquisition.",
+ "returns": "The `IResourceBuilder`1` for chaining.",
"kind": "Method",
"signature": "withToolSource(source: string): DotnetToolResource",
"parameters": [
{
"name": "source",
- "type": "string"
+ "type": "string",
+ "description": "The source to add."
}
],
"returnType": "DotnetToolResource",
@@ -7451,13 +7606,15 @@
"name": "withToolVersion",
"capabilityId": "Aspire.Hosting/withToolVersion",
"qualifiedName": "withToolVersion",
- "description": "Sets the tool version",
+ "description": "Sets the package version for a tool to use.",
+ "returns": "The `IResourceBuilder`1` for chaining.",
"kind": "Method",
"signature": "withToolVersion(version: string): DotnetToolResource",
"parameters": [
{
"name": "version",
- "type": "string"
+ "type": "string",
+ "description": "The package version to use"
}
],
"returnType": "DotnetToolResource",
@@ -7503,19 +7660,23 @@
"name": "withUrlForEndpoint",
"capabilityId": "Aspire.Hosting/withUrlForEndpoint",
"qualifiedName": "withUrlForEndpoint",
- "description": "Customizes the URL for a specific endpoint via callback",
+ "description": "Registers a callback to update the URL displayed for the endpoint with the specified name.",
+ "remarks": "Use this method to customize the URL that is automatically added for an endpoint on the resource.\nTo add another URL for an endpoint, use `WithUrlForEndpoint``1`.\nThe callback will be executed after endpoints have been allocated and the URL has been generated.\nThis allows you to modify the URL or its display text.\nIf the URL returned by `callback` is relative, it will be combined with the endpoint URL to create an absolute URL.\nIf the endpoint with the specified name does not exist, the callback will not be executed and a warning will be logged.\nCustomize the URL for the \"https\" endpoint to use the link text \"Home\":\n```\nvar frontend = builder.AddProject(\"frontend\")\n.WithUrlForEndpoint(\"https\", url => url.DisplayText = \"Home\");\n```\nCustomize the URL for the \"https\" endpoint to deep to the \"/home\" path:\n```\nvar frontend = builder.AddProject(\"frontend\")\n.WithUrlForEndpoint(\"https\", url => url.Url = \"/home\");\n```",
+ "returns": "The `IResourceBuilder`1`.",
"kind": "Method",
- "signature": "withUrlForEndpoint(endpointName: string, callback: (obj: ResourceUrlAnnotation) =\u003E Promise\u003Cvoid\u003E): IResource",
+ "signature": "withUrlForEndpoint(endpointName: string, callback: (obj: ResourceUrlAnnotation) => Promise): IResource",
"parameters": [
{
"name": "endpointName",
- "type": "string"
+ "type": "string",
+ "description": "The name of the endpoint to customize the URL for."
},
{
"name": "callback",
"type": "callback",
"isCallback": true,
- "callbackSignature": "(obj: ResourceUrlAnnotation) =\u003E Promise\u003Cvoid\u003E"
+ "callbackSignature": "(obj: ResourceUrlAnnotation) => Promise",
+ "description": "The callback that will customize the URL."
}
],
"returnType": "IResource",
@@ -7536,15 +7697,18 @@
"name": "withUrls",
"capabilityId": "Aspire.Hosting/withUrls",
"qualifiedName": "withUrls",
- "description": "Customizes displayed URLs via callback",
+ "description": "Registers a callback to customize the URLs displayed for the resource.",
+ "remarks": "The callback will be executed after endpoints have been allocated for this resource.\nThis allows you to modify any URLs for the resource, including adding, modifying, or even deletion.\nNote that any endpoints on the resource will automatically get a corresponding URL added for them.\nUpdate all displayed URLs to have display text:\n```\nvar frontend = builder.AddProject(\"frontend\")\n.WithUrls(c =>\n{\nforeach (var url in c.Urls)\n{\nif (string.IsNullOrEmpty(url.DisplayText))\n{\nurl.DisplayText = \"frontend\";\n}\n}\n});\n```\nUpdate endpoint URLs to use a custom host name based on the resource name:\n```\nvar frontend = builder.AddProject(\"frontend\")\n.WithUrls(c =>\n{\nforeach (var url in c.Urls)\n{\nif (url.Endpoint is not null)\n{\nvar uri = new UriBuilder(url.Url) { Host = $\"{c.Resource.Name}.localhost\" };\nurl.Url = uri.ToString();\n}\n}\n});\n```",
+ "returns": "The `IResourceBuilder`1`.",
"kind": "Method",
- "signature": "withUrls(callback: (obj: ResourceUrlsCallbackContext) =\u003E Promise\u003Cvoid\u003E): IResource",
+ "signature": "withUrls(callback: (obj: ResourceUrlsCallbackContext) => Promise): IResource",
"parameters": [
{
"name": "callback",
"type": "callback",
"isCallback": true,
- "callbackSignature": "(obj: ResourceUrlsCallbackContext) =\u003E Promise\u003Cvoid\u003E"
+ "callbackSignature": "(obj: ResourceUrlsCallbackContext) => Promise",
+ "description": "The callback that will customize URLs for the resource."
}
],
"returnType": "IResource",
@@ -7565,24 +7729,29 @@
"name": "withVolume",
"capabilityId": "Aspire.Hosting/withVolume",
"qualifiedName": "withVolume",
- "description": "Adds a volume",
+ "description": "Adds a volume to a container resource.",
+ "remarks": "Volumes persist data across container restarts. Named volumes are managed\nby Docker/Podman and stored in a system-managed location.\nWhy this wrapper exists: The original `ContainerResourceBuilderExtensions.WithVolume`\nhas parameter order `(name?, target, isReadOnly)` where the optional `name` comes first.\nThis wrapper reorders parameters to `(target, name?, isReadOnly)` so the required `target`\nparameter comes first, providing a better API for polyglot consumers.",
+ "returns": "The same resource builder handle for chaining.",
"kind": "Method",
"signature": "withVolume(target: string, name?: string, isReadOnly?: boolean): ContainerResource",
"parameters": [
{
"name": "target",
- "type": "string"
+ "type": "string",
+ "description": "The mount path inside the container."
},
{
"name": "name",
"type": "string",
- "isOptional": true
+ "isOptional": true,
+ "description": "The volume name. If null, an anonymous volume is created."
},
{
"name": "isReadOnly",
"type": "boolean",
"isOptional": true,
- "defaultValue": "False"
+ "defaultValue": "False",
+ "description": "Whether the volume is read-only."
}
],
"returnType": "ContainerResource",
@@ -7596,13 +7765,15 @@
"name": "withWorkingDirectory",
"capabilityId": "Aspire.Hosting/withWorkingDirectory",
"qualifiedName": "withWorkingDirectory",
- "description": "Sets the executable working directory",
+ "description": "Sets the working directory for the executable resource.",
+ "returns": "The `IResourceBuilder`1`.",
"kind": "Method",
"signature": "withWorkingDirectory(workingDirectory: string): ExecutableResource",
"parameters": [
{
"name": "workingDirectory",
- "type": "string"
+ "type": "string",
+ "description": "Working directory."
}
],
"returnType": "ExecutableResource",
@@ -7639,6 +7810,8 @@
"fullName": "Aspire.Hosting.ApplicationModel.AfterResourcesCreatedEvent",
"kind": "handle",
"exposeProperties": true,
+ "description": "This event is published after all resources have been created.",
+ "remarks": "Subscribing to this event is analogous to implementing the `AfterResourcesCreatedAsync`\nmethod. This event provides access to the `IServiceProvider` interface to resolve dependencies including\n`DistributedApplicationModel` service which is passed in as an argument\nin `AfterResourcesCreatedAsync`.",
"implementedInterfaces": [
"Aspire.Hosting.Eventing.IDistributedApplicationEvent"
],
@@ -7647,7 +7820,7 @@
"name": "model",
"capabilityId": "Aspire.Hosting.ApplicationModel/AfterResourcesCreatedEvent.model",
"qualifiedName": "AfterResourcesCreatedEvent.model",
- "description": "Gets the Model property",
+ "description": "The `DistributedApplicationModel` instance.",
"kind": "PropertyGetter",
"signature": "model(): DistributedApplicationModel",
"parameters": [],
@@ -7661,7 +7834,7 @@
"name": "services",
"capabilityId": "Aspire.Hosting.ApplicationModel/AfterResourcesCreatedEvent.services",
"qualifiedName": "AfterResourcesCreatedEvent.services",
- "description": "Gets the Services property",
+ "description": "The `IServiceProvider` instance.",
"kind": "PropertyGetter",
"signature": "services(): IServiceProvider",
"parameters": [],
@@ -7678,6 +7851,8 @@
"fullName": "Aspire.Hosting.ApplicationModel.BeforeResourceStartedEvent",
"kind": "handle",
"exposeProperties": true,
+ "description": "This event is raised by orchestrators before they have started a new resource.",
+ "remarks": "Resources that are created by orchestrators may not yet be ready to handle requests.",
"implementedInterfaces": [
"Aspire.Hosting.Eventing.IDistributedApplicationEvent",
"Aspire.Hosting.Eventing.IDistributedApplicationResourceEvent"
@@ -7718,6 +7893,8 @@
"fullName": "Aspire.Hosting.ApplicationModel.BeforeStartEvent",
"kind": "handle",
"exposeProperties": true,
+ "description": "This event is published before the application starts.",
+ "remarks": "Subscribing to this event is analogous to implementing the `BeforeStartAsync`\nmethod. This event provides access to the `IServiceProvider` interface to resolve dependencies including\n`DistributedApplicationModel` service which is passed in as an argument\nin `BeforeStartAsync`.",
"implementedInterfaces": [
"Aspire.Hosting.Eventing.IDistributedApplicationEvent"
],
@@ -7726,7 +7903,7 @@
"name": "model",
"capabilityId": "Aspire.Hosting.ApplicationModel/BeforeStartEvent.model",
"qualifiedName": "BeforeStartEvent.model",
- "description": "Gets the Model property",
+ "description": "The `DistributedApplicationModel` instance.",
"kind": "PropertyGetter",
"signature": "model(): DistributedApplicationModel",
"parameters": [],
@@ -7740,7 +7917,7 @@
"name": "services",
"capabilityId": "Aspire.Hosting.ApplicationModel/BeforeStartEvent.services",
"qualifiedName": "BeforeStartEvent.services",
- "description": "Gets the Services property",
+ "description": "The `IServiceProvider` instance.",
"kind": "PropertyGetter",
"signature": "services(): IServiceProvider",
"parameters": [],
@@ -7756,13 +7933,14 @@
"name": "CommandLineArgsCallbackContext",
"fullName": "Aspire.Hosting.ApplicationModel.CommandLineArgsCallbackContext",
"kind": "handle",
+ "description": "Represents a callback context for the list of command-line arguments associated with an executable resource.",
"implementedInterfaces": [],
"capabilities": [
{
"name": "args",
"capabilityId": "Aspire.Hosting.ApplicationModel/CommandLineArgsCallbackContext.args",
"qualifiedName": "CommandLineArgsCallbackContext.args",
- "description": "Gets the command-line argument editor",
+ "description": "Gets the editor used to manipulate command-line arguments in polyglot callbacks.",
"kind": "PropertyGetter",
"signature": "args(): CommandLineArgsEditor",
"parameters": [],
@@ -7776,7 +7954,7 @@
"name": "executionContext",
"capabilityId": "Aspire.Hosting.ApplicationModel/CommandLineArgsCallbackContext.executionContext",
"qualifiedName": "CommandLineArgsCallbackContext.executionContext",
- "description": "Gets the execution context for this callback invocation",
+ "description": "Gets the execution context associated with this callback.",
"kind": "PropertyGetter",
"signature": "executionContext(): DistributedApplicationExecutionContext",
"parameters": [],
@@ -7790,7 +7968,7 @@
"name": "log",
"capabilityId": "Aspire.Hosting.ApplicationModel/CommandLineArgsCallbackContext.log",
"qualifiedName": "CommandLineArgsCallbackContext.log",
- "description": "Gets the callback logger facade",
+ "description": "Gets the logger facade used by polyglot callbacks.",
"kind": "PropertyGetter",
"signature": "log(): LogFacade",
"parameters": [],
@@ -7804,7 +7982,8 @@
"name": "resource",
"capabilityId": "Aspire.Hosting.ApplicationModel/CommandLineArgsCallbackContext.resource",
"qualifiedName": "CommandLineArgsCallbackContext.resource",
- "description": "Gets the resource associated with this callback",
+ "description": "The resource associated with this callback context.",
+ "remarks": "This will be set to the resource in all cases where Aspire invokes the callback.",
"kind": "PropertyGetter",
"signature": "resource(): IResource",
"parameters": [],
@@ -7820,19 +7999,21 @@
"name": "CommandLineArgsEditor",
"fullName": "Aspire.Hosting.ApplicationModel.CommandLineArgsEditor",
"kind": "handle",
+ "description": "Provides an ATS-first editor for command-line arguments within polyglot callbacks.",
"implementedInterfaces": [],
"capabilities": [
{
"name": "add",
"capabilityId": "Aspire.Hosting.ApplicationModel/add",
"qualifiedName": "CommandLineArgsEditor.add",
- "description": "Adds a command-line argument",
+ "description": "Adds a command-line argument.",
"kind": "InstanceMethod",
"signature": "add(value: IExpressionValue): void",
"parameters": [
{
"name": "value",
- "type": "IExpressionValue"
+ "type": "IExpressionValue",
+ "description": "The argument to add."
}
],
"returnType": "void",
@@ -7848,6 +8029,7 @@
"fullName": "Aspire.Hosting.ApplicationModel.ConnectionStringAvailableEvent",
"kind": "handle",
"exposeProperties": true,
+ "description": "The `ConnectionStringAvailableEvent` is raised when a connection string becomes available for a resource.",
"implementedInterfaces": [
"Aspire.Hosting.Eventing.IDistributedApplicationEvent",
"Aspire.Hosting.Eventing.IDistributedApplicationResourceEvent"
@@ -7888,13 +8070,15 @@
"fullName": "Aspire.Hosting.ApplicationModel.ContainerImagePushOptions",
"kind": "handle",
"exposeProperties": true,
+ "description": "Represents options for pushing container images to a registry.",
+ "remarks": "This class allows customization of how container images are named and tagged when pushed to a container registry.\nThe `RemoteImageName` specifies the repository path (without registry endpoint or tag),\nand `RemoteImageTag` specifies the tag to apply. Use `GetFullRemoteImageNameAsync`\nto construct the complete image reference including registry endpoint and tag.",
"implementedInterfaces": [],
"capabilities": [
{
"name": "remoteImageName",
"capabilityId": "Aspire.Hosting.ApplicationModel/ContainerImagePushOptions.remoteImageName",
"qualifiedName": "ContainerImagePushOptions.remoteImageName",
- "description": "Gets the RemoteImageName property",
+ "description": "Gets or sets the remote image name (repository path without registry endpoint or tag).",
"kind": "PropertyGetter",
"signature": "remoteImageName(): string",
"parameters": [],
@@ -7908,7 +8092,7 @@
"name": "remoteImageTag",
"capabilityId": "Aspire.Hosting.ApplicationModel/ContainerImagePushOptions.remoteImageTag",
"qualifiedName": "ContainerImagePushOptions.remoteImageTag",
- "description": "Gets the RemoteImageTag property",
+ "description": "Gets or sets the remote image tag.",
"kind": "PropertyGetter",
"signature": "remoteImageTag(): string",
"parameters": [],
@@ -7922,7 +8106,7 @@
"name": "setRemoteImageName",
"capabilityId": "Aspire.Hosting.ApplicationModel/ContainerImagePushOptions.setRemoteImageName",
"qualifiedName": "ContainerImagePushOptions.setRemoteImageName",
- "description": "Sets the RemoteImageName property",
+ "description": "Gets or sets the remote image name (repository path without registry endpoint or tag).",
"kind": "PropertySetter",
"signature": "setRemoteImageName(value: string): ContainerImagePushOptions",
"parameters": [
@@ -7941,7 +8125,7 @@
"name": "setRemoteImageTag",
"capabilityId": "Aspire.Hosting.ApplicationModel/ContainerImagePushOptions.setRemoteImageTag",
"qualifiedName": "ContainerImagePushOptions.setRemoteImageTag",
- "description": "Sets the RemoteImageTag property",
+ "description": "Gets or sets the remote image tag.",
"kind": "PropertySetter",
"signature": "setRemoteImageTag(value: string): ContainerImagePushOptions",
"parameters": [
@@ -7963,13 +8147,15 @@
"fullName": "Aspire.Hosting.ApplicationModel.ContainerImagePushOptionsCallbackContext",
"kind": "handle",
"exposeProperties": true,
+ "description": "Provides context information for container image push options callbacks.",
+ "remarks": "This context is passed to callbacks registered via `WithImagePushOptions``1`.\nCallbacks can use this context to access the resource being configured and modify the `Options`\nto customize how the container image is named and tagged when pushed to a registry.",
"implementedInterfaces": [],
"capabilities": [
{
"name": "cancellationToken",
"capabilityId": "Aspire.Hosting.ApplicationModel/ContainerImagePushOptionsCallbackContext.cancellationToken",
"qualifiedName": "ContainerImagePushOptionsCallbackContext.cancellationToken",
- "description": "Gets the CancellationToken property",
+ "description": "Gets the cancellation token to observe while configuring image push options.",
"kind": "PropertyGetter",
"signature": "cancellationToken(): cancellationToken",
"parameters": [],
@@ -7983,7 +8169,7 @@
"name": "options",
"capabilityId": "Aspire.Hosting.ApplicationModel/ContainerImagePushOptionsCallbackContext.options",
"qualifiedName": "ContainerImagePushOptionsCallbackContext.options",
- "description": "Gets the Options property",
+ "description": "Gets the container image push options that can be modified by the callback.",
"kind": "PropertyGetter",
"signature": "options(): ContainerImagePushOptions",
"parameters": [],
@@ -7997,7 +8183,7 @@
"name": "resource",
"capabilityId": "Aspire.Hosting.ApplicationModel/ContainerImagePushOptionsCallbackContext.resource",
"qualifiedName": "ContainerImagePushOptionsCallbackContext.resource",
- "description": "Gets the Resource property",
+ "description": "Gets the resource being configured for container image push operations.",
"kind": "PropertyGetter",
"signature": "resource(): IResource",
"parameters": [],
@@ -8006,63 +8192,6 @@
"expandedTargetTypes": [
"Aspire.Hosting.ApplicationModel.ContainerImagePushOptionsCallbackContext"
]
- },
- {
- "name": "setCancellationToken",
- "capabilityId": "Aspire.Hosting.ApplicationModel/ContainerImagePushOptionsCallbackContext.setCancellationToken",
- "qualifiedName": "ContainerImagePushOptionsCallbackContext.setCancellationToken",
- "description": "Sets the CancellationToken property",
- "kind": "PropertySetter",
- "signature": "setCancellationToken(value: cancellationToken): ContainerImagePushOptionsCallbackContext",
- "parameters": [
- {
- "name": "value",
- "type": "cancellationToken"
- }
- ],
- "returnType": "ContainerImagePushOptionsCallbackContext",
- "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.ContainerImagePushOptionsCallbackContext",
- "expandedTargetTypes": [
- "Aspire.Hosting.ApplicationModel.ContainerImagePushOptionsCallbackContext"
- ]
- },
- {
- "name": "setOptions",
- "capabilityId": "Aspire.Hosting.ApplicationModel/ContainerImagePushOptionsCallbackContext.setOptions",
- "qualifiedName": "ContainerImagePushOptionsCallbackContext.setOptions",
- "description": "Sets the Options property",
- "kind": "PropertySetter",
- "signature": "setOptions(value: ContainerImagePushOptions): ContainerImagePushOptionsCallbackContext",
- "parameters": [
- {
- "name": "value",
- "type": "ContainerImagePushOptions"
- }
- ],
- "returnType": "ContainerImagePushOptionsCallbackContext",
- "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.ContainerImagePushOptionsCallbackContext",
- "expandedTargetTypes": [
- "Aspire.Hosting.ApplicationModel.ContainerImagePushOptionsCallbackContext"
- ]
- },
- {
- "name": "setResource",
- "capabilityId": "Aspire.Hosting.ApplicationModel/ContainerImagePushOptionsCallbackContext.setResource",
- "qualifiedName": "ContainerImagePushOptionsCallbackContext.setResource",
- "description": "Sets the Resource property",
- "kind": "PropertySetter",
- "signature": "setResource(value: IResource): ContainerImagePushOptionsCallbackContext",
- "parameters": [
- {
- "name": "value",
- "type": "IResource"
- }
- ],
- "returnType": "ContainerImagePushOptionsCallbackContext",
- "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.ContainerImagePushOptionsCallbackContext",
- "expandedTargetTypes": [
- "Aspire.Hosting.ApplicationModel.ContainerImagePushOptionsCallbackContext"
- ]
}
]
},
@@ -8071,6 +8200,7 @@
"fullName": "Aspire.Hosting.ApplicationModel.ContainerImageReference",
"kind": "handle",
"exposeProperties": true,
+ "description": "Represents the fully‑qualified container image reference that should be deployed.",
"implementedInterfaces": [
"Aspire.Hosting.ApplicationModel.IManifestExpressionProvider",
"Aspire.Hosting.ApplicationModel.IValueProvider",
@@ -8083,6 +8213,7 @@
"fullName": "Aspire.Hosting.ApplicationModel.ContainerMountAnnotation",
"kind": "handle",
"exposeProperties": true,
+ "description": "Represents a mount annotation for a container resource.",
"implementedInterfaces": [
"Aspire.Hosting.ApplicationModel.IResourceAnnotation"
],
@@ -8093,6 +8224,7 @@
"fullName": "Aspire.Hosting.ApplicationModel.ContainerPortReference",
"kind": "handle",
"exposeProperties": true,
+ "description": "Represents a TCP/UDP port that a container can expose.",
"implementedInterfaces": [
"Aspire.Hosting.ApplicationModel.IManifestExpressionProvider",
"Aspire.Hosting.ApplicationModel.IValueProvider",
@@ -8114,6 +8246,7 @@
"name": "ContainerResource",
"fullName": "Aspire.Hosting.ApplicationModel.ContainerResource",
"kind": "handle",
+ "description": "A resource that represents a specified container.",
"implementedInterfaces": [
"Aspire.Hosting.ApplicationModel.IComputeResource",
"Aspire.Hosting.ApplicationModel.IResource",
@@ -8128,7 +8261,8 @@
"name": "publishAsConnectionString",
"capabilityId": "Aspire.Hosting/publishAsConnectionString",
"qualifiedName": "publishAsConnectionString",
- "description": "Publishes the resource as a connection string",
+ "description": "Changes the resource to be published as a connection string reference in the manifest.",
+ "returns": "The configured `IResourceBuilder`1`.",
"kind": "Method",
"signature": "publishAsConnectionString(): ContainerResource",
"parameters": [],
@@ -8143,7 +8277,8 @@
"name": "publishAsContainer",
"capabilityId": "Aspire.Hosting/publishAsContainer",
"qualifiedName": "publishAsContainer",
- "description": "Configures the resource to be published as a container",
+ "description": "Changes the resource to be published as a container in the manifest.",
+ "returns": "The `IResourceBuilder`1`.",
"kind": "Method",
"signature": "publishAsContainer(): ContainerResource",
"parameters": [],
@@ -8158,23 +8293,28 @@
"name": "withBindMount",
"capabilityId": "Aspire.Hosting/withBindMount",
"qualifiedName": "withBindMount",
- "description": "Adds a bind mount",
+ "description": "Adds a bind mount to a container resource.",
+ "remarks": "Bind mounts are used to mount files or directories from the host file-system into the container. If the host doesn't require access to the files, consider\nusing volumes instead via `WithVolume``1`.\nThe `source` path specifies the path of the file or directory on the host that will be mounted in the container. If the path is not absolute,\nit will be evaluated relative to the app host project directory path.\nThe `target` path specifies the path the file or directory will be mounted inside the container's file system.\nAdds a bind mount that will mount the `config` directory in the app host project directory, to the container's file system at the path `/database/config`,\nand mark it read-only so that the container cannot modify it:\n```\nvar builder = DistributedApplication.CreateBuilder(args);\nbuilder.AddContainer(\"mycontainer\", \"myimage\")\n.WithBindMount(\"./config\", \"/database/config\", isReadOnly: true);\nbuilder.Build().Run();\n```\nAdds a bind mount that will mount the `init.sh` file from a directory outside the app host project directory, to the container's file system at the path `/usr/config/initialize.sh`,\nand mark it read-only so that the container cannot modify it:\n```\nvar builder = DistributedApplication.CreateBuilder(args);\nbuilder.AddContainer(\"mycontainer\", \"myimage\")\n.WithBindMount(\"../containerconfig/scripts/init.sh\", \"/usr/config/initialize.sh\", isReadOnly: true);\nbuilder.Build().Run();\n```",
+ "returns": "The `IResourceBuilder`1`.",
"kind": "Method",
"signature": "withBindMount(source: string, target: string, isReadOnly?: boolean): ContainerResource",
"parameters": [
{
"name": "source",
- "type": "string"
+ "type": "string",
+ "description": "The source path of the mount. This is the path to the file or directory on the host, relative to the app host project directory."
},
{
"name": "target",
- "type": "string"
+ "type": "string",
+ "description": "The target path where the file or directory is mounted in the container."
},
{
"name": "isReadOnly",
"type": "boolean",
"isOptional": true,
- "defaultValue": "False"
+ "defaultValue": "False",
+ "description": "A flag that indicates if this is a read-only mount."
}
],
"returnType": "ContainerResource",
@@ -8188,17 +8328,20 @@
"name": "withBuildArg",
"capabilityId": "Aspire.Hosting/withBuildArg",
"qualifiedName": "withBuildArg",
- "description": "Adds a build argument from a string value or parameter resource",
+ "description": "Adds a build argument when the container is built from a Dockerfile.",
+ "returns": "The `IResourceBuilder`1`.",
"kind": "Method",
"signature": "withBuildArg(name: string, value: ParameterResource): ContainerResource",
"parameters": [
{
"name": "name",
- "type": "string"
+ "type": "string",
+ "description": "The name of the build argument."
},
{
"name": "value",
- "type": "ParameterResource"
+ "type": "ParameterResource",
+ "description": "The build argument value, either a string or a parameter resource."
}
],
"returnType": "ContainerResource",
@@ -8212,17 +8355,21 @@
"name": "withBuildSecret",
"capabilityId": "Aspire.Hosting/withParameterBuildSecret",
"qualifiedName": "withBuildSecret",
- "description": "Adds a build secret from a parameter resource",
+ "description": "Adds a secret build argument when the container is built from a Dockerfile.",
+ "remarks": "The `WithBuildSecret``1` extension method\nresults in a `--secret` argument being appended to the `docker build` or `podman build` command. This overload results in an environment\nvariable-based secret being passed to the build process. The value of the environment variable is the value of the secret referenced by the `ParameterResource`.\nAdding a build secret based on a parameter.\n```\nvar builder = DistributedApplication.CreateBuilder(args);\nvar accessToken = builder.AddParameter(\"accessToken\", secret: true);\nbuilder.AddContainer(\"mycontainer\", \"myimage\")\n.WithDockerfile(\"../mycontainer\")\n.WithBuildSecret(\"ACCESS_TOKEN\", accessToken);\nbuilder.Build().Run();\n```",
+ "returns": "The `IResourceBuilder`1`.",
"kind": "Method",
"signature": "withBuildSecret(name: string, value: ParameterResource): ContainerResource",
"parameters": [
{
"name": "name",
- "type": "string"
+ "type": "string",
+ "description": "The name of the secret build argument."
},
{
"name": "value",
- "type": "ParameterResource"
+ "type": "ParameterResource",
+ "description": "The resource builder for a parameter resource."
}
],
"returnType": "ContainerResource",
@@ -8236,24 +8383,28 @@
"name": "withContainerCertificatePaths",
"capabilityId": "Aspire.Hosting/withContainerCertificatePaths",
"qualifiedName": "withContainerCertificatePaths",
- "description": "Overrides container certificate bundle and directory paths used for trust configuration",
+ "description": "Adds container certificate path overrides used for certificate trust at run time.",
+ "returns": "The updated resource builder.",
"kind": "Method",
"signature": "withContainerCertificatePaths(customCertificatesDestination?: string, defaultCertificateBundlePaths?: string[], defaultCertificateDirectoryPaths?: string[]): ContainerResource",
"parameters": [
{
"name": "customCertificatesDestination",
"type": "string",
- "isOptional": true
+ "isOptional": true,
+ "description": "The destination path in the container where custom certificates will be copied."
},
{
"name": "defaultCertificateBundlePaths",
"type": "string[]",
- "isOptional": true
+ "isOptional": true,
+ "description": "Default certificate bundle paths in the container that will be replaced."
},
{
"name": "defaultCertificateDirectoryPaths",
"type": "string[]",
- "isOptional": true
+ "isOptional": true,
+ "description": "Default certificate directory paths in the container that may be appended."
}
],
"returnType": "ContainerResource",
@@ -8267,13 +8418,16 @@
"name": "withContainerName",
"capabilityId": "Aspire.Hosting/withContainerName",
"qualifiedName": "withContainerName",
- "description": "Sets the container name",
+ "description": "Overrides the default container name for this resource. By default Aspire generates a unique container name based on the resource name and a random postfix (or a postfix based on a hash of the AppHost project path for persistent container resources). This method allows you to override that behavior with a custom name, but could lead to naming conflicts if the specified name is not unique.",
+ "remarks": "Combining this with `Persistent` will allow Aspire to re-use an existing container that was not\ncreated by an Aspire AppHost.",
+ "returns": "The `IResourceBuilder`1`.",
"kind": "Method",
"signature": "withContainerName(name: string): ContainerResource",
"parameters": [
{
"name": "name",
- "type": "string"
+ "type": "string",
+ "description": "The desired container name. Must be a valid container name or your runtime will report an error."
}
],
"returnType": "ContainerResource",
@@ -8287,13 +8441,16 @@
"name": "withContainerNetworkAlias",
"capabilityId": "Aspire.Hosting/withContainerNetworkAlias",
"qualifiedName": "withContainerNetworkAlias",
- "description": "Adds a network alias for the container",
+ "description": "Adds a network alias to container resource.",
+ "remarks": "Network aliases enable DNS resolution of the container on the network by custom names.\nBy default, containers are accessible on the network using their resource name as a DNS alias.\nThis method allows adding additional aliases for the same container.\nMultiple aliases can be added by calling this method multiple times.",
+ "returns": "The `IResourceBuilder`1`.",
"kind": "Method",
"signature": "withContainerNetworkAlias(alias: string): ContainerResource",
"parameters": [
{
"name": "alias",
- "type": "string"
+ "type": "string",
+ "description": "The network alias for the container."
}
],
"returnType": "ContainerResource",
@@ -8307,13 +8464,16 @@
"name": "withContainerRuntimeArgs",
"capabilityId": "Aspire.Hosting/withContainerRuntimeArgs",
"qualifiedName": "withContainerRuntimeArgs",
- "description": "Adds runtime arguments for the container",
+ "description": "Adds a callback to be executed with a list of arguments to add to the container runtime run command when a container resource is started.",
+ "remarks": "This is intended to pass additional arguments to the underlying container runtime run command to enable advanced features such as exposing GPUs to the container. To pass runtime arguments to the actual container, use the `WithArgs``1` method.",
+ "returns": "The `IResourceBuilder`1`.",
"kind": "Method",
"signature": "withContainerRuntimeArgs(args: string[]): ContainerResource",
"parameters": [
{
"name": "args",
- "type": "string[]"
+ "type": "string[]",
+ "description": "The arguments to be passed to the container runtime run command when the container resource is started."
}
],
"returnType": "ContainerResource",
@@ -8327,23 +8487,28 @@
"name": "withDockerfile",
"capabilityId": "Aspire.Hosting/withDockerfile",
"qualifiedName": "withDockerfile",
- "description": "Configures the resource to use a Dockerfile",
+ "description": "Causes Aspire to build the specified container image from a Dockerfile.",
+ "remarks": "When this method is called an annotation is added to the `ContainerResource` that specifies the context path and\nDockerfile path to be used when building the container image. These details are then used by the orchestrator to build the image\nbefore using that image to start the container.\nThe `contextPath` is relative to the AppHost directory unless it is a fully qualified path.\nThe `dockerfilePath` is relative to the `contextPath` unless it is a fully qualified path.\nIf the `dockerfilePath` is not provided, it defaults to \"Dockerfile\" in the `contextPath`.\nWhen generating the manifest for deployment tools, the `WithDockerfile``1`\nmethod results in an additional attribute being added to the `container.v0` resource type which contains the configuration\nnecessary to allow the deployment tool to build the container image prior to deployment.\nCreates a container called `mycontainer` with an image called `myimage`.\n```\nvar builder = DistributedApplication.CreateBuilder(args);\nbuilder.AddContainer(\"mycontainer\", \"myimage\")\n.WithDockerfile(\"path/to/context\");\nbuilder.Build().Run();\n```",
+ "returns": "The `IResourceBuilder`1`.",
"kind": "Method",
"signature": "withDockerfile(contextPath: string, dockerfilePath?: string, stage?: string): ContainerResource",
"parameters": [
{
"name": "contextPath",
- "type": "string"
+ "type": "string",
+ "description": "Path to be used as the context for the container image build."
},
{
"name": "dockerfilePath",
"type": "string",
- "isOptional": true
+ "isOptional": true,
+ "description": "Path to the Dockerfile relative to the `contextPath`. Defaults to \"Dockerfile\" if not specified."
},
{
"name": "stage",
"type": "string",
- "isOptional": true
+ "isOptional": true,
+ "description": "The stage representing the image to be published in a multi-stage Dockerfile."
}
],
"returnType": "ContainerResource",
@@ -8357,24 +8522,29 @@
"name": "withDockerfileBuilder",
"capabilityId": "Aspire.Hosting/withDockerfileBuilder",
"qualifiedName": "withDockerfileBuilder",
- "description": "Configures the resource to use a programmatically generated Dockerfile",
+ "description": "Builds the specified container image from a Dockerfile generated by a callback using the `DockerfileBuilder` API.",
+ "remarks": "This method provides a programmatic way to build Dockerfiles using the `DockerfileBuilder` API\ninstead of string manipulation. Callbacks can be composed by calling this method multiple times - each callback will be invoked\nin order to build up the final Dockerfile.\nThe `contextPath` is relative to the AppHost directory unless it is fully qualified.\nCreates a container with a programmatically built Dockerfile using fluent API:\n```\nvar builder = DistributedApplication.CreateBuilder(args);\nbuilder.AddContainer(\"mycontainer\", \"myimage\")\n.WithDockerfileBuilder(\"path/to/context\", context =>\n{\ncontext.Builder.From(\"alpine:latest\")\n.WorkDir(\"/app\")\n.Run(\"apk add curl\")\n.Copy(\".\", \".\")\n.Cmd([\"./myapp\"]);\nreturn Task.CompletedTask;\n});\nbuilder.Build().Run();\n```",
+ "returns": "The `IResourceBuilder`1`.",
"kind": "Method",
- "signature": "withDockerfileBuilder(contextPath: string, callback: (arg: DockerfileBuilderCallbackContext) =\u003E Promise\u003Cvoid\u003E, stage?: string): ContainerResource",
+ "signature": "withDockerfileBuilder(contextPath: string, callback: (arg: DockerfileBuilderCallbackContext) => Promise, stage?: string): ContainerResource",
"parameters": [
{
"name": "contextPath",
- "type": "string"
+ "type": "string",
+ "description": "Path to be used as the context for the container image build."
},
{
"name": "callback",
"type": "callback",
"isCallback": true,
- "callbackSignature": "(arg: DockerfileBuilderCallbackContext) =\u003E Promise\u003Cvoid\u003E"
+ "callbackSignature": "(arg: DockerfileBuilderCallbackContext) => Promise",
+ "description": "A callback that uses the `DockerfileBuilder` API to construct the Dockerfile."
},
{
"name": "stage",
"type": "string",
- "isOptional": true
+ "isOptional": true,
+ "description": "The stage representing the image to be published in a multi-stage Dockerfile."
}
],
"returnType": "ContainerResource",
@@ -8388,13 +8558,16 @@
"name": "withEndpointProxySupport",
"capabilityId": "Aspire.Hosting/withEndpointProxySupport",
"qualifiedName": "withEndpointProxySupport",
- "description": "Configures endpoint proxy support",
+ "description": "Set whether a container resource can use proxied endpoints or whether they should be disabled for all endpoints belonging to the container. If set to `false`, endpoints belonging to the container resource will ignore the configured proxy settings and run proxy-less.",
+ "remarks": "This method is intended to support scenarios with persistent lifetime containers where it is desirable for the container to be accessible over the same\nport whether the Aspire application is running or not. Proxied endpoints bind ports that are only accessible while the Aspire application is running.\nThe user needs to be careful to ensure that container endpoints are using unique ports when disabling proxy support as by default for proxy-less\nendpoints, Aspire will allocate the internal container port as the host port, which will increase the chance of port conflicts.",
+ "returns": "The `IResourceBuilder`1`.",
"kind": "Method",
"signature": "withEndpointProxySupport(proxyEnabled: boolean): ContainerResource",
"parameters": [
{
"name": "proxyEnabled",
- "type": "boolean"
+ "type": "boolean",
+ "description": "Should endpoints for the container resource support using a proxy?"
}
],
"returnType": "ContainerResource",
@@ -8408,13 +8581,15 @@
"name": "withEntrypoint",
"capabilityId": "Aspire.Hosting/withEntrypoint",
"qualifiedName": "withEntrypoint",
- "description": "Sets the container entrypoint",
+ "description": "Sets the Entrypoint for the container.",
+ "returns": "The `IResourceBuilder`1`.",
"kind": "Method",
"signature": "withEntrypoint(entrypoint: string): ContainerResource",
"parameters": [
{
"name": "entrypoint",
- "type": "string"
+ "type": "string",
+ "description": "The new entrypoint for the container."
}
],
"returnType": "ContainerResource",
@@ -8428,18 +8603,21 @@
"name": "withImage",
"capabilityId": "Aspire.Hosting/withImage",
"qualifiedName": "withImage",
- "description": "Sets the container image",
+ "description": "Allows overriding the image on a container.",
+ "returns": "The `IResourceBuilder`1`.",
"kind": "Method",
"signature": "withImage(image: string, tag?: string): ContainerResource",
"parameters": [
{
"name": "image",
- "type": "string"
+ "type": "string",
+ "description": "Image value."
},
{
"name": "tag",
"type": "string",
- "isOptional": true
+ "isOptional": true,
+ "description": "Tag value."
}
],
"returnType": "ContainerResource",
@@ -8453,13 +8631,15 @@
"name": "withImagePullPolicy",
"capabilityId": "Aspire.Hosting/withImagePullPolicy",
"qualifiedName": "withImagePullPolicy",
- "description": "Sets the container image pull policy",
+ "description": "Sets the pull policy for the container resource.",
+ "returns": "The `IResourceBuilder`1`.",
"kind": "Method",
"signature": "withImagePullPolicy(pullPolicy: ImagePullPolicy): ContainerResource",
"parameters": [
{
"name": "pullPolicy",
- "type": "ImagePullPolicy"
+ "type": "ImagePullPolicy",
+ "description": "The pull policy behavior for the container resource."
}
],
"returnType": "ContainerResource",
@@ -8473,13 +8653,15 @@
"name": "withImageRegistry",
"capabilityId": "Aspire.Hosting/withImageRegistry",
"qualifiedName": "withImageRegistry",
- "description": "Sets the container image registry",
+ "description": "Allows overriding the image registry on a container.",
+ "returns": "The `IResourceBuilder`1`.",
"kind": "Method",
"signature": "withImageRegistry(registry: string): ContainerResource",
"parameters": [
{
"name": "registry",
- "type": "string"
+ "type": "string",
+ "description": "Registry value."
}
],
"returnType": "ContainerResource",
@@ -8493,13 +8675,15 @@
"name": "withImageSHA256",
"capabilityId": "Aspire.Hosting/withImageSHA256",
"qualifiedName": "withImageSHA256",
- "description": "Sets the image SHA256 digest",
+ "description": "Allows setting the image to a specific sha256 on a container.",
+ "returns": "The `IResourceBuilder`1`.",
"kind": "Method",
"signature": "withImageSHA256(sha256: string): ContainerResource",
"parameters": [
{
"name": "sha256",
- "type": "string"
+ "type": "string",
+ "description": "Registry value."
}
],
"returnType": "ContainerResource",
@@ -8513,13 +8697,15 @@
"name": "withImageTag",
"capabilityId": "Aspire.Hosting/withImageTag",
"qualifiedName": "withImageTag",
- "description": "Sets the container image tag",
+ "description": "Allows overriding the image tag on a container.",
+ "returns": "The `IResourceBuilder`1`.",
"kind": "Method",
"signature": "withImageTag(tag: string): ContainerResource",
"parameters": [
{
"name": "tag",
- "type": "string"
+ "type": "string",
+ "description": "Tag value."
}
],
"returnType": "ContainerResource",
@@ -8533,13 +8719,16 @@
"name": "withLifetime",
"capabilityId": "Aspire.Hosting/withLifetime",
"qualifiedName": "withLifetime",
- "description": "Sets the lifetime behavior of the container resource",
+ "description": "Sets the lifetime behavior of the container resource.",
+ "remarks": "Marking a container resource to have a `Persistent` lifetime.\n```\nvar builder = DistributedApplication.CreateBuilder(args);\nbuilder.AddContainer(\"mycontainer\", \"myimage\")\n.WithLifetime(ContainerLifetime.Persistent);\nbuilder.Build().Run();\n```",
+ "returns": "The `IResourceBuilder`1`.",
"kind": "Method",
"signature": "withLifetime(lifetime: ContainerLifetime): ContainerResource",
"parameters": [
{
"name": "lifetime",
- "type": "ContainerLifetime"
+ "type": "ContainerLifetime",
+ "description": "The lifetime behavior of the container resource. The defaults behavior is `Session`."
}
],
"returnType": "ContainerResource",
@@ -8553,24 +8742,29 @@
"name": "withVolume",
"capabilityId": "Aspire.Hosting/withVolume",
"qualifiedName": "withVolume",
- "description": "Adds a volume",
+ "description": "Adds a volume to a container resource.",
+ "remarks": "Volumes persist data across container restarts. Named volumes are managed\nby Docker/Podman and stored in a system-managed location.\nWhy this wrapper exists: The original `ContainerResourceBuilderExtensions.WithVolume`\nhas parameter order `(name?, target, isReadOnly)` where the optional `name` comes first.\nThis wrapper reorders parameters to `(target, name?, isReadOnly)` so the required `target`\nparameter comes first, providing a better API for polyglot consumers.",
+ "returns": "The same resource builder handle for chaining.",
"kind": "Method",
"signature": "withVolume(target: string, name?: string, isReadOnly?: boolean): ContainerResource",
"parameters": [
{
"name": "target",
- "type": "string"
+ "type": "string",
+ "description": "The mount path inside the container."
},
{
"name": "name",
"type": "string",
- "isOptional": true
+ "isOptional": true,
+ "description": "The volume name. If null, an anonymous volume is created."
},
{
"name": "isReadOnly",
"type": "boolean",
"isOptional": true,
- "defaultValue": "False"
+ "defaultValue": "False",
+ "description": "Whether the volume is read-only."
}
],
"returnType": "ContainerResource",
@@ -8603,19 +8797,22 @@
"name": "DistributedApplicationModel",
"fullName": "Aspire.Hosting.ApplicationModel.DistributedApplicationModel",
"kind": "handle",
+ "description": "Represents a distributed application.",
"implementedInterfaces": [],
"capabilities": [
{
"name": "findResourceByName",
"capabilityId": "Aspire.Hosting/findResourceByName",
"qualifiedName": "findResourceByName",
- "description": "Finds a resource by name",
+ "description": "Finds a resource by name.",
+ "returns": "The matching resource, or `null` when not found.",
"kind": "Method",
"signature": "findResourceByName(name: string): IResource",
"parameters": [
{
"name": "name",
- "type": "string"
+ "type": "string",
+ "description": "The resource name."
}
],
"returnType": "IResource",
@@ -8628,7 +8825,8 @@
"name": "getResources",
"capabilityId": "Aspire.Hosting/getResources",
"qualifiedName": "getResources",
- "description": "Gets resources from the distributed application model",
+ "description": "Gets all resources in the distributed application model.",
+ "returns": "The resources in the model.",
"kind": "Method",
"signature": "getResources(): IResource[]",
"parameters": [],
@@ -8644,6 +8842,7 @@
"name": "DockerfileBuilder",
"fullName": "Aspire.Hosting.ApplicationModel.Docker.DockerfileBuilder",
"kind": "handle",
+ "description": "Builder for creating Dockerfiles programmatically.",
"implementedInterfaces": [],
"capabilities": [
{
@@ -8724,6 +8923,7 @@
"name": "DockerfileStage",
"fullName": "Aspire.Hosting.ApplicationModel.Docker.DockerfileStage",
"kind": "handle",
+ "description": "Represents a stage within a multi-stage Dockerfile.",
"implementedInterfaces": [],
"capabilities": [
{
@@ -9038,13 +9238,14 @@
"fullName": "Aspire.Hosting.ApplicationModel.DockerfileBuilderCallbackContext",
"kind": "handle",
"exposeProperties": true,
+ "description": "Provides context information for Dockerfile build callbacks.",
"implementedInterfaces": [],
"capabilities": [
{
"name": "builder",
"capabilityId": "Aspire.Hosting.ApplicationModel/DockerfileBuilderCallbackContext.builder",
"qualifiedName": "DockerfileBuilderCallbackContext.builder",
- "description": "Gets the Builder property",
+ "description": "Gets the Dockerfile builder instance.",
"kind": "PropertyGetter",
"signature": "builder(): DockerfileBuilder",
"parameters": [],
@@ -9058,7 +9259,7 @@
"name": "cancellationToken",
"capabilityId": "Aspire.Hosting.ApplicationModel/DockerfileBuilderCallbackContext.cancellationToken",
"qualifiedName": "DockerfileBuilderCallbackContext.cancellationToken",
- "description": "Gets the CancellationToken property",
+ "description": "Gets the cancellation token to observe while waiting for the task to complete.",
"kind": "PropertyGetter",
"signature": "cancellationToken(): cancellationToken",
"parameters": [],
@@ -9072,7 +9273,7 @@
"name": "resource",
"capabilityId": "Aspire.Hosting.ApplicationModel/DockerfileBuilderCallbackContext.resource",
"qualifiedName": "DockerfileBuilderCallbackContext.resource",
- "description": "Gets the Resource property",
+ "description": "Gets the resource being built.",
"kind": "PropertyGetter",
"signature": "resource(): IResource",
"parameters": [],
@@ -9086,7 +9287,7 @@
"name": "services",
"capabilityId": "Aspire.Hosting.ApplicationModel/DockerfileBuilderCallbackContext.services",
"qualifiedName": "DockerfileBuilderCallbackContext.services",
- "description": "Gets the Services property",
+ "description": "Gets the service provider for dependency injection.",
"kind": "PropertyGetter",
"signature": "services(): IServiceProvider",
"parameters": [],
@@ -9116,7 +9317,8 @@
"name": "withToolIgnoreExistingFeeds",
"capabilityId": "Aspire.Hosting/withToolIgnoreExistingFeeds",
"qualifiedName": "withToolIgnoreExistingFeeds",
- "description": "Ignores existing NuGet feeds",
+ "description": "Configures the tool to use only the specified package sources, ignoring existing NuGet configuration.",
+ "returns": "The `IResourceBuilder`1` for chaining.",
"kind": "Method",
"signature": "withToolIgnoreExistingFeeds(): DotnetToolResource",
"parameters": [],
@@ -9131,7 +9333,8 @@
"name": "withToolIgnoreFailedSources",
"capabilityId": "Aspire.Hosting/withToolIgnoreFailedSources",
"qualifiedName": "withToolIgnoreFailedSources",
- "description": "Ignores failed NuGet sources",
+ "description": "Configures the resource to treat package source failures as warnings.",
+ "returns": "The `IResourceBuilder`1` for chaining.",
"kind": "Method",
"signature": "withToolIgnoreFailedSources(): DotnetToolResource",
"parameters": [],
@@ -9146,13 +9349,15 @@
"name": "withToolPackage",
"capabilityId": "Aspire.Hosting/withToolPackage",
"qualifiedName": "withToolPackage",
- "description": "Sets the tool package ID",
+ "description": "Sets the package identifier for the tool configuration associated with the resource builder.",
+ "returns": "The `IResourceBuilder`1` for chaining.",
"kind": "Method",
"signature": "withToolPackage(packageId: string): DotnetToolResource",
"parameters": [
{
"name": "packageId",
- "type": "string"
+ "type": "string",
+ "description": "The package identifier to assign to the tool configuration. Cannot be null."
}
],
"returnType": "DotnetToolResource",
@@ -9166,7 +9371,8 @@
"name": "withToolPrerelease",
"capabilityId": "Aspire.Hosting/withToolPrerelease",
"qualifiedName": "withToolPrerelease",
- "description": "Allows prerelease tool versions",
+ "description": "Allows prerelease versions of the tool to be used",
+ "returns": "The `IResourceBuilder`1` for chaining.",
"kind": "Method",
"signature": "withToolPrerelease(): DotnetToolResource",
"parameters": [],
@@ -9181,13 +9387,15 @@
"name": "withToolSource",
"capabilityId": "Aspire.Hosting/withToolSource",
"qualifiedName": "withToolSource",
- "description": "Adds a NuGet source for the tool",
+ "description": "Adds a NuGet package source for tool acquisition.",
+ "returns": "The `IResourceBuilder`1` for chaining.",
"kind": "Method",
"signature": "withToolSource(source: string): DotnetToolResource",
"parameters": [
{
"name": "source",
- "type": "string"
+ "type": "string",
+ "description": "The source to add."
}
],
"returnType": "DotnetToolResource",
@@ -9201,13 +9409,15 @@
"name": "withToolVersion",
"capabilityId": "Aspire.Hosting/withToolVersion",
"qualifiedName": "withToolVersion",
- "description": "Sets the tool version",
+ "description": "Sets the package version for a tool to use.",
+ "returns": "The `IResourceBuilder`1` for chaining.",
"kind": "Method",
"signature": "withToolVersion(version: string): DotnetToolResource",
"parameters": [
{
"name": "version",
- "type": "string"
+ "type": "string",
+ "description": "The package version to use"
}
],
"returnType": "DotnetToolResource",
@@ -9223,6 +9433,7 @@
"name": "EndpointReference",
"fullName": "Aspire.Hosting.ApplicationModel.EndpointReference",
"kind": "handle",
+ "description": "Represents an endpoint reference for a resource with endpoints.",
"implementedInterfaces": [
"Aspire.Hosting.ApplicationModel.IExpressionValue",
"Aspire.Hosting.ApplicationModel.IManifestExpressionProvider",
@@ -9234,7 +9445,7 @@
"name": "endpointName",
"capabilityId": "Aspire.Hosting.ApplicationModel/EndpointReference.endpointName",
"qualifiedName": "EndpointReference.endpointName",
- "description": "Gets the EndpointName property",
+ "description": "Gets the name of the endpoint associated with the endpoint reference.",
"kind": "PropertyGetter",
"signature": "endpointName(): string",
"parameters": [],
@@ -9248,7 +9459,7 @@
"name": "errorMessage",
"capabilityId": "Aspire.Hosting.ApplicationModel/EndpointReference.errorMessage",
"qualifiedName": "EndpointReference.errorMessage",
- "description": "Gets the ErrorMessage property",
+ "description": "Gets or sets a custom error message to be thrown when the endpoint annotation is not found.",
"kind": "PropertyGetter",
"signature": "errorMessage(): string",
"parameters": [],
@@ -9262,7 +9473,8 @@
"name": "excludeReferenceEndpoint",
"capabilityId": "Aspire.Hosting.ApplicationModel/EndpointReference.excludeReferenceEndpoint",
"qualifiedName": "EndpointReference.excludeReferenceEndpoint",
- "description": "Gets the ExcludeReferenceEndpoint property",
+ "description": "Gets a value indicating whether this endpoint is excluded from the default set when referencing the resource's endpoints.",
+ "remarks": "Returns `false` if the endpoint annotation has not been added to the resource yet.\nOnce the annotation exists, this property delegates to `ExcludeReferenceEndpoint`.",
"kind": "PropertyGetter",
"signature": "excludeReferenceEndpoint(): boolean",
"parameters": [],
@@ -9276,7 +9488,7 @@
"name": "exists",
"capabilityId": "Aspire.Hosting.ApplicationModel/EndpointReference.exists",
"qualifiedName": "EndpointReference.exists",
- "description": "Gets the Exists property",
+ "description": "Gets a value indicating whether the endpoint exists.",
"kind": "PropertyGetter",
"signature": "exists(): boolean",
"parameters": [],
@@ -9290,17 +9502,21 @@
"name": "getTlsValue",
"capabilityId": "Aspire.Hosting.ApplicationModel/EndpointReference.getTlsValue",
"qualifiedName": "EndpointReference.getTlsValue",
- "description": "Gets a conditional expression that resolves to the enabledValue when TLS is enabled on the endpoint, or to the disabledValue otherwise.",
+ "description": "Creates a conditional `ReferenceExpression` that resolves to `enabledValue` when `TlsEnabled` is `true` on this endpoint, or to `disabledValue` otherwise.",
+ "remarks": "The returned expression evaluates the TLS state lazily each time its value is resolved, making it\nsafe to embed in a `ReferenceExpression` that is built before TLS is configured\n(e.g., before `BeforeStartEvent` fires). Because the condition and branches are declarative,\npolyglot code generators can translate this into native conditional constructs in any target language.",
+ "returns": "A conditional `ReferenceExpression` whose value tracks the TLS state of this endpoint.",
"kind": "InstanceMethod",
"signature": "getTlsValue(enabledValue: ReferenceExpression, disabledValue: ReferenceExpression): ReferenceExpression",
"parameters": [
{
"name": "enabledValue",
- "type": "ReferenceExpression"
+ "type": "ReferenceExpression",
+ "description": "The expression to evaluate when TLS is enabled (e.g., `\",ssl=true\"`)."
},
{
"name": "disabledValue",
- "type": "ReferenceExpression"
+ "type": "ReferenceExpression",
+ "description": "The expression to evaluate when TLS is not enabled."
}
],
"returnType": "ReferenceExpression",
@@ -9313,14 +9529,16 @@
"name": "getValueAsync",
"capabilityId": "Aspire.Hosting.ApplicationModel/EndpointReference.getValueAsync",
"qualifiedName": "EndpointReference.getValueAsync",
- "description": "Gets the URL of the endpoint asynchronously",
+ "description": "Gets the URL of the endpoint asynchronously. Waits for the endpoint to be allocated if necessary.",
+ "returns": "The URL of the endpoint.",
"kind": "InstanceMethod",
"signature": "getValueAsync(cancellationToken?: cancellationToken): string",
"parameters": [
{
"name": "cancellationToken",
"type": "cancellationToken",
- "isOptional": true
+ "isOptional": true,
+ "description": "The cancellation token."
}
],
"returnType": "string",
@@ -9333,7 +9551,7 @@
"name": "host",
"capabilityId": "Aspire.Hosting.ApplicationModel/EndpointReference.host",
"qualifiedName": "EndpointReference.host",
- "description": "Gets the Host property",
+ "description": "Gets the host for this endpoint.",
"kind": "PropertyGetter",
"signature": "host(): string",
"parameters": [],
@@ -9347,7 +9565,7 @@
"name": "isAllocated",
"capabilityId": "Aspire.Hosting.ApplicationModel/EndpointReference.isAllocated",
"qualifiedName": "EndpointReference.isAllocated",
- "description": "Gets the IsAllocated property",
+ "description": "Gets a value indicating whether the endpoint is allocated.",
"kind": "PropertyGetter",
"signature": "isAllocated(): boolean",
"parameters": [],
@@ -9361,7 +9579,7 @@
"name": "isHttp",
"capabilityId": "Aspire.Hosting.ApplicationModel/EndpointReference.isHttp",
"qualifiedName": "EndpointReference.isHttp",
- "description": "Gets the IsHttp property",
+ "description": "Gets a value indicating whether the endpoint uses HTTP scheme.",
"kind": "PropertyGetter",
"signature": "isHttp(): boolean",
"parameters": [],
@@ -9375,7 +9593,7 @@
"name": "isHttps",
"capabilityId": "Aspire.Hosting.ApplicationModel/EndpointReference.isHttps",
"qualifiedName": "EndpointReference.isHttps",
- "description": "Gets the IsHttps property",
+ "description": "Gets a value indicating whether the endpoint uses HTTPS scheme.",
"kind": "PropertyGetter",
"signature": "isHttps(): boolean",
"parameters": [],
@@ -9389,7 +9607,7 @@
"name": "isHttpSchemeNamedEndpoint",
"capabilityId": "Aspire.Hosting.ApplicationModel/EndpointReference.isHttpSchemeNamedEndpoint",
"qualifiedName": "EndpointReference.isHttpSchemeNamedEndpoint",
- "description": "Gets the IsHttpSchemeNamedEndpoint property",
+ "description": "Gets a value indicating whether the endpoint name is \"http\" or \"https\", ignoring case. This is a convention used to identify endpoints that will be resolved based on the scheme of the endpoint in service discovery rather than by the specific endpoint name. This is done to allow http endpoints that are dynamically updated to https to be mapped correctly despite the endpoint name no longer matching the scheme.",
"kind": "PropertyGetter",
"signature": "isHttpSchemeNamedEndpoint(): boolean",
"parameters": [],
@@ -9403,7 +9621,7 @@
"name": "port",
"capabilityId": "Aspire.Hosting.ApplicationModel/EndpointReference.port",
"qualifiedName": "EndpointReference.port",
- "description": "Gets the Port property",
+ "description": "Gets the port for this endpoint.",
"kind": "PropertyGetter",
"signature": "port(): number",
"parameters": [],
@@ -9417,13 +9635,15 @@
"name": "property",
"capabilityId": "Aspire.Hosting.ApplicationModel/EndpointReference.property",
"qualifiedName": "EndpointReference.property",
- "description": "Gets the specified property expression of the endpoint",
+ "description": "Gets the specified property expression of the endpoint.",
+ "returns": "An `EndpointReferenceExpression` representing the specified `EndpointProperty`.",
"kind": "InstanceMethod",
"signature": "property(property: EndpointProperty): EndpointReferenceExpression",
"parameters": [
{
"name": "property",
- "type": "EndpointProperty"
+ "type": "EndpointProperty",
+ "description": "The `EndpointProperty` enum value to use in the reference."
}
],
"returnType": "EndpointReferenceExpression",
@@ -9436,7 +9656,7 @@
"name": "resource",
"capabilityId": "Aspire.Hosting.ApplicationModel/EndpointReference.resource",
"qualifiedName": "EndpointReference.resource",
- "description": "Gets the Resource property",
+ "description": "Gets the resource owner of the endpoint reference.",
"kind": "PropertyGetter",
"signature": "resource(): IResourceWithEndpoints",
"parameters": [],
@@ -9450,7 +9670,7 @@
"name": "scheme",
"capabilityId": "Aspire.Hosting.ApplicationModel/EndpointReference.scheme",
"qualifiedName": "EndpointReference.scheme",
- "description": "Gets the Scheme property",
+ "description": "Gets the scheme for this endpoint.",
"kind": "PropertyGetter",
"signature": "scheme(): string",
"parameters": [],
@@ -9460,30 +9680,11 @@
"Aspire.Hosting.ApplicationModel.EndpointReference"
]
},
- {
- "name": "setErrorMessage",
- "capabilityId": "Aspire.Hosting.ApplicationModel/EndpointReference.setErrorMessage",
- "qualifiedName": "EndpointReference.setErrorMessage",
- "description": "Sets the ErrorMessage property",
- "kind": "PropertySetter",
- "signature": "setErrorMessage(value: string): EndpointReference",
- "parameters": [
- {
- "name": "value",
- "type": "string"
- }
- ],
- "returnType": "EndpointReference",
- "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.EndpointReference",
- "expandedTargetTypes": [
- "Aspire.Hosting.ApplicationModel.EndpointReference"
- ]
- },
{
"name": "targetPort",
"capabilityId": "Aspire.Hosting.ApplicationModel/EndpointReference.targetPort",
"qualifiedName": "EndpointReference.targetPort",
- "description": "Gets the TargetPort property",
+ "description": "Gets the target port for this endpoint. If the port is dynamically allocated, this will return `null`.",
"kind": "PropertyGetter",
"signature": "targetPort(): number",
"parameters": [],
@@ -9497,7 +9698,8 @@
"name": "tlsEnabled",
"capabilityId": "Aspire.Hosting.ApplicationModel/EndpointReference.tlsEnabled",
"qualifiedName": "EndpointReference.tlsEnabled",
- "description": "Gets the TlsEnabled property",
+ "description": "Gets a value indicating whether TLS is enabled for this endpoint.",
+ "remarks": "Returns `false` if the endpoint annotation has not been added to the resource yet.\nOnce the annotation exists, this property delegates to `TlsEnabled`.",
"kind": "PropertyGetter",
"signature": "tlsEnabled(): boolean",
"parameters": [],
@@ -9511,7 +9713,7 @@
"name": "url",
"capabilityId": "Aspire.Hosting.ApplicationModel/EndpointReference.url",
"qualifiedName": "EndpointReference.url",
- "description": "Gets the Url property",
+ "description": "Gets the URL for this endpoint.",
"kind": "PropertyGetter",
"signature": "url(): string",
"parameters": [],
@@ -9528,6 +9730,7 @@
"fullName": "Aspire.Hosting.ApplicationModel.EndpointReferenceExpression",
"kind": "handle",
"exposeProperties": true,
+ "description": "Represents a property expression for an endpoint reference.",
"implementedInterfaces": [
"Aspire.Hosting.ApplicationModel.IExpressionValue",
"Aspire.Hosting.ApplicationModel.IManifestExpressionProvider",
@@ -9539,7 +9742,7 @@
"name": "endpoint",
"capabilityId": "Aspire.Hosting.ApplicationModel/EndpointReferenceExpression.endpoint",
"qualifiedName": "EndpointReferenceExpression.endpoint",
- "description": "Gets the Endpoint property",
+ "description": "Gets the `EndpointReference`.",
"kind": "PropertyGetter",
"signature": "endpoint(): EndpointReference",
"parameters": [],
@@ -9553,7 +9756,7 @@
"name": "property",
"capabilityId": "Aspire.Hosting.ApplicationModel/EndpointReferenceExpression.property",
"qualifiedName": "EndpointReferenceExpression.property",
- "description": "Gets the Property property",
+ "description": "Gets the `EndpointProperty` for the property expression.",
"kind": "PropertyGetter",
"signature": "property(): EndpointProperty",
"parameters": [],
@@ -9567,7 +9770,7 @@
"name": "valueExpression",
"capabilityId": "Aspire.Hosting.ApplicationModel/EndpointReferenceExpression.valueExpression",
"qualifiedName": "EndpointReferenceExpression.valueExpression",
- "description": "Gets the ValueExpression property",
+ "description": "Gets the expression of the property of the endpoint.",
"kind": "PropertyGetter",
"signature": "valueExpression(): string",
"parameters": [],
@@ -9584,13 +9787,14 @@
"fullName": "Aspire.Hosting.ApplicationModel.EndpointUpdateContext",
"kind": "handle",
"exposeProperties": true,
+ "description": "Provides a mutable callback context for updating an endpoint in polyglot app hosts.",
"implementedInterfaces": [],
"capabilities": [
{
"name": "excludeReferenceEndpoint",
"capabilityId": "Aspire.Hosting.ApplicationModel/EndpointUpdateContext.excludeReferenceEndpoint",
"qualifiedName": "EndpointUpdateContext.excludeReferenceEndpoint",
- "description": "Gets the ExcludeReferenceEndpoint property",
+ "description": "Gets or sets a value indicating whether the endpoint is excluded from the default reference set.",
"kind": "PropertyGetter",
"signature": "excludeReferenceEndpoint(): boolean",
"parameters": [],
@@ -9604,7 +9808,7 @@
"name": "isExternal",
"capabilityId": "Aspire.Hosting.ApplicationModel/EndpointUpdateContext.isExternal",
"qualifiedName": "EndpointUpdateContext.isExternal",
- "description": "Gets the IsExternal property",
+ "description": "Gets or sets a value indicating whether the endpoint is external.",
"kind": "PropertyGetter",
"signature": "isExternal(): boolean",
"parameters": [],
@@ -9618,7 +9822,7 @@
"name": "isProxied",
"capabilityId": "Aspire.Hosting.ApplicationModel/EndpointUpdateContext.isProxied",
"qualifiedName": "EndpointUpdateContext.isProxied",
- "description": "Gets the IsProxied property",
+ "description": "Gets or sets a value indicating whether the endpoint is proxied.",
"kind": "PropertyGetter",
"signature": "isProxied(): boolean",
"parameters": [],
@@ -9632,7 +9836,7 @@
"name": "name",
"capabilityId": "Aspire.Hosting.ApplicationModel/EndpointUpdateContext.name",
"qualifiedName": "EndpointUpdateContext.name",
- "description": "Gets the Name property",
+ "description": "Gets the endpoint name.",
"kind": "PropertyGetter",
"signature": "name(): string",
"parameters": [],
@@ -9646,7 +9850,7 @@
"name": "port",
"capabilityId": "Aspire.Hosting.ApplicationModel/EndpointUpdateContext.port",
"qualifiedName": "EndpointUpdateContext.port",
- "description": "Gets the Port property",
+ "description": "Gets or sets the desired host port.",
"kind": "PropertyGetter",
"signature": "port(): number",
"parameters": [],
@@ -9660,7 +9864,7 @@
"name": "protocol",
"capabilityId": "Aspire.Hosting.ApplicationModel/EndpointUpdateContext.protocol",
"qualifiedName": "EndpointUpdateContext.protocol",
- "description": "Gets the Protocol property",
+ "description": "Gets or sets the network protocol.",
"kind": "PropertyGetter",
"signature": "protocol(): ProtocolType",
"parameters": [],
@@ -9674,7 +9878,7 @@
"name": "setExcludeReferenceEndpoint",
"capabilityId": "Aspire.Hosting.ApplicationModel/EndpointUpdateContext.setExcludeReferenceEndpoint",
"qualifiedName": "EndpointUpdateContext.setExcludeReferenceEndpoint",
- "description": "Sets the ExcludeReferenceEndpoint property",
+ "description": "Gets or sets a value indicating whether the endpoint is excluded from the default reference set.",
"kind": "PropertySetter",
"signature": "setExcludeReferenceEndpoint(value: boolean): EndpointUpdateContext",
"parameters": [
@@ -9693,7 +9897,7 @@
"name": "setIsExternal",
"capabilityId": "Aspire.Hosting.ApplicationModel/EndpointUpdateContext.setIsExternal",
"qualifiedName": "EndpointUpdateContext.setIsExternal",
- "description": "Sets the IsExternal property",
+ "description": "Gets or sets a value indicating whether the endpoint is external.",
"kind": "PropertySetter",
"signature": "setIsExternal(value: boolean): EndpointUpdateContext",
"parameters": [
@@ -9712,7 +9916,7 @@
"name": "setIsProxied",
"capabilityId": "Aspire.Hosting.ApplicationModel/EndpointUpdateContext.setIsProxied",
"qualifiedName": "EndpointUpdateContext.setIsProxied",
- "description": "Sets the IsProxied property",
+ "description": "Gets or sets a value indicating whether the endpoint is proxied.",
"kind": "PropertySetter",
"signature": "setIsProxied(value: boolean): EndpointUpdateContext",
"parameters": [
@@ -9731,7 +9935,7 @@
"name": "setPort",
"capabilityId": "Aspire.Hosting.ApplicationModel/EndpointUpdateContext.setPort",
"qualifiedName": "EndpointUpdateContext.setPort",
- "description": "Sets the Port property",
+ "description": "Gets or sets the desired host port.",
"kind": "PropertySetter",
"signature": "setPort(value: number): EndpointUpdateContext",
"parameters": [
@@ -9750,7 +9954,7 @@
"name": "setProtocol",
"capabilityId": "Aspire.Hosting.ApplicationModel/EndpointUpdateContext.setProtocol",
"qualifiedName": "EndpointUpdateContext.setProtocol",
- "description": "Sets the Protocol property",
+ "description": "Gets or sets the network protocol.",
"kind": "PropertySetter",
"signature": "setProtocol(value: ProtocolType): EndpointUpdateContext",
"parameters": [
@@ -9769,7 +9973,7 @@
"name": "setTargetHost",
"capabilityId": "Aspire.Hosting.ApplicationModel/EndpointUpdateContext.setTargetHost",
"qualifiedName": "EndpointUpdateContext.setTargetHost",
- "description": "Sets the TargetHost property",
+ "description": "Gets or sets the target host.",
"kind": "PropertySetter",
"signature": "setTargetHost(value: string): EndpointUpdateContext",
"parameters": [
@@ -9788,7 +9992,7 @@
"name": "setTargetPort",
"capabilityId": "Aspire.Hosting.ApplicationModel/EndpointUpdateContext.setTargetPort",
"qualifiedName": "EndpointUpdateContext.setTargetPort",
- "description": "Sets the TargetPort property",
+ "description": "Gets or sets the target port.",
"kind": "PropertySetter",
"signature": "setTargetPort(value: number): EndpointUpdateContext",
"parameters": [
@@ -9807,7 +10011,7 @@
"name": "setTlsEnabled",
"capabilityId": "Aspire.Hosting.ApplicationModel/EndpointUpdateContext.setTlsEnabled",
"qualifiedName": "EndpointUpdateContext.setTlsEnabled",
- "description": "Sets the TlsEnabled property",
+ "description": "Gets or sets a value indicating whether TLS is enabled.",
"kind": "PropertySetter",
"signature": "setTlsEnabled(value: boolean): EndpointUpdateContext",
"parameters": [
@@ -9826,7 +10030,7 @@
"name": "setTransport",
"capabilityId": "Aspire.Hosting.ApplicationModel/EndpointUpdateContext.setTransport",
"qualifiedName": "EndpointUpdateContext.setTransport",
- "description": "Sets the Transport property",
+ "description": "Gets or sets the transport.",
"kind": "PropertySetter",
"signature": "setTransport(value: string): EndpointUpdateContext",
"parameters": [
@@ -9845,7 +10049,7 @@
"name": "setUriScheme",
"capabilityId": "Aspire.Hosting.ApplicationModel/EndpointUpdateContext.setUriScheme",
"qualifiedName": "EndpointUpdateContext.setUriScheme",
- "description": "Sets the UriScheme property",
+ "description": "Gets or sets the URI scheme.",
"kind": "PropertySetter",
"signature": "setUriScheme(value: string): EndpointUpdateContext",
"parameters": [
@@ -9864,7 +10068,7 @@
"name": "targetHost",
"capabilityId": "Aspire.Hosting.ApplicationModel/EndpointUpdateContext.targetHost",
"qualifiedName": "EndpointUpdateContext.targetHost",
- "description": "Gets the TargetHost property",
+ "description": "Gets or sets the target host.",
"kind": "PropertyGetter",
"signature": "targetHost(): string",
"parameters": [],
@@ -9878,7 +10082,7 @@
"name": "targetPort",
"capabilityId": "Aspire.Hosting.ApplicationModel/EndpointUpdateContext.targetPort",
"qualifiedName": "EndpointUpdateContext.targetPort",
- "description": "Gets the TargetPort property",
+ "description": "Gets or sets the target port.",
"kind": "PropertyGetter",
"signature": "targetPort(): number",
"parameters": [],
@@ -9892,7 +10096,7 @@
"name": "tlsEnabled",
"capabilityId": "Aspire.Hosting.ApplicationModel/EndpointUpdateContext.tlsEnabled",
"qualifiedName": "EndpointUpdateContext.tlsEnabled",
- "description": "Gets the TlsEnabled property",
+ "description": "Gets or sets a value indicating whether TLS is enabled.",
"kind": "PropertyGetter",
"signature": "tlsEnabled(): boolean",
"parameters": [],
@@ -9906,7 +10110,7 @@
"name": "transport",
"capabilityId": "Aspire.Hosting.ApplicationModel/EndpointUpdateContext.transport",
"qualifiedName": "EndpointUpdateContext.transport",
- "description": "Gets the Transport property",
+ "description": "Gets or sets the transport.",
"kind": "PropertyGetter",
"signature": "transport(): string",
"parameters": [],
@@ -9920,7 +10124,7 @@
"name": "uriScheme",
"capabilityId": "Aspire.Hosting.ApplicationModel/EndpointUpdateContext.uriScheme",
"qualifiedName": "EndpointUpdateContext.uriScheme",
- "description": "Gets the UriScheme property",
+ "description": "Gets or sets the URI scheme.",
"kind": "PropertyGetter",
"signature": "uriScheme(): string",
"parameters": [],
@@ -9936,13 +10140,14 @@
"name": "EnvironmentCallbackContext",
"fullName": "Aspire.Hosting.ApplicationModel.EnvironmentCallbackContext",
"kind": "handle",
+ "description": "Represents a callback context for environment variables associated with a publisher.",
"implementedInterfaces": [],
"capabilities": [
{
"name": "environment",
"capabilityId": "Aspire.Hosting.ApplicationModel/EnvironmentCallbackContext.environment",
"qualifiedName": "EnvironmentCallbackContext.environment",
- "description": "Gets the environment variable editor",
+ "description": "Gets the editor used to set environment variables in polyglot callbacks.",
"kind": "PropertyGetter",
"signature": "environment(): EnvironmentEditor",
"parameters": [],
@@ -9956,7 +10161,7 @@
"name": "executionContext",
"capabilityId": "Aspire.Hosting.ApplicationModel/EnvironmentCallbackContext.executionContext",
"qualifiedName": "EnvironmentCallbackContext.executionContext",
- "description": "Gets the execution context for this callback invocation",
+ "description": "Gets the execution context associated with this invocation of the AppHost.",
"kind": "PropertyGetter",
"signature": "executionContext(): DistributedApplicationExecutionContext",
"parameters": [],
@@ -9970,7 +10175,7 @@
"name": "log",
"capabilityId": "Aspire.Hosting.ApplicationModel/EnvironmentCallbackContext.log",
"qualifiedName": "EnvironmentCallbackContext.log",
- "description": "Gets the callback logger facade",
+ "description": "Gets the logger facade used by polyglot callbacks.",
"kind": "PropertyGetter",
"signature": "log(): LogFacade",
"parameters": [],
@@ -9984,7 +10189,8 @@
"name": "resource",
"capabilityId": "Aspire.Hosting.ApplicationModel/EnvironmentCallbackContext.resource",
"qualifiedName": "EnvironmentCallbackContext.resource",
- "description": "Gets the resource associated with this callback",
+ "description": "The resource associated with this callback context.",
+ "remarks": "This will be set to the resource in all cases where Aspire invokes the callback.",
"kind": "PropertyGetter",
"signature": "resource(): IResource",
"parameters": [],
@@ -10000,23 +10206,26 @@
"name": "EnvironmentEditor",
"fullName": "Aspire.Hosting.ApplicationModel.EnvironmentEditor",
"kind": "handle",
+ "description": "Provides an ATS-first editor for environment variables within polyglot callbacks.",
"implementedInterfaces": [],
"capabilities": [
{
"name": "set",
"capabilityId": "Aspire.Hosting.ApplicationModel/set",
"qualifiedName": "EnvironmentEditor.set",
- "description": "Sets an environment variable",
+ "description": "Sets an environment variable.",
"kind": "InstanceMethod",
"signature": "set(name: string, value: IExpressionValue): void",
"parameters": [
{
"name": "name",
- "type": "string"
+ "type": "string",
+ "description": "The name of the environment variable."
},
{
"name": "value",
- "type": "IExpressionValue"
+ "type": "IExpressionValue",
+ "description": "The value to assign to the environment variable."
}
],
"returnType": "void",
@@ -10031,6 +10240,8 @@
"name": "ExecutableResource",
"fullName": "Aspire.Hosting.ApplicationModel.ExecutableResource",
"kind": "handle",
+ "description": "A resource that represents a specified executable process.",
+ "remarks": "You can run any executable command using its full path.\nAs a security feature, Aspire doesn't run executable unless the command is located in a path listed in the PATH environment variable.\nTo run an executable file that's in the current directory, specify the full path or use the relative path `./` to represent the current directory.",
"implementedInterfaces": [
"Aspire.Hosting.ApplicationModel.IComputeResource",
"Aspire.Hosting.ApplicationModel.IResource",
@@ -10045,15 +10256,18 @@
"name": "publishAsDockerFile",
"capabilityId": "Aspire.Hosting/publishAsDockerFile",
"qualifiedName": "publishAsDockerFile",
- "description": "Publishes an executable as a Docker file",
+ "description": "Adds support for containerizing this `ExecutableResource` during deployment. The resulting container image is built, and when the optional `configure` action is provided, it is used to configure the container resource.",
+ "remarks": "When the executable resource is converted to a container resource, the arguments to the executable\nare not used. This is because arguments to the executable often contain physical paths that are not valid\nin the container. The container can be set up with the correct arguments using the `configure` action.",
+ "returns": "A reference to the `IResourceBuilder`1`.",
"kind": "Method",
- "signature": "publishAsDockerFile(configure: (obj: ContainerResource) =\u003E Promise\u003Cvoid\u003E): ExecutableResource",
+ "signature": "publishAsDockerFile(configure: (obj: ContainerResource) => Promise): ExecutableResource",
"parameters": [
{
"name": "configure",
"type": "callback",
"isCallback": true,
- "callbackSignature": "(obj: ContainerResource) =\u003E Promise\u003Cvoid\u003E"
+ "callbackSignature": "(obj: ContainerResource) => Promise",
+ "description": "Optional action to configure the container resource"
}
],
"returnType": "ExecutableResource",
@@ -10068,13 +10282,15 @@
"name": "withExecutableCommand",
"capabilityId": "Aspire.Hosting/withExecutableCommand",
"qualifiedName": "withExecutableCommand",
- "description": "Sets the executable command",
+ "description": "Sets the command for the executable resource.",
+ "returns": "The `IResourceBuilder`1`.",
"kind": "Method",
"signature": "withExecutableCommand(command: string): ExecutableResource",
"parameters": [
{
"name": "command",
- "type": "string"
+ "type": "string",
+ "description": "Command."
}
],
"returnType": "ExecutableResource",
@@ -10089,13 +10305,15 @@
"name": "withWorkingDirectory",
"capabilityId": "Aspire.Hosting/withWorkingDirectory",
"qualifiedName": "withWorkingDirectory",
- "description": "Sets the executable working directory",
+ "description": "Sets the working directory for the executable resource.",
+ "returns": "The `IResourceBuilder`1`.",
"kind": "Method",
"signature": "withWorkingDirectory(workingDirectory: string): ExecutableResource",
"parameters": [
{
"name": "workingDirectory",
- "type": "string"
+ "type": "string",
+ "description": "Working directory."
}
],
"returnType": "ExecutableResource",
@@ -10113,13 +10331,14 @@
"fullName": "Aspire.Hosting.ApplicationModel.ExecuteCommandContext",
"kind": "handle",
"exposeProperties": true,
+ "description": "Context for `ExecuteCommand`.",
"implementedInterfaces": [],
"capabilities": [
{
"name": "cancellationToken",
"capabilityId": "Aspire.Hosting.ApplicationModel/ExecuteCommandContext.cancellationToken",
"qualifiedName": "ExecuteCommandContext.cancellationToken",
- "description": "Gets the CancellationToken property",
+ "description": "The cancellation token.",
"kind": "PropertyGetter",
"signature": "cancellationToken(): cancellationToken",
"parameters": [],
@@ -10133,7 +10352,7 @@
"name": "logger",
"capabilityId": "Aspire.Hosting.ApplicationModel/ExecuteCommandContext.logger",
"qualifiedName": "ExecuteCommandContext.logger",
- "description": "Gets the Logger property",
+ "description": "The logger for the resource.",
"kind": "PropertyGetter",
"signature": "logger(): ILogger",
"parameters": [],
@@ -10147,7 +10366,7 @@
"name": "resourceName",
"capabilityId": "Aspire.Hosting.ApplicationModel/ExecuteCommandContext.resourceName",
"qualifiedName": "ExecuteCommandContext.resourceName",
- "description": "Gets the ResourceName property",
+ "description": "The resource name.",
"kind": "PropertyGetter",
"signature": "resourceName(): string",
"parameters": [],
@@ -10161,7 +10380,7 @@
"name": "serviceProvider",
"capabilityId": "Aspire.Hosting.ApplicationModel/ExecuteCommandContext.serviceProvider",
"qualifiedName": "ExecuteCommandContext.serviceProvider",
- "description": "Gets the ServiceProvider property",
+ "description": "The service provider.",
"kind": "PropertyGetter",
"signature": "serviceProvider(): IServiceProvider",
"parameters": [],
@@ -10170,82 +10389,6 @@
"expandedTargetTypes": [
"Aspire.Hosting.ApplicationModel.ExecuteCommandContext"
]
- },
- {
- "name": "setCancellationToken",
- "capabilityId": "Aspire.Hosting.ApplicationModel/ExecuteCommandContext.setCancellationToken",
- "qualifiedName": "ExecuteCommandContext.setCancellationToken",
- "description": "Sets the CancellationToken property",
- "kind": "PropertySetter",
- "signature": "setCancellationToken(value: cancellationToken): ExecuteCommandContext",
- "parameters": [
- {
- "name": "value",
- "type": "cancellationToken"
- }
- ],
- "returnType": "ExecuteCommandContext",
- "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.ExecuteCommandContext",
- "expandedTargetTypes": [
- "Aspire.Hosting.ApplicationModel.ExecuteCommandContext"
- ]
- },
- {
- "name": "setLogger",
- "capabilityId": "Aspire.Hosting.ApplicationModel/ExecuteCommandContext.setLogger",
- "qualifiedName": "ExecuteCommandContext.setLogger",
- "description": "Sets the Logger property",
- "kind": "PropertySetter",
- "signature": "setLogger(value: ILogger): ExecuteCommandContext",
- "parameters": [
- {
- "name": "value",
- "type": "ILogger"
- }
- ],
- "returnType": "ExecuteCommandContext",
- "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.ExecuteCommandContext",
- "expandedTargetTypes": [
- "Aspire.Hosting.ApplicationModel.ExecuteCommandContext"
- ]
- },
- {
- "name": "setResourceName",
- "capabilityId": "Aspire.Hosting.ApplicationModel/ExecuteCommandContext.setResourceName",
- "qualifiedName": "ExecuteCommandContext.setResourceName",
- "description": "Sets the ResourceName property",
- "kind": "PropertySetter",
- "signature": "setResourceName(value: string): ExecuteCommandContext",
- "parameters": [
- {
- "name": "value",
- "type": "string"
- }
- ],
- "returnType": "ExecuteCommandContext",
- "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.ExecuteCommandContext",
- "expandedTargetTypes": [
- "Aspire.Hosting.ApplicationModel.ExecuteCommandContext"
- ]
- },
- {
- "name": "setServiceProvider",
- "capabilityId": "Aspire.Hosting.ApplicationModel/ExecuteCommandContext.setServiceProvider",
- "qualifiedName": "ExecuteCommandContext.setServiceProvider",
- "description": "Sets the ServiceProvider property",
- "kind": "PropertySetter",
- "signature": "setServiceProvider(value: IServiceProvider): ExecuteCommandContext",
- "parameters": [
- {
- "name": "value",
- "type": "IServiceProvider"
- }
- ],
- "returnType": "ExecuteCommandContext",
- "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.ExecuteCommandContext",
- "expandedTargetTypes": [
- "Aspire.Hosting.ApplicationModel.ExecuteCommandContext"
- ]
}
]
},
@@ -10255,23 +10398,28 @@
"kind": "handle",
"isInterface": true,
"exposeProperties": true,
+ "description": "Represents a store for managing files in the Aspire hosting environment that can be reused across runs.",
+ "remarks": "The store is created in the ./obj folder of the Application Host.\nIf the ASPIRE__STORE__PATH environment variable is set this will be used instead.\nThe store is specific to a `IDistributedApplicationBuilder` instance such that each application can't\nconflict with others. A .aspire prefix is also used to ensure that the folder can be deleted without impacting\nunrelated files.",
"implementedInterfaces": [],
"capabilities": [
{
"name": "getFileNameWithContent",
"capabilityId": "Aspire.Hosting/getFileNameWithContent",
"qualifiedName": "getFileNameWithContent",
- "description": "Gets a deterministic file path for the specified file contents",
+ "description": "Gets a deterministic file path that is a copy of the `sourceFilename`. The resulting file name will depend on the content of the file.",
+ "returns": "A deterministic file path with the same content as `sourceFilename`.",
"kind": "Method",
"signature": "getFileNameWithContent(filenameTemplate: string, sourceFilename: string): string",
"parameters": [
{
"name": "filenameTemplate",
- "type": "string"
+ "type": "string",
+ "description": "A file name to base the result on."
},
{
"name": "sourceFilename",
- "type": "string"
+ "type": "string",
+ "description": "An existing file."
}
],
"returnType": "string",
@@ -10287,29 +10435,34 @@
"fullName": "Aspire.Hosting.ApplicationModel.IExecutionConfigurationBuilder",
"kind": "handle",
"isInterface": true,
+ "description": "Builder for gathering and resolving the execution configuration (arguments and environment variables) for a specific resource.",
"implementedInterfaces": [],
"capabilities": [
{
"name": "build",
"capabilityId": "Aspire.Hosting/buildExecutionConfiguration",
"qualifiedName": "build",
- "description": "Builds the execution configuration",
+ "description": "Builds the execution configuration for the specified builder.",
+ "returns": "The resolved execution configuration.",
"kind": "Method",
"signature": "build(executionContext: DistributedApplicationExecutionContext, resourceLogger?: ILogger, cancellationToken?: cancellationToken): IExecutionConfigurationResult",
"parameters": [
{
"name": "executionContext",
- "type": "DistributedApplicationExecutionContext"
+ "type": "DistributedApplicationExecutionContext",
+ "description": "The execution context used while building the configuration."
},
{
"name": "resourceLogger",
"type": "ILogger",
- "isOptional": true
+ "isOptional": true,
+ "description": "The logger used while resolving values."
},
{
"name": "cancellationToken",
"type": "cancellationToken",
- "isOptional": true
+ "isOptional": true,
+ "description": "A cancellation token."
}
],
"returnType": "IExecutionConfigurationResult",
@@ -10322,7 +10475,8 @@
"name": "withArgumentsConfig",
"capabilityId": "Aspire.Hosting/withArgumentsConfig",
"qualifiedName": "withArgumentsConfig",
- "description": "Adds an arguments configuration gatherer",
+ "description": "Adds a command line arguments configuration gatherer to the builder.",
+ "returns": "The builder with the configuration gatherer added.",
"kind": "Method",
"signature": "withArgumentsConfig(): IExecutionConfigurationBuilder",
"parameters": [],
@@ -10336,15 +10490,17 @@
"name": "withCertificateTrustConfig",
"capabilityId": "Aspire.Hosting/withCertificateTrustConfig",
"qualifiedName": "withCertificateTrustConfig",
- "description": "Adds a certificate trust configuration gatherer",
+ "description": "Adds a certificate trust configuration gatherer to the builder.",
+ "returns": "The builder with the configuration gatherer added.",
"kind": "Method",
- "signature": "withCertificateTrustConfig(configContextFactory: (arg: CertificateTrustScope) =\u003E Promise\u003CCertificateTrustExecutionConfigurationContext\u003E): IExecutionConfigurationBuilder",
+ "signature": "withCertificateTrustConfig(configContextFactory: (arg: CertificateTrustScope) => Promise): IExecutionConfigurationBuilder",
"parameters": [
{
"name": "configContextFactory",
"type": "callback",
"isCallback": true,
- "callbackSignature": "(arg: CertificateTrustScope) =\u003E Promise\u003CCertificateTrustExecutionConfigurationContext\u003E"
+ "callbackSignature": "(arg: CertificateTrustScope) => Promise",
+ "description": "A factory function to create the configuration context."
}
],
"returnType": "IExecutionConfigurationBuilder",
@@ -10357,7 +10513,8 @@
"name": "withEnvironmentVariablesConfig",
"capabilityId": "Aspire.Hosting/withEnvironmentVariablesConfig",
"qualifiedName": "withEnvironmentVariablesConfig",
- "description": "Adds an environment variables configuration gatherer",
+ "description": "Adds an environment variables configuration gatherer to the builder.",
+ "returns": "The builder with the configuration gatherer added.",
"kind": "Method",
"signature": "withEnvironmentVariablesConfig(): IExecutionConfigurationBuilder",
"parameters": [],
@@ -10371,15 +10528,17 @@
"name": "withHttpsCertificateConfig",
"capabilityId": "Aspire.Hosting/withHttpsCertificateConfigExport",
"qualifiedName": "withHttpsCertificateConfig",
- "description": "Adds an HTTPS certificate configuration gatherer",
+ "description": "Adds an HTTPS certificate configuration gatherer using certificate metadata instead of a raw X509 certificate.",
+ "returns": "The execution configuration builder.",
"kind": "Method",
- "signature": "withHttpsCertificateConfig(configContextFactory: (arg: HttpsCertificateInfo) =\u003E Promise\u003CHttpsCertificateExecutionConfigurationContext\u003E): IExecutionConfigurationBuilder",
+ "signature": "withHttpsCertificateConfig(configContextFactory: (arg: HttpsCertificateInfo) => Promise): IExecutionConfigurationBuilder",
"parameters": [
{
"name": "configContextFactory",
"type": "callback",
"isCallback": true,
- "callbackSignature": "(arg: HttpsCertificateInfo) =\u003E Promise\u003CHttpsCertificateExecutionConfigurationContext\u003E"
+ "callbackSignature": "(arg: HttpsCertificateInfo) => Promise",
+ "description": "The factory that creates the HTTPS certificate configuration context."
}
],
"returnType": "IExecutionConfigurationBuilder",
@@ -10395,13 +10554,15 @@
"fullName": "Aspire.Hosting.ApplicationModel.IExecutionConfigurationResult",
"kind": "handle",
"isInterface": true,
+ "description": "Configuration (arguments and environment variables) to apply to a specific resource.",
"implementedInterfaces": [],
"capabilities": [
{
"name": "getCertificateTrustData",
"capabilityId": "Aspire.Hosting/getCertificateTrustData",
"qualifiedName": "getCertificateTrustData",
- "description": "Gets certificate trust execution-configuration data",
+ "description": "Gets certificate trust execution-configuration data when present.",
+ "returns": "The certificate trust data. When no additional data is present, an empty DTO is returned.",
"kind": "Method",
"signature": "getCertificateTrustData(): CertificateTrustExecutionConfigurationExportData",
"parameters": [],
@@ -10415,7 +10576,8 @@
"name": "getHttpsCertificateData",
"capabilityId": "Aspire.Hosting/getHttpsCertificateData",
"qualifiedName": "getHttpsCertificateData",
- "description": "Gets HTTPS certificate execution-configuration data",
+ "description": "Gets HTTPS certificate execution-configuration data when present.",
+ "returns": "The HTTPS certificate data. When no additional data is present, an empty DTO is returned.",
"kind": "Method",
"signature": "getHttpsCertificateData(): HttpsCertificateExecutionConfigurationExportData",
"parameters": [],
@@ -10432,6 +10594,8 @@
"fullName": "Aspire.Hosting.ApplicationModel.IExpressionValue",
"kind": "handle",
"isInterface": true,
+ "description": "Represents a value that provides both a runtime value and a manifest expression.",
+ "remarks": "Expression values can be used anywhere both a runtime value and a publish-time\nmanifest expression are needed.",
"implementedInterfaces": [],
"capabilities": []
},
@@ -10440,6 +10604,8 @@
"fullName": "Aspire.Hosting.ApplicationModel.InitializeResourceEvent",
"kind": "handle",
"exposeProperties": true,
+ "description": "This event is raised by orchestrators to signal to resources that they should initialize themselves.",
+ "remarks": "Custom resources can subscribe to this event to perform initialization tasks, including starting background tasks\nthat manage the resource's lifecycle.",
"implementedInterfaces": [
"Aspire.Hosting.Eventing.IDistributedApplicationEvent",
"Aspire.Hosting.Eventing.IDistributedApplicationResourceEvent"
@@ -10449,7 +10615,7 @@
"name": "eventing",
"capabilityId": "Aspire.Hosting.ApplicationModel/InitializeResourceEvent.eventing",
"qualifiedName": "InitializeResourceEvent.eventing",
- "description": "Gets the Eventing property",
+ "description": "The `IDistributedApplicationEventing` service for the app host.",
"kind": "PropertyGetter",
"signature": "eventing(): IDistributedApplicationEventing",
"parameters": [],
@@ -10463,7 +10629,7 @@
"name": "logger",
"capabilityId": "Aspire.Hosting.ApplicationModel/InitializeResourceEvent.logger",
"qualifiedName": "InitializeResourceEvent.logger",
- "description": "Gets the Logger property",
+ "description": "An instance of `ILogger` that can be used to log messages for the resource.",
"kind": "PropertyGetter",
"signature": "logger(): ILogger",
"parameters": [],
@@ -10477,7 +10643,7 @@
"name": "notifications",
"capabilityId": "Aspire.Hosting.ApplicationModel/InitializeResourceEvent.notifications",
"qualifiedName": "InitializeResourceEvent.notifications",
- "description": "Gets the Notifications property",
+ "description": "The `ResourceNotificationService` for the app host.",
"kind": "PropertyGetter",
"signature": "notifications(): ResourceNotificationService",
"parameters": [],
@@ -10505,7 +10671,7 @@
"name": "services",
"capabilityId": "Aspire.Hosting.ApplicationModel/InitializeResourceEvent.services",
"qualifiedName": "InitializeResourceEvent.services",
- "description": "Gets the Services property",
+ "description": "The `IServiceProvider` for the app host.",
"kind": "PropertyGetter",
"signature": "services(): IServiceProvider",
"parameters": [],
@@ -10522,13 +10688,15 @@
"fullName": "Aspire.Hosting.ApplicationModel.IResource",
"kind": "handle",
"isInterface": true,
+ "description": "Represents a resource that can be hosted by an application.",
"implementedInterfaces": [],
"capabilities": [
{
"name": "createExecutionConfiguration",
"capabilityId": "Aspire.Hosting/createExecutionConfiguration",
"qualifiedName": "createExecutionConfiguration",
- "description": "Creates an execution configuration builder",
+ "description": "Creates an execution configuration builder for the specified resource.",
+ "returns": "The execution configuration builder.",
"kind": "Method",
"signature": "createExecutionConfiguration(): IExecutionConfigurationBuilder",
"parameters": [],
@@ -10549,7 +10717,8 @@
"name": "excludeFromManifest",
"capabilityId": "Aspire.Hosting/excludeFromManifest",
"qualifiedName": "excludeFromManifest",
- "description": "Excludes the resource from the deployment manifest",
+ "description": "Excludes a resource from being published to the manifest.",
+ "returns": "The `IResourceBuilder`1`.",
"kind": "Method",
"signature": "excludeFromManifest(): IResource",
"parameters": [],
@@ -10571,7 +10740,8 @@
"name": "excludeFromMcp",
"capabilityId": "Aspire.Hosting/excludeFromMcp",
"qualifiedName": "excludeFromMcp",
- "description": "Excludes the resource from MCP server exposure",
+ "description": "Exclude the resource from MCP operations using the Aspire MCP server. The resource is excluded from results that return resources, console logs and telemetry.",
+ "returns": "The `IResourceBuilder`1`.",
"kind": "Method",
"signature": "excludeFromMcp(): IResource",
"parameters": [],
@@ -10593,7 +10763,9 @@
"name": "getResourceName",
"capabilityId": "Aspire.Hosting/getResourceName",
"qualifiedName": "getResourceName",
- "description": "Gets the resource name",
+ "description": "Gets the name of the resource from a builder.",
+ "remarks": "Why this wrapper exists: This capability accesses a nested property\n(`resource.Resource.Name`) which requires a wrapper method. There is no single\n.NET method that returns just the resource name that could be annotated directly.",
+ "returns": "The resource name.",
"kind": "Method",
"signature": "getResourceName(): string",
"parameters": [],
@@ -10614,15 +10786,17 @@
"name": "onBeforeResourceStarted",
"capabilityId": "Aspire.Hosting/onBeforeResourceStarted",
"qualifiedName": "onBeforeResourceStarted",
- "description": "Subscribes to the BeforeResourceStarted event",
+ "description": "Subscribes to the BeforeResourceStarted event.",
+ "returns": "The resource builder.",
"kind": "Method",
- "signature": "onBeforeResourceStarted(callback: (arg: BeforeResourceStartedEvent) =\u003E Promise\u003Cvoid\u003E): IResource",
+ "signature": "onBeforeResourceStarted(callback: (arg: BeforeResourceStartedEvent) => Promise): IResource",
"parameters": [
{
"name": "callback",
"type": "callback",
"isCallback": true,
- "callbackSignature": "(arg: BeforeResourceStartedEvent) =\u003E Promise\u003Cvoid\u003E"
+ "callbackSignature": "(arg: BeforeResourceStartedEvent) => Promise",
+ "description": "The callback to invoke when the event fires."
}
],
"returnType": "IResource",
@@ -10643,15 +10817,17 @@
"name": "onInitializeResource",
"capabilityId": "Aspire.Hosting/onInitializeResource",
"qualifiedName": "onInitializeResource",
- "description": "Subscribes to the InitializeResource event",
+ "description": "Subscribes to the InitializeResource event.",
+ "returns": "The resource builder.",
"kind": "Method",
- "signature": "onInitializeResource(callback: (arg: InitializeResourceEvent) =\u003E Promise\u003Cvoid\u003E): IResource",
+ "signature": "onInitializeResource(callback: (arg: InitializeResourceEvent) => Promise): IResource",
"parameters": [
{
"name": "callback",
"type": "callback",
"isCallback": true,
- "callbackSignature": "(arg: InitializeResourceEvent) =\u003E Promise\u003Cvoid\u003E"
+ "callbackSignature": "(arg: InitializeResourceEvent) => Promise",
+ "description": "The callback to invoke when the event fires."
}
],
"returnType": "IResource",
@@ -10672,15 +10848,17 @@
"name": "onResourceReady",
"capabilityId": "Aspire.Hosting/onResourceReady",
"qualifiedName": "onResourceReady",
- "description": "Subscribes to the ResourceReady event",
+ "description": "Subscribes to the ResourceReady event.",
+ "returns": "The resource builder.",
"kind": "Method",
- "signature": "onResourceReady(callback: (arg: ResourceReadyEvent) =\u003E Promise\u003Cvoid\u003E): IResource",
+ "signature": "onResourceReady(callback: (arg: ResourceReadyEvent) => Promise): IResource",
"parameters": [
{
"name": "callback",
"type": "callback",
"isCallback": true,
- "callbackSignature": "(arg: ResourceReadyEvent) =\u003E Promise\u003Cvoid\u003E"
+ "callbackSignature": "(arg: ResourceReadyEvent) => Promise",
+ "description": "The callback to invoke when the event fires."
}
],
"returnType": "IResource",
@@ -10701,15 +10879,17 @@
"name": "onResourceStopped",
"capabilityId": "Aspire.Hosting/onResourceStopped",
"qualifiedName": "onResourceStopped",
- "description": "Subscribes to the ResourceStopped event",
+ "description": "Subscribes to the ResourceStopped event.",
+ "returns": "The resource builder.",
"kind": "Method",
- "signature": "onResourceStopped(callback: (arg: ResourceStoppedEvent) =\u003E Promise\u003Cvoid\u003E): IResource",
+ "signature": "onResourceStopped(callback: (arg: ResourceStoppedEvent) => Promise): IResource",
"parameters": [
{
"name": "callback",
"type": "callback",
"isCallback": true,
- "callbackSignature": "(arg: ResourceStoppedEvent) =\u003E Promise\u003Cvoid\u003E"
+ "callbackSignature": "(arg: ResourceStoppedEvent) => Promise",
+ "description": "The callback to invoke when the event fires."
}
],
"returnType": "IResource",
@@ -10730,13 +10910,16 @@
"name": "withChildRelationship",
"capabilityId": "Aspire.Hosting/withBuilderChildRelationship",
"qualifiedName": "withChildRelationship",
- "description": "Sets a child relationship",
+ "description": "Adds a `ResourceRelationshipAnnotation` to the resource annotations to add a parent-child relationship.",
+ "remarks": "The `WithChildRelationship` method is used to add child relationships to the resource. Relationships are used to link\nresources together in UI.\nThis example shows adding a relationship between two resources.\n```\nvar builder = DistributedApplication.CreateBuilder(args);\nvar parameter = builder.AddParameter(\"parameter\");\nvar backend = builder.AddProject(\"backend\");\n.WithChildRelationship(parameter);\n```",
+ "returns": "A resource builder.",
"kind": "Method",
"signature": "withChildRelationship(child: IResource): IResource",
"parameters": [
{
"name": "child",
- "type": "IResource"
+ "type": "IResource",
+ "description": "The child of `builder`."
}
],
"returnType": "IResource",
@@ -10757,28 +10940,34 @@
"name": "withCommand",
"capabilityId": "Aspire.Hosting/withCommand",
"qualifiedName": "withCommand",
- "description": "Adds a resource command",
+ "description": "Adds a `ResourceCommandAnnotation` to the resource annotations to add a resource command.",
+ "remarks": "The `WithCommand` method is used to add commands to the resource. Commands are displayed in the dashboard\nand can be executed by a user using the dashboard UI.\nWhen a command is executed, the `executeCommand` callback is called and is run inside the Aspire host.",
+ "returns": "The `IResourceBuilder`1`.",
"kind": "Method",
- "signature": "withCommand(name: string, displayName: string, executeCommand: (arg: ExecuteCommandContext) =\u003E Promise\u003CExecuteCommandResult\u003E, commandOptions?: CommandOptions): IResource",
+ "signature": "withCommand(name: string, displayName: string, executeCommand: (arg: ExecuteCommandContext) => Promise, commandOptions?: CommandOptions): IResource",
"parameters": [
{
"name": "name",
- "type": "string"
+ "type": "string",
+ "description": "The name of the command. The name uniquely identifies the command."
},
{
"name": "displayName",
- "type": "string"
+ "type": "string",
+ "description": "The display name visible in UI."
},
{
"name": "executeCommand",
"type": "callback",
"isCallback": true,
- "callbackSignature": "(arg: ExecuteCommandContext) =\u003E Promise\u003CExecuteCommandResult\u003E"
+ "callbackSignature": "(arg: ExecuteCommandContext) => Promise",
+ "description": "A callback that is executed when the command is executed. The callback is run inside the Aspire host. The callback result is used to indicate success or failure in the UI."
},
{
"name": "commandOptions",
"type": "CommandOptions",
- "isOptional": true
+ "isOptional": true,
+ "description": "Optional configuration for the command."
}
],
"returnType": "IResource",
@@ -10799,13 +10988,16 @@
"name": "withContainerRegistry",
"capabilityId": "Aspire.Hosting/withContainerRegistry",
"qualifiedName": "withContainerRegistry",
- "description": "Configures a resource to use a container registry",
+ "description": "Configures the resource to use the specified container registry for container image operations.",
+ "remarks": "This method adds a `ContainerRegistryReferenceAnnotation` to the resource,\nindicating that the resource should use the specified container registry for container image operations.",
+ "returns": "The resource builder for chaining.",
"kind": "Method",
"signature": "withContainerRegistry(registry: IResource): IResource",
"parameters": [
{
"name": "registry",
- "type": "IResource"
+ "type": "IResource",
+ "description": "The container registry resource builder."
}
],
"returnType": "IResource",
@@ -10826,19 +11018,23 @@
"name": "withDockerfileBaseImage",
"capabilityId": "Aspire.Hosting/withDockerfileBaseImage",
"qualifiedName": "withDockerfileBaseImage",
- "description": "Sets the base image for a Dockerfile build",
+ "description": "Configures custom base images for generated Dockerfiles.",
+ "remarks": "This extension method allows customization of the base images used in generated Dockerfiles.\nFor multi-stage Dockerfiles (e.g., Python with UV), you can specify separate build and runtime images.\nSpecify custom base images for a Python application:\n```\nvar builder = DistributedApplication.CreateBuilder(args);\nbuilder.AddPythonApp(\"myapp\", \"path/to/app\", \"main.py\")\n.WithDockerfileBaseImage(\nbuildImage: \"ghcr.io/astral-sh/uv:python3.12-bookworm-slim\",\nruntimeImage: \"python:3.12-slim-bookworm\");\nbuilder.Build().Run();\n```",
+ "returns": "The `IResourceBuilder`1`.",
"kind": "Method",
"signature": "withDockerfileBaseImage(buildImage?: string, runtimeImage?: string): IResource",
"parameters": [
{
"name": "buildImage",
"type": "string",
- "isOptional": true
+ "isOptional": true,
+ "description": "The base image to use for the build stage. If null, uses the default build image."
},
{
"name": "runtimeImage",
"type": "string",
- "isOptional": true
+ "isOptional": true,
+ "description": "The base image to use for the runtime stage. If null, uses the default runtime image."
}
],
"returnType": "IResource",
@@ -10859,7 +11055,9 @@
"name": "withExplicitStart",
"capabilityId": "Aspire.Hosting/withExplicitStart",
"qualifiedName": "withExplicitStart",
- "description": "Prevents resource from starting automatically",
+ "description": "Adds a `ExplicitStartupAnnotation` annotation to the resource so it doesn't automatically start with the app host startup.",
+ "remarks": "This method is useful when a resource shouldn't automatically start when the app host starts.\nThe database clean up tool project isn't started with the app host.\nThe resource start command can be used to run it ondemand later.\n```\nvar builder = DistributedApplication.CreateBuilder(args);\nvar pgsql = builder.AddPostgres(\"postgres\");\nbuilder.AddProject(\"dbcleanuptool\")\n.WithReference(pgsql)\n.WithExplicitStart();\n```",
+ "returns": "The `IResourceBuilder`1`.",
"kind": "Method",
"signature": "withExplicitStart(): IResource",
"parameters": [],
@@ -10881,13 +11079,16 @@
"name": "withHealthCheck",
"capabilityId": "Aspire.Hosting/withHealthCheck",
"qualifiedName": "withHealthCheck",
- "description": "Adds a health check by key",
+ "description": "Adds a `HealthCheckAnnotation` to the resource annotations to associate a resource with a named health check managed by the health check service.",
+ "remarks": "The `WithHealthCheck``1` method is used in conjunction with\nthe `WaitFor``1` to associate a resource\nregistered in the application hosts dependency injection container. The `WithHealthCheck``1`\nmethod does not inject the health check itself it is purely an association mechanism.\nDefine a custom health check and associate it with a resource.\n```\nvar builder = DistributedApplication.CreateBuilder(args);\nvar startAfter = DateTime.Now.AddSeconds(30);\nbuilder.Services.AddHealthChecks().AddCheck(mycheck\", () =>\n{\nreturn DateTime.Now > startAfter ? HealthCheckResult.Healthy() : HealthCheckResult.Unhealthy();\n});\nvar pg = builder.AddPostgres(\"pg\")\n.WithHealthCheck(\"mycheck\");\nbuilder.AddProject(\"myapp\")\n.WithReference(pg)\n.WaitFor(pg); // This will result in waiting for the building check, and the\n// custom check defined in the code.\n```",
+ "returns": "The `IResourceBuilder`1`.",
"kind": "Method",
"signature": "withHealthCheck(key: string): IResource",
"parameters": [
{
"name": "key",
- "type": "string"
+ "type": "string",
+ "description": "The key for the health check."
}
],
"returnType": "IResource",
@@ -10908,19 +11109,23 @@
"name": "withIconName",
"capabilityId": "Aspire.Hosting/withIconName",
"qualifiedName": "withIconName",
- "description": "Sets the icon for the resource",
+ "description": "Specifies the icon to use when displaying the resource in the dashboard.",
+ "remarks": "This method allows you to specify a custom FluentUI icon that will be displayed for the resource in the dashboard.\nIf no custom icon is specified, the dashboard will use default icons based on the resource type.\nSet a Redis resource to use the Database icon:\n```\nvar redis = builder.AddContainer(\"redis\", \"redis:latest\")\n.WithIconName(\"Database\");\n```\nSet a custom service to use a specific icon with Regular variant:\n```\nvar service = builder.AddProject(\"service\")\n.WithIconName(\"CloudArrowUp\", IconVariant.Regular);\n```",
+ "returns": "The `IResourceBuilder`1`.",
"kind": "Method",
"signature": "withIconName(iconName: string, iconVariant?: IconVariant): IResource",
"parameters": [
{
"name": "iconName",
- "type": "string"
+ "type": "string",
+ "description": "The name of the FluentUI icon to use. See https://aka.ms/fluentui-system-icons for available icons."
},
{
"name": "iconVariant",
"type": "IconVariant",
"isOptional": true,
- "defaultValue": "Filled"
+ "defaultValue": "Filled",
+ "description": "The variant of the icon (Regular or Filled). Defaults to Filled."
}
],
"returnType": "IResource",
@@ -10941,13 +11146,16 @@
"name": "withParentRelationship",
"capabilityId": "Aspire.Hosting/withBuilderParentRelationship",
"qualifiedName": "withParentRelationship",
- "description": "Sets the parent relationship",
+ "description": "Adds a `ResourceRelationshipAnnotation` to the resource annotations to add a parent-child relationship.",
+ "remarks": "The `WithParentRelationship` method is used to add parent relationships to the resource. Relationships are used to link\nresources together in UI.\nThis example shows adding a relationship between two resources.\n```\nvar builder = DistributedApplication.CreateBuilder(args);\nvar backend = builder.AddProject(\"backend\");\nvar frontend = builder.AddProject(\"frontend\")\n.WithParentRelationship(backend);\n```",
+ "returns": "A resource builder.",
"kind": "Method",
"signature": "withParentRelationship(parent: IResource): IResource",
"parameters": [
{
"name": "parent",
- "type": "IResource"
+ "type": "IResource",
+ "description": "The parent of `builder`."
}
],
"returnType": "IResource",
@@ -10968,15 +11176,17 @@
"name": "withPipelineConfiguration",
"capabilityId": "Aspire.Hosting/withPipelineConfiguration",
"qualifiedName": "withPipelineConfiguration",
- "description": "Configures pipeline step dependencies via a callback",
+ "description": "Registers a callback to be executed during the pipeline configuration phase, allowing modification of step dependencies and relationships.",
+ "returns": "The resource builder for chaining.",
"kind": "Method",
- "signature": "withPipelineConfiguration(callback: (obj: PipelineConfigurationContext) =\u003E Promise\u003Cvoid\u003E): IResource",
+ "signature": "withPipelineConfiguration(callback: (obj: PipelineConfigurationContext) => Promise): IResource",
"parameters": [
{
"name": "callback",
"type": "callback",
"isCallback": true,
- "callbackSignature": "(obj: PipelineConfigurationContext) =\u003E Promise\u003Cvoid\u003E"
+ "callbackSignature": "(obj: PipelineConfigurationContext) => Promise",
+ "description": "The callback function to execute during the configuration phase."
}
],
"returnType": "IResource",
@@ -10997,39 +11207,46 @@
"name": "withPipelineStepFactory",
"capabilityId": "Aspire.Hosting/withPipelineStepFactory",
"qualifiedName": "withPipelineStepFactory",
- "description": "Adds a pipeline step to the resource",
+ "description": "Adds a pipeline step to the resource that will be executed during deployment.",
+ "returns": "The resource builder for chaining.",
"kind": "Method",
- "signature": "withPipelineStepFactory(stepName: string, callback: (arg: PipelineStepContext) =\u003E Promise\u003Cvoid\u003E, dependsOn?: string[], requiredBy?: string[], tags?: string[], description?: string): IResource",
+ "signature": "withPipelineStepFactory(stepName: string, callback: (arg: PipelineStepContext) => Promise, dependsOn?: string[], requiredBy?: string[], tags?: string[], description?: string): IResource",
"parameters": [
{
"name": "stepName",
- "type": "string"
+ "type": "string",
+ "description": "The unique name of the pipeline step."
},
{
"name": "callback",
"type": "callback",
"isCallback": true,
- "callbackSignature": "(arg: PipelineStepContext) =\u003E Promise\u003Cvoid\u003E"
+ "callbackSignature": "(arg: PipelineStepContext) => Promise",
+ "description": "The callback to execute when the step runs."
},
{
"name": "dependsOn",
"type": "string[]",
- "isOptional": true
+ "isOptional": true,
+ "description": "Optional step names that this step depends on."
},
{
"name": "requiredBy",
"type": "string[]",
- "isOptional": true
+ "isOptional": true,
+ "description": "Optional step names that require this step."
},
{
"name": "tags",
"type": "string[]",
- "isOptional": true
+ "isOptional": true,
+ "description": "Optional tags that categorize this step."
},
{
"name": "description",
"type": "string",
- "isOptional": true
+ "isOptional": true,
+ "description": "An optional human-readable description of the step."
}
],
"returnType": "IResource",
@@ -11050,17 +11267,20 @@
"name": "withRelationship",
"capabilityId": "Aspire.Hosting/withBuilderRelationship",
"qualifiedName": "withRelationship",
- "description": "Adds a relationship to another resource",
+ "description": "Adds a relationship to another resource using its builder.",
+ "returns": "A resource builder.",
"kind": "Method",
"signature": "withRelationship(resourceBuilder: IResource, type: string): IResource",
"parameters": [
{
"name": "resourceBuilder",
- "type": "IResource"
+ "type": "IResource",
+ "description": "The resource builder that the relationship is to."
},
{
"name": "type",
- "type": "string"
+ "type": "string",
+ "description": "The relationship type."
}
],
"returnType": "IResource",
@@ -11081,18 +11301,22 @@
"name": "withRequiredCommand",
"capabilityId": "Aspire.Hosting/withRequiredCommand",
"qualifiedName": "withRequiredCommand",
- "description": "Adds a required command dependency",
+ "description": "Declares that a resource requires a specific command/executable to be available on the local machine PATH before it can start.",
+ "remarks": "The command is considered valid if either:\n1. It is an absolute or relative path (contains a directory separator) that points to an existing file, or\n2. It is discoverable on the current process PATH (respecting PATHEXT on Windows).\nIf the command is not found, a warning message will be logged but the resource will be allowed to attempt to start.",
+ "returns": "The resource builder.",
"kind": "Method",
"signature": "withRequiredCommand(command: string, helpLink?: string): IResource",
"parameters": [
{
"name": "command",
- "type": "string"
+ "type": "string",
+ "description": "The command string (file name or path) that should be validated."
},
{
"name": "helpLink",
"type": "string",
- "isOptional": true
+ "isOptional": true,
+ "description": "An optional help link URL to guide users when the command is missing."
}
],
"returnType": "IResource",
@@ -11145,19 +11369,23 @@
"name": "withUrlForEndpoint",
"capabilityId": "Aspire.Hosting/withUrlForEndpoint",
"qualifiedName": "withUrlForEndpoint",
- "description": "Customizes the URL for a specific endpoint via callback",
+ "description": "Registers a callback to update the URL displayed for the endpoint with the specified name.",
+ "remarks": "Use this method to customize the URL that is automatically added for an endpoint on the resource.\nTo add another URL for an endpoint, use `WithUrlForEndpoint``1`.\nThe callback will be executed after endpoints have been allocated and the URL has been generated.\nThis allows you to modify the URL or its display text.\nIf the URL returned by `callback` is relative, it will be combined with the endpoint URL to create an absolute URL.\nIf the endpoint with the specified name does not exist, the callback will not be executed and a warning will be logged.\nCustomize the URL for the \"https\" endpoint to use the link text \"Home\":\n```\nvar frontend = builder.AddProject(\"frontend\")\n.WithUrlForEndpoint(\"https\", url => url.DisplayText = \"Home\");\n```\nCustomize the URL for the \"https\" endpoint to deep to the \"/home\" path:\n```\nvar frontend = builder.AddProject(\"frontend\")\n.WithUrlForEndpoint(\"https\", url => url.Url = \"/home\");\n```",
+ "returns": "The `IResourceBuilder`1`.",
"kind": "Method",
- "signature": "withUrlForEndpoint(endpointName: string, callback: (obj: ResourceUrlAnnotation) =\u003E Promise\u003Cvoid\u003E): IResource",
+ "signature": "withUrlForEndpoint(endpointName: string, callback: (obj: ResourceUrlAnnotation) => Promise): IResource",
"parameters": [
{
"name": "endpointName",
- "type": "string"
+ "type": "string",
+ "description": "The name of the endpoint to customize the URL for."
},
{
"name": "callback",
"type": "callback",
"isCallback": true,
- "callbackSignature": "(obj: ResourceUrlAnnotation) =\u003E Promise\u003Cvoid\u003E"
+ "callbackSignature": "(obj: ResourceUrlAnnotation) => Promise",
+ "description": "The callback that will customize the URL."
}
],
"returnType": "IResource",
@@ -11178,15 +11406,18 @@
"name": "withUrls",
"capabilityId": "Aspire.Hosting/withUrls",
"qualifiedName": "withUrls",
- "description": "Customizes displayed URLs via callback",
+ "description": "Registers a callback to customize the URLs displayed for the resource.",
+ "remarks": "The callback will be executed after endpoints have been allocated for this resource.\nThis allows you to modify any URLs for the resource, including adding, modifying, or even deletion.\nNote that any endpoints on the resource will automatically get a corresponding URL added for them.\nUpdate all displayed URLs to have display text:\n```\nvar frontend = builder.AddProject(\"frontend\")\n.WithUrls(c =>\n{\nforeach (var url in c.Urls)\n{\nif (string.IsNullOrEmpty(url.DisplayText))\n{\nurl.DisplayText = \"frontend\";\n}\n}\n});\n```\nUpdate endpoint URLs to use a custom host name based on the resource name:\n```\nvar frontend = builder.AddProject(\"frontend\")\n.WithUrls(c =>\n{\nforeach (var url in c.Urls)\n{\nif (url.Endpoint is not null)\n{\nvar uri = new UriBuilder(url.Url) { Host = $\"{c.Resource.Name}.localhost\" };\nurl.Url = uri.ToString();\n}\n}\n});\n```",
+ "returns": "The `IResourceBuilder`1`.",
"kind": "Method",
- "signature": "withUrls(callback: (obj: ResourceUrlsCallbackContext) =\u003E Promise\u003Cvoid\u003E): IResource",
+ "signature": "withUrls(callback: (obj: ResourceUrlsCallbackContext) => Promise): IResource",
"parameters": [
{
"name": "callback",
"type": "callback",
"isCallback": true,
- "callbackSignature": "(obj: ResourceUrlsCallbackContext) =\u003E Promise\u003Cvoid\u003E"
+ "callbackSignature": "(obj: ResourceUrlsCallbackContext) => Promise",
+ "description": "The callback that will customize URLs for the resource."
}
],
"returnType": "IResource",
@@ -11210,19 +11441,22 @@
"fullName": "Aspire.Hosting.ApplicationModel.IResourceWithArgs",
"kind": "handle",
"isInterface": true,
+ "description": "Represents a resource that is associated with commandline arguments.",
"implementedInterfaces": [],
"capabilities": [
{
"name": "withArgs",
"capabilityId": "Aspire.Hosting/withArgs",
"qualifiedName": "withArgs",
- "description": "Adds arguments",
+ "description": "Adds arguments to be passed to a resource that supports arguments when it is launched.",
+ "returns": "The `IResourceBuilder`1`.",
"kind": "Method",
"signature": "withArgs(args: string[]): IResourceWithArgs",
"parameters": [
{
"name": "args",
- "type": "string[]"
+ "type": "string[]",
+ "description": "The arguments to be passed to the resource when it is started."
}
],
"returnType": "IResourceWithArgs",
@@ -11240,15 +11474,17 @@
"name": "withArgsCallback",
"capabilityId": "Aspire.Hosting/withArgsCallback",
"qualifiedName": "withArgsCallback",
- "description": "Sets command-line arguments via callback",
+ "description": "Adds a callback to be executed with a list of command-line arguments when a resource is started.",
+ "returns": "The `IResourceBuilder`1`.",
"kind": "Method",
- "signature": "withArgsCallback(callback: (obj: CommandLineArgsCallbackContext) =\u003E Promise\u003Cvoid\u003E): IResourceWithArgs",
+ "signature": "withArgsCallback(callback: (obj: CommandLineArgsCallbackContext) => Promise): IResourceWithArgs",
"parameters": [
{
"name": "callback",
"type": "callback",
"isCallback": true,
- "callbackSignature": "(obj: CommandLineArgsCallbackContext) =\u003E Promise\u003Cvoid\u003E"
+ "callbackSignature": "(obj: CommandLineArgsCallbackContext) => Promise",
+ "description": "A callback that allows for deferred execution for computing arguments. This runs after resources have been allocated by the orchestrator and allows access to other resources to resolve computed data, e.g. connection strings, ports."
}
],
"returnType": "IResourceWithArgs",
@@ -11269,19 +11505,23 @@
"fullName": "Aspire.Hosting.ApplicationModel.IResourceWithConnectionString",
"kind": "handle",
"isInterface": true,
+ "description": "Represents a resource that has a connection string associated with it.",
"implementedInterfaces": [],
"capabilities": [
{
"name": "getConnectionProperty",
"capabilityId": "Aspire.Hosting/getConnectionProperty",
"qualifiedName": "getConnectionProperty",
- "description": "Gets a connection property by key",
+ "description": "Retrieves the value of a specified connection property from the resource's connection properties.",
+ "remarks": "Throws a KeyNotFoundException if the specified key does not exist in the resource's\nconnection properties.",
+ "returns": "The value associated with the specified connection property key.",
"kind": "Method",
"signature": "getConnectionProperty(key: string): ReferenceExpression",
"parameters": [
{
"name": "key",
- "type": "string"
+ "type": "string",
+ "description": "The key of the connection property to retrieve. Cannot be null."
}
],
"returnType": "ReferenceExpression",
@@ -11294,15 +11534,17 @@
"name": "onConnectionStringAvailable",
"capabilityId": "Aspire.Hosting/onConnectionStringAvailable",
"qualifiedName": "onConnectionStringAvailable",
- "description": "Subscribes to the ConnectionStringAvailable event",
+ "description": "Subscribes to the ConnectionStringAvailable event.",
+ "returns": "The resource builder.",
"kind": "Method",
- "signature": "onConnectionStringAvailable(callback: (arg: ConnectionStringAvailableEvent) =\u003E Promise\u003Cvoid\u003E): IResourceWithConnectionString",
+ "signature": "onConnectionStringAvailable(callback: (arg: ConnectionStringAvailableEvent) => Promise): IResourceWithConnectionString",
"parameters": [
{
"name": "callback",
"type": "callback",
"isCallback": true,
- "callbackSignature": "(arg: ConnectionStringAvailableEvent) =\u003E Promise\u003Cvoid\u003E"
+ "callbackSignature": "(arg: ConnectionStringAvailableEvent) => Promise",
+ "description": "The callback to invoke when the event fires."
}
],
"returnType": "IResourceWithConnectionString",
@@ -11316,17 +11558,20 @@
"name": "withConnectionProperty",
"capabilityId": "Aspire.Hosting/withConnectionProperty",
"qualifiedName": "withConnectionProperty",
- "description": "Adds a connection property with a string or reference expression value",
+ "description": "Adds a connection property annotation to the resource being built.",
+ "returns": "The same resource builder instance with the specified connection property annotation applied.",
"kind": "Method",
"signature": "withConnectionProperty(name: string, value: ReferenceExpression): IResourceWithConnectionString",
"parameters": [
{
"name": "name",
- "type": "string"
+ "type": "string",
+ "description": "The name of the connection property to add."
},
{
"name": "value",
- "type": "ReferenceExpression"
+ "type": "ReferenceExpression",
+ "description": "The value to assign to the connection property, specified as a string or reference expression."
}
],
"returnType": "IResourceWithConnectionString",
@@ -11343,13 +11588,15 @@
"fullName": "Aspire.Hosting.ApplicationModel.IResourceWithEndpoints",
"kind": "handle",
"isInterface": true,
+ "description": "Represents a resource that has endpoints associated with it.",
"implementedInterfaces": [],
"capabilities": [
{
"name": "asHttp2Service",
"capabilityId": "Aspire.Hosting/asHttp2Service",
"qualifiedName": "asHttp2Service",
- "description": "Configures resource for HTTP/2",
+ "description": "Configures a resource to mark all endpoints' transport as HTTP/2. This is useful for HTTP/2 services that need prior knowledge.",
+ "returns": "The `IResourceBuilder`1`.",
"kind": "Method",
"signature": "asHttp2Service(): IResourceWithEndpoints",
"parameters": [],
@@ -11368,13 +11615,15 @@
"name": "getEndpoint",
"capabilityId": "Aspire.Hosting/getEndpoint",
"qualifiedName": "getEndpoint",
- "description": "Gets an endpoint reference",
+ "description": "Gets an `EndpointReference` by name from the resource. These endpoints are declared either using `WithEndpoint``1` or by launch settings (for project resources). The `EndpointReference` can be used to resolve the address of the endpoint in `WithEnvironment``1`.",
+ "returns": "An `EndpointReference` that can be used to resolve the address of the endpoint after resource allocation has occurred.",
"kind": "Method",
"signature": "getEndpoint(name: string): EndpointReference",
"parameters": [
{
"name": "name",
- "type": "string"
+ "type": "string",
+ "description": "The name of the endpoint."
}
],
"returnType": "EndpointReference",
@@ -11391,15 +11640,17 @@
"name": "onResourceEndpointsAllocated",
"capabilityId": "Aspire.Hosting/onResourceEndpointsAllocated",
"qualifiedName": "onResourceEndpointsAllocated",
- "description": "Subscribes to the ResourceEndpointsAllocated event",
+ "description": "Subscribes to the ResourceEndpointsAllocated event.",
+ "returns": "The resource builder.",
"kind": "Method",
- "signature": "onResourceEndpointsAllocated(callback: (arg: ResourceEndpointsAllocatedEvent) =\u003E Promise\u003Cvoid\u003E): IResourceWithEndpoints",
+ "signature": "onResourceEndpointsAllocated(callback: (arg: ResourceEndpointsAllocatedEvent) => Promise): IResourceWithEndpoints",
"parameters": [
{
"name": "callback",
"type": "callback",
"isCallback": true,
- "callbackSignature": "(arg: ResourceEndpointsAllocatedEvent) =\u003E Promise\u003Cvoid\u003E"
+ "callbackSignature": "(arg: ResourceEndpointsAllocatedEvent) => Promise",
+ "description": "The callback to invoke when the event fires."
}
],
"returnType": "IResourceWithEndpoints",
@@ -11417,7 +11668,8 @@
"name": "withEndpoint",
"capabilityId": "Aspire.Hosting/withEndpoint",
"qualifiedName": "withEndpoint",
- "description": "Adds a network endpoint",
+ "description": "Exposes an endpoint on a resource. A reference to this endpoint can be retrieved using `GetEndpoint``1`. The endpoint name will be the scheme name if not specified.",
+ "returns": "The `IResourceBuilder`1`.",
"kind": "Method",
"signature": "withEndpoint(port?: number, targetPort?: number, scheme?: string, name?: string, env?: string, isProxied?: boolean, isExternal?: boolean, protocol?: ProtocolType): IResourceWithEndpoints",
"parameters": [
@@ -11425,46 +11677,54 @@
"name": "port",
"type": "number",
"isOptional": true,
- "isNullable": true
+ "isNullable": true,
+ "description": "An optional port. This is the port that will be given to other resource to communicate with this resource."
},
{
"name": "targetPort",
"type": "number",
"isOptional": true,
- "isNullable": true
+ "isNullable": true,
+ "description": "This is the port the resource is listening on. If the endpoint is used for the container, it is the container port."
},
{
"name": "scheme",
"type": "string",
- "isOptional": true
+ "isOptional": true,
+ "description": "An optional scheme e.g. (http/https). Defaults to the `protocol` argument if it is defined or \"tcp\" otherwise."
},
{
"name": "name",
"type": "string",
- "isOptional": true
+ "isOptional": true,
+ "description": "An optional name of the endpoint. Defaults to the scheme name if not specified."
},
{
"name": "env",
"type": "string",
- "isOptional": true
+ "isOptional": true,
+ "description": "An optional name of the environment variable that will be used to inject the `targetPort`. If the target port is null one will be dynamically generated and assigned to the environment variable."
},
{
"name": "isProxied",
"type": "boolean",
"isOptional": true,
- "defaultValue": "True"
+ "defaultValue": "True",
+ "description": "Specifies if the endpoint will be proxied by DCP. Defaults to true."
},
{
"name": "isExternal",
"type": "boolean",
"isOptional": true,
- "isNullable": true
+ "isNullable": true,
+ "description": "Indicates that this endpoint should be exposed externally at publish time."
},
{
"name": "protocol",
"type": "ProtocolType",
"isOptional": true,
- "isNullable": true
+ "isNullable": true,
+ "description": "Network protocol: TCP or UDP are supported today, others possibly in future."
}
],
"returnType": "IResourceWithEndpoints",
@@ -11484,7 +11744,7 @@
"qualifiedName": "withEndpointCallback",
"description": "Updates a named endpoint via callback",
"kind": "Method",
- "signature": "withEndpointCallback(endpointName: string, callback: (obj: EndpointUpdateContext) =\u003E Promise\u003Cvoid\u003E, createIfNotExists?: boolean): IResourceWithEndpoints",
+ "signature": "withEndpointCallback(endpointName: string, callback: (obj: EndpointUpdateContext) => Promise, createIfNotExists?: boolean): IResourceWithEndpoints",
"parameters": [
{
"name": "endpointName",
@@ -11494,7 +11754,7 @@
"name": "callback",
"type": "callback",
"isCallback": true,
- "callbackSignature": "(obj: EndpointUpdateContext) =\u003E Promise\u003Cvoid\u003E"
+ "callbackSignature": "(obj: EndpointUpdateContext) => Promise"
},
{
"name": "createIfNotExists",
@@ -11518,7 +11778,8 @@
"name": "withExternalHttpEndpoints",
"capabilityId": "Aspire.Hosting/withExternalHttpEndpoints",
"qualifiedName": "withExternalHttpEndpoints",
- "description": "Makes HTTP endpoints externally accessible",
+ "description": "Marks existing http or https endpoints on a resource as external.",
+ "returns": "The `IResourceBuilder`1`.",
"kind": "Method",
"signature": "withExternalHttpEndpoints(): IResourceWithEndpoints",
"parameters": [],
@@ -11570,7 +11831,9 @@
"name": "withHttpEndpoint",
"capabilityId": "Aspire.Hosting/withHttpEndpoint",
"qualifiedName": "withHttpEndpoint",
- "description": "Adds an HTTP endpoint",
+ "description": "Exposes an HTTP endpoint on a resource, or updates the existing HTTP endpoint if one with the same name already exists. This endpoint reference can be retrieved using `GetEndpoint``1`. The endpoint name will be \"http\" if not specified.",
+ "remarks": "If an endpoint with the same name already exists on the resource, the existing endpoint is updated\nwith any non-null parameter values. Parameters left as `null` will not modify the existing endpoint's values.",
+ "returns": "The `IResourceBuilder`1`.",
"kind": "Method",
"signature": "withHttpEndpoint(port?: number, targetPort?: number, name?: string, env?: string, isProxied?: boolean): IResourceWithEndpoints",
"parameters": [
@@ -11578,29 +11841,34 @@
"name": "port",
"type": "number",
"isOptional": true,
- "isNullable": true
+ "isNullable": true,
+ "description": "An optional port. This is the port that will be given to other resource to communicate with this resource."
},
{
"name": "targetPort",
"type": "number",
"isOptional": true,
- "isNullable": true
+ "isNullable": true,
+ "description": "This is the port the resource is listening on. If the endpoint is used for the container, it is the container port."
},
{
"name": "name",
"type": "string",
- "isOptional": true
+ "isOptional": true,
+ "description": "An optional name of the endpoint. Defaults to \"http\" if not specified."
},
{
"name": "env",
"type": "string",
- "isOptional": true
+ "isOptional": true,
+ "description": "An optional name of the environment variable to inject."
},
{
"name": "isProxied",
"type": "boolean",
"isOptional": true,
- "defaultValue": "True"
+ "defaultValue": "True",
+ "description": "Specifies if the endpoint will be proxied by DCP. Defaults to true."
}
],
"returnType": "IResourceWithEndpoints",
@@ -11620,13 +11888,13 @@
"qualifiedName": "withHttpEndpointCallback",
"description": "Updates an HTTP endpoint via callback",
"kind": "Method",
- "signature": "withHttpEndpointCallback(callback: (obj: EndpointUpdateContext) =\u003E Promise\u003Cvoid\u003E, name?: string, createIfNotExists?: boolean): IResourceWithEndpoints",
+ "signature": "withHttpEndpointCallback(callback: (obj: EndpointUpdateContext) => Promise, name?: string, createIfNotExists?: boolean): IResourceWithEndpoints",
"parameters": [
{
"name": "callback",
"type": "callback",
"isCallback": true,
- "callbackSignature": "(obj: EndpointUpdateContext) =\u003E Promise\u003Cvoid\u003E"
+ "callbackSignature": "(obj: EndpointUpdateContext) => Promise"
},
{
"name": "name",
@@ -11655,25 +11923,30 @@
"name": "withHttpHealthCheck",
"capabilityId": "Aspire.Hosting/withHttpHealthCheck",
"qualifiedName": "withHttpHealthCheck",
- "description": "Adds an HTTP health check",
+ "description": "Adds a health check to the resource which is mapped to a specific endpoint.",
+ "remarks": "This method adds a health check to the health check service which polls the specified endpoint on the resource\non a periodic basis. The base address is dynamically determined based on the endpoint that was selected. By\ndefault the path is set to \"/\" and the status code is set to 200.\nThis example shows adding an HTTP health check to a backend project.\nThe health check makes sure that the front end does not start until the backend is\nreporting a healthy status based on the return code returned from the\n\"/health\" path on the backend server.\n```\nvar builder = DistributedApplication.CreateBuilder(args);\nvar backend = builder.AddProject(\"backend\")\n.WithHttpHealthCheck(\"/health\");\nbuilder.AddProject(\"frontend\")\n.WithReference(backend).WaitFor(backend);\n```",
+ "returns": "The `IResourceBuilder`1`.",
"kind": "Method",
"signature": "withHttpHealthCheck(path?: string, statusCode?: number, endpointName?: string): IResourceWithEndpoints",
"parameters": [
{
"name": "path",
"type": "string",
- "isOptional": true
+ "isOptional": true,
+ "description": "The relative path to test."
},
{
"name": "statusCode",
"type": "number",
"isOptional": true,
- "isNullable": true
+ "isNullable": true,
+ "description": "The result code to interpret as healthy."
},
{
"name": "endpointName",
"type": "string",
- "isOptional": true
+ "isOptional": true,
+ "description": "The name of the endpoint to derive the base address from."
}
],
"returnType": "IResourceWithEndpoints",
@@ -11691,7 +11964,7 @@
"name": "withHttpProbe",
"capabilityId": "Aspire.Hosting/withHttpProbe",
"qualifiedName": "withHttpProbe",
- "description": "Adds an HTTP health probe to the resource",
+ "description": "ATS export stub for `WithHttpProbe``1` with renamed parameter to avoid reserved keyword conflicts in Go and Rust.",
"kind": "Method",
"signature": "withHttpProbe(probeType: ProbeType, path?: string, initialDelaySeconds?: number, periodSeconds?: number, timeoutSeconds?: number, failureThreshold?: number, successThreshold?: number, endpointName?: string): IResourceWithEndpoints",
"parameters": [
@@ -11755,7 +12028,9 @@
"name": "withHttpsEndpoint",
"capabilityId": "Aspire.Hosting/withHttpsEndpoint",
"qualifiedName": "withHttpsEndpoint",
- "description": "Adds an HTTPS endpoint",
+ "description": "Exposes an HTTPS endpoint on a resource, or updates the existing HTTPS endpoint if one with the same name already exists. This endpoint reference can be retrieved using `GetEndpoint``1`. The endpoint name will be \"https\" if not specified.",
+ "remarks": "If an endpoint with the same name already exists on the resource, the existing endpoint is updated\nwith any non-null parameter values. Parameters left as `null` will not modify the existing endpoint's values.",
+ "returns": "The `IResourceBuilder`1`.",
"kind": "Method",
"signature": "withHttpsEndpoint(port?: number, targetPort?: number, name?: string, env?: string, isProxied?: boolean): IResourceWithEndpoints",
"parameters": [
@@ -11763,29 +12038,34 @@
"name": "port",
"type": "number",
"isOptional": true,
- "isNullable": true
+ "isNullable": true,
+ "description": "An optional host port."
},
{
"name": "targetPort",
"type": "number",
"isOptional": true,
- "isNullable": true
+ "isNullable": true,
+ "description": "This is the port the resource is listening on. If the endpoint is used for the container, it is the container port."
},
{
"name": "name",
"type": "string",
- "isOptional": true
+ "isOptional": true,
+ "description": "An optional name of the endpoint. Defaults to \"https\" if not specified."
},
{
"name": "env",
"type": "string",
- "isOptional": true
+ "isOptional": true,
+ "description": "An optional name of the environment variable to inject."
},
{
"name": "isProxied",
"type": "boolean",
"isOptional": true,
- "defaultValue": "True"
+ "defaultValue": "True",
+ "description": "Specifies if the endpoint will be proxied by DCP. Defaults to true."
}
],
"returnType": "IResourceWithEndpoints",
@@ -11805,13 +12085,13 @@
"qualifiedName": "withHttpsEndpointCallback",
"description": "Updates an HTTPS endpoint via callback",
"kind": "Method",
- "signature": "withHttpsEndpointCallback(callback: (obj: EndpointUpdateContext) =\u003E Promise\u003Cvoid\u003E, name?: string, createIfNotExists?: boolean): IResourceWithEndpoints",
+ "signature": "withHttpsEndpointCallback(callback: (obj: EndpointUpdateContext) => Promise, name?: string, createIfNotExists?: boolean): IResourceWithEndpoints",
"parameters": [
{
"name": "callback",
"type": "callback",
"isCallback": true,
- "callbackSignature": "(obj: EndpointUpdateContext) =\u003E Promise\u003Cvoid\u003E"
+ "callbackSignature": "(obj: EndpointUpdateContext) => Promise"
},
{
"name": "name",
@@ -11840,7 +12120,9 @@
"name": "withMcpServer",
"capabilityId": "Aspire.Hosting/withMcpServer",
"qualifiedName": "withMcpServer",
- "description": "Configures an MCP server endpoint on the resource",
+ "description": "Marks the resource as hosting a Model Context Protocol (MCP) server on the specified endpoint.",
+ "remarks": "This method adds an `McpServerEndpointAnnotation` to the resource, enabling the Aspire tooling\nto discover and proxy the MCP server exposed by the resource.",
+ "returns": "A reference to the `IResourceBuilder`1` for chaining additional configuration.",
"kind": "Method",
"signature": "withMcpServer(path?: string, endpointName?: string): IResourceWithEndpoints",
"parameters": [
@@ -11848,12 +12130,14 @@
"name": "path",
"type": "string",
"isOptional": true,
- "defaultValue": "/mcp"
+ "defaultValue": "/mcp",
+ "description": "An optional path to append to the endpoint URL when forming the MCP server address. Defaults to `\"/mcp\"`."
},
{
"name": "endpointName",
"type": "string",
- "isOptional": true
+ "isOptional": true,
+ "description": "An optional name of the endpoint that hosts the MCP server. If not specified, defaults to the first HTTPS or HTTP endpoint."
}
],
"returnType": "IResourceWithEndpoints",
@@ -11874,19 +12158,23 @@
"fullName": "Aspire.Hosting.ApplicationModel.IResourceWithEnvironment",
"kind": "handle",
"isInterface": true,
+ "description": "Represents a resource that is associated with an environment.",
"implementedInterfaces": [],
"capabilities": [
{
"name": "withCertificateTrustScope",
"capabilityId": "Aspire.Hosting/withCertificateTrustScope",
"qualifiedName": "withCertificateTrustScope",
- "description": "Sets the certificate trust scope",
+ "description": "Sets the `CertificateTrustScope` for custom certificate authorities associated with the resource. The scope specifies how custom certificate authorities should be applied to a resource at run time in local development scenarios. Custom certificate trust is only applied in run mode; in publish mode resources will use their default certificate trust behavior.",
+ "remarks": "The default scope if not overridden is `Append` which means that custom certificate\nauthorities should be appended to the default trusted certificate authorities for the resource. Setting the scope to\n`Override` indicates the set of certificates in referenced\n`CertificateAuthorityCollection` (and optionally Aspire developer certificiates) should be used as the\nexclusive source of trust for a resource.\nIn all cases, this is a best effort implementation as not all resources support full customization of certificate\ntrust.\nSet the scope for custom certificate authorities to override the default trusted certificate authorities for a container resource.\n```\nvar caCollection = builder.AddCertificateAuthorityCollection(\"my-cas\")\n.WithCertificate(new X509Certificate2(\"my-ca.pem\"));\nvar container = builder.AddContainer(\"my-service\", \"my-service:latest\")\n.WithCertificateAuthorityCollection(caCollection)\n.WithCertificateTrustScope(CertificateTrustScope.Override);\n```",
+ "returns": "The `IResourceBuilder`1`.",
"kind": "Method",
"signature": "withCertificateTrustScope(scope: CertificateTrustScope): IResourceWithEnvironment",
"parameters": [
{
"name": "scope",
- "type": "CertificateTrustScope"
+ "type": "CertificateTrustScope",
+ "description": "The scope to apply to custom certificate authorities associated with the resource."
}
],
"returnType": "IResourceWithEnvironment",
@@ -11904,13 +12192,16 @@
"name": "withDeveloperCertificateTrust",
"capabilityId": "Aspire.Hosting/withDeveloperCertificateTrust",
"qualifiedName": "withDeveloperCertificateTrust",
- "description": "Configures developer certificate trust",
+ "description": "Indicates whether developer certificates should be treated as trusted certificate authorities for the resource at run time. Currently this indicates trust for the ASP.NET Core developer certificate. The developer certificate will only be trusted when running in local development scenarios; in publish mode resources will use their default certificate trust.",
+ "remarks": "Disable trust for app host managed developer certificate(s) for a container resource.\n```\nvar container = builder.AddContainer(\"my-service\", \"my-service:latest\")\n.WithDeveloperCertificateTrust(false);\n```\nDisable automatic trust for app host managed developer certificate(s), but explicitly enable it for a specific resource.\n```\nvar builder = DistributedApplication.CreateBuilder(new DistributedApplicationOptions()\n{\nArgs = args,\nTrustDeveloperCertificate = false,\n});\nvar project = builder.AddProject(\"my-service\")\n.WithDeveloperCertificateTrust(true);\n```",
+ "returns": "The `IResourceBuilder`1`.",
"kind": "Method",
"signature": "withDeveloperCertificateTrust(trust: boolean): IResourceWithEnvironment",
"parameters": [
{
"name": "trust",
- "type": "boolean"
+ "type": "boolean",
+ "description": "Indicates whether the developer certificate should be treated as trusted."
}
],
"returnType": "IResourceWithEnvironment",
@@ -11956,15 +12247,17 @@
"name": "withEnvironmentCallback",
"capabilityId": "Aspire.Hosting/withEnvironmentCallback",
"qualifiedName": "withEnvironmentCallback",
- "description": "Sets environment variables via callback",
+ "description": "Allows for the population of environment variables on a resource.",
+ "returns": "The `IResourceBuilder`1`.",
"kind": "Method",
- "signature": "withEnvironmentCallback(callback: (arg: EnvironmentCallbackContext) =\u003E Promise\u003Cvoid\u003E): IResourceWithEnvironment",
+ "signature": "withEnvironmentCallback(callback: (arg: EnvironmentCallbackContext) => Promise): IResourceWithEnvironment",
"parameters": [
{
"name": "callback",
"type": "callback",
"isCallback": true,
- "callbackSignature": "(arg: EnvironmentCallbackContext) =\u003E Promise\u003Cvoid\u003E"
+ "callbackSignature": "(arg: EnvironmentCallbackContext) => Promise",
+ "description": "A callback that allows for deferred execution for computing many environment variables. This runs after resources have been allocated by the orchestrator and allows access to other resources to resolve computed data, e.g. connection strings, ports."
}
],
"returnType": "IResourceWithEnvironment",
@@ -11982,14 +12275,17 @@
"name": "withHttpsDeveloperCertificate",
"capabilityId": "Aspire.Hosting/withParameterHttpsDeveloperCertificate",
"qualifiedName": "withHttpsDeveloperCertificate",
- "description": "Configures HTTPS with a developer certificate",
+ "description": "Indicates that a resource should use the developer certificate key pair for HTTPS endpoints at run time. Currently this indicates use of the ASP.NET Core developer certificate. The developer certificate will only be used when running in local development scenarios; in publish mode resources will use their default certificate configuration.",
+ "remarks": "Use the developer certificate for HTTPS/TLS endpoints on a container resource:\n```\nbuilder.AddContainer(\"my-service\", \"my-image\")\n.WithHttpsDeveloperCertificate()\n```",
+ "returns": "The `IResourceBuilder`1`.",
"kind": "Method",
"signature": "withHttpsDeveloperCertificate(password?: ParameterResource): IResourceWithEnvironment",
"parameters": [
{
"name": "password",
"type": "ParameterResource",
- "isOptional": true
+ "isOptional": true,
+ "description": "A parameter specifying the password used to encrypt the certificate private key."
}
],
"returnType": "IResourceWithEnvironment",
@@ -12033,7 +12329,9 @@
"name": "withoutHttpsCertificate",
"capabilityId": "Aspire.Hosting/withoutHttpsCertificate",
"qualifiedName": "withoutHttpsCertificate",
- "description": "Removes HTTPS certificate configuration",
+ "description": "Disable HTTPS/TLS server certificate configuration for the resource. No HTTPS/TLS termination configuration will be applied.",
+ "remarks": "Disable HTTPS certificate configuration for a Redis resource:\n```\nvar redis = builder.AddRedis(\"cache\")\n.WithoutHttpsCertificate();\n```",
+ "returns": "The `IResourceBuilder`1`.",
"kind": "Method",
"signature": "withoutHttpsCertificate(): IResourceWithEnvironment",
"parameters": [],
@@ -12092,13 +12390,15 @@
"name": "withReferenceEnvironment",
"capabilityId": "Aspire.Hosting/withReferenceEnvironment",
"qualifiedName": "withReferenceEnvironment",
- "description": "Configures which reference values are injected into environment variables",
+ "description": "Configures how information is injected into environment variables when the resource references other resources.",
+ "returns": "The `IResourceBuilder`1`.",
"kind": "Method",
"signature": "withReferenceEnvironment(options: ReferenceEnvironmentInjectionOptions): IResourceWithEnvironment",
"parameters": [
{
"name": "options",
- "type": "ReferenceEnvironmentInjectionOptions"
+ "type": "ReferenceEnvironmentInjectionOptions",
+ "description": "Options controlling which reference information is emitted."
}
],
"returnType": "IResourceWithEnvironment",
@@ -12119,6 +12419,7 @@
"fullName": "Aspire.Hosting.ApplicationModel.IResourceWithParent",
"kind": "handle",
"isInterface": true,
+ "description": "Represents a resource that has a parent resource.",
"implementedInterfaces": [],
"capabilities": []
},
@@ -12127,6 +12428,7 @@
"fullName": "Aspire.Hosting.ApplicationModel.IResourceWithWaitSupport",
"kind": "handle",
"isInterface": true,
+ "description": "Represents a resource that can wait for other resources to be running, health, and/or completed.",
"implementedInterfaces": [],
"capabilities": [
{
@@ -12163,19 +12465,23 @@
"name": "waitForCompletion",
"capabilityId": "Aspire.Hosting/waitForResourceCompletion",
"qualifiedName": "waitForCompletion",
- "description": "Waits for resource completion",
+ "description": "Waits for the dependency resource to enter the Exited or Finished state before starting the resource.",
+ "remarks": "This method is useful when a resource should wait until another has completed. A common usage pattern\nwould be to include a console application that initializes the database schema or performs other one off\ninitialization tasks.\nNote that this method has no impact at deployment time and only works for local development.\nWait for database initialization app to complete running.\n```\nvar builder = DistributedApplication.CreateBuilder(args);\nvar pgsql = builder.AddPostgres(\"postgres\");\nvar dbprep = builder.AddProject(\"dbprep\")\n.WithReference(pgsql);\nbuilder.AddProject(\"dbpreptool\")\n.WithReference(pgsql)\n.WaitForCompletion(dbprep);\n```",
+ "returns": "The `IResourceBuilder`1`.",
"kind": "Method",
"signature": "waitForCompletion(dependency: IResource, exitCode?: number): IResourceWithWaitSupport",
"parameters": [
{
"name": "dependency",
- "type": "IResource"
+ "type": "IResource",
+ "description": "The resource builder for the dependency resource."
},
{
"name": "exitCode",
"type": "number",
"isOptional": true,
- "defaultValue": "0"
+ "defaultValue": "0",
+ "description": "The exit code which is interpreted as successful."
}
],
"returnType": "IResourceWithWaitSupport",
@@ -12225,19 +12531,21 @@
"name": "LogFacade",
"fullName": "Aspire.Hosting.ApplicationModel.LogFacade",
"kind": "handle",
+ "description": "Provides a narrow logging surface for polyglot callback contexts.",
"implementedInterfaces": [],
"capabilities": [
{
"name": "debug",
"capabilityId": "Aspire.Hosting.ApplicationModel/debug",
"qualifiedName": "LogFacade.debug",
- "description": "Writes a debug log message",
+ "description": "Writes a debug log message.",
"kind": "InstanceMethod",
"signature": "debug(message: string): void",
"parameters": [
{
"name": "message",
- "type": "string"
+ "type": "string",
+ "description": "The message to write."
}
],
"returnType": "void",
@@ -12250,13 +12558,14 @@
"name": "error",
"capabilityId": "Aspire.Hosting.ApplicationModel/error",
"qualifiedName": "LogFacade.error",
- "description": "Writes an error log message",
+ "description": "Writes an error log message.",
"kind": "InstanceMethod",
"signature": "error(message: string): void",
"parameters": [
{
"name": "message",
- "type": "string"
+ "type": "string",
+ "description": "The message to write."
}
],
"returnType": "void",
@@ -12269,13 +12578,14 @@
"name": "info",
"capabilityId": "Aspire.Hosting.ApplicationModel/info",
"qualifiedName": "LogFacade.info",
- "description": "Writes an informational log message",
+ "description": "Writes an informational log message.",
"kind": "InstanceMethod",
"signature": "info(message: string): void",
"parameters": [
{
"name": "message",
- "type": "string"
+ "type": "string",
+ "description": "The message to write."
}
],
"returnType": "void",
@@ -12288,13 +12598,14 @@
"name": "warning",
"capabilityId": "Aspire.Hosting.ApplicationModel/warning",
"qualifiedName": "LogFacade.warning",
- "description": "Writes a warning log message",
+ "description": "Writes a warning log message.",
"kind": "InstanceMethod",
"signature": "warning(message: string): void",
"parameters": [
{
"name": "message",
- "type": "string"
+ "type": "string",
+ "description": "The message to write."
}
],
"returnType": "void",
@@ -12309,6 +12620,7 @@
"name": "ParameterResource",
"fullName": "Aspire.Hosting.ApplicationModel.ParameterResource",
"kind": "handle",
+ "description": "Represents a parameter resource.",
"implementedInterfaces": [
"Aspire.Hosting.ApplicationModel.IExpressionValue",
"Aspire.Hosting.ApplicationModel.IManifestExpressionProvider",
@@ -12320,19 +12632,22 @@
"name": "withDescription",
"capabilityId": "Aspire.Hosting/withDescription",
"qualifiedName": "withDescription",
- "description": "Sets a parameter description",
+ "description": "Sets the description of the parameter resource.",
+ "returns": "Resource builder for the parameter.",
"kind": "Method",
"signature": "withDescription(description: string, enableMarkdown?: boolean): ParameterResource",
"parameters": [
{
"name": "description",
- "type": "string"
+ "type": "string",
+ "description": "The parameter description."
},
{
"name": "enableMarkdown",
"type": "boolean",
"isOptional": true,
- "defaultValue": "False"
+ "defaultValue": "False",
+ "description": "A value indicating whether the description should be rendered as Markdown. `true` allows the description to contain Markdown elements such as links, text decoration and lists."
}
],
"returnType": "ParameterResource",
@@ -12348,6 +12663,7 @@
"name": "ProjectResource",
"fullName": "Aspire.Hosting.ApplicationModel.ProjectResource",
"kind": "handle",
+ "description": "A resource that represents a specified .NET project.",
"implementedInterfaces": [
"Aspire.Hosting.ApplicationModel.IComputeResource",
"Aspire.Hosting.ApplicationModel.IContainerFilesDestinationResource",
@@ -12364,7 +12680,9 @@
"name": "disableForwardedHeaders",
"capabilityId": "Aspire.Hosting/disableForwardedHeaders",
"qualifiedName": "disableForwardedHeaders",
- "description": "Disables forwarded headers for the project",
+ "description": "Configures the project to disable forwarded headers when being published.",
+ "remarks": "By default Aspire assumes that .NET applications which expose endpoints should be configured to\nuse forwarded headers. This is because most typical cloud native deployment scenarios involve a reverse\nproxy which translates an external endpoint hostname to an internal address.\nTo enable forwarded headers the `ASPNETCORE_FORWARDEDHEADERS_ENABLED` variable is injected\ninto the project and set to true. If the `DisableForwardedHeaders`\nextension is used this environment variable will not be set.\nDisable forwarded headers for a project.\n```\nvar builder = DistributedApplication.CreateBuilder(args);\nbuilder.AddProject(\"inventoryservice\")\n.DisableForwardedHeaders();\n```",
+ "returns": "A reference to the `IResourceBuilder`1`.",
"kind": "Method",
"signature": "disableForwardedHeaders(): ProjectResource",
"parameters": [],
@@ -12380,16 +12698,19 @@
"name": "publishAsDockerFile",
"capabilityId": "Aspire.Hosting/publishProjectAsDockerFileWithConfigure",
"qualifiedName": "publishAsDockerFile",
- "description": "Publishes a project as a Docker file with optional container configuration",
+ "description": "Adds support for containerizing this `ProjectResource` during deployment. The resulting container image is built, and when the optional `configure` action is provided, it is used to configure the container resource.",
+ "remarks": "When the executable resource is converted to a container resource, the arguments to the executable\nare not used. This is because arguments to the project often contain physical paths that are not valid\nin the container. The container can be set up with the correct arguments using the `configure` action.",
+ "returns": "A reference to the `IResourceBuilder`1`.",
"kind": "Method",
- "signature": "publishAsDockerFile(configure?: (obj: ContainerResource) =\u003E Promise\u003Cvoid\u003E): ProjectResource",
+ "signature": "publishAsDockerFile(configure?: (obj: ContainerResource) => Promise): ProjectResource",
"parameters": [
{
"name": "configure",
"type": "callback",
"isOptional": true,
"isCallback": true,
- "callbackSignature": "(obj: ContainerResource) =\u003E Promise\u003Cvoid\u003E"
+ "callbackSignature": "(obj: ContainerResource) => Promise",
+ "description": "Optional action to configure the container resource"
}
],
"returnType": "ProjectResource",
@@ -12404,13 +12725,16 @@
"name": "withReplicas",
"capabilityId": "Aspire.Hosting/withReplicas",
"qualifiedName": "withReplicas",
- "description": "Sets the number of replicas",
+ "description": "Configures how many replicas of the project should be created for the project.",
+ "remarks": "When this method is applied to a project resource it will configure the app host to start multiple instances\nof the application based on the specified number of replicas. By default the app host automatically starts a\nreverse proxy for each process. When `WithReplicas` is\nused the reverse proxy will load balance traffic between the replicas.\nThis capability can be useful when debugging scale out scenarios to ensure state is appropriately managed\nwithin a cluster of instances.\nStart multiple instances of the same service.\n```\nvar builder = DistributedApplication.CreateBuilder(args);\nbuilder.AddProject(\"inventoryservice\")\n.WithReplicas(3);\n```",
+ "returns": "A reference to the `IResourceBuilder`1`.",
"kind": "Method",
"signature": "withReplicas(replicas: number): ProjectResource",
"parameters": [
{
"name": "replicas",
- "type": "number"
+ "type": "number",
+ "description": "The number of replicas."
}
],
"returnType": "ProjectResource",
@@ -12427,6 +12751,8 @@
"name": "ReferenceExpression",
"fullName": "Aspire.Hosting.ApplicationModel.ReferenceExpression",
"kind": "handle",
+ "description": "Represents an expression that might be made up of multiple resource properties. For example, a connection string might be made up of a host, port, and password from different endpoints.",
+ "remarks": "A `ReferenceExpression` operates in one of two modes:\n-\n-",
"implementedInterfaces": [
"Aspire.Hosting.ApplicationModel.IExpressionValue",
"Aspire.Hosting.ApplicationModel.IManifestExpressionProvider",
@@ -12438,13 +12764,14 @@
"name": "getValueAsync",
"capabilityId": "Aspire.Hosting.ApplicationModel/getValueAsync",
"qualifiedName": "ReferenceExpression.getValueAsync",
- "description": "Gets the resolved string value of the reference expression asynchronously",
+ "description": "Gets the value of the expression. The final string value after evaluating the format string and its parameters.",
"kind": "InstanceMethod",
"signature": "getValueAsync(cancellationToken: cancellationToken): string",
"parameters": [
{
"name": "cancellationToken",
- "type": "cancellationToken"
+ "type": "cancellationToken",
+ "description": "A `CancellationToken`."
}
],
"returnType": "string",
@@ -12460,24 +12787,27 @@
"fullName": "Aspire.Hosting.ApplicationModel.ReferenceExpressionBuilder",
"kind": "handle",
"exposeProperties": true,
+ "description": "A builder for creating `ReferenceExpression` instances.",
"implementedInterfaces": [],
"capabilities": [
{
"name": "appendFormatted",
"capabilityId": "Aspire.Hosting.ApplicationModel/appendFormatted",
"qualifiedName": "ReferenceExpressionBuilder.appendFormatted",
- "description": "Appends a formatted string value to the reference expression",
+ "description": "Appends a formatted value to the expression.",
"kind": "InstanceMethod",
"signature": "appendFormatted(value: string, format?: string): void",
"parameters": [
{
"name": "value",
- "type": "string"
+ "type": "string",
+ "description": "The formatted string to be appended to the interpolated string."
},
{
"name": "format",
"type": "string",
- "isOptional": true
+ "isOptional": true,
+ "description": "The format to be applied to the value. e.g., \"uri\""
}
],
"returnType": "void",
@@ -12490,13 +12820,14 @@
"name": "appendLiteral",
"capabilityId": "Aspire.Hosting.ApplicationModel/appendLiteral",
"qualifiedName": "ReferenceExpressionBuilder.appendLiteral",
- "description": "Appends a literal string to the reference expression",
+ "description": "Appends a literal value to the expression.",
"kind": "InstanceMethod",
"signature": "appendLiteral(value: string): void",
"parameters": [
{
"name": "value",
- "type": "string"
+ "type": "string",
+ "description": "The literal string value to be appended to the interpolated string."
}
],
"returnType": "void",
@@ -12509,18 +12840,20 @@
"name": "appendValueProvider",
"capabilityId": "Aspire.Hosting.ApplicationModel/appendValueProvider",
"qualifiedName": "ReferenceExpressionBuilder.appendValueProvider",
- "description": "Appends a value provider to the reference expression",
+ "description": "Appends a value provider to the expression using late binding. The object must implement both `IValueProvider` and `IManifestExpressionProvider`, or be an `IResourceBuilder`1` where T implements both interfaces.",
"kind": "InstanceMethod",
"signature": "appendValueProvider(valueProvider: any, format?: string): void",
"parameters": [
{
"name": "valueProvider",
- "type": "any"
+ "type": "any",
+ "description": "An object that implements both interfaces, or an IResourceBuilder wrapping such an object."
},
{
"name": "format",
"type": "string",
- "isOptional": true
+ "isOptional": true,
+ "description": "Optional format specifier."
}
],
"returnType": "void",
@@ -12533,7 +12866,7 @@
"name": "build",
"capabilityId": "Aspire.Hosting.ApplicationModel/build",
"qualifiedName": "ReferenceExpressionBuilder.build",
- "description": "Builds the reference expression",
+ "description": "Builds the `ReferenceExpression`.",
"kind": "InstanceMethod",
"signature": "build(): ReferenceExpression",
"parameters": [],
@@ -12547,7 +12880,7 @@
"name": "isEmpty",
"capabilityId": "Aspire.Hosting.ApplicationModel/ReferenceExpressionBuilder.isEmpty",
"qualifiedName": "ReferenceExpressionBuilder.isEmpty",
- "description": "Gets the IsEmpty property",
+ "description": "Indicates whether the expression is empty.",
"kind": "PropertyGetter",
"signature": "isEmpty(): boolean",
"parameters": [],
@@ -12564,6 +12897,8 @@
"fullName": "Aspire.Hosting.ApplicationModel.ResourceEndpointsAllocatedEvent",
"kind": "handle",
"exposeProperties": true,
+ "description": "This event is raised by orchestrators to signal to resources that their endpoints have been allocated.",
+ "remarks": "Any resources that customize their URLs via a `ResourceUrlsCallbackAnnotation` will have their callbacks invoked during this event.",
"implementedInterfaces": [
"Aspire.Hosting.Eventing.IDistributedApplicationEvent",
"Aspire.Hosting.Eventing.IDistributedApplicationResourceEvent"
@@ -12603,6 +12938,7 @@
"name": "ResourceLoggerService",
"fullName": "Aspire.Hosting.ApplicationModel.ResourceLoggerService",
"kind": "handle",
+ "description": "A service that provides loggers for resources to write to.",
"implementedInterfaces": [
"System.IDisposable"
],
@@ -12611,7 +12947,7 @@
"name": "completeLog",
"capabilityId": "Aspire.Hosting/completeLog",
"qualifiedName": "completeLog",
- "description": "Completes the log stream for a resource",
+ "description": "Completes the log stream for a resource.",
"kind": "Method",
"signature": "completeLog(resource: IResource): void",
"parameters": [
@@ -12630,7 +12966,7 @@
"name": "completeLogByName",
"capabilityId": "Aspire.Hosting/completeLogByName",
"qualifiedName": "completeLogByName",
- "description": "Completes the log stream by resource name",
+ "description": "Completes the log stream by resource name.",
"kind": "Method",
"signature": "completeLogByName(resourceName: string): void",
"parameters": [
@@ -12651,6 +12987,7 @@
"name": "ResourceNotificationService",
"fullName": "Aspire.Hosting.ApplicationModel.ResourceNotificationService",
"kind": "handle",
+ "description": "A service that allows publishing and subscribing to changes in the state of a resource.",
"implementedInterfaces": [
"System.IDisposable"
],
@@ -12659,7 +12996,7 @@
"name": "publishResourceUpdate",
"capabilityId": "Aspire.Hosting/publishResourceUpdate",
"qualifiedName": "publishResourceUpdate",
- "description": "Publishes an update for a resource\u0027s state",
+ "description": "Publishes an update for a resource's state.",
"kind": "Method",
"signature": "publishResourceUpdate(resource: IResource, state?: string, stateStyle?: string): void",
"parameters": [
@@ -12688,7 +13025,7 @@
"name": "tryGetResourceState",
"capabilityId": "Aspire.Hosting/tryGetResourceState",
"qualifiedName": "tryGetResourceState",
- "description": "Tries to get the current state of a resource",
+ "description": "Tries to get the current state of a resource.",
"kind": "Method",
"signature": "tryGetResourceState(resourceName: string): ResourceEventDto",
"parameters": [
@@ -12707,7 +13044,7 @@
"name": "waitForDependencies",
"capabilityId": "Aspire.Hosting/waitForDependencies",
"qualifiedName": "waitForDependencies",
- "description": "Waits for all dependencies of a resource to be ready",
+ "description": "Waits for all dependencies of a resource to be ready.",
"kind": "Method",
"signature": "waitForDependencies(resource: IResource): void",
"parameters": [
@@ -12726,7 +13063,7 @@
"name": "waitForResourceHealthy",
"capabilityId": "Aspire.Hosting/waitForResourceHealthy",
"qualifiedName": "waitForResourceHealthy",
- "description": "Waits for a resource to become healthy",
+ "description": "Waits for a resource to become healthy.",
"kind": "Method",
"signature": "waitForResourceHealthy(resourceName: string): ResourceEventDto",
"parameters": [
@@ -12745,7 +13082,7 @@
"name": "waitForResourceState",
"capabilityId": "Aspire.Hosting/waitForResourceState",
"qualifiedName": "waitForResourceState",
- "description": "Waits for a resource to reach a specified state",
+ "description": "Waits for a resource to reach a specified state.",
"kind": "Method",
"signature": "waitForResourceState(resourceName: string, targetState?: string): void",
"parameters": [
@@ -12769,7 +13106,7 @@
"name": "waitForResourceStates",
"capabilityId": "Aspire.Hosting/waitForResourceStates",
"qualifiedName": "waitForResourceStates",
- "description": "Waits for a resource to reach one of the specified states",
+ "description": "Waits for a resource to reach one of the specified states.",
"kind": "Method",
"signature": "waitForResourceStates(resourceName: string, targetStates: string[]): string",
"parameters": [
@@ -12795,6 +13132,8 @@
"fullName": "Aspire.Hosting.ApplicationModel.ResourceReadyEvent",
"kind": "handle",
"exposeProperties": true,
+ "description": "Event that is raised when a resource initially transitions to a ready state.",
+ "remarks": "This event is only fired the first time a resource transitions to a ready state after starting.",
"implementedInterfaces": [
"Aspire.Hosting.Eventing.IDistributedApplicationEvent",
"Aspire.Hosting.Eventing.IDistributedApplicationResourceEvent"
@@ -12804,7 +13143,7 @@
"name": "resource",
"capabilityId": "Aspire.Hosting.ApplicationModel/ResourceReadyEvent.resource",
"qualifiedName": "ResourceReadyEvent.resource",
- "description": "Gets the Resource property",
+ "description": "The resource that is in a healthy state.",
"kind": "PropertyGetter",
"signature": "resource(): IResource",
"parameters": [],
@@ -12835,6 +13174,8 @@
"fullName": "Aspire.Hosting.ApplicationModel.ResourceStoppedEvent",
"kind": "handle",
"exposeProperties": true,
+ "description": "This event is raised after a resource has stopped.",
+ "remarks": "This event allows for cleanup or unregistration logic when a resource is stopped by an orchestrator.",
"implementedInterfaces": [
"Aspire.Hosting.Eventing.IDistributedApplicationEvent",
"Aspire.Hosting.Eventing.IDistributedApplicationResourceEvent"
@@ -12874,13 +13215,14 @@
"name": "ResourceUrlsCallbackContext",
"fullName": "Aspire.Hosting.ApplicationModel.ResourceUrlsCallbackContext",
"kind": "handle",
+ "description": "Represents a callback context for resource URLs.",
"implementedInterfaces": [],
"capabilities": [
{
"name": "executionContext",
"capabilityId": "Aspire.Hosting.ApplicationModel/ResourceUrlsCallbackContext.executionContext",
"qualifiedName": "ResourceUrlsCallbackContext.executionContext",
- "description": "Gets the execution context for this callback invocation",
+ "description": "Gets the execution context associated with this invocation of the AppHost.",
"kind": "PropertyGetter",
"signature": "executionContext(): DistributedApplicationExecutionContext",
"parameters": [],
@@ -12894,13 +13236,14 @@
"name": "getEndpoint",
"capabilityId": "Aspire.Hosting.ApplicationModel/getEndpoint",
"qualifiedName": "ResourceUrlsCallbackContext.getEndpoint",
- "description": "Gets an endpoint reference from the associated resource",
+ "description": "Gets an endpoint reference from `Resource` for the specified endpoint name. If `Resource` does not implement `IResourceWithEndpoints` then returns `null`.",
"kind": "InstanceMethod",
"signature": "getEndpoint(name: string): EndpointReference",
"parameters": [
{
"name": "name",
- "type": "string"
+ "type": "string",
+ "description": "The name of the endpoint."
}
],
"returnType": "EndpointReference",
@@ -12913,7 +13256,7 @@
"name": "log",
"capabilityId": "Aspire.Hosting.ApplicationModel/ResourceUrlsCallbackContext.log",
"qualifiedName": "ResourceUrlsCallbackContext.log",
- "description": "Gets the callback logger facade",
+ "description": "Gets the logger facade used by polyglot callbacks.",
"kind": "PropertyGetter",
"signature": "log(): LogFacade",
"parameters": [],
@@ -12927,7 +13270,7 @@
"name": "resource",
"capabilityId": "Aspire.Hosting.ApplicationModel/ResourceUrlsCallbackContext.resource",
"qualifiedName": "ResourceUrlsCallbackContext.resource",
- "description": "Gets the resource associated with these URLs",
+ "description": "Gets the resource this the URLs are associated with.",
"kind": "PropertyGetter",
"signature": "resource(): IResource",
"parameters": [],
@@ -12941,7 +13284,7 @@
"name": "urls",
"capabilityId": "Aspire.Hosting.ApplicationModel/ResourceUrlsCallbackContext.urls",
"qualifiedName": "ResourceUrlsCallbackContext.urls",
- "description": "Gets the URL editor",
+ "description": "Gets the editor used to manipulate displayed URLs in polyglot callbacks.",
"kind": "PropertyGetter",
"signature": "urls(): ResourceUrlsEditor",
"parameters": [],
@@ -12957,24 +13300,27 @@
"name": "ResourceUrlsEditor",
"fullName": "Aspire.Hosting.ApplicationModel.ResourceUrlsEditor",
"kind": "handle",
+ "description": "Provides an ATS-first editor for resource URLs within polyglot callbacks.",
"implementedInterfaces": [],
"capabilities": [
{
"name": "add",
"capabilityId": "Aspire.Hosting.ApplicationModel/ResourceUrlsEditor.add",
"qualifiedName": "ResourceUrlsEditor.add",
- "description": "Adds a displayed URL",
+ "description": "Adds a displayed URL.",
"kind": "InstanceMethod",
"signature": "add(url: ReferenceExpression, displayText?: string): void",
"parameters": [
{
"name": "url",
- "type": "ReferenceExpression"
+ "type": "ReferenceExpression",
+ "description": "The URL to add, specified as a string or reference expression."
},
{
"name": "displayText",
"type": "string",
- "isOptional": true
+ "isOptional": true,
+ "description": "The optional display text to show for the URL."
}
],
"returnType": "void",
@@ -12987,22 +13333,25 @@
"name": "addForEndpoint",
"capabilityId": "Aspire.Hosting.ApplicationModel/ResourceUrlsEditor.addForEndpoint",
"qualifiedName": "ResourceUrlsEditor.addForEndpoint",
- "description": "Adds a displayed URL for a specific endpoint",
+ "description": "Adds a displayed URL for a specific endpoint.",
"kind": "InstanceMethod",
"signature": "addForEndpoint(endpoint: EndpointReference, url: ReferenceExpression, displayText?: string): void",
"parameters": [
{
"name": "endpoint",
- "type": "EndpointReference"
+ "type": "EndpointReference",
+ "description": "The endpoint the URL is associated with."
},
{
"name": "url",
- "type": "ReferenceExpression"
+ "type": "ReferenceExpression",
+ "description": "The URL to add, specified as a string or reference expression."
},
{
"name": "displayText",
"type": "string",
- "isOptional": true
+ "isOptional": true,
+ "description": "The optional display text to show for the URL."
}
],
"returnType": "void",
@@ -13015,7 +13364,7 @@
"name": "executionContext",
"capabilityId": "Aspire.Hosting.ApplicationModel/ResourceUrlsEditor.executionContext",
"qualifiedName": "ResourceUrlsEditor.executionContext",
- "description": "Gets the execution context for this URL editor",
+ "description": "Gets the execution context associated with this editor.",
"kind": "PropertyGetter",
"signature": "executionContext(): DistributedApplicationExecutionContext",
"parameters": [],
@@ -13032,13 +13381,14 @@
"fullName": "Aspire.Hosting.ApplicationModel.UpdateCommandStateContext",
"kind": "handle",
"exposeProperties": true,
+ "description": "Context for `UpdateState`.",
"implementedInterfaces": [],
"capabilities": [
{
"name": "serviceProvider",
"capabilityId": "Aspire.Hosting.ApplicationModel/UpdateCommandStateContext.serviceProvider",
"qualifiedName": "UpdateCommandStateContext.serviceProvider",
- "description": "Gets the ServiceProvider property",
+ "description": "The service provider.",
"kind": "PropertyGetter",
"signature": "serviceProvider(): IServiceProvider",
"parameters": [],
@@ -13047,25 +13397,6 @@
"expandedTargetTypes": [
"Aspire.Hosting.ApplicationModel.UpdateCommandStateContext"
]
- },
- {
- "name": "setServiceProvider",
- "capabilityId": "Aspire.Hosting.ApplicationModel/UpdateCommandStateContext.setServiceProvider",
- "qualifiedName": "UpdateCommandStateContext.setServiceProvider",
- "description": "Sets the ServiceProvider property",
- "kind": "PropertySetter",
- "signature": "setServiceProvider(value: IServiceProvider): UpdateCommandStateContext",
- "parameters": [
- {
- "name": "value",
- "type": "IServiceProvider"
- }
- ],
- "returnType": "UpdateCommandStateContext",
- "targetTypeId": "Aspire.Hosting/Aspire.Hosting.ApplicationModel.UpdateCommandStateContext",
- "expandedTargetTypes": [
- "Aspire.Hosting.ApplicationModel.UpdateCommandStateContext"
- ]
}
]
},
@@ -13074,13 +13405,14 @@
"fullName": "Aspire.Hosting.Ats.EventingSubscriberRegistrationContext",
"kind": "handle",
"exposeProperties": true,
+ "description": "Context passed to ATS-friendly eventing subscriber registrations.",
"implementedInterfaces": [],
"capabilities": [
{
"name": "cancellationToken",
"capabilityId": "Aspire.Hosting.Ats/EventingSubscriberRegistrationContext.cancellationToken",
"qualifiedName": "EventingSubscriberRegistrationContext.cancellationToken",
- "description": "Gets the CancellationToken property",
+ "description": "The cancellation token associated with the subscriber registration.",
"kind": "PropertyGetter",
"signature": "cancellationToken(): cancellationToken",
"parameters": [],
@@ -13094,7 +13426,7 @@
"name": "executionContext",
"capabilityId": "Aspire.Hosting.Ats/EventingSubscriberRegistrationContext.executionContext",
"qualifiedName": "EventingSubscriberRegistrationContext.executionContext",
- "description": "Gets the ExecutionContext property",
+ "description": "The execution context for the AppHost invocation.",
"kind": "PropertyGetter",
"signature": "executionContext(): DistributedApplicationExecutionContext",
"parameters": [],
@@ -13108,15 +13440,17 @@
"name": "onAfterResourcesCreated",
"capabilityId": "Aspire.Hosting/eventingSubscriberOnAfterResourcesCreated",
"qualifiedName": "onAfterResourcesCreated",
- "description": "Subscribes an eventing subscriber to the AfterResourcesCreated event",
+ "description": "Subscribes to the AfterResourcesCreated event from an eventing subscriber registration context.",
+ "returns": "The event subscription.",
"kind": "Method",
- "signature": "onAfterResourcesCreated(callback: (arg: AfterResourcesCreatedEvent) =\u003E Promise\u003Cvoid\u003E): DistributedApplicationEventSubscription",
+ "signature": "onAfterResourcesCreated(callback: (arg: AfterResourcesCreatedEvent) => Promise): DistributedApplicationEventSubscription",
"parameters": [
{
"name": "callback",
"type": "callback",
"isCallback": true,
- "callbackSignature": "(arg: AfterResourcesCreatedEvent) =\u003E Promise\u003Cvoid\u003E"
+ "callbackSignature": "(arg: AfterResourcesCreatedEvent) => Promise",
+ "description": "The callback to invoke when the event fires."
}
],
"returnType": "DistributedApplicationEventSubscription",
@@ -13129,15 +13463,17 @@
"name": "onBeforeStart",
"capabilityId": "Aspire.Hosting/eventingSubscriberOnBeforeStart",
"qualifiedName": "onBeforeStart",
- "description": "Subscribes an eventing subscriber to the BeforeStart event",
+ "description": "Subscribes to the BeforeStart event from an eventing subscriber registration context.",
+ "returns": "The event subscription.",
"kind": "Method",
- "signature": "onBeforeStart(callback: (arg: BeforeStartEvent) =\u003E Promise\u003Cvoid\u003E): DistributedApplicationEventSubscription",
+ "signature": "onBeforeStart(callback: (arg: BeforeStartEvent) => Promise): DistributedApplicationEventSubscription",
"parameters": [
{
"name": "callback",
"type": "callback",
"isCallback": true,
- "callbackSignature": "(arg: BeforeStartEvent) =\u003E Promise\u003Cvoid\u003E"
+ "callbackSignature": "(arg: BeforeStartEvent) => Promise",
+ "description": "The callback to invoke when the event fires."
}
],
"returnType": "DistributedApplicationEventSubscription",
@@ -13152,6 +13488,8 @@
"name": "DistributedApplication",
"fullName": "Aspire.Hosting.DistributedApplication",
"kind": "handle",
+ "description": "Represents a distributed application that implements the `IHost` and `IAsyncDisposable` interfaces.",
+ "remarks": "The `DistributedApplication` is an implementation of the `IHost` interface that orchestrates\nan Aspire application. To build an instance of the `DistributedApplication` class, use the\n`CreateBuilder` method to create an instance of the `IDistributedApplicationBuilder`\ninterface. Using the `IDistributedApplicationBuilder` interface you can configure the resources\nthat comprise the distributed application and describe the dependencies between them.\nOnce the distributed application has been defined use the `Build` method\nto create an instance of the `DistributedApplication` class. The `DistributedApplication` class\nexposes a `Run` method which then starts the distributed application and its\nresources.\nThe `CreateBuilder` method provides additional options for\nconstructing the `IDistributedApplicationBuilder` including disabling the Aspire dashboard (see `DisableDashboard`) or\nallowing unsecured communication between the browser and dashboard, and dashboard and app host (see `AllowUnsecuredTransport`.\nThe following example shows creating a PostgreSQL server resource with a database and referencing that\ndatabase in a .NET project.\n```\nvar builder = DistributedApplication.CreateBuilder(args);\nvar inventoryDatabase = builder.AddPostgres(\"mypostgres\").AddDatabase(\"inventory\");\nbuilder.AddProject()\n.WithReference(inventoryDatabase);\nbuilder.Build().Run();\n```",
"implementedInterfaces": [
"Microsoft.Extensions.Hosting.IHost",
"System.IAsyncDisposable",
@@ -13162,14 +13500,17 @@
"name": "run",
"capabilityId": "Aspire.Hosting/run",
"qualifiedName": "DistributedApplication.run",
- "description": "Runs the distributed application",
+ "description": "Runs an application and returns a Task that only completes when the token is triggered or shutdown is triggered and all `IHostedService` instances are stopped.",
+ "remarks": "When the Aspire app host is launched via `RunAsync` there are\ntwo possible modes that it is running in:\n-\n-\nDevelopers extending the Aspire application model should consider the lifetime\nof `IHostedService` instances which are added to the dependency injection\ncontainer. For more information on determining the mode that the app host is running\nin refer to `DistributedApplicationExecutionContext`.",
+ "returns": "The `Task` that represents the asynchronous operation.",
"kind": "InstanceMethod",
"signature": "run(cancellationToken?: cancellationToken): void",
"parameters": [
{
"name": "cancellationToken",
"type": "cancellationToken",
- "isOptional": true
+ "isOptional": true,
+ "description": "The token to trigger shutdown."
}
],
"returnType": "void",
@@ -13185,13 +13526,14 @@
"fullName": "Aspire.Hosting.DistributedApplicationExecutionContext",
"kind": "handle",
"exposeProperties": true,
+ "description": "Exposes the global contextual information for this invocation of the AppHost.",
"implementedInterfaces": [],
"capabilities": [
{
"name": "isPublishMode",
"capabilityId": "Aspire.Hosting/DistributedApplicationExecutionContext.isPublishMode",
"qualifiedName": "DistributedApplicationExecutionContext.isPublishMode",
- "description": "Gets the IsPublishMode property",
+ "description": "Returns true if the current operation is publishing.",
"kind": "PropertyGetter",
"signature": "isPublishMode(): boolean",
"parameters": [],
@@ -13205,7 +13547,7 @@
"name": "isRunMode",
"capabilityId": "Aspire.Hosting/DistributedApplicationExecutionContext.isRunMode",
"qualifiedName": "DistributedApplicationExecutionContext.isRunMode",
- "description": "Gets the IsRunMode property",
+ "description": "Returns true if the current operation is running.",
"kind": "PropertyGetter",
"signature": "isRunMode(): boolean",
"parameters": [],
@@ -13219,7 +13561,7 @@
"name": "operation",
"capabilityId": "Aspire.Hosting/DistributedApplicationExecutionContext.operation",
"qualifiedName": "DistributedApplicationExecutionContext.operation",
- "description": "Gets the Operation property",
+ "description": "The operation currently being performed by the AppHost.",
"kind": "PropertyGetter",
"signature": "operation(): DistributedApplicationOperation",
"parameters": [],
@@ -13233,7 +13575,7 @@
"name": "publisherName",
"capabilityId": "Aspire.Hosting/DistributedApplicationExecutionContext.publisherName",
"qualifiedName": "DistributedApplicationExecutionContext.publisherName",
- "description": "Gets the PublisherName property",
+ "description": "The name of the publisher that is being used if `Operation` is set to `Publish`.",
"kind": "PropertyGetter",
"signature": "publisherName(): string",
"parameters": [],
@@ -13247,7 +13589,7 @@
"name": "serviceProvider",
"capabilityId": "Aspire.Hosting/DistributedApplicationExecutionContext.serviceProvider",
"qualifiedName": "DistributedApplicationExecutionContext.serviceProvider",
- "description": "Gets the ServiceProvider property",
+ "description": "The `IServiceProvider` for the AppHost.",
"kind": "PropertyGetter",
"signature": "serviceProvider(): IServiceProvider",
"parameters": [],
@@ -13261,7 +13603,7 @@
"name": "setPublisherName",
"capabilityId": "Aspire.Hosting/DistributedApplicationExecutionContext.setPublisherName",
"qualifiedName": "DistributedApplicationExecutionContext.setPublisherName",
- "description": "Sets the PublisherName property",
+ "description": "The name of the publisher that is being used if `Operation` is set to `Publish`.",
"kind": "PropertySetter",
"signature": "setPublisherName(value: string): DistributedApplicationExecutionContext",
"parameters": [
@@ -13282,6 +13624,7 @@
"name": "DistributedApplicationExecutionContextOptions",
"fullName": "Aspire.Hosting.DistributedApplicationExecutionContextOptions",
"kind": "handle",
+ "description": "Configuration options and references that need to be exposed to the `DistributedApplicationExecutionContext`.",
"implementedInterfaces": [],
"capabilities": []
},
@@ -13289,6 +13632,7 @@
"name": "DistributedApplicationEventSubscription",
"fullName": "Aspire.Hosting.Eventing.DistributedApplicationEventSubscription",
"kind": "handle",
+ "description": "Represents a subscription to an event that is published during the lifecycle of the AppHost.",
"implementedInterfaces": [],
"capabilities": []
},
@@ -13296,6 +13640,7 @@
"name": "DistributedApplicationResourceEventSubscription",
"fullName": "Aspire.Hosting.Eventing.DistributedApplicationResourceEventSubscription",
"kind": "handle",
+ "description": "Represents a subscription to an event that is published during the lifecycle of the AppHost for a specific resource.",
"implementedInterfaces": [],
"capabilities": []
},
@@ -13304,6 +13649,7 @@
"fullName": "Aspire.Hosting.Eventing.IDistributedApplicationEvent",
"kind": "handle",
"isInterface": true,
+ "description": "Represents an event that is published during the lifecycle of the AppHost.",
"implementedInterfaces": [],
"capabilities": []
},
@@ -13313,19 +13659,21 @@
"kind": "handle",
"isInterface": true,
"exposeMethods": true,
+ "description": "Supports publishing and subscribing to events which are executed during the AppHost lifecycle.",
"implementedInterfaces": [],
"capabilities": [
{
"name": "unsubscribe",
"capabilityId": "Aspire.Hosting.Eventing/IDistributedApplicationEventing.unsubscribe",
"qualifiedName": "IDistributedApplicationEventing.unsubscribe",
- "description": "Invokes the Unsubscribe method",
+ "description": "Unsubscribe from an event.",
"kind": "InstanceMethod",
"signature": "unsubscribe(subscription: DistributedApplicationEventSubscription): void",
"parameters": [
{
"name": "subscription",
- "type": "DistributedApplicationEventSubscription"
+ "type": "DistributedApplicationEventSubscription",
+ "description": "The specific subscription to unsubscribe."
}
],
"returnType": "void",
@@ -13341,6 +13689,7 @@
"fullName": "Aspire.Hosting.Eventing.IDistributedApplicationResourceEvent",
"kind": "handle",
"isInterface": true,
+ "description": "Represents an event that is published during the lifecycle of the AppHost for a specific resource.",
"implementedInterfaces": [],
"capabilities": []
},
@@ -13356,7 +13705,7 @@
"name": "withHttpHealthCheck",
"capabilityId": "Aspire.Hosting/withExternalServiceHttpHealthCheck",
"qualifiedName": "withHttpHealthCheck",
- "description": "Adds an HTTP health check to the external service",
+ "description": "Adds an HTTP health check to the external service for polyglot app hosts.",
"kind": "Method",
"signature": "withHttpHealthCheck(path?: string, statusCode?: number, endpointName?: string): ExternalServiceResource",
"parameters": [
@@ -13391,6 +13740,8 @@
"fullName": "Aspire.Hosting.IDistributedApplicationBuilder",
"kind": "handle",
"isInterface": true,
+ "description": "A builder for creating instances of `DistributedApplication`.",
+ "remarks": "The `IDistributedApplicationBuilder` is the central interface for defining\nthe resources which are orchestrated by the `DistributedApplication` when\nthe app host is launched.\nTo create an instance of the `IDistributedApplicationBuilder` interface\ndevelopers should use the `CreateBuilder`\nmethod. Once the builder is created extension methods which target the `IDistributedApplicationBuilder`\ninterface can be used to add resources to the distributed application.\nThis example shows a distributed application that contains a .NET project (InventoryService) that uses\na Redis cache and a PostgreSQL database. The builder is created using the `CreateBuilder`\nmethod.\nThe AddRedis\nand AddPostgres\nmethods are used to add Redis and PostgreSQL container resources. The results of the methods are stored in variables for\nlater use.\n```\nvar builder = DistributedApplication.CreateBuilder(args);\nvar cache = builder.AddRedis(\"cache\");\nvar inventoryDatabase = builder.AddPostgres(\"postgres\").AddDatabase(\"inventory\");\nbuilder.AddProject(\"inventoryservice\")\n.WithReference(cache)\n.WithReference(inventory);\nbuilder.Build().Run();\n```",
"implementedInterfaces": [],
"capabilities": [
{
@@ -13422,17 +13773,20 @@
"name": "addContainer",
"capabilityId": "Aspire.Hosting/addContainer",
"qualifiedName": "addContainer",
- "description": "Adds a container resource",
+ "description": "Adds a container resource to the application.",
+ "returns": "The `IResourceBuilder`1` for chaining.",
"kind": "Method",
"signature": "addContainer(name: string, image: AddContainerOptions): ContainerResource",
"parameters": [
{
"name": "name",
- "type": "string"
+ "type": "string",
+ "description": "The name of the resource."
},
{
"name": "image",
- "type": "AddContainerOptions"
+ "type": "AddContainerOptions",
+ "description": "The image name or image options for the container."
}
],
"returnType": "ContainerResource",
@@ -13504,27 +13858,33 @@
"name": "addDockerfile",
"capabilityId": "Aspire.Hosting/addDockerfile",
"qualifiedName": "addDockerfile",
- "description": "Adds a container resource built from a Dockerfile",
+ "description": "Adds a Dockerfile to the application model that can be treated like a container resource.",
+ "remarks": "The `contextPath` is relative to the AppHost directory unless it is a fully qualified path.\nThe `dockerfilePath` is relative to the `contextPath` unless it is a fully qualified path.\nIf the `dockerfilePath` is not provided, it defaults to \"Dockerfile\" in the `contextPath`.\nWhen generating the manifest for deployment tools, the `AddDockerfile`\nmethod results in an additional attribute being added to the `container.v1` resource type which contains the configuration\nnecessary to allow the deployment tool to build the container image prior to deployment.\nCreates a container called `mycontainer` based on a Dockerfile in the context path `path/to/context`.\n```\nvar builder = DistributedApplication.CreateBuilder(args);\nbuilder.AddDockerfile(\"mycontainer\", \"path/to/context\");\nbuilder.Build().Run();\n```",
+ "returns": "A `IResourceBuilder`1`.",
"kind": "Method",
"signature": "addDockerfile(name: string, contextPath: string, dockerfilePath?: string, stage?: string): ContainerResource",
"parameters": [
{
"name": "name",
- "type": "string"
+ "type": "string",
+ "description": "The name of the resource."
},
{
"name": "contextPath",
- "type": "string"
+ "type": "string",
+ "description": "Path to be used as the context for the container image build."
},
{
"name": "dockerfilePath",
"type": "string",
- "isOptional": true
+ "isOptional": true,
+ "description": "Path to the Dockerfile relative to the `contextPath`. Defaults to \"Dockerfile\" if not specified."
},
{
"name": "stage",
"type": "string",
- "isOptional": true
+ "isOptional": true,
+ "description": "The stage representing the image to be published in a multi-stage Dockerfile."
}
],
"returnType": "ContainerResource",
@@ -13538,28 +13898,34 @@
"name": "addDockerfileBuilder",
"capabilityId": "Aspire.Hosting/addDockerfileBuilder",
"qualifiedName": "addDockerfileBuilder",
- "description": "Adds a container resource built from a programmatically generated Dockerfile",
+ "description": "Adds a Dockerfile to the application model that can be treated like a container resource, with the Dockerfile generated programmatically using the `DockerfileBuilder` API.",
+ "remarks": "This method provides a programmatic way to build Dockerfiles using the `DockerfileBuilder` API\ninstead of string manipulation.\nThe `contextPath` is relative to the AppHost directory unless it is fully qualified.\nCreates a container with a programmatically built Dockerfile:\n```\nvar builder = DistributedApplication.CreateBuilder(args);\nbuilder.AddDockerfileBuilder(\"mycontainer\", \"path/to/context\", context =>\n{\ncontext.Builder.From(\"alpine:latest\")\n.WorkDir(\"/app\")\n.Copy(\".\", \".\")\n.Cmd([\"./myapp\"]);\nreturn Task.CompletedTask;\n});\nbuilder.Build().Run();\n```",
+ "returns": "A `IResourceBuilder`1`.",
"kind": "Method",
- "signature": "addDockerfileBuilder(name: string, contextPath: string, callback: (arg: DockerfileBuilderCallbackContext) =\u003E Promise\u003Cvoid\u003E, stage?: string): ContainerResource",
+ "signature": "addDockerfileBuilder(name: string, contextPath: string, callback: (arg: DockerfileBuilderCallbackContext) => Promise, stage?: string): ContainerResource",
"parameters": [
{
"name": "name",
- "type": "string"
+ "type": "string",
+ "description": "The name of the resource."
},
{
"name": "contextPath",
- "type": "string"
+ "type": "string",
+ "description": "Path to be used as the context for the container image build."
},
{
"name": "callback",
"type": "callback",
"isCallback": true,
- "callbackSignature": "(arg: DockerfileBuilderCallbackContext) =\u003E Promise\u003Cvoid\u003E"
+ "callbackSignature": "(arg: DockerfileBuilderCallbackContext) => Promise",
+ "description": "A callback that uses the `DockerfileBuilder` API to construct the Dockerfile."
},
{
"name": "stage",
"type": "string",
- "isOptional": true
+ "isOptional": true,
+ "description": "The stage representing the image to be published in a multi-stage Dockerfile."
}
],
"returnType": "ContainerResource",
@@ -13573,17 +13939,20 @@
"name": "addDotnetTool",
"capabilityId": "Aspire.Hosting/addDotnetTool",
"qualifiedName": "addDotnetTool",
- "description": "Adds a .NET tool resource",
+ "description": "Adds a .NET tool resource to the application model.",
+ "returns": "The `IResourceBuilder`1`.",
"kind": "Method",
"signature": "addDotnetTool(name: string, packageId: string): DotnetToolResource",
"parameters": [
{
"name": "name",
- "type": "string"
+ "type": "string",
+ "description": "The name of the resource."
},
{
"name": "packageId",
- "type": "string"
+ "type": "string",
+ "description": "The package id of the tool."
}
],
"returnType": "DotnetToolResource",
@@ -13597,15 +13966,16 @@
"name": "addEventingSubscriber",
"capabilityId": "Aspire.Hosting/addEventingSubscriber",
"qualifiedName": "addEventingSubscriber",
- "description": "Adds an eventing subscriber",
+ "description": "Adds an ATS-friendly eventing subscriber callback to the distributed-application builder.",
"kind": "Method",
- "signature": "addEventingSubscriber(subscribe: (arg: EventingSubscriberRegistrationContext) =\u003E Promise\u003Cvoid\u003E): void",
+ "signature": "addEventingSubscriber(subscribe: (arg: EventingSubscriberRegistrationContext) => Promise): void",
"parameters": [
{
"name": "subscribe",
"type": "callback",
"isCallback": true,
- "callbackSignature": "(arg: EventingSubscriberRegistrationContext) =\u003E Promise\u003Cvoid\u003E"
+ "callbackSignature": "(arg: EventingSubscriberRegistrationContext) => Promise",
+ "description": "The callback that registers the event subscriptions."
}
],
"returnType": "void",
@@ -13618,25 +13988,31 @@
"name": "addExecutable",
"capabilityId": "Aspire.Hosting/addExecutable",
"qualifiedName": "addExecutable",
- "description": "Adds an executable resource",
+ "description": "Adds an executable resource to the application model.",
+ "remarks": "You can run any executable command using its full path.\nAs a security feature, Aspire doesn't run executable unless the command is located in a path listed in the PATH environment variable.\nTo run an executable file that's in the current directory, specify the full path or use the relative path `./` to represent the current directory.",
+ "returns": "The `IResourceBuilder`1`.",
"kind": "Method",
"signature": "addExecutable(name: string, command: string, workingDirectory: string, args: string[]): ExecutableResource",
"parameters": [
{
"name": "name",
- "type": "string"
+ "type": "string",
+ "description": "The name of the resource."
},
{
"name": "command",
- "type": "string"
+ "type": "string",
+ "description": "The executable path. This can be a fully qualified path or a executable to run from the shell/command line."
},
{
"name": "workingDirectory",
- "type": "string"
+ "type": "string",
+ "description": "The working directory of the executable."
},
{
"name": "args",
- "type": "string[]"
+ "type": "string[]",
+ "description": "The arguments to the executable."
}
],
"returnType": "ExecutableResource",
@@ -13711,23 +14087,27 @@
"name": "addParameterFromConfiguration",
"capabilityId": "Aspire.Hosting/addParameterFromConfiguration",
"qualifiedName": "addParameterFromConfiguration",
- "description": "Adds a parameter sourced from configuration",
+ "description": "Adds a parameter resource to the application, with a value coming from configuration.",
+ "returns": "Resource builder for the parameter.",
"kind": "Method",
"signature": "addParameterFromConfiguration(name: string, configurationKey: string, secret?: boolean): ParameterResource",
"parameters": [
{
"name": "name",
- "type": "string"
+ "type": "string",
+ "description": "Name of parameter resource"
},
{
"name": "configurationKey",
- "type": "string"
+ "type": "string",
+ "description": "Configuration key used to get the value of the parameter"
},
{
"name": "secret",
"type": "boolean",
"isOptional": true,
- "defaultValue": "False"
+ "defaultValue": "False",
+ "description": "Optional flag indicating whether the parameter should be regarded as secret."
}
],
"returnType": "ParameterResource",
@@ -13806,7 +14186,8 @@
"name": "getConfiguration",
"capabilityId": "Aspire.Hosting/getConfiguration",
"qualifiedName": "getConfiguration",
- "description": "Gets the application configuration",
+ "description": "Gets the application configuration.",
+ "returns": "The configuration handle.",
"kind": "Method",
"signature": "getConfiguration(): IConfiguration",
"parameters": [],
@@ -13820,7 +14201,7 @@
"name": "appHostDirectory",
"capabilityId": "Aspire.Hosting/IDistributedApplicationBuilder.appHostDirectory",
"qualifiedName": "IDistributedApplicationBuilder.appHostDirectory",
- "description": "Gets the AppHostDirectory property",
+ "description": "Directory of the project where the app host is located. Defaults to the content root if there's no project.",
"kind": "PropertyGetter",
"signature": "appHostDirectory(): string",
"parameters": [],
@@ -13834,7 +14215,9 @@
"name": "build",
"capabilityId": "Aspire.Hosting/build",
"qualifiedName": "IDistributedApplicationBuilder.build",
- "description": "Builds the distributed application",
+ "description": "Builds and returns a new `DistributedApplication` instance. This can only be called once.",
+ "remarks": "Callers of the `Build` method should only call it once. are responsible for the lifecycle of the\n`DistributedApplication` instance that is returned. Note that the `DistributedApplication`\ntype implements `IDisposable` and should be disposed of when it is no longer needed. Note that in\nmany templates and samples Dispose is omitted for brevity because in those cases the instance is destroyed\nwhen the process exists.",
+ "returns": "A new `DistributedApplication` instance.",
"kind": "InstanceMethod",
"signature": "build(): DistributedApplication",
"parameters": [],
@@ -13862,7 +14245,7 @@
"name": "eventing",
"capabilityId": "Aspire.Hosting/IDistributedApplicationBuilder.eventing",
"qualifiedName": "IDistributedApplicationBuilder.eventing",
- "description": "Gets the Eventing property",
+ "description": "Eventing infrastructure for AppHost lifecycle.",
"kind": "PropertyGetter",
"signature": "eventing(): IDistributedApplicationEventing",
"parameters": [],
@@ -13876,7 +14259,8 @@
"name": "executionContext",
"capabilityId": "Aspire.Hosting/IDistributedApplicationBuilder.executionContext",
"qualifiedName": "IDistributedApplicationBuilder.executionContext",
- "description": "Gets the ExecutionContext property",
+ "description": "Execution context for this invocation of the AppHost.",
+ "remarks": "The `ExecutionContext` property provides access key information about the context\nin which the distributed application is running. The most important properties that\nthe `DistributedApplicationExecutionContext` provides is the\n`IsPublishMode` and `IsRunMode`\nproperties. Developers building Aspire based applications may whish to change the application\nmodel depending on whether they are running locally, or whether they are publishing to the cloud.\nAn example of using the `IsRunMode` property on the `IDistributedApplicationBuilder` via\nthe `ApplicationBuilder`. In this case an extension method is used to generate a stable node name for RabbitMQ for local\ndevelopment runs.\n```\nprivate static IResourceBuilder RunWithStableNodeName(this IResourceBuilder builder)\n{\nif (builder.ApplicationBuilder.ExecutionContext.IsRunMode)\n{\nbuilder.WithEnvironment(context =>\n{\n// Set a stable node name so queue storage is consistent between sessions\nvar nodeName = $\"{builder.Resource.Name}@localhost\";\ncontext.EnvironmentVariables[\"RABBITMQ_NODENAME\"] = nodeName;\n});\n}\nreturn builder;\n}\n```",
"kind": "PropertyGetter",
"signature": "executionContext(): DistributedApplicationExecutionContext",
"parameters": [],
@@ -13890,7 +14274,8 @@
"name": "pipeline",
"capabilityId": "Aspire.Hosting/IDistributedApplicationBuilder.pipeline",
"qualifiedName": "IDistributedApplicationBuilder.pipeline",
- "description": "Gets the Pipeline property",
+ "description": "Gets the deployment pipeline for this distributed application.",
+ "remarks": "The pipeline allows adding custom deployment steps that execute during the deploy process.\nSteps can declare dependencies on other steps to control execution order.",
"kind": "PropertyGetter",
"signature": "pipeline(): IDistributedApplicationPipeline",
"parameters": [],
@@ -13904,7 +14289,8 @@
"name": "userSecretsManager",
"capabilityId": "Aspire.Hosting/IDistributedApplicationBuilder.userSecretsManager",
"qualifiedName": "IDistributedApplicationBuilder.userSecretsManager",
- "description": "Gets the UserSecretsManager property",
+ "description": "Gets the service for managing user secrets.",
+ "remarks": "The `UserSecretsManager` provides a centralized way to manage user secrets\nused by Aspire, enabling testability and consistent secret management.",
"kind": "PropertyGetter",
"signature": "userSecretsManager(): IUserSecretsManager",
"parameters": [],
@@ -13918,15 +14304,18 @@
"name": "subscribeAfterResourcesCreated",
"capabilityId": "Aspire.Hosting/subscribeAfterResourcesCreated",
"qualifiedName": "subscribeAfterResourcesCreated",
- "description": "Subscribes to the AfterResourcesCreated event",
+ "description": "Subscribes to the AfterResourcesCreated event, which fires after all resources are created.",
+ "remarks": "At this point, all resources have been instantiated but may not yet be running.\nThis is useful for performing cross-resource configuration.",
+ "returns": "A subscription handle that can be used to unsubscribe.",
"kind": "Method",
- "signature": "subscribeAfterResourcesCreated(callback: (arg: AfterResourcesCreatedEvent) =\u003E Promise\u003Cvoid\u003E): DistributedApplicationEventSubscription",
+ "signature": "subscribeAfterResourcesCreated(callback: (arg: AfterResourcesCreatedEvent) => Promise): DistributedApplicationEventSubscription",
"parameters": [
{
"name": "callback",
"type": "callback",
"isCallback": true,
- "callbackSignature": "(arg: AfterResourcesCreatedEvent) =\u003E Promise\u003Cvoid\u003E"
+ "callbackSignature": "(arg: AfterResourcesCreatedEvent) => Promise",
+ "description": "A callback that receives the exported event when the event fires."
}
],
"returnType": "DistributedApplicationEventSubscription",
@@ -13939,15 +14328,18 @@
"name": "subscribeBeforeStart",
"capabilityId": "Aspire.Hosting/subscribeBeforeStart",
"qualifiedName": "subscribeBeforeStart",
- "description": "Subscribes to the BeforeStart event",
+ "description": "Subscribes to the BeforeStart event, which fires before the application starts.",
+ "remarks": "This event provides access to the service provider and distributed application model,\nallowing you to perform final configuration or validation before resources start.",
+ "returns": "A subscription handle that can be used to unsubscribe.",
"kind": "Method",
- "signature": "subscribeBeforeStart(callback: (arg: BeforeStartEvent) =\u003E Promise\u003Cvoid\u003E): DistributedApplicationEventSubscription",
+ "signature": "subscribeBeforeStart(callback: (arg: BeforeStartEvent) => Promise): DistributedApplicationEventSubscription",
"parameters": [
{
"name": "callback",
"type": "callback",
"isCallback": true,
- "callbackSignature": "(arg: BeforeStartEvent) =\u003E Promise\u003Cvoid\u003E"
+ "callbackSignature": "(arg: BeforeStartEvent) => Promise",
+ "description": "A callback that receives the exported event when the event fires."
}
],
"returnType": "DistributedApplicationEventSubscription",
@@ -13960,15 +14352,16 @@
"name": "tryAddEventingSubscriber",
"capabilityId": "Aspire.Hosting/tryAddEventingSubscriber",
"qualifiedName": "tryAddEventingSubscriber",
- "description": "Attempts to add an eventing subscriber",
+ "description": "Attempts to add an ATS-friendly eventing subscriber callback to the distributed-application builder.",
"kind": "Method",
- "signature": "tryAddEventingSubscriber(subscribe: (arg: EventingSubscriberRegistrationContext) =\u003E Promise\u003Cvoid\u003E): void",
+ "signature": "tryAddEventingSubscriber(subscribe: (arg: EventingSubscriberRegistrationContext) => Promise): void",
"parameters": [
{
"name": "subscribe",
"type": "callback",
"isCallback": true,
- "callbackSignature": "(arg: EventingSubscriberRegistrationContext) =\u003E Promise\u003Cvoid\u003E"
+ "callbackSignature": "(arg: EventingSubscriberRegistrationContext) => Promise",
+ "description": "The callback that registers the event subscriptions."
}
],
"returnType": "void",
@@ -13990,7 +14383,8 @@
"name": "clearContainerFilesSources",
"capabilityId": "Aspire.Hosting/clearContainerFilesSources",
"qualifiedName": "clearContainerFilesSources",
- "description": "Clears all container file sources",
+ "description": "Removes any container files source annotation from the resource being built.",
+ "returns": "The resource builder instance with the container files source annotation applied.",
"kind": "Method",
"signature": "clearContainerFilesSources(): IResourceWithContainerFiles",
"parameters": [],
@@ -14005,13 +14399,15 @@
"name": "withContainerFilesSource",
"capabilityId": "Aspire.Hosting/withContainerFilesSource",
"qualifiedName": "withContainerFilesSource",
- "description": "Sets the source directory for container files",
+ "description": "Adds a container files source annotation to the resource being built, specifying the path to the container files source.",
+ "returns": "The resource builder instance with the container files source annotation applied.",
"kind": "Method",
"signature": "withContainerFilesSource(sourcePath: string): IResourceWithContainerFiles",
"parameters": [
{
"name": "sourcePath",
- "type": "string"
+ "type": "string",
+ "description": "The path to the container files source to associate with the resource. Cannot be null."
}
],
"returnType": "IResourceWithContainerFiles",
@@ -14030,27 +14426,31 @@
"isInterface": true,
"exposeProperties": true,
"exposeMethods": true,
+ "description": "Defines an interface for managing user secrets with support for read and write operations.",
"implementedInterfaces": [],
"capabilities": [
{
"name": "getOrSetSecret",
"capabilityId": "Aspire.Hosting/getOrSetSecret",
"qualifiedName": "getOrSetSecret",
- "description": "Gets a secret value if it exists, or sets it to the provided value if it does not",
+ "description": "Gets a secret value if it exists in configuration, or sets it to the provided value if it does not.",
"kind": "Method",
"signature": "getOrSetSecret(resourceBuilder: IResource, name: string, value: string): void",
"parameters": [
{
"name": "resourceBuilder",
- "type": "IResource"
+ "type": "IResource",
+ "description": "A resource builder from the target application."
},
{
"name": "name",
- "type": "string"
+ "type": "string",
+ "description": "The secret name."
},
{
"name": "value",
- "type": "string"
+ "type": "string",
+ "description": "The value to persist when the secret is missing."
}
],
"returnType": "void",
@@ -14063,7 +14463,7 @@
"name": "filePath",
"capabilityId": "Aspire.Hosting/IUserSecretsManager.filePath",
"qualifiedName": "IUserSecretsManager.filePath",
- "description": "Gets the FilePath property",
+ "description": "Gets the path to the user secrets file.",
"kind": "PropertyGetter",
"signature": "filePath(): string",
"parameters": [],
@@ -14077,7 +14477,8 @@
"name": "isAvailable",
"capabilityId": "Aspire.Hosting/IUserSecretsManager.isAvailable",
"qualifiedName": "IUserSecretsManager.isAvailable",
- "description": "Gets the IsAvailable property",
+ "description": "Gets a value indicating whether user secrets are available.",
+ "remarks": "Returns `true` if the project has a user secrets ID configured; otherwise, `false`.",
"kind": "PropertyGetter",
"signature": "isAvailable(): boolean",
"parameters": [],
@@ -14091,13 +14492,16 @@
"name": "tryDeleteSecret",
"capabilityId": "Aspire.Hosting/IUserSecretsManager.tryDeleteSecret",
"qualifiedName": "IUserSecretsManager.tryDeleteSecret",
- "description": "Attempts to delete a user secret value",
+ "description": "Attempts to delete a user secret value synchronously.",
+ "remarks": "The default implementation returns `false` so existing implementations remain compatible.",
+ "returns": "True if the secret was deleted successfully; otherwise, false.",
"kind": "InstanceMethod",
"signature": "tryDeleteSecret(name: string): boolean",
"parameters": [
{
"name": "name",
- "type": "string"
+ "type": "string",
+ "description": "The name of the secret."
}
],
"returnType": "boolean",
@@ -14110,17 +14514,20 @@
"name": "trySetSecret",
"capabilityId": "Aspire.Hosting/IUserSecretsManager.trySetSecret",
"qualifiedName": "IUserSecretsManager.trySetSecret",
- "description": "Attempts to set a user secret value",
+ "description": "Attempts to set a user secret value synchronously.",
+ "returns": "True if the secret was set successfully; otherwise, false.",
"kind": "InstanceMethod",
"signature": "trySetSecret(name: string, value: string): boolean",
"parameters": [
{
"name": "name",
- "type": "string"
+ "type": "string",
+ "description": "The name of the secret."
},
{
"name": "value",
- "type": "string"
+ "type": "string",
+ "description": "The value of the secret."
}
],
"returnType": "boolean",
@@ -14133,18 +14540,21 @@
"name": "saveStateJson",
"capabilityId": "Aspire.Hosting/saveStateJson",
"qualifiedName": "saveStateJson",
- "description": "Saves state to user secrets from a JSON string",
+ "description": "Saves state to user secrets from a JSON string.",
+ "returns": "A task that completes when the state is saved.",
"kind": "Method",
"signature": "saveStateJson(json: string, cancellationToken?: cancellationToken): void",
"parameters": [
{
"name": "json",
- "type": "string"
+ "type": "string",
+ "description": "The JSON object payload to persist."
},
{
"name": "cancellationToken",
"type": "cancellationToken",
- "isOptional": true
+ "isOptional": true,
+ "description": "The cancellation token."
}
],
"returnType": "void",
@@ -14160,35 +14570,40 @@
"fullName": "Aspire.Hosting.Pipelines.IDistributedApplicationPipeline",
"kind": "handle",
"isInterface": true,
+ "description": "Represents a pipeline for executing deployment steps in a distributed application.",
"implementedInterfaces": [],
"capabilities": [
{
"name": "addStep",
"capabilityId": "Aspire.Hosting/addStep",
"qualifiedName": "addStep",
- "description": "Adds a pipeline step to the application",
+ "description": "Adds an application-level pipeline step in a TypeScript-friendly shape.",
"kind": "Method",
- "signature": "addStep(stepName: string, callback: (arg: PipelineStepContext) =\u003E Promise\u003Cvoid\u003E, dependsOn?: string[], requiredBy?: string[]): void",
+ "signature": "addStep(stepName: string, callback: (arg: PipelineStepContext) => Promise, dependsOn?: string[], requiredBy?: string[]): void",
"parameters": [
{
"name": "stepName",
- "type": "string"
+ "type": "string",
+ "description": "The unique name of the pipeline step."
},
{
"name": "callback",
"type": "callback",
"isCallback": true,
- "callbackSignature": "(arg: PipelineStepContext) =\u003E Promise\u003Cvoid\u003E"
+ "callbackSignature": "(arg: PipelineStepContext) => Promise",
+ "description": "The callback to execute when the step runs."
},
{
"name": "dependsOn",
"type": "string[]",
- "isOptional": true
+ "isOptional": true,
+ "description": "Optional step names that this step depends on."
},
{
"name": "requiredBy",
"type": "string[]",
- "isOptional": true
+ "isOptional": true,
+ "description": "Optional step names that require this step."
}
],
"returnType": "void",
@@ -14201,15 +14616,16 @@
"name": "configure",
"capabilityId": "Aspire.Hosting/configure",
"qualifiedName": "configure",
- "description": "Configures the application pipeline via a callback",
+ "description": "Registers a pipeline configuration callback in a TypeScript-friendly shape.",
"kind": "Method",
- "signature": "configure(callback: (arg: PipelineConfigurationContext) =\u003E Promise\u003Cvoid\u003E): void",
+ "signature": "configure(callback: (arg: PipelineConfigurationContext) => Promise): void",
"parameters": [
{
"name": "callback",
"type": "callback",
"isCallback": true,
- "callbackSignature": "(arg: PipelineConfigurationContext) =\u003E Promise\u003Cvoid\u003E"
+ "callbackSignature": "(arg: PipelineConfigurationContext) => Promise",
+ "description": "The callback to execute during pipeline configuration."
}
],
"returnType": "void",
@@ -14222,7 +14638,9 @@
"name": "disableBuildOnlyContainerValidation",
"capabilityId": "Aspire.Hosting/disableBuildOnlyContainerValidation",
"qualifiedName": "disableBuildOnlyContainerValidation",
- "description": "Disables publish and deploy validation for unconsumed build-only containers.",
+ "description": "Disables the publish and deploy validation that requires build-only containers to be consumed by another resource.",
+ "remarks": "This is an application-wide escape hatch for scenarios where the build-only container validation is too restrictive\nfor a particular app. Prefer wiring build-only containers through `PublishWithContainerFiles` or\n`PublishWithStaticFiles` when possible.",
+ "returns": "The distributed application pipeline for chaining.",
"kind": "Method",
"signature": "disableBuildOnlyContainerValidation(): IDistributedApplicationPipeline",
"parameters": [],
@@ -14239,13 +14657,14 @@
"fullName": "Aspire.Hosting.Pipelines.IReportingStep",
"kind": "handle",
"isInterface": true,
+ "description": "Represents a publishing step, which can contain multiple tasks.",
"implementedInterfaces": [],
"capabilities": [
{
"name": "completeStep",
"capabilityId": "Aspire.Hosting/completeStep",
"qualifiedName": "completeStep",
- "description": "Completes the reporting step with plain-text completion text",
+ "description": "Completes the reporting step with plain-text completion text.",
"kind": "Method",
"signature": "completeStep(completionText: string, completionState?: string, cancellationToken?: cancellationToken): void",
"parameters": [
@@ -14275,7 +14694,7 @@
"name": "completeStepMarkdown",
"capabilityId": "Aspire.Hosting/completeStepMarkdown",
"qualifiedName": "completeStepMarkdown",
- "description": "Completes the reporting step with Markdown-formatted completion text",
+ "description": "Completes the reporting step with Markdown-formatted completion text.",
"kind": "Method",
"signature": "completeStepMarkdown(markdownString: string, completionState?: string, cancellationToken?: cancellationToken): void",
"parameters": [
@@ -14305,7 +14724,7 @@
"name": "createMarkdownTask",
"capabilityId": "Aspire.Hosting/createMarkdownTask",
"qualifiedName": "createMarkdownTask",
- "description": "Creates a reporting task with Markdown-formatted status text",
+ "description": "Creates a reporting task with Markdown-formatted status text.",
"kind": "Method",
"signature": "createMarkdownTask(markdownString: string, cancellationToken?: cancellationToken): IReportingTask",
"parameters": [
@@ -14329,7 +14748,7 @@
"name": "createTask",
"capabilityId": "Aspire.Hosting/createTask",
"qualifiedName": "createTask",
- "description": "Creates a reporting task with plain-text status text",
+ "description": "Creates a reporting task with plain-text status text.",
"kind": "Method",
"signature": "createTask(statusText: string, cancellationToken?: cancellationToken): IReportingTask",
"parameters": [
@@ -14353,7 +14772,7 @@
"name": "logStep",
"capabilityId": "Aspire.Hosting/logStep",
"qualifiedName": "logStep",
- "description": "Logs a plain-text message for the reporting step",
+ "description": "Logs a plain-text message for the reporting step.",
"kind": "Method",
"signature": "logStep(level: string, message: string): void",
"parameters": [
@@ -14376,7 +14795,7 @@
"name": "logStepMarkdown",
"capabilityId": "Aspire.Hosting/logStepMarkdown",
"qualifiedName": "logStepMarkdown",
- "description": "Logs a Markdown-formatted message for the reporting step",
+ "description": "Logs a Markdown-formatted message for the reporting step.",
"kind": "Method",
"signature": "logStepMarkdown(level: string, markdownString: string): void",
"parameters": [
@@ -14402,13 +14821,14 @@
"fullName": "Aspire.Hosting.Pipelines.IReportingTask",
"kind": "handle",
"isInterface": true,
+ "description": "Represents a publishing task, which belongs to a step.",
"implementedInterfaces": [],
"capabilities": [
{
"name": "completeTask",
"capabilityId": "Aspire.Hosting/completeTask",
"qualifiedName": "completeTask",
- "description": "Completes the reporting task with plain-text completion text",
+ "description": "Completes the reporting task with plain-text completion text.",
"kind": "Method",
"signature": "completeTask(completionMessage?: string, completionState?: string, cancellationToken?: cancellationToken): void",
"parameters": [
@@ -14439,7 +14859,7 @@
"name": "completeTaskMarkdown",
"capabilityId": "Aspire.Hosting/completeTaskMarkdown",
"qualifiedName": "completeTaskMarkdown",
- "description": "Completes the reporting task with Markdown-formatted completion text",
+ "description": "Completes the reporting task with Markdown-formatted completion text.",
"kind": "Method",
"signature": "completeTaskMarkdown(markdownString: string, completionState?: string, cancellationToken?: cancellationToken): void",
"parameters": [
@@ -14469,7 +14889,7 @@
"name": "updateTask",
"capabilityId": "Aspire.Hosting/updateTask",
"qualifiedName": "updateTask",
- "description": "Updates the reporting task with plain-text status text",
+ "description": "Updates the reporting task with plain-text status text.",
"kind": "Method",
"signature": "updateTask(statusText: string, cancellationToken?: cancellationToken): void",
"parameters": [
@@ -14493,7 +14913,7 @@
"name": "updateTaskMarkdown",
"capabilityId": "Aspire.Hosting/updateTaskMarkdown",
"qualifiedName": "updateTaskMarkdown",
- "description": "Updates the reporting task with Markdown-formatted status text",
+ "description": "Updates the reporting task with Markdown-formatted status text.",
"kind": "Method",
"signature": "updateTaskMarkdown(markdownString: string, cancellationToken?: cancellationToken): void",
"parameters": [
@@ -14519,19 +14939,22 @@
"name": "PipelineConfigurationContext",
"fullName": "Aspire.Hosting.Pipelines.PipelineConfigurationContext",
"kind": "handle",
+ "description": "Provides contextual information for pipeline configuration callbacks.",
"implementedInterfaces": [],
"capabilities": [
{
"name": "getSteps",
"capabilityId": "Aspire.Hosting.Pipelines/getSteps",
"qualifiedName": "PipelineConfigurationContext.getSteps",
- "description": "Gets pipeline steps with the specified tag",
+ "description": "Gets all pipeline steps with the specified tag.",
+ "returns": "A collection of steps that have the specified tag.",
"kind": "InstanceMethod",
"signature": "getSteps(tag: string): PipelineStep[]",
"parameters": [
{
"name": "tag",
- "type": "string"
+ "type": "string",
+ "description": "The tag to search for."
}
],
"returnType": "PipelineStep[]",
@@ -14544,7 +14967,7 @@
"name": "log",
"capabilityId": "Aspire.Hosting.Pipelines/PipelineConfigurationContext.log",
"qualifiedName": "PipelineConfigurationContext.log",
- "description": "Gets the callback logger facade",
+ "description": "Gets the logger facade used by polyglot callbacks.",
"kind": "PropertyGetter",
"signature": "log(): LogFacade",
"parameters": [],
@@ -14558,7 +14981,7 @@
"name": "pipeline",
"capabilityId": "Aspire.Hosting.Pipelines/PipelineConfigurationContext.pipeline",
"qualifiedName": "PipelineConfigurationContext.pipeline",
- "description": "Gets the pipeline editor",
+ "description": "Gets the pipeline editor used by polyglot callbacks.",
"kind": "PropertyGetter",
"signature": "pipeline(): PipelineEditor",
"parameters": [],
@@ -14575,13 +14998,14 @@
"fullName": "Aspire.Hosting.Pipelines.PipelineContext",
"kind": "handle",
"exposeProperties": true,
+ "description": "Provides contextual information and services for the pipeline execution process of a distributed application.",
"implementedInterfaces": [],
"capabilities": [
{
"name": "cancellationToken",
"capabilityId": "Aspire.Hosting.Pipelines/PipelineContext.cancellationToken",
"qualifiedName": "PipelineContext.cancellationToken",
- "description": "Gets the CancellationToken property",
+ "description": "Gets the cancellation token for the pipeline operation.",
"kind": "PropertyGetter",
"signature": "cancellationToken(): cancellationToken",
"parameters": [],
@@ -14595,7 +15019,7 @@
"name": "executionContext",
"capabilityId": "Aspire.Hosting.Pipelines/PipelineContext.executionContext",
"qualifiedName": "PipelineContext.executionContext",
- "description": "Gets the ExecutionContext property",
+ "description": "Gets the execution context for the distributed application.",
"kind": "PropertyGetter",
"signature": "executionContext(): DistributedApplicationExecutionContext",
"parameters": [],
@@ -14609,7 +15033,7 @@
"name": "logger",
"capabilityId": "Aspire.Hosting.Pipelines/PipelineContext.logger",
"qualifiedName": "PipelineContext.logger",
- "description": "Gets the Logger property",
+ "description": "Gets the logger for pipeline operations.",
"kind": "PropertyGetter",
"signature": "logger(): ILogger",
"parameters": [],
@@ -14623,7 +15047,7 @@
"name": "model",
"capabilityId": "Aspire.Hosting.Pipelines/PipelineContext.model",
"qualifiedName": "PipelineContext.model",
- "description": "Gets the Model property",
+ "description": "Gets the distributed application model to be deployed.",
"kind": "PropertyGetter",
"signature": "model(): DistributedApplicationModel",
"parameters": [],
@@ -14637,7 +15061,7 @@
"name": "services",
"capabilityId": "Aspire.Hosting.Pipelines/PipelineContext.services",
"qualifiedName": "PipelineContext.services",
- "description": "Gets the Services property",
+ "description": "Gets the service provider for dependency resolution.",
"kind": "PropertyGetter",
"signature": "services(): IServiceProvider",
"parameters": [],
@@ -14651,7 +15075,7 @@
"name": "setCancellationToken",
"capabilityId": "Aspire.Hosting.Pipelines/PipelineContext.setCancellationToken",
"qualifiedName": "PipelineContext.setCancellationToken",
- "description": "Sets the CancellationToken property",
+ "description": "Gets the cancellation token for the pipeline operation.",
"kind": "PropertySetter",
"signature": "setCancellationToken(value: cancellationToken): PipelineContext",
"parameters": [
@@ -14670,7 +15094,8 @@
"name": "summary",
"capabilityId": "Aspire.Hosting.Pipelines/PipelineContext.summary",
"qualifiedName": "PipelineContext.summary",
- "description": "Gets the Summary property",
+ "description": "Gets the pipeline summary that steps can add information to. The summary will be displayed to users after pipeline execution completes.",
+ "remarks": "Pipeline steps can add key-value pairs to the summary to provide useful information\nabout the pipeline execution, such as deployment targets, resource names, URLs, etc.",
"kind": "PropertyGetter",
"signature": "summary(): PipelineSummary",
"parameters": [],
@@ -14686,13 +15111,15 @@
"name": "PipelineEditor",
"fullName": "Aspire.Hosting.Pipelines.PipelineEditor",
"kind": "handle",
+ "description": "Provides an ATS-first editor for pipeline configuration callbacks.",
"implementedInterfaces": [],
"capabilities": [
{
"name": "steps",
"capabilityId": "Aspire.Hosting.Pipelines/steps",
"qualifiedName": "PipelineEditor.steps",
- "description": "Gets all configured pipeline steps",
+ "description": "Gets all configured pipeline steps.",
+ "returns": "The configured pipeline steps.",
"kind": "InstanceMethod",
"signature": "steps(): PipelineStep[]",
"parameters": [],
@@ -14706,13 +15133,15 @@
"name": "stepsByTag",
"capabilityId": "Aspire.Hosting.Pipelines/stepsByTag",
"qualifiedName": "PipelineEditor.stepsByTag",
- "description": "Gets pipeline steps with the specified tag",
+ "description": "Gets all pipeline steps that have the specified tag.",
+ "returns": "The matching pipeline steps.",
"kind": "InstanceMethod",
"signature": "stepsByTag(tag: string): PipelineStep[]",
"parameters": [
{
"name": "tag",
- "type": "string"
+ "type": "string",
+ "description": "The tag to search for."
}
],
"returnType": "PipelineStep[]",
@@ -14727,19 +15156,21 @@
"name": "PipelineStep",
"fullName": "Aspire.Hosting.Pipelines.PipelineStep",
"kind": "handle",
+ "description": "Represents a step in the deployment pipeline.",
"implementedInterfaces": [],
"capabilities": [
{
"name": "addTag",
"capabilityId": "Aspire.Hosting.Pipelines/addTag",
"qualifiedName": "PipelineStep.addTag",
- "description": "Adds a tag to the step",
+ "description": "Adds a tag to the step.",
"kind": "InstanceMethod",
"signature": "addTag(tag: string): void",
"parameters": [
{
"name": "tag",
- "type": "string"
+ "type": "string",
+ "description": "The tag to add."
}
],
"returnType": "void",
@@ -14752,13 +15183,14 @@
"name": "dependsOn",
"capabilityId": "Aspire.Hosting.Pipelines/dependsOn",
"qualifiedName": "PipelineStep.dependsOn",
- "description": "Adds a dependency on another step by name",
+ "description": "Adds a dependency on another step.",
"kind": "InstanceMethod",
"signature": "dependsOn(stepName: string): void",
"parameters": [
{
"name": "stepName",
- "type": "string"
+ "type": "string",
+ "description": "The name of the step to depend on."
}
],
"returnType": "void",
@@ -14771,7 +15203,8 @@
"name": "description",
"capabilityId": "Aspire.Hosting.Pipelines/PipelineStep.description",
"qualifiedName": "PipelineStep.description",
- "description": "Gets the human-readable description of the step",
+ "description": "Gets the exported description projection for polyglot SDKs.",
+ "remarks": "This projection avoids exporting an ATS setter for the public init-only `Description` property.",
"kind": "PropertyGetter",
"signature": "description(): string",
"parameters": [],
@@ -14785,7 +15218,8 @@
"name": "name",
"capabilityId": "Aspire.Hosting.Pipelines/PipelineStep.name",
"qualifiedName": "PipelineStep.name",
- "description": "Gets the unique name of the step",
+ "description": "Gets the exported name projection for polyglot SDKs.",
+ "remarks": "This projection avoids exporting an ATS setter for the public init-only `Name` property.",
"kind": "PropertyGetter",
"signature": "name(): string",
"parameters": [],
@@ -14799,13 +15233,14 @@
"name": "requiredBy",
"capabilityId": "Aspire.Hosting.Pipelines/requiredBy",
"qualifiedName": "PipelineStep.requiredBy",
- "description": "Specifies that another step requires this step by name",
+ "description": "Specifies that this step is required by another step. This creates the inverse relationship where the other step will depend on this step.",
"kind": "InstanceMethod",
"signature": "requiredBy(stepName: string): void",
"parameters": [
{
"name": "stepName",
- "type": "string"
+ "type": "string",
+ "description": "The name of the step that requires this step."
}
],
"returnType": "void",
@@ -14821,13 +15256,15 @@
"fullName": "Aspire.Hosting.Pipelines.PipelineStepContext",
"kind": "handle",
"exposeProperties": true,
+ "description": "Provides contextual information for a specific pipeline step execution.",
+ "remarks": "This context combines the shared pipeline context with a step-specific publishing step,\nallowing each step to track its own tasks and completion state independently.",
"implementedInterfaces": [],
"capabilities": [
{
"name": "cancellationToken",
"capabilityId": "Aspire.Hosting.Pipelines/PipelineStepContext.cancellationToken",
"qualifiedName": "PipelineStepContext.cancellationToken",
- "description": "Gets the CancellationToken property",
+ "description": "Gets the cancellation token for the pipeline operation.",
"kind": "PropertyGetter",
"signature": "cancellationToken(): cancellationToken",
"parameters": [],
@@ -14841,7 +15278,7 @@
"name": "executionContext",
"capabilityId": "Aspire.Hosting.Pipelines/PipelineStepContext.executionContext",
"qualifiedName": "PipelineStepContext.executionContext",
- "description": "Gets the ExecutionContext property",
+ "description": "Gets the execution context for the distributed application.",
"kind": "PropertyGetter",
"signature": "executionContext(): DistributedApplicationExecutionContext",
"parameters": [],
@@ -14855,7 +15292,7 @@
"name": "logger",
"capabilityId": "Aspire.Hosting.Pipelines/PipelineStepContext.logger",
"qualifiedName": "PipelineStepContext.logger",
- "description": "Gets the Logger property",
+ "description": "Gets the logger for pipeline operations that writes to both the pipeline logger and the step logger.",
"kind": "PropertyGetter",
"signature": "logger(): ILogger",
"parameters": [],
@@ -14869,7 +15306,7 @@
"name": "model",
"capabilityId": "Aspire.Hosting.Pipelines/PipelineStepContext.model",
"qualifiedName": "PipelineStepContext.model",
- "description": "Gets the Model property",
+ "description": "Gets the distributed application model to be deployed.",
"kind": "PropertyGetter",
"signature": "model(): DistributedApplicationModel",
"parameters": [],
@@ -14883,7 +15320,7 @@
"name": "pipelineContext",
"capabilityId": "Aspire.Hosting.Pipelines/PipelineStepContext.pipelineContext",
"qualifiedName": "PipelineStepContext.pipelineContext",
- "description": "Gets the PipelineContext property",
+ "description": "Gets the pipeline context shared across all steps.",
"kind": "PropertyGetter",
"signature": "pipelineContext(): PipelineContext",
"parameters": [],
@@ -14897,7 +15334,7 @@
"name": "reportingStep",
"capabilityId": "Aspire.Hosting.Pipelines/PipelineStepContext.reportingStep",
"qualifiedName": "PipelineStepContext.reportingStep",
- "description": "Gets the ReportingStep property",
+ "description": "Gets the publishing step associated with this specific step execution.",
"kind": "PropertyGetter",
"signature": "reportingStep(): IReportingStep",
"parameters": [],
@@ -14911,7 +15348,7 @@
"name": "services",
"capabilityId": "Aspire.Hosting.Pipelines/PipelineStepContext.services",
"qualifiedName": "PipelineStepContext.services",
- "description": "Gets the Services property",
+ "description": "Gets the service provider for dependency resolution.",
"kind": "PropertyGetter",
"signature": "services(): IServiceProvider",
"parameters": [],
@@ -14921,49 +15358,12 @@
"Aspire.Hosting.Pipelines.PipelineStepContext"
]
},
- {
- "name": "setPipelineContext",
- "capabilityId": "Aspire.Hosting.Pipelines/PipelineStepContext.setPipelineContext",
- "qualifiedName": "PipelineStepContext.setPipelineContext",
- "description": "Sets the PipelineContext property",
- "kind": "PropertySetter",
- "signature": "setPipelineContext(value: PipelineContext): PipelineStepContext",
- "parameters": [
- {
- "name": "value",
- "type": "PipelineContext"
- }
- ],
- "returnType": "PipelineStepContext",
- "targetTypeId": "Aspire.Hosting/Aspire.Hosting.Pipelines.PipelineStepContext",
- "expandedTargetTypes": [
- "Aspire.Hosting.Pipelines.PipelineStepContext"
- ]
- },
- {
- "name": "setReportingStep",
- "capabilityId": "Aspire.Hosting.Pipelines/PipelineStepContext.setReportingStep",
- "qualifiedName": "PipelineStepContext.setReportingStep",
- "description": "Sets the ReportingStep property",
- "kind": "PropertySetter",
- "signature": "setReportingStep(value: IReportingStep): PipelineStepContext",
- "parameters": [
- {
- "name": "value",
- "type": "IReportingStep"
- }
- ],
- "returnType": "PipelineStepContext",
- "targetTypeId": "Aspire.Hosting/Aspire.Hosting.Pipelines.PipelineStepContext",
- "expandedTargetTypes": [
- "Aspire.Hosting.Pipelines.PipelineStepContext"
- ]
- },
{
"name": "summary",
"capabilityId": "Aspire.Hosting.Pipelines/PipelineStepContext.summary",
"qualifiedName": "PipelineStepContext.summary",
- "description": "Gets the Summary property",
+ "description": "Gets the pipeline summary that steps can add information to. The summary will be displayed to users after pipeline execution completes.",
+ "remarks": "Pipeline steps can add key-value pairs to the summary to provide useful information\nabout the pipeline execution, such as deployment targets, resource names, URLs, etc.",
"kind": "PropertyGetter",
"signature": "summary(): PipelineSummary",
"parameters": [],
@@ -14980,13 +15380,14 @@
"fullName": "Aspire.Hosting.Pipelines.PipelineStepFactoryContext",
"kind": "handle",
"exposeProperties": true,
+ "description": "Provides contextual information for creating pipeline steps from a `PipelineStepAnnotation`.",
"implementedInterfaces": [],
"capabilities": [
{
"name": "pipelineContext",
"capabilityId": "Aspire.Hosting.Pipelines/PipelineStepFactoryContext.pipelineContext",
"qualifiedName": "PipelineStepFactoryContext.pipelineContext",
- "description": "Gets the PipelineContext property",
+ "description": "Gets the pipeline context that has the model and other properties.",
"kind": "PropertyGetter",
"signature": "pipelineContext(): PipelineContext",
"parameters": [],
@@ -15000,7 +15401,7 @@
"name": "resource",
"capabilityId": "Aspire.Hosting.Pipelines/PipelineStepFactoryContext.resource",
"qualifiedName": "PipelineStepFactoryContext.resource",
- "description": "Gets the Resource property",
+ "description": "Gets the resource that this factory is associated with.",
"kind": "PropertyGetter",
"signature": "resource(): IResource",
"parameters": [],
@@ -15009,44 +15410,6 @@
"expandedTargetTypes": [
"Aspire.Hosting.Pipelines.PipelineStepFactoryContext"
]
- },
- {
- "name": "setPipelineContext",
- "capabilityId": "Aspire.Hosting.Pipelines/PipelineStepFactoryContext.setPipelineContext",
- "qualifiedName": "PipelineStepFactoryContext.setPipelineContext",
- "description": "Sets the PipelineContext property",
- "kind": "PropertySetter",
- "signature": "setPipelineContext(value: PipelineContext): PipelineStepFactoryContext",
- "parameters": [
- {
- "name": "value",
- "type": "PipelineContext"
- }
- ],
- "returnType": "PipelineStepFactoryContext",
- "targetTypeId": "Aspire.Hosting/Aspire.Hosting.Pipelines.PipelineStepFactoryContext",
- "expandedTargetTypes": [
- "Aspire.Hosting.Pipelines.PipelineStepFactoryContext"
- ]
- },
- {
- "name": "setResource",
- "capabilityId": "Aspire.Hosting.Pipelines/PipelineStepFactoryContext.setResource",
- "qualifiedName": "PipelineStepFactoryContext.setResource",
- "description": "Sets the Resource property",
- "kind": "PropertySetter",
- "signature": "setResource(value: IResource): PipelineStepFactoryContext",
- "parameters": [
- {
- "name": "value",
- "type": "IResource"
- }
- ],
- "returnType": "PipelineStepFactoryContext",
- "targetTypeId": "Aspire.Hosting/Aspire.Hosting.Pipelines.PipelineStepFactoryContext",
- "expandedTargetTypes": [
- "Aspire.Hosting.Pipelines.PipelineStepFactoryContext"
- ]
}
]
},
@@ -15055,23 +15418,27 @@
"fullName": "Aspire.Hosting.Pipelines.PipelineSummary",
"kind": "handle",
"exposeMethods": true,
+ "description": "Represents pipeline summary information to be displayed after pipeline completion. This is a general-purpose key-value collection that pipeline steps can contribute to.",
+ "remarks": "This class provides a flexible way for any pipeline step to contribute\ninformation to be displayed after pipeline execution. The data is stored as\nkey-value pairs that will be formatted as a table or list in the CLI output.\nPipeline steps can add any relevant information such as resource group names,\nsubscription IDs, URLs, namespaces, cluster names, or any other details.\nValues can be plain text or Markdown-formatted by using `MarkdownString`.\nThe summary is available via the `Summary`\nproperty and can be accessed from any pipeline step.",
"implementedInterfaces": [],
"capabilities": [
{
"name": "addMarkdown",
"capabilityId": "Aspire.Hosting/addMarkdown",
"qualifiedName": "addMarkdown",
- "description": "Adds a Markdown-formatted value to the pipeline summary",
+ "description": "Adds a key-value pair to the pipeline summary with a Markdown-formatted value.",
"kind": "Method",
"signature": "addMarkdown(key: string, markdownString: string): void",
"parameters": [
{
"name": "key",
- "type": "string"
+ "type": "string",
+ "description": "The key or label for the item."
},
{
"name": "markdownString",
- "type": "string"
+ "type": "string",
+ "description": "The Markdown-formatted value for the item."
}
],
"returnType": "void",
@@ -15084,17 +15451,19 @@
"name": "add",
"capabilityId": "Aspire.Hosting.Pipelines/PipelineSummary.add",
"qualifiedName": "PipelineSummary.add",
- "description": "Invokes the Add method",
+ "description": "Adds a key-value pair to the pipeline summary with a plain-text value.",
"kind": "InstanceMethod",
"signature": "add(key: string, value: string): void",
"parameters": [
{
"name": "key",
- "type": "string"
+ "type": "string",
+ "description": "The key or label for the item (e.g., \"Namespace\", \"URL\")."
},
{
"name": "value",
- "type": "string"
+ "type": "string",
+ "description": "The plain-text value for the item."
}
],
"returnType": "void",
@@ -15110,13 +15479,14 @@
"fullName": "Aspire.Hosting.ProjectResourceOptions",
"kind": "handle",
"exposeProperties": true,
+ "description": "Various properties to modify the behavior of the project resource.",
"implementedInterfaces": [],
"capabilities": [
{
"name": "excludeKestrelEndpoints",
"capabilityId": "Aspire.Hosting/ProjectResourceOptions.excludeKestrelEndpoints",
"qualifiedName": "ProjectResourceOptions.excludeKestrelEndpoints",
- "description": "Gets the ExcludeKestrelEndpoints property",
+ "description": "If set, ignore endpoints coming from Kestrel configuration.",
"kind": "PropertyGetter",
"signature": "excludeKestrelEndpoints(): boolean",
"parameters": [],
@@ -15130,7 +15500,7 @@
"name": "excludeLaunchProfile",
"capabilityId": "Aspire.Hosting/ProjectResourceOptions.excludeLaunchProfile",
"qualifiedName": "ProjectResourceOptions.excludeLaunchProfile",
- "description": "Gets the ExcludeLaunchProfile property",
+ "description": "If set, no launch profile will be used, and LaunchProfileName will be ignored.",
"kind": "PropertyGetter",
"signature": "excludeLaunchProfile(): boolean",
"parameters": [],
@@ -15144,7 +15514,7 @@
"name": "launchProfileName",
"capabilityId": "Aspire.Hosting/ProjectResourceOptions.launchProfileName",
"qualifiedName": "ProjectResourceOptions.launchProfileName",
- "description": "Gets the LaunchProfileName property",
+ "description": "The launch profile to use. If `null` then the default launch profile will be used.",
"kind": "PropertyGetter",
"signature": "launchProfileName(): string",
"parameters": [],
@@ -15158,7 +15528,7 @@
"name": "setExcludeKestrelEndpoints",
"capabilityId": "Aspire.Hosting/ProjectResourceOptions.setExcludeKestrelEndpoints",
"qualifiedName": "ProjectResourceOptions.setExcludeKestrelEndpoints",
- "description": "Sets the ExcludeKestrelEndpoints property",
+ "description": "If set, ignore endpoints coming from Kestrel configuration.",
"kind": "PropertySetter",
"signature": "setExcludeKestrelEndpoints(value: boolean): ProjectResourceOptions",
"parameters": [
@@ -15177,7 +15547,7 @@
"name": "setExcludeLaunchProfile",
"capabilityId": "Aspire.Hosting/ProjectResourceOptions.setExcludeLaunchProfile",
"qualifiedName": "ProjectResourceOptions.setExcludeLaunchProfile",
- "description": "Sets the ExcludeLaunchProfile property",
+ "description": "If set, no launch profile will be used, and LaunchProfileName will be ignored.",
"kind": "PropertySetter",
"signature": "setExcludeLaunchProfile(value: boolean): ProjectResourceOptions",
"parameters": [
@@ -15196,7 +15566,7 @@
"name": "setLaunchProfileName",
"capabilityId": "Aspire.Hosting/ProjectResourceOptions.setLaunchProfileName",
"qualifiedName": "ProjectResourceOptions.setLaunchProfileName",
- "description": "Sets the LaunchProfileName property",
+ "description": "The launch profile to use. If `null` then the default launch profile will be used.",
"kind": "PropertySetter",
"signature": "setLaunchProfileName(value: string): ProjectResourceOptions",
"parameters": [
@@ -15219,22 +15589,27 @@
"name": "CertificateTrustExecutionConfigurationContext",
"fullName": "Aspire.Hosting.ApplicationModel.CertificateTrustExecutionConfigurationContext",
"kind": "dto",
+ "description": "Context for configuring certificate trust configuration properties.",
"fields": [
{
"name": "CertificateBundlePath",
- "type": "ReferenceExpression"
+ "type": "ReferenceExpression",
+ "description": "The path to the PEM certificate bundle file in the resource context (e.g., container filesystem)."
},
{
"name": "CertificateDirectoriesPath",
- "type": "ReferenceExpression"
+ "type": "ReferenceExpression",
+ "description": "The path(s) to the certificate directories in the resource context (e.g., container filesystem)."
},
{
"name": "RootCertificatesPath",
- "type": "string"
+ "type": "string",
+ "description": "The root path certificates will be written to in the resource context (e.g., container filesystem)."
},
{
"name": "IsContainer",
- "type": "boolean"
+ "type": "boolean",
+ "description": "Is this request being generated for a container resource (i.e. does it require Linux style paths?)."
}
]
},
@@ -15242,34 +15617,43 @@
"name": "CommandOptions",
"fullName": "Aspire.Hosting.ApplicationModel.CommandOptions",
"kind": "dto",
+ "description": "Optional configuration for resource commands added with `WithCommand``1`.",
"fields": [
{
"name": "Description",
- "type": "string"
+ "type": "string",
+ "description": "Optional description of the command, to be shown in the UI. Could be used as a tooltip. May be localized."
},
{
"name": "Parameter",
- "type": "any"
+ "type": "any",
+ "description": "Optional parameter that configures the command in some way. Clients must return any value provided by the server when invoking the command."
},
{
"name": "ConfirmationMessage",
- "type": "string"
+ "type": "string",
+ "description": "When a confirmation message is specified, the UI will prompt with an OK/Cancel dialog and the confirmation message before starting the command."
},
{
"name": "IconName",
- "type": "string"
+ "type": "string",
+ "description": "The icon name for the command. The name should be a valid FluentUI icon name from ."
},
{
"name": "IconVariant",
- "type": "IconVariant"
+ "type": "IconVariant",
+ "isOptional": true,
+ "description": "The icon variant."
},
{
"name": "IsHighlighted",
- "type": "boolean"
+ "type": "boolean",
+ "description": "A flag indicating whether the command is highlighted in the UI."
},
{
"name": "UpdateState",
- "type": "UpdateCommandStateContext]]"
+ "type": "callback",
+ "description": "A callback that is used to update the command state. The callback is executed when the command's resource snapshot is updated. If a callback isn't specified, the command is always enabled."
}
]
},
@@ -15277,18 +15661,22 @@
"name": "CommandResultData",
"fullName": "Aspire.Hosting.ApplicationModel.CommandResultData",
"kind": "dto",
+ "description": "Represents a value produced by a command.",
"fields": [
{
"name": "Value",
- "type": "string"
+ "type": "string",
+ "description": "The value data."
},
{
"name": "Format",
- "type": "CommandResultFormat"
+ "type": "CommandResultFormat",
+ "description": "The format of the `Value` data."
},
{
"name": "DisplayImmediately",
- "type": "boolean"
+ "type": "boolean",
+ "description": "When `true`, the dashboard will immediately display the value in a dialog when the command completes."
}
]
},
@@ -15296,26 +15684,32 @@
"name": "ExecuteCommandResult",
"fullName": "Aspire.Hosting.ApplicationModel.ExecuteCommandResult",
"kind": "dto",
+ "description": "The result of executing a command. Returned from `ExecuteCommand`.",
"fields": [
{
"name": "Success",
- "type": "boolean"
+ "type": "boolean",
+ "description": "A flag that indicates whether the command was successful."
},
{
"name": "Canceled",
- "type": "boolean"
+ "type": "boolean",
+ "description": "A flag that indicates whether the command was canceled by the user."
},
{
"name": "ErrorMessage",
- "type": "string"
+ "type": "string",
+ "description": "An optional error message that can be set when the command is unsuccessful."
},
{
"name": "Message",
- "type": "string"
+ "type": "string",
+ "description": "An optional message associated with the command result."
},
{
"name": "Data",
- "type": "CommandResultData"
+ "type": "CommandResultData",
+ "description": "An optional value produced by the command."
}
]
},
@@ -15323,42 +15717,53 @@
"name": "GenerateParameterDefault",
"fullName": "Aspire.Hosting.ApplicationModel.GenerateParameterDefault",
"kind": "dto",
+ "description": "Represents that a default value should be generated.",
+ "remarks": "The recommended minimum bits of entropy for a generated password is 128 bits.\nThe general calculation of bits of entropy is:\n`log base 2 (numberPossibleOutputs)`\nThis generator uses 23 upper case, 23 lower case (excludes i,l,o,I,L,O to prevent confusion),\n10 numeric, and 11 special characters. So a total of 67 possible characters.\nWhen all character sets are enabled, the number of possible outputs is `(67 ^ length)`.\nThe minimum password length for 128 bits of entropy is 22 characters: `log base 2 (67 ^ 22)`.\nWhen character sets are disabled, it lowers the number of possible outputs and thus the bits of entropy.\nUsing MinLower, MinUpper, MinNumeric, and MinSpecial also lowers the number of possible outputs and thus the bits of entropy.\nA generalized lower-bound formula for the number of possible outputs is to consider a string of the form:\n```\n{nonRequiredCharacters}{requiredCharacters}\nlet a = MinLower, b = MinUpper, c = MinNumeric, d = MinSpecial\nlet x = length - (a + b + c + d)\nnonRequiredPossibilities = 67^x\nrequiredPossibilities = 23^a * 23^b * 10^c * 11^d * (a + b + c + d)! / (a! * b! * c! * d!)\nlower-bound of total possibilities = nonRequiredPossibilities * requiredPossibilities\n```\nPutting it all together, the lower-bound bits of entropy calculation is:\n```\nlog base 2 [67^x * 23^a * 23^b * 10^c * 11^d * (a + b + c + d)! / (a! * b! * c! * d!)]\n```",
"fields": [
{
"name": "MinLength",
- "type": "number"
+ "type": "number",
+ "description": "Gets or sets the minimum length of the generated value."
},
{
"name": "Lower",
- "type": "boolean"
+ "type": "boolean",
+ "description": "Gets or sets a value indicating whether to include lowercase alphabet characters in the result."
},
{
"name": "Upper",
- "type": "boolean"
+ "type": "boolean",
+ "description": "Gets or sets a value indicating whether to include uppercase alphabet characters in the result."
},
{
"name": "Numeric",
- "type": "boolean"
+ "type": "boolean",
+ "description": "Gets or sets a value indicating whether to include numeric characters in the result."
},
{
"name": "Special",
- "type": "boolean"
+ "type": "boolean",
+ "description": "Gets or sets a value indicating whether to include special characters in the result."
},
{
"name": "MinLower",
- "type": "number"
+ "type": "number",
+ "description": "Gets or sets the minimum number of lowercase characters in the result."
},
{
"name": "MinUpper",
- "type": "number"
+ "type": "number",
+ "description": "Gets or sets the minimum number of uppercase characters in the result."
},
{
"name": "MinNumeric",
- "type": "number"
+ "type": "number",
+ "description": "Gets or sets the minimum number of numeric characters in the result."
},
{
"name": "MinSpecial",
- "type": "number"
+ "type": "number",
+ "description": "Gets or sets the minimum number of special characters in the result."
}
]
},
@@ -15366,42 +15771,53 @@
"name": "HttpCommandExportOptions",
"fullName": "Aspire.Hosting.ApplicationModel.HttpCommandExportOptions",
"kind": "dto",
+ "description": "ATS-friendly configuration for resource HTTP commands.",
"fields": [
{
"name": "Description",
- "type": "string"
+ "type": "string",
+ "description": "Optional description of the command, to be shown in the UI."
},
{
"name": "ConfirmationMessage",
- "type": "string"
+ "type": "string",
+ "description": "When a confirmation message is specified, the UI will prompt with an OK/Cancel dialog before starting the command."
},
{
"name": "IconName",
- "type": "string"
+ "type": "string",
+ "description": "The icon name for the command."
},
{
"name": "IconVariant",
- "type": "IconVariant"
+ "type": "IconVariant",
+ "isOptional": true,
+ "description": "The icon variant."
},
{
"name": "IsHighlighted",
- "type": "boolean"
+ "type": "boolean",
+ "description": "A flag indicating whether the command is highlighted in the UI."
},
{
"name": "CommandName",
- "type": "string"
+ "type": "string",
+ "description": "Gets or sets the command name."
},
{
"name": "EndpointName",
- "type": "string"
+ "type": "string",
+ "description": "Gets or sets the HTTP endpoint name to send the request to when the command is invoked."
},
{
"name": "MethodName",
- "type": "string"
+ "type": "string",
+ "description": "Gets or sets the HTTP method name to use when sending the request."
},
{
"name": "ResultMode",
- "type": "HttpCommandResultMode"
+ "type": "HttpCommandResultMode",
+ "description": "Gets or sets how the HTTP response content should be returned as command result data."
}
]
},
@@ -15409,18 +15825,22 @@
"name": "HttpsCertificateExecutionConfigurationContext",
"fullName": "Aspire.Hosting.ApplicationModel.HttpsCertificateExecutionConfigurationContext",
"kind": "dto",
+ "description": "Configuration context for server authentication certificate configuration.",
"fields": [
{
"name": "CertificatePath",
- "type": "ReferenceExpression"
+ "type": "ReferenceExpression",
+ "description": "Expression that will resolve to the path of the server authentication certificate in PEM format. For containers this will be a path inside the container."
},
{
"name": "KeyPath",
- "type": "ReferenceExpression"
+ "type": "ReferenceExpression",
+ "description": "Expression that will resolve to the path of the server authentication certificate key in PEM format. For containers this will be a path inside the container."
},
{
"name": "PfxPath",
- "type": "ReferenceExpression"
+ "type": "ReferenceExpression",
+ "description": "Expression that will resolve to the path of the server authentication certificate in PFX format. For containers this will be a path inside the container."
}
]
},
@@ -15428,22 +15848,27 @@
"name": "ResourceUrlAnnotation",
"fullName": "Aspire.Hosting.ApplicationModel.ResourceUrlAnnotation",
"kind": "dto",
+ "description": "A URL that should be displayed for a resource.",
"fields": [
{
"name": "Url",
- "type": "string"
+ "type": "string",
+ "description": "The URL. When rendered as a link this will be used as the link target."
},
{
"name": "DisplayText",
- "type": "string"
+ "type": "string",
+ "description": "The name of the URL. When rendered as a link this will be used as the linked text."
},
{
"name": "Endpoint",
- "type": "EndpointReference"
+ "type": "EndpointReference",
+ "description": "The endpoint associated with this URL. Can be `null` if this URL is not associated with an endpoint."
},
{
"name": "DisplayLocation",
- "type": "UrlDisplayLocation"
+ "type": "UrlDisplayLocation",
+ "description": "Locations where this URL should be shown on the dashboard. Defaults to `SummaryAndDetails`."
}
]
},
@@ -15451,14 +15876,17 @@
"name": "AddContainerOptions",
"fullName": "Aspire.Hosting.Ats.AddContainerOptions",
"kind": "dto",
+ "description": "Options for configuring a container image in polyglot apphosts.",
"fields": [
{
"name": "Image",
- "type": "string"
+ "type": "string",
+ "description": "The container image name."
},
{
"name": "Tag",
- "type": "string"
+ "type": "string",
+ "description": "The container image tag."
}
]
},
@@ -15466,18 +15894,22 @@
"name": "CertificateTrustExecutionConfigurationExportData",
"fullName": "Aspire.Hosting.Ats.CertificateTrustExecutionConfigurationExportData",
"kind": "dto",
+ "description": "ATS-friendly certificate trust data returned from an execution-configuration result.",
"fields": [
{
"name": "Scope",
- "type": "CertificateTrustScope"
+ "type": "CertificateTrustScope",
+ "description": "The certificate trust scope."
},
{
"name": "CertificateSubjects",
- "type": "string[]"
+ "type": "string[]",
+ "description": "The certificate subjects included in the trust configuration."
},
{
"name": "CustomBundlePaths",
- "type": "string[]"
+ "type": "string[]",
+ "description": "The relative custom bundle paths."
}
]
},
@@ -15485,38 +15917,47 @@
"name": "CreateBuilderOptions",
"fullName": "Aspire.Hosting.Ats.CreateBuilderOptions",
"kind": "dto",
+ "description": "Options for creating a distributed application builder from polyglot apphosts.",
"fields": [
{
"name": "Args",
- "type": "string[]"
+ "type": "string[]",
+ "description": "The command line arguments."
},
{
"name": "ProjectDirectory",
- "type": "string"
+ "type": "string",
+ "description": "The directory containing the AppHost project file."
},
{
"name": "AppHostFilePath",
- "type": "string"
+ "type": "string",
+ "description": "The full path to the AppHost file (e.g., apphost.ts, apphost.py). Used for consistent socket path computation across CLI and AppHost."
},
{
"name": "ContainerRegistryOverride",
- "type": "string"
+ "type": "string",
+ "description": "When containers are used, use this value to override the container registry."
},
{
"name": "DisableDashboard",
- "type": "boolean"
+ "type": "boolean",
+ "description": "Determines whether the dashboard is disabled."
},
{
"name": "DashboardApplicationName",
- "type": "string"
+ "type": "string",
+ "description": "The application name to display in the dashboard."
},
{
"name": "AllowUnsecuredTransport",
- "type": "boolean"
+ "type": "boolean",
+ "description": "Allows the use of HTTP urls for the AppHost resource endpoint."
},
{
"name": "EnableResourceLogging",
- "type": "boolean"
+ "type": "boolean",
+ "description": "Enables resource logging."
}
]
},
@@ -15524,34 +15965,42 @@
"name": "HttpsCertificateExecutionConfigurationExportData",
"fullName": "Aspire.Hosting.Ats.HttpsCertificateExecutionConfigurationExportData",
"kind": "dto",
+ "description": "ATS-friendly HTTPS certificate data returned from an execution-configuration result.",
"fields": [
{
"name": "Subject",
- "type": "string"
+ "type": "string",
+ "description": "The certificate subject."
},
{
"name": "Thumbprint",
- "type": "string"
+ "type": "string",
+ "description": "The certificate thumbprint."
},
{
"name": "KeyPathExpression",
- "type": "string"
+ "type": "string",
+ "description": "The expression for the key path reference."
},
{
"name": "PfxPathExpression",
- "type": "string"
+ "type": "string",
+ "description": "The expression for the PFX path reference."
},
{
"name": "IsKeyPathReferenced",
- "type": "boolean"
+ "type": "boolean",
+ "description": "Indicates whether the key path was referenced."
},
{
"name": "IsPfxPathReferenced",
- "type": "boolean"
+ "type": "boolean",
+ "description": "Indicates whether the PFX path was referenced."
},
{
"name": "Password",
- "type": "string"
+ "type": "string",
+ "description": "The certificate password, if any."
}
]
},
@@ -15559,18 +16008,22 @@
"name": "HttpsCertificateInfo",
"fullName": "Aspire.Hosting.Ats.HttpsCertificateInfo",
"kind": "dto",
+ "description": "ATS-friendly certificate metadata supplied to HTTPS certificate configuration callbacks.",
"fields": [
{
"name": "Subject",
- "type": "string"
+ "type": "string",
+ "description": "The certificate subject."
},
{
"name": "Issuer",
- "type": "string"
+ "type": "string",
+ "description": "The certificate issuer."
},
{
"name": "Thumbprint",
- "type": "string"
+ "type": "string",
+ "description": "The certificate thumbprint."
}
]
},
@@ -15578,22 +16031,27 @@
"name": "ReferenceEnvironmentInjectionOptions",
"fullName": "Aspire.Hosting.Ats.ReferenceEnvironmentInjectionOptions",
"kind": "dto",
+ "description": "Options that control which reference information is injected into environment variables.",
"fields": [
{
"name": "ConnectionString",
- "type": "boolean"
+ "type": "boolean",
+ "description": "Injects the connection string environment variable."
},
{
"name": "ConnectionProperties",
- "type": "boolean"
+ "type": "boolean",
+ "description": "Injects individual connection property environment variables."
},
{
"name": "ServiceDiscovery",
- "type": "boolean"
+ "type": "boolean",
+ "description": "Injects service discovery environment variables."
},
{
"name": "Endpoints",
- "type": "boolean"
+ "type": "boolean",
+ "description": "Injects endpoint environment variables."
}
]
},
@@ -15601,30 +16059,38 @@
"name": "ResourceEventDto",
"fullName": "Aspire.Hosting.Ats.ResourceEventDto",
"kind": "dto",
+ "description": "DTO for resource events returned from notification service.",
"fields": [
{
"name": "ResourceName",
- "type": "string"
+ "type": "string",
+ "description": "The resource name."
},
{
"name": "ResourceId",
- "type": "string"
+ "type": "string",
+ "description": "The unique resource ID."
},
{
"name": "State",
- "type": "string"
+ "type": "string",
+ "description": "The current state text."
},
{
"name": "StateStyle",
- "type": "string"
+ "type": "string",
+ "description": "The state style (e.g., \"success\", \"warn\", \"error\")."
},
{
"name": "HealthStatus",
- "type": "string"
+ "type": "string",
+ "description": "The health status of the resource."
},
{
"name": "ExitCode",
- "type": "number"
+ "type": "number",
+ "isOptional": true,
+ "description": "The exit code if the resource has exited."
}
]
}
@@ -15634,36 +16100,83 @@
"name": "CertificateTrustScope",
"fullName": "Aspire.Hosting.ApplicationModel.CertificateTrustScope",
"kind": "enum",
+ "description": "Defines the scope of custom certificate authorities for a resource. The default scope for most resources is `Append`, but some resources may choose to override this default behavior.",
"members": [
"None",
"Append",
"Override",
"System"
+ ],
+ "memberDocs": [
+ {
+ "name": "None",
+ "description": "Disable all custom certificate authority configuration for a resource. This indicates that the resource should use its default certificate authority trust behavior without modification."
+ },
+ {
+ "name": "Append",
+ "description": "Append the specified certificate authorities to the default set of trusted CAs for a resource. Not all resources support this mode, in which case custom certificate authorities may not be applied. In that case, consider using `Override` or `System` instead. This is the default mode unless otherwise specified."
+ },
+ {
+ "name": "Override",
+ "description": "Replace the default set of trusted CAs for a resource with the specified certificate authorities. This mode indicates that only the provided custom certificate authorities should be considered trusted by the resource."
+ },
+ {
+ "name": "System",
+ "description": "Attempt to configure the resource to trust the default system certificate authorities in addition to any configured custom certificate trust. This mode is useful for resources that don't otherwise allow appending to their default trusted certificate authorities but do allow overriding the set of trusted certificates (e.g. Python, Rust, etc.)."
+ }
]
},
{
"name": "CommandResultFormat",
"fullName": "Aspire.Hosting.ApplicationModel.CommandResultFormat",
"kind": "enum",
+ "description": "Specifies the format of a command result.",
"members": [
"Text",
"Json",
"Markdown"
+ ],
+ "memberDocs": [
+ {
+ "name": "Text",
+ "description": "Plain text result."
+ },
+ {
+ "name": "Json",
+ "description": "JSON result."
+ },
+ {
+ "name": "Markdown",
+ "description": "Markdown result."
+ }
]
},
{
"name": "ContainerLifetime",
"fullName": "Aspire.Hosting.ApplicationModel.ContainerLifetime",
"kind": "enum",
+ "description": "Lifetime modes for container resources.",
"members": [
"Session",
"Persistent"
+ ],
+ "memberDocs": [
+ {
+ "name": "Session",
+ "description": "Create the resource when the app host process starts and dispose of it when the app host process shuts down."
+ },
+ {
+ "name": "Persistent",
+ "description": "Attempt to re-use a previously created resource (based on the container name) if one exists. Do not destroy the container on app host process shutdown.",
+ "remarks": "In the event that a container with the given name does not exist, a new container will always be created based on the\ncurrent `ContainerResource` configuration.\nWhen an existing container IS found, Aspire MAY re-use it based on the following criteria:\n-\n-\n-"
+ }
]
},
{
"name": "EndpointProperty",
"fullName": "Aspire.Hosting.ApplicationModel.EndpointProperty",
"kind": "enum",
+ "description": "Represents the properties of an endpoint that can be referenced.",
"members": [
"Url",
"Host",
@@ -15673,84 +16186,255 @@
"TargetPort",
"HostAndPort",
"TlsEnabled"
+ ],
+ "memberDocs": [
+ {
+ "name": "Url",
+ "description": "The entire URL of the endpoint."
+ },
+ {
+ "name": "Host",
+ "description": "The host of the endpoint."
+ },
+ {
+ "name": "IPV4Host",
+ "description": "The IPv4 address of the endpoint."
+ },
+ {
+ "name": "Port",
+ "description": "The port of the endpoint."
+ },
+ {
+ "name": "Scheme",
+ "description": "The scheme of the endpoint."
+ },
+ {
+ "name": "TargetPort",
+ "description": "The target port of the endpoint."
+ },
+ {
+ "name": "HostAndPort",
+ "description": "The host and port of the endpoint in the format `{Host}:{Port}`."
+ },
+ {
+ "name": "TlsEnabled",
+ "description": "Whether TLS is enabled on the endpoint. Returns `TrueString` or `FalseString`."
+ }
]
},
{
"name": "HttpCommandResultMode",
"fullName": "Aspire.Hosting.ApplicationModel.HttpCommandResultMode",
"kind": "enum",
+ "description": "Specifies how an HTTP command should surface the HTTP response body as command result data.",
"members": [
"None",
"Auto",
"Json",
"Text"
+ ],
+ "memberDocs": [
+ {
+ "name": "None",
+ "description": "Do not capture the HTTP response body as command result data."
+ },
+ {
+ "name": "Auto",
+ "description": "Infer the command result format from the HTTP response content type."
+ },
+ {
+ "name": "Json",
+ "description": "Return the HTTP response body as JSON command result data."
+ },
+ {
+ "name": "Text",
+ "description": "Return the HTTP response body as plain text command result data."
+ }
]
},
{
"name": "IconVariant",
"fullName": "Aspire.Hosting.ApplicationModel.IconVariant",
"kind": "enum",
+ "description": "The icon variant.",
"members": [
"Regular",
"Filled"
+ ],
+ "memberDocs": [
+ {
+ "name": "Regular",
+ "description": "Regular variant of icons."
+ },
+ {
+ "name": "Filled",
+ "description": "Filled variant of icons."
+ }
]
},
{
"name": "ImagePullPolicy",
"fullName": "Aspire.Hosting.ApplicationModel.ImagePullPolicy",
"kind": "enum",
+ "description": "Image pull policies for container resources.",
"members": [
"Default",
"Always",
"Missing",
"Never"
+ ],
+ "memberDocs": [
+ {
+ "name": "Default",
+ "description": "Default image pull policy behavior. Currently this will be the same as the default behavior for your container runtime."
+ },
+ {
+ "name": "Always",
+ "description": "Always pull the image when creating the container."
+ },
+ {
+ "name": "Missing",
+ "description": "Pull the image only if it does not already exist."
+ },
+ {
+ "name": "Never",
+ "description": "Never pull the image from the registry even if it is missing locally."
+ }
]
},
{
"name": "ProbeType",
"fullName": "Aspire.Hosting.ApplicationModel.ProbeType",
"kind": "enum",
+ "description": "Enum representing the type of probe.",
"members": [
"Startup",
"Readiness",
"Liveness"
+ ],
+ "memberDocs": [
+ {
+ "name": "Startup",
+ "description": "Startup probe."
+ },
+ {
+ "name": "Readiness",
+ "description": "Readiness probe."
+ },
+ {
+ "name": "Liveness",
+ "description": "Liveness probe."
+ }
+ ]
+ },
+ {
+ "name": "ResourceCommandState",
+ "fullName": "Aspire.Hosting.ApplicationModel.ResourceCommandState",
+ "kind": "enum",
+ "description": "The state of a resource command.",
+ "members": [
+ "Enabled",
+ "Disabled",
+ "Hidden"
+ ],
+ "memberDocs": [
+ {
+ "name": "Enabled",
+ "description": "Command is visible and enabled for use."
+ },
+ {
+ "name": "Disabled",
+ "description": "Command is visible and disabled for use."
+ },
+ {
+ "name": "Hidden",
+ "description": "Command is hidden."
+ }
]
},
{
"name": "UrlDisplayLocation",
"fullName": "Aspire.Hosting.ApplicationModel.UrlDisplayLocation",
"kind": "enum",
+ "description": "Specifies where the URL should be displayed.",
"members": [
"SummaryAndDetails",
"DetailsOnly"
+ ],
+ "memberDocs": [
+ {
+ "name": "SummaryAndDetails",
+ "description": "Show the URL in locations where either the resource summary or resource details are being displayed."
+ },
+ {
+ "name": "DetailsOnly",
+ "description": "Show the URL in locations where the full details of the resource are being displayed."
+ }
]
},
{
"name": "WaitBehavior",
"fullName": "Aspire.Hosting.ApplicationModel.WaitBehavior",
"kind": "enum",
+ "description": "Specifies the behavior of the wait.",
"members": [
"WaitOnResourceUnavailable",
"StopOnResourceUnavailable"
+ ],
+ "memberDocs": [
+ {
+ "name": "WaitOnResourceUnavailable",
+ "description": "If the resource is unavailable, continue waiting."
+ },
+ {
+ "name": "StopOnResourceUnavailable",
+ "description": "If the resource is unavailable, stop waiting."
+ }
]
},
{
"name": "DistributedApplicationOperation",
"fullName": "Aspire.Hosting.DistributedApplicationOperation",
"kind": "enum",
+ "description": "Describes the context in which the AppHost is being executed.",
"members": [
"Run",
"Publish"
+ ],
+ "memberDocs": [
+ {
+ "name": "Run",
+ "description": "AppHost is being run for the purpose of debugging locally."
+ },
+ {
+ "name": "Publish",
+ "description": "AppHost is being run for the purpose of publishing a manifest for deployment."
+ }
]
},
{
"name": "OtlpProtocol",
"fullName": "Aspire.Hosting.OtlpProtocol",
"kind": "enum",
+ "description": "Protocols available for OTLP exporters.",
"members": [
"Grpc",
"HttpProtobuf",
"HttpJson"
+ ],
+ "memberDocs": [
+ {
+ "name": "Grpc",
+ "description": "A gRPC-based OTLP exporter."
+ },
+ {
+ "name": "HttpProtobuf",
+ "description": "Http/Protobuf-based OTLP exporter."
+ },
+ {
+ "name": "HttpJson",
+ "description": "Http/JSON-based OTLP exporter."
+ }
]
}
]
diff --git a/src/frontend/src/data/ts-modules/Aspire.Hosting.Azure.13.3.0.json b/src/frontend/src/data/ts-modules/Aspire.Hosting.Azure.13.3.0.json
index 397757c65..1b082c59c 100644
--- a/src/frontend/src/data/ts-modules/Aspire.Hosting.Azure.13.3.0.json
+++ b/src/frontend/src/data/ts-modules/Aspire.Hosting.Azure.13.3.0.json
@@ -10,7 +10,8 @@
"name": "addAzureEnvironment",
"capabilityId": "Aspire.Hosting.Azure/addAzureEnvironment",
"qualifiedName": "addAzureEnvironment",
- "description": "Adds the shared Azure environment resource to the application model",
+ "description": "Adds an Azure environment resource to the application model.",
+ "returns": "The `IResourceBuilder`1`.",
"kind": "Method",
"signature": "addAzureEnvironment(): AzureEnvironmentResource",
"parameters": [],
@@ -25,19 +26,22 @@
"name": "addAzureInfrastructure",
"capabilityId": "Aspire.Hosting.Azure/addAzureInfrastructure",
"qualifiedName": "addAzureInfrastructure",
- "description": "Adds an Azure provisioning resource to the application model",
+ "description": "Adds an Azure provisioning resource to the application model.",
+ "returns": "A resource builder for the `AzureProvisioningResource` that can be used for further configuration.",
"kind": "Method",
- "signature": "addAzureInfrastructure(name: string, configureInfrastructure: (obj: AzureResourceInfrastructure) =\u003E Promise\u003Cvoid\u003E): AzureProvisioningResource",
+ "signature": "addAzureInfrastructure(name: string, configureInfrastructure: (obj: AzureResourceInfrastructure) => Promise): AzureProvisioningResource",
"parameters": [
{
"name": "name",
- "type": "string"
+ "type": "string",
+ "description": "The name of the resource being added."
},
{
"name": "configureInfrastructure",
"type": "callback",
"isCallback": true,
- "callbackSignature": "(obj: AzureResourceInfrastructure) =\u003E Promise\u003Cvoid\u003E"
+ "callbackSignature": "(obj: AzureResourceInfrastructure) => Promise",
+ "description": "A callback used to configure the infrastructure resource."
}
],
"returnType": "AzureProvisioningResource",
@@ -51,7 +55,8 @@
"name": "addAzureProvisioning",
"capabilityId": "Aspire.Hosting.Azure/addAzureProvisioning",
"qualifiedName": "addAzureProvisioning",
- "description": "Adds Azure provisioning services to the distributed application builder",
+ "description": "Adds support for generating Azure resources dynamically during application startup. The application must configure the appropriate Azure subscription and location before resources can be provisioned.",
+ "returns": "The distributed application builder.",
"kind": "Method",
"signature": "addAzureProvisioning(): IDistributedApplicationBuilder",
"parameters": [],
@@ -65,13 +70,16 @@
"name": "addAzureUserAssignedIdentity",
"capabilityId": "Aspire.Hosting.Azure/addAzureUserAssignedIdentity",
"qualifiedName": "addAzureUserAssignedIdentity",
- "description": "Adds an Azure user-assigned identity resource",
+ "description": "Adds an Azure user‑assigned identity resource to the application model.",
+ "remarks": "This method adds an Azure user‑assigned identity resource to the application model. It configures the\ninfrastructure for the resource and returns a builder for the resource.\nThe resource is added to the infrastructure only if the application is not in run mode.",
+ "returns": "A reference to the `IResourceBuilder`1` builder.",
"kind": "Method",
"signature": "addAzureUserAssignedIdentity(name: string): AzureUserAssignedIdentityResource",
"parameters": [
{
"name": "name",
- "type": "string"
+ "type": "string",
+ "description": "The name of the resource."
}
],
"returnType": "AzureUserAssignedIdentityResource",
@@ -85,17 +93,20 @@
"name": "addBicepTemplate",
"capabilityId": "Aspire.Hosting.Azure/addBicepTemplate",
"qualifiedName": "addBicepTemplate",
- "description": "Adds an Azure Bicep template resource from a file",
+ "description": "Adds an Azure Bicep resource to the application model.",
+ "returns": "An `IResourceBuilder`1`.",
"kind": "Method",
"signature": "addBicepTemplate(name: string, bicepFile: string): AzureBicepResource",
"parameters": [
{
"name": "name",
- "type": "string"
+ "type": "string",
+ "description": "The name of the resource. This name will be used as the deployment name."
},
{
"name": "bicepFile",
- "type": "string"
+ "type": "string",
+ "description": "The path to the bicep file on disk. This path is relative to the apphost's project directory."
}
],
"returnType": "AzureBicepResource",
@@ -109,17 +120,20 @@
"name": "addBicepTemplateString",
"capabilityId": "Aspire.Hosting.Azure/addBicepTemplateString",
"qualifiedName": "addBicepTemplateString",
- "description": "Adds an Azure Bicep template resource from inline Bicep content",
+ "description": "Adds an Azure Bicep resource to the application model.",
+ "returns": "An `IResourceBuilder`1`.",
"kind": "Method",
"signature": "addBicepTemplateString(name: string, bicepContent: string): AzureBicepResource",
"parameters": [
{
"name": "name",
- "type": "string"
+ "type": "string",
+ "description": "The name of the resource. This name will be used as the deployment name."
},
{
"name": "bicepContent",
- "type": "string"
+ "type": "string",
+ "description": "A string that represents a snippet of bicep."
}
],
"returnType": "AzureBicepResource",
@@ -133,18 +147,21 @@
"name": "asExisting",
"capabilityId": "Aspire.Hosting.Azure/asExisting",
"qualifiedName": "asExisting",
- "description": "Marks an Azure resource as existing in both run and publish modes",
+ "description": "Marks the resource as an existing resource in both run and publish modes.",
+ "returns": "The resource builder with the existing resource annotation added.",
"kind": "Method",
"signature": "asExisting(name: ParameterResource, resourceGroup?: ParameterResource): IAzureResource",
"parameters": [
{
"name": "name",
- "type": "ParameterResource"
+ "type": "ParameterResource",
+ "description": "The name of the existing resource as a string or parameter resource."
},
{
"name": "resourceGroup",
"type": "ParameterResource",
- "isOptional": true
+ "isOptional": true,
+ "description": "The name of the existing resource group as a string or parameter resource."
}
],
"returnType": "IAzureResource",
@@ -160,7 +177,7 @@
"name": "name",
"capabilityId": "Aspire.Hosting.Azure/BicepOutputReference.name",
"qualifiedName": "BicepOutputReference.name",
- "description": "Gets the Name property",
+ "description": "Name of the output.",
"kind": "PropertyGetter",
"signature": "name(): string",
"parameters": [],
@@ -174,7 +191,7 @@
"name": "value",
"capabilityId": "Aspire.Hosting.Azure/BicepOutputReference.value",
"qualifiedName": "BicepOutputReference.value",
- "description": "Gets the Value property",
+ "description": "The value of the output.",
"kind": "PropertyGetter",
"signature": "value(): string",
"parameters": [],
@@ -188,7 +205,7 @@
"name": "valueExpression",
"capabilityId": "Aspire.Hosting.Azure/BicepOutputReference.valueExpression",
"qualifiedName": "BicepOutputReference.valueExpression",
- "description": "Gets the ValueExpression property",
+ "description": "The expression used in the manifest to reference the value of the output.",
"kind": "PropertyGetter",
"signature": "valueExpression(): string",
"parameters": [],
@@ -202,7 +219,9 @@
"name": "clearDefaultRoleAssignments",
"capabilityId": "Aspire.Hosting.Azure/clearDefaultRoleAssignments",
"qualifiedName": "clearDefaultRoleAssignments",
- "description": "Clears the default Azure role assignments from a resource",
+ "description": "Clears all default role assignments for the specified Azure resource.",
+ "remarks": "This method removes all default role assignments from the Azure resource. This can be useful when\nrole assignments can't be created, for example on existing resources where you don't have permission\nto create the assignments.",
+ "returns": "The configured `IResourceBuilder`1`.",
"kind": "Method",
"signature": "clearDefaultRoleAssignments(): IAzureResource",
"parameters": [],
@@ -219,15 +238,17 @@
"name": "configureInfrastructure",
"capabilityId": "Aspire.Hosting.Azure/configureInfrastructure",
"qualifiedName": "configureInfrastructure",
- "description": "Configures the Azure provisioning infrastructure callback",
+ "description": "Configures the Azure provisioning resource `Infrastructure`.",
+ "returns": "The resource builder.",
"kind": "Method",
- "signature": "configureInfrastructure(configure: (obj: AzureResourceInfrastructure) =\u003E Promise\u003Cvoid\u003E): AzureProvisioningResource",
+ "signature": "configureInfrastructure(configure: (obj: AzureResourceInfrastructure) => Promise): AzureProvisioningResource",
"parameters": [
{
"name": "configure",
"type": "callback",
"isCallback": true,
- "callbackSignature": "(obj: AzureResourceInfrastructure) =\u003E Promise\u003Cvoid\u003E"
+ "callbackSignature": "(obj: AzureResourceInfrastructure) => Promise",
+ "description": "The configuration callback."
}
],
"returnType": "AzureProvisioningResource",
@@ -242,7 +263,8 @@
"name": "getBicepIdentifier",
"capabilityId": "Aspire.Hosting.Azure/getBicepIdentifier",
"qualifiedName": "getBicepIdentifier",
- "description": "Gets the normalized Bicep identifier for an Azure resource",
+ "description": "Gets the Bicep identifier for the Azure resource.",
+ "returns": "A valid Bicep identifier.",
"kind": "Method",
"signature": "getBicepIdentifier(): string",
"parameters": [],
@@ -258,13 +280,15 @@
"name": "getOutput",
"capabilityId": "Aspire.Hosting.Azure/getOutput",
"qualifiedName": "getOutput",
- "description": "Gets an output reference from an Azure Bicep template resource",
+ "description": "Gets a reference to an output from a bicep template.",
+ "returns": "A `BicepOutputReference` that represents the output.",
"kind": "Method",
"signature": "getOutput(name: string): BicepOutputReference",
"parameters": [
{
"name": "name",
- "type": "string"
+ "type": "string",
+ "description": "Name of the output."
}
],
"returnType": "BicepOutputReference",
@@ -279,7 +303,8 @@
"name": "isExisting",
"capabilityId": "Aspire.Hosting.Azure/isExisting",
"qualifiedName": "isExisting",
- "description": "Determines whether a resource is marked as existing",
+ "description": "Determines whether the Azure resource is marked as existing.",
+ "returns": "`true` if the resource is marked as existing; otherwise, `false`.",
"kind": "Method",
"signature": "isExisting(): boolean",
"parameters": [],
@@ -295,7 +320,8 @@
"name": "publishAsConnectionString",
"capabilityId": "Aspire.Hosting.Azure/publishAsConnectionString",
"qualifiedName": "publishAsConnectionString",
- "description": "Publishes an Azure resource to the manifest as a connection string",
+ "description": "Changes the resource to be published as a connection string reference in the manifest.",
+ "returns": "The configured `IResourceBuilder`1`.",
"kind": "Method",
"signature": "publishAsConnectionString(): IAzureResource",
"parameters": [],
@@ -312,18 +338,21 @@
"name": "publishAsExisting",
"capabilityId": "Aspire.Hosting.Azure/publishAsExisting",
"qualifiedName": "publishAsExisting",
- "description": "Marks an Azure resource as existing in publish mode",
+ "description": "Marks the resource as an existing resource when the application is deployed.",
+ "returns": "The resource builder with the existing resource annotation added.",
"kind": "Method",
"signature": "publishAsExisting(name: ParameterResource, resourceGroup?: ParameterResource): IAzureResource",
"parameters": [
{
"name": "name",
- "type": "ParameterResource"
+ "type": "ParameterResource",
+ "description": "The name of the existing resource as a string or parameter resource."
},
{
"name": "resourceGroup",
"type": "ParameterResource",
- "isOptional": true
+ "isOptional": true,
+ "description": "The name of the existing resource group as a string or parameter resource."
}
],
"returnType": "IAzureResource",
@@ -339,18 +368,21 @@
"name": "runAsExisting",
"capabilityId": "Aspire.Hosting.Azure/runAsExisting",
"qualifiedName": "runAsExisting",
- "description": "Marks an Azure resource as existing in run mode",
+ "description": "Marks the resource as an existing resource when the application is running.",
+ "returns": "The resource builder with the existing resource annotation added.",
"kind": "Method",
"signature": "runAsExisting(name: ParameterResource, resourceGroup?: ParameterResource): IAzureResource",
"parameters": [
{
"name": "name",
- "type": "ParameterResource"
+ "type": "ParameterResource",
+ "description": "The name of the existing resource as a string or parameter resource."
},
{
"name": "resourceGroup",
"type": "ParameterResource",
- "isOptional": true
+ "isOptional": true,
+ "description": "The name of the existing resource group as a string or parameter resource."
}
],
"returnType": "IAzureResource",
@@ -366,13 +398,15 @@
"name": "withAzureUserAssignedIdentity",
"capabilityId": "Aspire.Hosting.Azure/withUserAssignedIdentityAzureUserAssignedIdentity",
"qualifiedName": "withAzureUserAssignedIdentity",
- "description": "Associates an Azure user-assigned identity with a compute resource",
+ "description": "Attaches an existing `AzureUserAssignedIdentityResource` to a compute resource, setting it as the target identity for the builder.",
+ "returns": "A reference to the `IResourceBuilder`1` builder.",
"kind": "Method",
"signature": "withAzureUserAssignedIdentity(identityResourceBuilder: AzureUserAssignedIdentityResource): IComputeResource",
"parameters": [
{
"name": "identityResourceBuilder",
- "type": "AzureUserAssignedIdentityResource"
+ "type": "AzureUserAssignedIdentityResource",
+ "description": "The builder for the `AzureUserAssignedIdentityResource`."
}
],
"returnType": "IComputeResource",
@@ -390,13 +424,16 @@
"name": "withLocation",
"capabilityId": "Aspire.Hosting.Azure/withLocation",
"qualifiedName": "withLocation",
- "description": "Sets the Azure location for the shared Azure environment resource",
+ "description": "Sets the location of the Azure environment resource.",
+ "remarks": "This method is used to set the location of the Azure environment resource.\nThe location is used to determine where the resources will be deployed.",
+ "returns": "The `IResourceBuilder`1`.",
"kind": "Method",
"signature": "withLocation(location: ParameterResource): AzureEnvironmentResource",
"parameters": [
{
"name": "location",
- "type": "ParameterResource"
+ "type": "ParameterResource",
+ "description": "The Azure location."
}
],
"returnType": "AzureEnvironmentResource",
@@ -437,13 +474,16 @@
"name": "withResourceGroup",
"capabilityId": "Aspire.Hosting.Azure/withResourceGroup",
"qualifiedName": "withResourceGroup",
- "description": "Sets the Azure resource group for the shared Azure environment resource",
+ "description": "Sets the resource group name of the Azure environment resource.",
+ "remarks": "This method is used to set the resource group name of the Azure environment resource.\nThe resource group name is used to determine where the resources will be deployed.",
+ "returns": "The `IResourceBuilder`1`.",
"kind": "Method",
"signature": "withResourceGroup(resourceGroup: ParameterResource): AzureEnvironmentResource",
"parameters": [
{
"name": "resourceGroup",
- "type": "ParameterResource"
+ "type": "ParameterResource",
+ "description": "The Azure resource group name."
}
],
"returnType": "AzureEnvironmentResource",
@@ -460,24 +500,28 @@
"fullName": "Aspire.Hosting.ApplicationModel.IAzureResource",
"kind": "handle",
"isInterface": true,
+ "description": "Represents an Azure resource, as a marker interface for `IResource`'s that can be deployed to an Azure resource group.",
"implementedInterfaces": [],
"capabilities": [
{
"name": "asExisting",
"capabilityId": "Aspire.Hosting.Azure/asExisting",
"qualifiedName": "asExisting",
- "description": "Marks an Azure resource as existing in both run and publish modes",
+ "description": "Marks the resource as an existing resource in both run and publish modes.",
+ "returns": "The resource builder with the existing resource annotation added.",
"kind": "Method",
"signature": "asExisting(name: ParameterResource, resourceGroup?: ParameterResource): IAzureResource",
"parameters": [
{
"name": "name",
- "type": "ParameterResource"
+ "type": "ParameterResource",
+ "description": "The name of the existing resource as a string or parameter resource."
},
{
"name": "resourceGroup",
"type": "ParameterResource",
- "isOptional": true
+ "isOptional": true,
+ "description": "The name of the existing resource group as a string or parameter resource."
}
],
"returnType": "IAzureResource",
@@ -493,7 +537,9 @@
"name": "clearDefaultRoleAssignments",
"capabilityId": "Aspire.Hosting.Azure/clearDefaultRoleAssignments",
"qualifiedName": "clearDefaultRoleAssignments",
- "description": "Clears the default Azure role assignments from a resource",
+ "description": "Clears all default role assignments for the specified Azure resource.",
+ "remarks": "This method removes all default role assignments from the Azure resource. This can be useful when\nrole assignments can't be created, for example on existing resources where you don't have permission\nto create the assignments.",
+ "returns": "The configured `IResourceBuilder`1`.",
"kind": "Method",
"signature": "clearDefaultRoleAssignments(): IAzureResource",
"parameters": [],
@@ -510,7 +556,8 @@
"name": "getBicepIdentifier",
"capabilityId": "Aspire.Hosting.Azure/getBicepIdentifier",
"qualifiedName": "getBicepIdentifier",
- "description": "Gets the normalized Bicep identifier for an Azure resource",
+ "description": "Gets the Bicep identifier for the Azure resource.",
+ "returns": "A valid Bicep identifier.",
"kind": "Method",
"signature": "getBicepIdentifier(): string",
"parameters": [],
@@ -526,7 +573,8 @@
"name": "isExisting",
"capabilityId": "Aspire.Hosting.Azure/isExisting",
"qualifiedName": "isExisting",
- "description": "Determines whether a resource is marked as existing",
+ "description": "Determines whether the Azure resource is marked as existing.",
+ "returns": "`true` if the resource is marked as existing; otherwise, `false`.",
"kind": "Method",
"signature": "isExisting(): boolean",
"parameters": [],
@@ -542,7 +590,8 @@
"name": "publishAsConnectionString",
"capabilityId": "Aspire.Hosting.Azure/publishAsConnectionString",
"qualifiedName": "publishAsConnectionString",
- "description": "Publishes an Azure resource to the manifest as a connection string",
+ "description": "Changes the resource to be published as a connection string reference in the manifest.",
+ "returns": "The configured `IResourceBuilder`1`.",
"kind": "Method",
"signature": "publishAsConnectionString(): IAzureResource",
"parameters": [],
@@ -559,18 +608,21 @@
"name": "publishAsExisting",
"capabilityId": "Aspire.Hosting.Azure/publishAsExisting",
"qualifiedName": "publishAsExisting",
- "description": "Marks an Azure resource as existing in publish mode",
+ "description": "Marks the resource as an existing resource when the application is deployed.",
+ "returns": "The resource builder with the existing resource annotation added.",
"kind": "Method",
"signature": "publishAsExisting(name: ParameterResource, resourceGroup?: ParameterResource): IAzureResource",
"parameters": [
{
"name": "name",
- "type": "ParameterResource"
+ "type": "ParameterResource",
+ "description": "The name of the existing resource as a string or parameter resource."
},
{
"name": "resourceGroup",
"type": "ParameterResource",
- "isOptional": true
+ "isOptional": true,
+ "description": "The name of the existing resource group as a string or parameter resource."
}
],
"returnType": "IAzureResource",
@@ -586,18 +638,21 @@
"name": "runAsExisting",
"capabilityId": "Aspire.Hosting.Azure/runAsExisting",
"qualifiedName": "runAsExisting",
- "description": "Marks an Azure resource as existing in run mode",
+ "description": "Marks the resource as an existing resource when the application is running.",
+ "returns": "The resource builder with the existing resource annotation added.",
"kind": "Method",
"signature": "runAsExisting(name: ParameterResource, resourceGroup?: ParameterResource): IAzureResource",
"parameters": [
{
"name": "name",
- "type": "ParameterResource"
+ "type": "ParameterResource",
+ "description": "The name of the existing resource as a string or parameter resource."
},
{
"name": "resourceGroup",
"type": "ParameterResource",
- "isOptional": true
+ "isOptional": true,
+ "description": "The name of the existing resource group as a string or parameter resource."
}
],
"returnType": "IAzureResource",
@@ -625,13 +680,15 @@
"name": "getOutput",
"capabilityId": "Aspire.Hosting.Azure/getOutput",
"qualifiedName": "getOutput",
- "description": "Gets an output reference from an Azure Bicep template resource",
+ "description": "Gets a reference to an output from a bicep template.",
+ "returns": "A `BicepOutputReference` that represents the output.",
"kind": "Method",
"signature": "getOutput(name: string): BicepOutputReference",
"parameters": [
{
"name": "name",
- "type": "string"
+ "type": "string",
+ "description": "Name of the output."
}
],
"returnType": "BicepOutputReference",
@@ -683,13 +740,16 @@
"name": "withLocation",
"capabilityId": "Aspire.Hosting.Azure/withLocation",
"qualifiedName": "withLocation",
- "description": "Sets the Azure location for the shared Azure environment resource",
+ "description": "Sets the location of the Azure environment resource.",
+ "remarks": "This method is used to set the location of the Azure environment resource.\nThe location is used to determine where the resources will be deployed.",
+ "returns": "The `IResourceBuilder`1`.",
"kind": "Method",
"signature": "withLocation(location: ParameterResource): AzureEnvironmentResource",
"parameters": [
{
"name": "location",
- "type": "ParameterResource"
+ "type": "ParameterResource",
+ "description": "The Azure location."
}
],
"returnType": "AzureEnvironmentResource",
@@ -703,13 +763,16 @@
"name": "withResourceGroup",
"capabilityId": "Aspire.Hosting.Azure/withResourceGroup",
"qualifiedName": "withResourceGroup",
- "description": "Sets the Azure resource group for the shared Azure environment resource",
+ "description": "Sets the resource group name of the Azure environment resource.",
+ "remarks": "This method is used to set the resource group name of the Azure environment resource.\nThe resource group name is used to determine where the resources will be deployed.",
+ "returns": "The `IResourceBuilder`1`.",
"kind": "Method",
"signature": "withResourceGroup(resourceGroup: ParameterResource): AzureEnvironmentResource",
"parameters": [
{
"name": "resourceGroup",
- "type": "ParameterResource"
+ "type": "ParameterResource",
+ "description": "The Azure resource group name."
}
],
"returnType": "AzureEnvironmentResource",
@@ -735,15 +798,17 @@
"name": "configureInfrastructure",
"capabilityId": "Aspire.Hosting.Azure/configureInfrastructure",
"qualifiedName": "configureInfrastructure",
- "description": "Configures the Azure provisioning infrastructure callback",
+ "description": "Configures the Azure provisioning resource `Infrastructure`.",
+ "returns": "The resource builder.",
"kind": "Method",
- "signature": "configureInfrastructure(configure: (obj: AzureResourceInfrastructure) =\u003E Promise\u003Cvoid\u003E): AzureProvisioningResource",
+ "signature": "configureInfrastructure(configure: (obj: AzureResourceInfrastructure) => Promise): AzureProvisioningResource",
"parameters": [
{
"name": "configure",
"type": "callback",
"isCallback": true,
- "callbackSignature": "(obj: AzureResourceInfrastructure) =\u003E Promise\u003Cvoid\u003E"
+ "callbackSignature": "(obj: AzureResourceInfrastructure) => Promise",
+ "description": "The configuration callback."
}
],
"returnType": "AzureProvisioningResource",
@@ -761,6 +826,7 @@
"fullName": "Aspire.Hosting.Azure.AzureResourceInfrastructure",
"kind": "handle",
"exposeProperties": true,
+ "description": "An Azure Provisioning `Infrastructure` which represents the root Bicep module that is generated for an Azure resource.",
"implementedInterfaces": [],
"capabilities": []
},
@@ -781,19 +847,20 @@
"fullName": "Aspire.Hosting.Azure.BicepOutputReference",
"kind": "handle",
"exposeProperties": true,
+ "description": "A reference to an output from a bicep template.",
"implementedInterfaces": [
"Aspire.Hosting.ApplicationModel.IExpressionValue",
"Aspire.Hosting.ApplicationModel.IManifestExpressionProvider",
"Aspire.Hosting.ApplicationModel.IValueProvider",
"Aspire.Hosting.ApplicationModel.IValueWithReferences",
- "System.IEquatable\u00601[[Aspire.Hosting.Azure.BicepOutputReference]]"
+ "System.IEquatable`1[[Aspire.Hosting.Azure.BicepOutputReference]]"
],
"capabilities": [
{
"name": "name",
"capabilityId": "Aspire.Hosting.Azure/BicepOutputReference.name",
"qualifiedName": "BicepOutputReference.name",
- "description": "Gets the Name property",
+ "description": "Name of the output.",
"kind": "PropertyGetter",
"signature": "name(): string",
"parameters": [],
@@ -807,7 +874,7 @@
"name": "value",
"capabilityId": "Aspire.Hosting.Azure/BicepOutputReference.value",
"qualifiedName": "BicepOutputReference.value",
- "description": "Gets the Value property",
+ "description": "The value of the output.",
"kind": "PropertyGetter",
"signature": "value(): string",
"parameters": [],
@@ -821,7 +888,7 @@
"name": "valueExpression",
"capabilityId": "Aspire.Hosting.Azure/BicepOutputReference.valueExpression",
"qualifiedName": "BicepOutputReference.valueExpression",
- "description": "Gets the ValueExpression property",
+ "description": "The expression used in the manifest to reference the value of the output.",
"kind": "PropertyGetter",
"signature": "valueExpression(): string",
"parameters": [],
@@ -838,6 +905,7 @@
"fullName": "Aspire.Hosting.Azure.IAzureKeyVaultResource",
"kind": "handle",
"isInterface": true,
+ "description": "Represents a resource that represents an Azure Key Vault.",
"implementedInterfaces": [],
"capabilities": []
},
@@ -846,6 +914,7 @@
"fullName": "Aspire.Hosting.Azure.IAzureKeyVaultSecretReference",
"kind": "handle",
"isInterface": true,
+ "description": "Represents a reference to a secret in an Azure Key Vault resource.",
"implementedInterfaces": [],
"capabilities": []
}
diff --git a/src/frontend/src/data/ts-modules/Aspire.Hosting.Azure.AppConfiguration.13.3.0.json b/src/frontend/src/data/ts-modules/Aspire.Hosting.Azure.AppConfiguration.13.3.0.json
index 8e561cd67..1c11b4895 100644
--- a/src/frontend/src/data/ts-modules/Aspire.Hosting.Azure.AppConfiguration.13.3.0.json
+++ b/src/frontend/src/data/ts-modules/Aspire.Hosting.Azure.AppConfiguration.13.3.0.json
@@ -10,13 +10,16 @@
"name": "addAzureAppConfiguration",
"capabilityId": "Aspire.Hosting.Azure.AppConfiguration/addAzureAppConfiguration",
"qualifiedName": "addAzureAppConfiguration",
- "description": "Adds an Azure App Configuration resource",
+ "description": "Adds an Azure App Configuration resource to the application model.",
+ "remarks": "By default references to the Azure App Configuration resource will be assigned the following roles:\n- `AppConfigurationDataOwner`\nThese can be replaced by calling `WithRoleAssignments``1`.",
+ "returns": "A reference to the `IResourceBuilder`1`.",
"kind": "Method",
"signature": "addAzureAppConfiguration(name: string): AzureAppConfigurationResource",
"parameters": [
{
"name": "name",
- "type": "string"
+ "type": "string",
+ "description": "The name of the resource. This name will be used as the connection string name when referenced in a dependency."
}
],
"returnType": "AzureAppConfigurationResource",
@@ -30,16 +33,19 @@
"name": "runAsEmulator",
"capabilityId": "Aspire.Hosting.Azure.AppConfiguration/runAsEmulator",
"qualifiedName": "runAsEmulator",
- "description": "Configures Azure App Configuration to run with the local emulator",
+ "description": "Configures an Azure App Configuration resource to be emulated. This resource requires an `AzureAppConfigurationResource` to be added to the application model.",
+ "remarks": "This version of the package defaults to the tag of the / container image.",
+ "returns": "A reference to the `IResourceBuilder`1`.",
"kind": "Method",
- "signature": "runAsEmulator(configureEmulator?: (obj: AzureAppConfigurationEmulatorResource) =\u003E Promise\u003Cvoid\u003E): AzureAppConfigurationResource",
+ "signature": "runAsEmulator(configureEmulator?: (obj: AzureAppConfigurationEmulatorResource) => Promise): AzureAppConfigurationResource",
"parameters": [
{
"name": "configureEmulator",
"type": "callback",
"isOptional": true,
"isCallback": true,
- "callbackSignature": "(obj: AzureAppConfigurationEmulatorResource) =\u003E Promise\u003Cvoid\u003E"
+ "callbackSignature": "(obj: AzureAppConfigurationEmulatorResource) => Promise",
+ "description": "Callback that exposes underlying container used for emulation to allow for customization."
}
],
"returnType": "AzureAppConfigurationResource",
@@ -53,14 +59,16 @@
"name": "withDataBindMount",
"capabilityId": "Aspire.Hosting.Azure.AppConfiguration/withDataBindMount",
"qualifiedName": "withDataBindMount",
- "description": "Adds a data bind mount for the App Configuration emulator",
+ "description": "Adds a bind mount for the storage of an Azure App Configuration emulator resource.",
+ "returns": "A builder for the `AzureAppConfigurationEmulatorResource`.",
"kind": "Method",
"signature": "withDataBindMount(path?: string): AzureAppConfigurationEmulatorResource",
"parameters": [
{
"name": "path",
"type": "string",
- "isOptional": true
+ "isOptional": true,
+ "description": "Relative path to the AppHost where emulator storage is persisted between runs. Defaults to the path '.aace'"
}
],
"returnType": "AzureAppConfigurationEmulatorResource",
@@ -74,14 +82,16 @@
"name": "withDataVolume",
"capabilityId": "Aspire.Hosting.Azure.AppConfiguration/withDataVolume",
"qualifiedName": "withDataVolume",
- "description": "Adds a data volume for the App Configuration emulator",
+ "description": "Adds a named volume for the data folder to an Azure App Configuration emulator resource.",
+ "returns": "A builder for the `AzureAppConfigurationEmulatorResource`.",
"kind": "Method",
"signature": "withDataVolume(name?: string): AzureAppConfigurationEmulatorResource",
"parameters": [
{
"name": "name",
"type": "string",
- "isOptional": true
+ "isOptional": true,
+ "description": "The name of the volume. Defaults to an auto-generated name based on the application and resource names."
}
],
"returnType": "AzureAppConfigurationEmulatorResource",
@@ -95,14 +105,16 @@
"name": "withHostPort",
"capabilityId": "Aspire.Hosting.Azure.AppConfiguration/withHostPort",
"qualifiedName": "withHostPort",
- "description": "Sets the host port for the App Configuration emulator",
+ "description": "Configures the host port for the Azure App Configuration emulator is exposed on instead of using randomly assigned port.",
+ "returns": "A reference to the `IResourceBuilder`1`.",
"kind": "Method",
"signature": "withHostPort(port: number): AzureAppConfigurationEmulatorResource",
"parameters": [
{
"name": "port",
"type": "number",
- "isNullable": true
+ "isNullable": true,
+ "description": "The port to bind on the host. If `null` is used, a random port will be assigned."
}
],
"returnType": "AzureAppConfigurationEmulatorResource",
@@ -116,17 +128,20 @@
"name": "withRoleAssignments",
"capabilityId": "Aspire.Hosting.Azure.AppConfiguration/withAppConfigurationRoleAssignments",
"qualifiedName": "withRoleAssignments",
- "description": "Assigns App Configuration roles to a resource",
+ "description": "Assigns the specified roles to the given resource, granting it the necessary permissions on the target Azure App Configuration resource. This replaces the default role assignments for the resource.",
+ "returns": "The updated `IResourceBuilder`1` with the applied role assignments.",
"kind": "Method",
"signature": "withRoleAssignments(target: AzureAppConfigurationResource, roles: AzureAppConfigurationRole[]): IResource",
"parameters": [
{
"name": "target",
- "type": "AzureAppConfigurationResource"
+ "type": "AzureAppConfigurationResource",
+ "description": "The target Azure App Configuration resource."
},
{
"name": "roles",
- "type": "AzureAppConfigurationRole[]"
+ "type": "AzureAppConfigurationRole[]",
+ "description": "The App Configuration roles to be assigned."
}
],
"returnType": "IResource",
@@ -169,14 +184,16 @@
"name": "withDataBindMount",
"capabilityId": "Aspire.Hosting.Azure.AppConfiguration/withDataBindMount",
"qualifiedName": "withDataBindMount",
- "description": "Adds a data bind mount for the App Configuration emulator",
+ "description": "Adds a bind mount for the storage of an Azure App Configuration emulator resource.",
+ "returns": "A builder for the `AzureAppConfigurationEmulatorResource`.",
"kind": "Method",
"signature": "withDataBindMount(path?: string): AzureAppConfigurationEmulatorResource",
"parameters": [
{
"name": "path",
"type": "string",
- "isOptional": true
+ "isOptional": true,
+ "description": "Relative path to the AppHost where emulator storage is persisted between runs. Defaults to the path '.aace'"
}
],
"returnType": "AzureAppConfigurationEmulatorResource",
@@ -190,14 +207,16 @@
"name": "withDataVolume",
"capabilityId": "Aspire.Hosting.Azure.AppConfiguration/withDataVolume",
"qualifiedName": "withDataVolume",
- "description": "Adds a data volume for the App Configuration emulator",
+ "description": "Adds a named volume for the data folder to an Azure App Configuration emulator resource.",
+ "returns": "A builder for the `AzureAppConfigurationEmulatorResource`.",
"kind": "Method",
"signature": "withDataVolume(name?: string): AzureAppConfigurationEmulatorResource",
"parameters": [
{
"name": "name",
"type": "string",
- "isOptional": true
+ "isOptional": true,
+ "description": "The name of the volume. Defaults to an auto-generated name based on the application and resource names."
}
],
"returnType": "AzureAppConfigurationEmulatorResource",
@@ -211,14 +230,16 @@
"name": "withHostPort",
"capabilityId": "Aspire.Hosting.Azure.AppConfiguration/withHostPort",
"qualifiedName": "withHostPort",
- "description": "Sets the host port for the App Configuration emulator",
+ "description": "Configures the host port for the Azure App Configuration emulator is exposed on instead of using randomly assigned port.",
+ "returns": "A reference to the `IResourceBuilder`1`.",
"kind": "Method",
"signature": "withHostPort(port: number): AzureAppConfigurationEmulatorResource",
"parameters": [
{
"name": "port",
"type": "number",
- "isNullable": true
+ "isNullable": true,
+ "description": "The port to bind on the host. If `null` is used, a random port will be assigned."
}
],
"returnType": "AzureAppConfigurationEmulatorResource",
@@ -251,16 +272,19 @@
"name": "runAsEmulator",
"capabilityId": "Aspire.Hosting.Azure.AppConfiguration/runAsEmulator",
"qualifiedName": "runAsEmulator",
- "description": "Configures Azure App Configuration to run with the local emulator",
+ "description": "Configures an Azure App Configuration resource to be emulated. This resource requires an `AzureAppConfigurationResource` to be added to the application model.",
+ "remarks": "This version of the package defaults to the tag of the / container image.",
+ "returns": "A reference to the `IResourceBuilder`1`.",
"kind": "Method",
- "signature": "runAsEmulator(configureEmulator?: (obj: AzureAppConfigurationEmulatorResource) =\u003E Promise\u003Cvoid\u003E): AzureAppConfigurationResource",
+ "signature": "runAsEmulator(configureEmulator?: (obj: AzureAppConfigurationEmulatorResource) => Promise): AzureAppConfigurationResource",
"parameters": [
{
"name": "configureEmulator",
"type": "callback",
"isOptional": true,
"isCallback": true,
- "callbackSignature": "(obj: AzureAppConfigurationEmulatorResource) =\u003E Promise\u003Cvoid\u003E"
+ "callbackSignature": "(obj: AzureAppConfigurationEmulatorResource) => Promise",
+ "description": "Callback that exposes underlying container used for emulation to allow for customization."
}
],
"returnType": "AzureAppConfigurationResource",
@@ -279,6 +303,7 @@
"name": "AzureAppConfigurationRole",
"fullName": "Aspire.Hosting.AzureAppConfigurationRole",
"kind": "enum",
+ "description": "Represents Azure App Configuration roles that are compatible with the Aspire Type System (ATS).",
"members": [
"AppConfigurationDataOwner",
"AppConfigurationDataReader"
diff --git a/src/frontend/src/data/ts-modules/Aspire.Hosting.Azure.AppContainers.13.3.0.json b/src/frontend/src/data/ts-modules/Aspire.Hosting.Azure.AppContainers.13.3.0.json
index 391bc2354..9682b1c49 100644
--- a/src/frontend/src/data/ts-modules/Aspire.Hosting.Azure.AppContainers.13.3.0.json
+++ b/src/frontend/src/data/ts-modules/Aspire.Hosting.Azure.AppContainers.13.3.0.json
@@ -10,13 +10,15 @@
"name": "addAzureContainerAppEnvironment",
"capabilityId": "Aspire.Hosting.Azure.AppContainers/addAzureContainerAppEnvironment",
"qualifiedName": "addAzureContainerAppEnvironment",
- "description": "Adds an Azure Container App Environment resource",
+ "description": "Adds a container app environment resource to the distributed application builder.",
+ "returns": "`IResourceBuilder`1`",
"kind": "Method",
"signature": "addAzureContainerAppEnvironment(name: string): AzureContainerAppEnvironmentResource",
"parameters": [
{
"name": "name",
- "type": "string"
+ "type": "string",
+ "description": "The name of the resource."
}
],
"returnType": "AzureContainerAppEnvironmentResource",
@@ -30,17 +32,20 @@
"name": "configureCustomDomain",
"capabilityId": "Aspire.Hosting.Azure.AppContainers/configureCustomDomain",
"qualifiedName": "configureCustomDomain",
- "description": "Configures the custom domain for the container app",
+ "description": "Configures the custom domain for the container app.",
+ "remarks": "The `ConfigureCustomDomain` extension method\nsimplifies the process of assigning a custom domain to a container app resource when it is deployed. It has no impact on local development.\nThe `ConfigureCustomDomain` method is used\nin conjunction with the `PublishAsAzureContainerApp``1`\ncallback. Assigning a custom domain to a container app resource is a multi-step process and requires multiple deployments.\nThe `ConfigureCustomDomain` method takes\ntwo arguments which are parameter resource builders. The first is a parameter that represents the custom domain and the second is a parameter that\nrepresents the name of the managed certificate provisioned via the Azure Portal\nWhen deploying with custom domains configured for the first time leave the `certificateName` parameter empty (when prompted\nby the Azure Developer CLI). Once the application is deployed successfully access to the Azure Portal to bind the custom domain to a managed SSL\ncertificate. Once the certificate is successfully provisioned, subsequent deployments of the application can use this certificate name when the\n`certificateName` is prompted.\nFor deployments triggered locally by the Azure Developer CLI the `config.json` file in the `.azure/{environment name}` path\ncan be modified with the certificate name since Azure Developer CLI will not prompt again for the value.\nThis example shows declaring two parameters to capture the custom domain and certificate name and\npassing them to the `ConfigureCustomDomain`\nmethod via the `PublishAsAzureContainerApp``1`\nextension method.\n```\nvar builder = DistributedApplication.CreateBuilder();\nvar customDomain = builder.AddParameter(\"customDomain\"); // Value provided at first deployment.\nvar certificateName = builder.AddParameter(\"certificateName\"); // Value provided at second and subsequent deployments.\nbuilder.AddProject(\"inventory\")\n.PublishAsAzureContainerApp((module, app) =>\n{\napp.ConfigureCustomDomain(customDomain, certificateName);\n});\n```",
"kind": "Method",
"signature": "configureCustomDomain(customDomain: ParameterResource, certificateName: ParameterResource): void",
"parameters": [
{
"name": "customDomain",
- "type": "ParameterResource"
+ "type": "ParameterResource",
+ "description": "A resource builder for a parameter resource capturing the name of the custom domain."
},
{
"name": "certificateName",
- "type": "ParameterResource"
+ "type": "ParameterResource",
+ "description": "A resource builder for a parameter resource capturing the name of the certificate configured in the Azure Portal."
}
],
"returnType": "void",
@@ -53,15 +58,18 @@
"name": "publishAsAzureContainerApp",
"capabilityId": "Aspire.Hosting.Azure.AppContainers/publishContainerAsAzureContainerApp",
"qualifiedName": "publishAsAzureContainerApp",
- "description": "Configures the container resource to be published as an Azure Container App",
+ "description": "Publishes the specified container resource as a container app.",
+ "remarks": "This method checks if the application is in publish mode. If it is, it adds the necessary infrastructure\nfor container apps and applies the provided configuration action to the container app.\n```\nbuilder.AddContainer(\"name\", \"image\").PublishAsAzureContainerApp((infrastructure, app) =>\n{\n// Configure the container app here\n});\n```",
+ "returns": "The updated container resource builder.",
"kind": "Method",
- "signature": "publishAsAzureContainerApp(configure: (arg1: AzureResourceInfrastructure, arg2: ContainerApp) =\u003E Promise\u003Cvoid\u003E): ContainerResource",
+ "signature": "publishAsAzureContainerApp(configure: (arg1: AzureResourceInfrastructure, arg2: ContainerApp) => Promise): ContainerResource",
"parameters": [
{
"name": "configure",
"type": "callback",
"isCallback": true,
- "callbackSignature": "(arg1: AzureResourceInfrastructure, arg2: ContainerApp) =\u003E Promise\u003Cvoid\u003E"
+ "callbackSignature": "(arg1: AzureResourceInfrastructure, arg2: ContainerApp) => Promise",
+ "description": "The configuration action for the container app."
}
],
"returnType": "ContainerResource",
@@ -75,15 +83,18 @@
"name": "publishAsAzureContainerApp",
"capabilityId": "Aspire.Hosting.Azure.AppContainers/publishExecutableAsAzureContainerApp",
"qualifiedName": "publishAsAzureContainerApp",
- "description": "Configures the executable resource to be published as an Azure Container App",
+ "description": "Publishes the specified container resource as a container app.",
+ "remarks": "This method checks if the application is in publish mode. If it is, it adds the necessary infrastructure\nfor container apps and applies the provided configuration action to the container app.\n```\nbuilder.AddNpmApp(\"name\", \"image\").PublishAsAzureContainerApp((infrastructure, app) =>\n{\n// Configure the container app here\n});\n```",
+ "returns": "The updated container resource builder.",
"kind": "Method",
- "signature": "publishAsAzureContainerApp(configure: (arg1: AzureResourceInfrastructure, arg2: ContainerApp) =\u003E Promise\u003Cvoid\u003E): ExecutableResource",
+ "signature": "publishAsAzureContainerApp(configure: (arg1: AzureResourceInfrastructure, arg2: ContainerApp) => Promise): ExecutableResource",
"parameters": [
{
"name": "configure",
"type": "callback",
"isCallback": true,
- "callbackSignature": "(arg1: AzureResourceInfrastructure, arg2: ContainerApp) =\u003E Promise\u003Cvoid\u003E"
+ "callbackSignature": "(arg1: AzureResourceInfrastructure, arg2: ContainerApp) => Promise",
+ "description": "The configuration action for the container app."
}
],
"returnType": "ExecutableResource",
@@ -98,15 +109,18 @@
"name": "publishAsAzureContainerApp",
"capabilityId": "Aspire.Hosting.Azure.AppContainers/publishProjectAsAzureContainerApp",
"qualifiedName": "publishAsAzureContainerApp",
- "description": "Configures the project resource to be published as an Azure Container App",
+ "description": "Allows configuring the specified project resource as a container app.",
+ "remarks": "This method adds the necessary infrastructure for container apps to the application builder\nand applies the specified configuration to the container app.\n```\nbuilder.AddProject.PublishAsAzureContainerApp((infrastructure, app) =>\n{\n// Configure the container app here\n});\n```",
+ "returns": "The updated project resource builder.",
"kind": "Method",
- "signature": "publishAsAzureContainerApp(configure: (arg1: AzureResourceInfrastructure, arg2: ContainerApp) =\u003E Promise\u003Cvoid\u003E): ProjectResource",
+ "signature": "publishAsAzureContainerApp(configure: (arg1: AzureResourceInfrastructure, arg2: ContainerApp) => Promise): ProjectResource",
"parameters": [
{
"name": "configure",
"type": "callback",
"isCallback": true,
- "callbackSignature": "(arg1: AzureResourceInfrastructure, arg2: ContainerApp) =\u003E Promise\u003Cvoid\u003E"
+ "callbackSignature": "(arg1: AzureResourceInfrastructure, arg2: ContainerApp) => Promise",
+ "description": "The configuration action for the container app."
}
],
"returnType": "ProjectResource",
@@ -123,14 +137,14 @@
"qualifiedName": "publishAsAzureContainerAppJob",
"description": "Configures the compute resource as an Azure Container App Job",
"kind": "Method",
- "signature": "publishAsAzureContainerAppJob(configure?: (arg1: AzureResourceInfrastructure, arg2: ContainerAppJob) =\u003E Promise\u003Cvoid\u003E): IComputeResource",
+ "signature": "publishAsAzureContainerAppJob(configure?: (arg1: AzureResourceInfrastructure, arg2: ContainerAppJob) => Promise): IComputeResource",
"parameters": [
{
"name": "configure",
"type": "callback",
"isOptional": true,
"isCallback": true,
- "callbackSignature": "(arg1: AzureResourceInfrastructure, arg2: ContainerAppJob) =\u003E Promise\u003Cvoid\u003E"
+ "callbackSignature": "(arg1: AzureResourceInfrastructure, arg2: ContainerAppJob) => Promise"
}
],
"returnType": "IComputeResource",
@@ -150,7 +164,7 @@
"qualifiedName": "publishAsScheduledAzureContainerAppJob",
"description": "Configures the compute resource as a scheduled Azure Container App Job",
"kind": "Method",
- "signature": "publishAsScheduledAzureContainerAppJob(cronExpression: string, configure?: (arg1: AzureResourceInfrastructure, arg2: ContainerAppJob) =\u003E Promise\u003Cvoid\u003E): IComputeResource",
+ "signature": "publishAsScheduledAzureContainerAppJob(cronExpression: string, configure?: (arg1: AzureResourceInfrastructure, arg2: ContainerAppJob) => Promise): IComputeResource",
"parameters": [
{
"name": "cronExpression",
@@ -161,7 +175,7 @@
"type": "callback",
"isOptional": true,
"isCallback": true,
- "callbackSignature": "(arg1: AzureResourceInfrastructure, arg2: ContainerAppJob) =\u003E Promise\u003Cvoid\u003E"
+ "callbackSignature": "(arg1: AzureResourceInfrastructure, arg2: ContainerAppJob) => Promise"
}
],
"returnType": "IComputeResource",
@@ -179,7 +193,9 @@
"name": "withAzdResourceNaming",
"capabilityId": "Aspire.Hosting.Azure.AppContainers/withAzdResourceNaming",
"qualifiedName": "withAzdResourceNaming",
- "description": "Configures resources to use azd naming conventions",
+ "description": "Configures the container app environment resources to use the same naming conventions as azd.",
+ "remarks": "By default, the container app environment resources use a different naming convention than azd.\nThis method allows for reusing the previously deployed resources if the application was deployed using\nazd without calling `AddAzureContainerAppEnvironment`",
+ "returns": "`IResourceBuilder`1`",
"kind": "Method",
"signature": "withAzdResourceNaming(): AzureContainerAppEnvironmentResource",
"parameters": [],
@@ -194,13 +210,15 @@
"name": "withAzureLogAnalyticsWorkspace",
"capabilityId": "Aspire.Hosting.Azure.AppContainers/withAzureLogAnalyticsWorkspace",
"qualifiedName": "withAzureLogAnalyticsWorkspace",
- "description": "Configures the container app environment to use a specific Log Analytics Workspace",
+ "description": "Configures the container app environment resource to use the specified Log Analytics Workspace.",
+ "returns": "`IResourceBuilder`1`",
"kind": "Method",
"signature": "withAzureLogAnalyticsWorkspace(workspaceBuilder: AzureLogAnalyticsWorkspaceResource): AzureContainerAppEnvironmentResource",
"parameters": [
{
"name": "workspaceBuilder",
- "type": "AzureLogAnalyticsWorkspaceResource"
+ "type": "AzureLogAnalyticsWorkspaceResource",
+ "description": "The resource builder for the `AzureLogAnalyticsWorkspaceResource` to use."
}
],
"returnType": "AzureContainerAppEnvironmentResource",
@@ -214,7 +232,9 @@
"name": "withCompactResourceNaming",
"capabilityId": "Aspire.Hosting.Azure.AppContainers/withCompactResourceNaming",
"qualifiedName": "withCompactResourceNaming",
- "description": "Configures resources to use compact naming for length-constrained Azure resources",
+ "description": "Configures the container app environment to use compact resource naming that maximally preserves the `uniqueString` suffix for length-constrained Azure resources such as storage accounts.",
+ "remarks": "By default, the generated Azure resource names use long static suffixes (e.g. `storageVolume`,\n`managedStorage`) that can consume most of the 24-character storage account name limit, truncating\nthe `uniqueString(resourceGroup().id)` portion that provides cross-deployment uniqueness.\nWhen enabled, this method shortens the static portions of generated names so the full 13-character\n`uniqueString` is preserved. This prevents naming collisions when deploying multiple environments\nto different resource groups.\nThis option only affects volume-related storage resources. It does not change the naming of the\ncontainer app environment, container registry, log analytics workspace, or managed identity.\nUse `WithAzdResourceNaming` to change those names as well.",
+ "returns": "A reference to the `IResourceBuilder`1` for chaining.",
"kind": "Method",
"signature": "withCompactResourceNaming(): AzureContainerAppEnvironmentResource",
"parameters": [],
@@ -229,7 +249,8 @@
"name": "withDashboard",
"capabilityId": "Aspire.Hosting.Azure.AppContainers/withDashboard",
"qualifiedName": "withDashboard",
- "description": "Configures whether the Aspire dashboard is included in the container app environment",
+ "description": "Configures whether the Aspire dashboard should be included in the container app environment.",
+ "returns": "`IResourceBuilder`1`",
"kind": "Method",
"signature": "withDashboard(enable?: boolean): AzureContainerAppEnvironmentResource",
"parameters": [
@@ -237,7 +258,8 @@
"name": "enable",
"type": "boolean",
"isOptional": true,
- "defaultValue": "True"
+ "defaultValue": "True",
+ "description": "Whether to include the Aspire dashboard. Default is true."
}
],
"returnType": "AzureContainerAppEnvironmentResource",
@@ -251,7 +273,9 @@
"name": "withHttpsUpgrade",
"capabilityId": "Aspire.Hosting.Azure.AppContainers/withHttpsUpgrade",
"qualifiedName": "withHttpsUpgrade",
- "description": "Configures whether HTTP endpoints are upgraded to HTTPS",
+ "description": "Configures whether HTTP endpoints should be upgraded to HTTPS in Azure Container Apps. By default, HTTP endpoints are upgraded to HTTPS for security and WebSocket compatibility.",
+ "remarks": "When disabled (`false`), HTTP endpoints will use HTTP scheme and port 80 in Azure Container Apps.\nNote that explicit ports specified for development (e.g., port 8080) are still normalized\nto standard ports (80/443) as required by Azure Container Apps.",
+ "returns": "`IResourceBuilder`1`",
"kind": "Method",
"signature": "withHttpsUpgrade(upgrade?: boolean): AzureContainerAppEnvironmentResource",
"parameters": [
@@ -259,7 +283,8 @@
"name": "upgrade",
"type": "boolean",
"isOptional": true,
- "defaultValue": "True"
+ "defaultValue": "True",
+ "description": "Whether to upgrade HTTP endpoints to HTTPS. Default is true."
}
],
"returnType": "AzureContainerAppEnvironmentResource",
@@ -290,7 +315,9 @@
"name": "withAzdResourceNaming",
"capabilityId": "Aspire.Hosting.Azure.AppContainers/withAzdResourceNaming",
"qualifiedName": "withAzdResourceNaming",
- "description": "Configures resources to use azd naming conventions",
+ "description": "Configures the container app environment resources to use the same naming conventions as azd.",
+ "remarks": "By default, the container app environment resources use a different naming convention than azd.\nThis method allows for reusing the previously deployed resources if the application was deployed using\nazd without calling `AddAzureContainerAppEnvironment`",
+ "returns": "`IResourceBuilder`1`",
"kind": "Method",
"signature": "withAzdResourceNaming(): AzureContainerAppEnvironmentResource",
"parameters": [],
@@ -305,13 +332,15 @@
"name": "withAzureLogAnalyticsWorkspace",
"capabilityId": "Aspire.Hosting.Azure.AppContainers/withAzureLogAnalyticsWorkspace",
"qualifiedName": "withAzureLogAnalyticsWorkspace",
- "description": "Configures the container app environment to use a specific Log Analytics Workspace",
+ "description": "Configures the container app environment resource to use the specified Log Analytics Workspace.",
+ "returns": "`IResourceBuilder`1`",
"kind": "Method",
"signature": "withAzureLogAnalyticsWorkspace(workspaceBuilder: AzureLogAnalyticsWorkspaceResource): AzureContainerAppEnvironmentResource",
"parameters": [
{
"name": "workspaceBuilder",
- "type": "AzureLogAnalyticsWorkspaceResource"
+ "type": "AzureLogAnalyticsWorkspaceResource",
+ "description": "The resource builder for the `AzureLogAnalyticsWorkspaceResource` to use."
}
],
"returnType": "AzureContainerAppEnvironmentResource",
@@ -325,7 +354,9 @@
"name": "withCompactResourceNaming",
"capabilityId": "Aspire.Hosting.Azure.AppContainers/withCompactResourceNaming",
"qualifiedName": "withCompactResourceNaming",
- "description": "Configures resources to use compact naming for length-constrained Azure resources",
+ "description": "Configures the container app environment to use compact resource naming that maximally preserves the `uniqueString` suffix for length-constrained Azure resources such as storage accounts.",
+ "remarks": "By default, the generated Azure resource names use long static suffixes (e.g. `storageVolume`,\n`managedStorage`) that can consume most of the 24-character storage account name limit, truncating\nthe `uniqueString(resourceGroup().id)` portion that provides cross-deployment uniqueness.\nWhen enabled, this method shortens the static portions of generated names so the full 13-character\n`uniqueString` is preserved. This prevents naming collisions when deploying multiple environments\nto different resource groups.\nThis option only affects volume-related storage resources. It does not change the naming of the\ncontainer app environment, container registry, log analytics workspace, or managed identity.\nUse `WithAzdResourceNaming` to change those names as well.",
+ "returns": "A reference to the `IResourceBuilder`1` for chaining.",
"kind": "Method",
"signature": "withCompactResourceNaming(): AzureContainerAppEnvironmentResource",
"parameters": [],
@@ -340,7 +371,8 @@
"name": "withDashboard",
"capabilityId": "Aspire.Hosting.Azure.AppContainers/withDashboard",
"qualifiedName": "withDashboard",
- "description": "Configures whether the Aspire dashboard is included in the container app environment",
+ "description": "Configures whether the Aspire dashboard should be included in the container app environment.",
+ "returns": "`IResourceBuilder`1`",
"kind": "Method",
"signature": "withDashboard(enable?: boolean): AzureContainerAppEnvironmentResource",
"parameters": [
@@ -348,7 +380,8 @@
"name": "enable",
"type": "boolean",
"isOptional": true,
- "defaultValue": "True"
+ "defaultValue": "True",
+ "description": "Whether to include the Aspire dashboard. Default is true."
}
],
"returnType": "AzureContainerAppEnvironmentResource",
@@ -362,7 +395,9 @@
"name": "withHttpsUpgrade",
"capabilityId": "Aspire.Hosting.Azure.AppContainers/withHttpsUpgrade",
"qualifiedName": "withHttpsUpgrade",
- "description": "Configures whether HTTP endpoints are upgraded to HTTPS",
+ "description": "Configures whether HTTP endpoints should be upgraded to HTTPS in Azure Container Apps. By default, HTTP endpoints are upgraded to HTTPS for security and WebSocket compatibility.",
+ "remarks": "When disabled (`false`), HTTP endpoints will use HTTP scheme and port 80 in Azure Container Apps.\nNote that explicit ports specified for development (e.g., port 8080) are still normalized\nto standard ports (80/443) as required by Azure Container Apps.",
+ "returns": "`IResourceBuilder`1`",
"kind": "Method",
"signature": "withHttpsUpgrade(upgrade?: boolean): AzureContainerAppEnvironmentResource",
"parameters": [
@@ -370,7 +405,8 @@
"name": "upgrade",
"type": "boolean",
"isOptional": true,
- "defaultValue": "True"
+ "defaultValue": "True",
+ "description": "Whether to upgrade HTTP endpoints to HTTPS. Default is true."
}
],
"returnType": "AzureContainerAppEnvironmentResource",
diff --git a/src/frontend/src/data/ts-modules/Aspire.Hosting.Azure.AppService.13.3.0.json b/src/frontend/src/data/ts-modules/Aspire.Hosting.Azure.AppService.13.3.0.json
index dd1565867..5b60f8e1a 100644
--- a/src/frontend/src/data/ts-modules/Aspire.Hosting.Azure.AppService.13.3.0.json
+++ b/src/frontend/src/data/ts-modules/Aspire.Hosting.Azure.AppService.13.3.0.json
@@ -10,13 +10,15 @@
"name": "addAzureAppServiceEnvironment",
"capabilityId": "Aspire.Hosting.Azure.AppService/addAzureAppServiceEnvironment",
"qualifiedName": "addAzureAppServiceEnvironment",
- "description": "Adds an Azure App Service environment resource",
+ "description": "Adds a azure app service environment resource to the distributed application builder.",
+ "returns": "`IResourceBuilder`1`",
"kind": "Method",
"signature": "addAzureAppServiceEnvironment(name: string): AzureAppServiceEnvironmentResource",
"parameters": [
{
"name": "name",
- "type": "string"
+ "type": "string",
+ "description": "The name of the resource."
}
],
"returnType": "AzureAppServiceEnvironmentResource",
@@ -30,23 +32,27 @@
"name": "publishAsAzureAppServiceWebsite",
"capabilityId": "Aspire.Hosting.Azure.AppService/publishAsAzureAppServiceWebsite",
"qualifiedName": "publishAsAzureAppServiceWebsite",
- "description": "Publishes the compute resource as an Azure App Service website or deployment slot",
+ "description": "Publishes the specified compute resource as an Azure App Service or Azure App Service Slot.",
+ "remarks": "```\nbuilder.AddProject(\"name\").PublishAsAzureAppServiceWebsite((infrastructure, app) =>\n{\n// Configure the App Service WebSite resource here\n});\n```",
+ "returns": "The updated compute resource builder.",
"kind": "Method",
- "signature": "publishAsAzureAppServiceWebsite(configure?: (arg1: AzureResourceInfrastructure, arg2: WebSite) =\u003E Promise\u003Cvoid\u003E, configureSlot?: (arg1: AzureResourceInfrastructure, arg2: WebSiteSlot) =\u003E Promise\u003Cvoid\u003E): IComputeResource",
+ "signature": "publishAsAzureAppServiceWebsite(configure?: (arg1: AzureResourceInfrastructure, arg2: WebSite) => Promise, configureSlot?: (arg1: AzureResourceInfrastructure, arg2: WebSiteSlot) => Promise): IComputeResource",
"parameters": [
{
"name": "configure",
"type": "callback",
"isOptional": true,
"isCallback": true,
- "callbackSignature": "(arg1: AzureResourceInfrastructure, arg2: WebSite) =\u003E Promise\u003Cvoid\u003E"
+ "callbackSignature": "(arg1: AzureResourceInfrastructure, arg2: WebSite) => Promise",
+ "description": "The configuration action for the App Service WebSite resource."
},
{
"name": "configureSlot",
"type": "callback",
"isOptional": true,
"isCallback": true,
- "callbackSignature": "(arg1: AzureResourceInfrastructure, arg2: WebSiteSlot) =\u003E Promise\u003Cvoid\u003E"
+ "callbackSignature": "(arg1: AzureResourceInfrastructure, arg2: WebSiteSlot) => Promise",
+ "description": "The configuration action for the App Service WebSite Slot resource."
}
],
"returnType": "IComputeResource",
@@ -64,7 +70,9 @@
"name": "skipEnvironmentVariableNameChecks",
"capabilityId": "Aspire.Hosting.Azure.AppService/skipEnvironmentVariableNameChecks",
"qualifiedName": "skipEnvironmentVariableNameChecks",
- "description": "Skips Azure App Service environment variable name validation for the compute resource",
+ "description": "Skips validation for environment variable names that Azure App Service may not support.",
+ "remarks": "When running on Azure App Service, environment variable names can't contain hyphens.\nThis can cause Aspire client integrations that rely on the original environment variable names to fail.\nBy default, Aspire performs validation to ensure environment variable names are compatible with Azure App Service,\nfailing to publish if any invalid names are found.",
+ "returns": "The updated compute resource builder.",
"kind": "Method",
"signature": "skipEnvironmentVariableNameChecks(): IComputeResource",
"parameters": [],
@@ -104,7 +112,8 @@
"name": "withDashboard",
"capabilityId": "Aspire.Hosting.Azure.AppService/withDashboard",
"qualifiedName": "withDashboard",
- "description": "Configures whether the Aspire dashboard is included in the Azure App Service environment",
+ "description": "Configures whether the Aspire dashboard should be included in the Azure App Service environment.",
+ "returns": "A reference to the `IResourceBuilder`1` for chaining additional configuration.",
"kind": "Method",
"signature": "withDashboard(enable?: boolean): AzureAppServiceEnvironmentResource",
"parameters": [
@@ -112,7 +121,8 @@
"name": "enable",
"type": "boolean",
"isOptional": true,
- "defaultValue": "True"
+ "defaultValue": "True",
+ "description": "Whether to include the Aspire dashboard. Default is true."
}
],
"returnType": "AzureAppServiceEnvironmentResource",
@@ -146,7 +156,9 @@
"name": "withHttpsUpgrade",
"capabilityId": "Aspire.Hosting.Azure.AppService/withHttpsUpgrade",
"qualifiedName": "withHttpsUpgrade",
- "description": "Configures whether HTTP endpoints are automatically upgraded to HTTPS in Azure App Service",
+ "description": "Configures whether HTTP endpoints should be automatically upgraded to HTTPS for the Azure App Service environment. By default, HTTP endpoints are upgraded to HTTPS for security and WebSocket compatibility.",
+ "remarks": "When disabled (`false`), HTTP endpoints will use HTTP scheme and port 80 in Azure App Service.\nNote that Azure App Service forces HTTP to HTTPS redirects at the platform level,\nso disabling upgrade primarily affects connection strings generated for dependent resources.",
+ "returns": "A reference to the `IResourceBuilder`1` for chaining additional configuration.",
"kind": "Method",
"signature": "withHttpsUpgrade(upgrade?: boolean): AzureAppServiceEnvironmentResource",
"parameters": [
@@ -154,7 +166,8 @@
"name": "upgrade",
"type": "boolean",
"isOptional": true,
- "defaultValue": "True"
+ "defaultValue": "True",
+ "description": "Whether to upgrade HTTP endpoints to HTTPS. Default is true."
}
],
"returnType": "AzureAppServiceEnvironmentResource",
@@ -205,7 +218,8 @@
"name": "withDashboard",
"capabilityId": "Aspire.Hosting.Azure.AppService/withDashboard",
"qualifiedName": "withDashboard",
- "description": "Configures whether the Aspire dashboard is included in the Azure App Service environment",
+ "description": "Configures whether the Aspire dashboard should be included in the Azure App Service environment.",
+ "returns": "A reference to the `IResourceBuilder`1` for chaining additional configuration.",
"kind": "Method",
"signature": "withDashboard(enable?: boolean): AzureAppServiceEnvironmentResource",
"parameters": [
@@ -213,7 +227,8 @@
"name": "enable",
"type": "boolean",
"isOptional": true,
- "defaultValue": "True"
+ "defaultValue": "True",
+ "description": "Whether to include the Aspire dashboard. Default is true."
}
],
"returnType": "AzureAppServiceEnvironmentResource",
@@ -247,7 +262,9 @@
"name": "withHttpsUpgrade",
"capabilityId": "Aspire.Hosting.Azure.AppService/withHttpsUpgrade",
"qualifiedName": "withHttpsUpgrade",
- "description": "Configures whether HTTP endpoints are automatically upgraded to HTTPS in Azure App Service",
+ "description": "Configures whether HTTP endpoints should be automatically upgraded to HTTPS for the Azure App Service environment. By default, HTTP endpoints are upgraded to HTTPS for security and WebSocket compatibility.",
+ "remarks": "When disabled (`false`), HTTP endpoints will use HTTP scheme and port 80 in Azure App Service.\nNote that Azure App Service forces HTTP to HTTPS redirects at the platform level,\nso disabling upgrade primarily affects connection strings generated for dependent resources.",
+ "returns": "A reference to the `IResourceBuilder`1` for chaining additional configuration.",
"kind": "Method",
"signature": "withHttpsUpgrade(upgrade?: boolean): AzureAppServiceEnvironmentResource",
"parameters": [
@@ -255,7 +272,8 @@
"name": "upgrade",
"type": "boolean",
"isOptional": true,
- "defaultValue": "True"
+ "defaultValue": "True",
+ "description": "Whether to upgrade HTTP endpoints to HTTPS. Default is true."
}
],
"returnType": "AzureAppServiceEnvironmentResource",
diff --git a/src/frontend/src/data/ts-modules/Aspire.Hosting.Azure.ApplicationInsights.13.3.0.json b/src/frontend/src/data/ts-modules/Aspire.Hosting.Azure.ApplicationInsights.13.3.0.json
index 2fe4761cf..b17d055a8 100644
--- a/src/frontend/src/data/ts-modules/Aspire.Hosting.Azure.ApplicationInsights.13.3.0.json
+++ b/src/frontend/src/data/ts-modules/Aspire.Hosting.Azure.ApplicationInsights.13.3.0.json
@@ -10,13 +10,15 @@
"name": "addAzureApplicationInsights",
"capabilityId": "Aspire.Hosting.Azure.ApplicationInsights/addAzureApplicationInsights",
"qualifiedName": "addAzureApplicationInsights",
- "description": "Adds an Azure Application Insights resource",
+ "description": "Adds an Azure Application Insights resource to the application model.",
+ "returns": "A reference to the `IResourceBuilder`1`.",
"kind": "Method",
"signature": "addAzureApplicationInsights(name: string): AzureApplicationInsightsResource",
"parameters": [
{
"name": "name",
- "type": "string"
+ "type": "string",
+ "description": "The name of the resource. This name will be used as the connection string name when referenced in a dependency."
}
],
"returnType": "AzureApplicationInsightsResource",
@@ -30,13 +32,15 @@
"name": "withLogAnalyticsWorkspace",
"capabilityId": "Aspire.Hosting.Azure.ApplicationInsights/withLogAnalyticsWorkspace",
"qualifiedName": "withLogAnalyticsWorkspace",
- "description": "Configures the Application Insights resource to use a Log Analytics Workspace",
+ "description": "Configures the Application Insights resource to use the specified Log Analytics Workspace resource.",
+ "returns": "The `IResourceBuilder`1` for chaining.",
"kind": "Method",
"signature": "withLogAnalyticsWorkspace(logAnalyticsWorkspace: AzureLogAnalyticsWorkspaceResource): AzureApplicationInsightsResource",
"parameters": [
{
"name": "logAnalyticsWorkspace",
- "type": "AzureLogAnalyticsWorkspaceResource"
+ "type": "AzureLogAnalyticsWorkspaceResource",
+ "description": "The resource builder for the `AzureLogAnalyticsWorkspaceResource`."
}
],
"returnType": "AzureApplicationInsightsResource",
@@ -67,13 +71,15 @@
"name": "withLogAnalyticsWorkspace",
"capabilityId": "Aspire.Hosting.Azure.ApplicationInsights/withLogAnalyticsWorkspace",
"qualifiedName": "withLogAnalyticsWorkspace",
- "description": "Configures the Application Insights resource to use a Log Analytics Workspace",
+ "description": "Configures the Application Insights resource to use the specified Log Analytics Workspace resource.",
+ "returns": "The `IResourceBuilder`1` for chaining.",
"kind": "Method",
"signature": "withLogAnalyticsWorkspace(logAnalyticsWorkspace: AzureLogAnalyticsWorkspaceResource): AzureApplicationInsightsResource",
"parameters": [
{
"name": "logAnalyticsWorkspace",
- "type": "AzureLogAnalyticsWorkspaceResource"
+ "type": "AzureLogAnalyticsWorkspaceResource",
+ "description": "The resource builder for the `AzureLogAnalyticsWorkspaceResource`."
}
],
"returnType": "AzureApplicationInsightsResource",
diff --git a/src/frontend/src/data/ts-modules/Aspire.Hosting.Azure.CognitiveServices.13.3.0.json b/src/frontend/src/data/ts-modules/Aspire.Hosting.Azure.CognitiveServices.13.3.0.json
index c2b6d509f..200da1590 100644
--- a/src/frontend/src/data/ts-modules/Aspire.Hosting.Azure.CognitiveServices.13.3.0.json
+++ b/src/frontend/src/data/ts-modules/Aspire.Hosting.Azure.CognitiveServices.13.3.0.json
@@ -10,13 +10,16 @@
"name": "addAzureOpenAI",
"capabilityId": "Aspire.Hosting.Azure.CognitiveServices/addAzureOpenAI",
"qualifiedName": "addAzureOpenAI",
- "description": "Adds an Azure OpenAI resource",
+ "description": "Adds an Azure OpenAI resource to the application model.",
+ "remarks": "By default references to the Azure OpenAI resource will be assigned the following roles:\n- `CognitiveServicesOpenAIContributor`\nThese can be replaced by calling `WithRoleAssignments``1`.",
+ "returns": "A reference to the `IResourceBuilder`1`.",
"kind": "Method",
"signature": "addAzureOpenAI(name: string): AzureOpenAIResource",
"parameters": [
{
"name": "name",
- "type": "string"
+ "type": "string",
+ "description": "The name of the resource. This name will be used as the connection string name when referenced in a dependency."
}
],
"returnType": "AzureOpenAIResource",
@@ -30,21 +33,25 @@
"name": "addDeployment",
"capabilityId": "Aspire.Hosting.Azure.CognitiveServices/addDeployment",
"qualifiedName": "addDeployment",
- "description": "Adds an Azure OpenAI deployment resource",
+ "description": "Adds and returns an Azure OpenAI Deployment resource to the `AzureOpenAIResource` resource.",
+ "returns": "A reference to the `IResourceBuilder`1`.",
"kind": "Method",
"signature": "addDeployment(name: string, modelName: string, modelVersion: string): AzureOpenAIDeploymentResource",
"parameters": [
{
"name": "name",
- "type": "string"
+ "type": "string",
+ "description": "The name of the Azure OpenAI Deployment resource."
},
{
"name": "modelName",
- "type": "string"
+ "type": "string",
+ "description": "The name of the model to deploy."
},
{
"name": "modelVersion",
- "type": "string"
+ "type": "string",
+ "description": "The version of the model to deploy."
}
],
"returnType": "AzureOpenAIDeploymentResource",
@@ -58,7 +65,7 @@
"name": "connectionStringExpression",
"capabilityId": "Aspire.Hosting.ApplicationModel/AzureOpenAIDeploymentResource.connectionStringExpression",
"qualifiedName": "AzureOpenAIDeploymentResource.connectionStringExpression",
- "description": "Gets the ConnectionStringExpression property",
+ "description": "Gets the connection string expression for the Azure OpenAI Deployment resource.",
"kind": "PropertyGetter",
"signature": "connectionStringExpression(): ReferenceExpression",
"parameters": [],
@@ -72,7 +79,8 @@
"name": "deploymentName",
"capabilityId": "Aspire.Hosting.ApplicationModel/AzureOpenAIDeploymentResource.deploymentName",
"qualifiedName": "AzureOpenAIDeploymentResource.deploymentName",
- "description": "Gets the DeploymentName property",
+ "description": "Gets or sets the name of the deployment.",
+ "remarks": "This defaults to `Name`, but allows for a different deployment name in Azure.",
"kind": "PropertyGetter",
"signature": "deploymentName(): string",
"parameters": [],
@@ -86,7 +94,7 @@
"name": "modelName",
"capabilityId": "Aspire.Hosting.ApplicationModel/AzureOpenAIDeploymentResource.modelName",
"qualifiedName": "AzureOpenAIDeploymentResource.modelName",
- "description": "Gets the ModelName property",
+ "description": "Gets the name of the model.",
"kind": "PropertyGetter",
"signature": "modelName(): string",
"parameters": [],
@@ -100,7 +108,7 @@
"name": "modelVersion",
"capabilityId": "Aspire.Hosting.ApplicationModel/AzureOpenAIDeploymentResource.modelVersion",
"qualifiedName": "AzureOpenAIDeploymentResource.modelVersion",
- "description": "Gets the ModelVersion property",
+ "description": "Gets the version of the model.",
"kind": "PropertyGetter",
"signature": "modelVersion(): string",
"parameters": [],
@@ -114,7 +122,7 @@
"name": "parent",
"capabilityId": "Aspire.Hosting.ApplicationModel/AzureOpenAIDeploymentResource.parent",
"qualifiedName": "AzureOpenAIDeploymentResource.parent",
- "description": "Gets the Parent property",
+ "description": "Gets the parent Azure OpenAI resource.",
"kind": "PropertyGetter",
"signature": "parent(): AzureOpenAIResource",
"parameters": [],
@@ -128,7 +136,8 @@
"name": "setDeploymentName",
"capabilityId": "Aspire.Hosting.ApplicationModel/AzureOpenAIDeploymentResource.setDeploymentName",
"qualifiedName": "AzureOpenAIDeploymentResource.setDeploymentName",
- "description": "Sets the DeploymentName property",
+ "description": "Gets or sets the name of the deployment.",
+ "remarks": "This defaults to `Name`, but allows for a different deployment name in Azure.",
"kind": "PropertySetter",
"signature": "setDeploymentName(value: string): AzureOpenAIDeploymentResource",
"parameters": [
@@ -147,7 +156,7 @@
"name": "setModelName",
"capabilityId": "Aspire.Hosting.ApplicationModel/AzureOpenAIDeploymentResource.setModelName",
"qualifiedName": "AzureOpenAIDeploymentResource.setModelName",
- "description": "Sets the ModelName property",
+ "description": "Gets the name of the model.",
"kind": "PropertySetter",
"signature": "setModelName(value: string): AzureOpenAIDeploymentResource",
"parameters": [
@@ -166,7 +175,7 @@
"name": "setModelVersion",
"capabilityId": "Aspire.Hosting.ApplicationModel/AzureOpenAIDeploymentResource.setModelVersion",
"qualifiedName": "AzureOpenAIDeploymentResource.setModelVersion",
- "description": "Sets the ModelVersion property",
+ "description": "Gets the version of the model.",
"kind": "PropertySetter",
"signature": "setModelVersion(value: string): AzureOpenAIDeploymentResource",
"parameters": [
@@ -185,7 +194,7 @@
"name": "setSkuCapacity",
"capabilityId": "Aspire.Hosting.ApplicationModel/AzureOpenAIDeploymentResource.setSkuCapacity",
"qualifiedName": "AzureOpenAIDeploymentResource.setSkuCapacity",
- "description": "Sets the SkuCapacity property",
+ "description": "Gets the capacity of the SKU.",
"kind": "PropertySetter",
"signature": "setSkuCapacity(value: number): AzureOpenAIDeploymentResource",
"parameters": [
@@ -204,7 +213,7 @@
"name": "setSkuName",
"capabilityId": "Aspire.Hosting.ApplicationModel/AzureOpenAIDeploymentResource.setSkuName",
"qualifiedName": "AzureOpenAIDeploymentResource.setSkuName",
- "description": "Sets the SkuName property",
+ "description": "Gets the name of the SKU.",
"kind": "PropertySetter",
"signature": "setSkuName(value: string): AzureOpenAIDeploymentResource",
"parameters": [
@@ -223,7 +232,7 @@
"name": "skuCapacity",
"capabilityId": "Aspire.Hosting.ApplicationModel/AzureOpenAIDeploymentResource.skuCapacity",
"qualifiedName": "AzureOpenAIDeploymentResource.skuCapacity",
- "description": "Gets the SkuCapacity property",
+ "description": "Gets the capacity of the SKU.",
"kind": "PropertyGetter",
"signature": "skuCapacity(): number",
"parameters": [],
@@ -237,7 +246,7 @@
"name": "skuName",
"capabilityId": "Aspire.Hosting.ApplicationModel/AzureOpenAIDeploymentResource.skuName",
"qualifiedName": "AzureOpenAIDeploymentResource.skuName",
- "description": "Gets the SkuName property",
+ "description": "Gets the name of the SKU.",
"kind": "PropertyGetter",
"signature": "skuName(): string",
"parameters": [],
@@ -251,15 +260,17 @@
"name": "withProperties",
"capabilityId": "Aspire.Hosting.Azure.CognitiveServices/withProperties",
"qualifiedName": "withProperties",
- "description": "Configures properties of an Azure OpenAI deployment",
+ "description": "Allows setting the properties of an Azure OpenAI Deployment resource.",
+ "returns": "A reference to the `IResourceBuilder`1`.",
"kind": "Method",
- "signature": "withProperties(configure: (obj: AzureOpenAIDeploymentResource) =\u003E Promise\u003Cvoid\u003E): AzureOpenAIDeploymentResource",
+ "signature": "withProperties(configure: (obj: AzureOpenAIDeploymentResource) => Promise): AzureOpenAIDeploymentResource",
"parameters": [
{
"name": "configure",
"type": "callback",
"isCallback": true,
- "callbackSignature": "(obj: AzureOpenAIDeploymentResource) =\u003E Promise\u003Cvoid\u003E"
+ "callbackSignature": "(obj: AzureOpenAIDeploymentResource) => Promise",
+ "description": "A method that can be used for customizing the `AzureOpenAIDeploymentResource`."
}
],
"returnType": "AzureOpenAIDeploymentResource",
@@ -273,17 +284,20 @@
"name": "withRoleAssignments",
"capabilityId": "Aspire.Hosting.Azure.CognitiveServices/withCognitiveServicesRoleAssignments",
"qualifiedName": "withRoleAssignments",
- "description": "Assigns Cognitive Services roles to a resource",
+ "description": "Assigns the specified roles to the given resource, granting it the necessary permissions on the target Azure OpenAI resource. This replaces the default role assignments for the resource.",
+ "returns": "The updated `IResourceBuilder`1` with the applied role assignments.",
"kind": "Method",
"signature": "withRoleAssignments(target: AzureOpenAIResource, roles: AzureOpenAIRole[]): IResource",
"parameters": [
{
"name": "target",
- "type": "AzureOpenAIResource"
+ "type": "AzureOpenAIResource",
+ "description": "The target Azure OpenAI resource."
},
{
"name": "roles",
- "type": "AzureOpenAIRole[]"
+ "type": "AzureOpenAIRole[]",
+ "description": "The Azure OpenAI roles to be assigned (for example, `CognitiveServicesOpenAIUser`)."
}
],
"returnType": "IResource",
@@ -313,13 +327,14 @@
"fullName": "Aspire.Hosting.ApplicationModel.AzureOpenAIDeploymentResource",
"kind": "handle",
"exposeProperties": true,
+ "description": "Represents an Azure OpenAI Deployment resource.",
"implementedInterfaces": [
"Aspire.Hosting.ApplicationModel.IExpressionValue",
"Aspire.Hosting.ApplicationModel.IManifestExpressionProvider",
"Aspire.Hosting.ApplicationModel.IResource",
"Aspire.Hosting.ApplicationModel.IResourceWithConnectionString",
"Aspire.Hosting.ApplicationModel.IResourceWithParent",
- "Aspire.Hosting.ApplicationModel.IResourceWithParent\u00601[[Aspire.Hosting.ApplicationModel.AzureOpenAIResource]]",
+ "Aspire.Hosting.ApplicationModel.IResourceWithParent`1[[Aspire.Hosting.ApplicationModel.AzureOpenAIResource]]",
"Aspire.Hosting.ApplicationModel.IValueProvider",
"Aspire.Hosting.ApplicationModel.IValueWithReferences"
],
@@ -328,7 +343,7 @@
"name": "connectionStringExpression",
"capabilityId": "Aspire.Hosting.ApplicationModel/AzureOpenAIDeploymentResource.connectionStringExpression",
"qualifiedName": "AzureOpenAIDeploymentResource.connectionStringExpression",
- "description": "Gets the ConnectionStringExpression property",
+ "description": "Gets the connection string expression for the Azure OpenAI Deployment resource.",
"kind": "PropertyGetter",
"signature": "connectionStringExpression(): ReferenceExpression",
"parameters": [],
@@ -342,7 +357,8 @@
"name": "deploymentName",
"capabilityId": "Aspire.Hosting.ApplicationModel/AzureOpenAIDeploymentResource.deploymentName",
"qualifiedName": "AzureOpenAIDeploymentResource.deploymentName",
- "description": "Gets the DeploymentName property",
+ "description": "Gets or sets the name of the deployment.",
+ "remarks": "This defaults to `Name`, but allows for a different deployment name in Azure.",
"kind": "PropertyGetter",
"signature": "deploymentName(): string",
"parameters": [],
@@ -356,7 +372,7 @@
"name": "modelName",
"capabilityId": "Aspire.Hosting.ApplicationModel/AzureOpenAIDeploymentResource.modelName",
"qualifiedName": "AzureOpenAIDeploymentResource.modelName",
- "description": "Gets the ModelName property",
+ "description": "Gets the name of the model.",
"kind": "PropertyGetter",
"signature": "modelName(): string",
"parameters": [],
@@ -370,7 +386,7 @@
"name": "modelVersion",
"capabilityId": "Aspire.Hosting.ApplicationModel/AzureOpenAIDeploymentResource.modelVersion",
"qualifiedName": "AzureOpenAIDeploymentResource.modelVersion",
- "description": "Gets the ModelVersion property",
+ "description": "Gets the version of the model.",
"kind": "PropertyGetter",
"signature": "modelVersion(): string",
"parameters": [],
@@ -384,7 +400,7 @@
"name": "parent",
"capabilityId": "Aspire.Hosting.ApplicationModel/AzureOpenAIDeploymentResource.parent",
"qualifiedName": "AzureOpenAIDeploymentResource.parent",
- "description": "Gets the Parent property",
+ "description": "Gets the parent Azure OpenAI resource.",
"kind": "PropertyGetter",
"signature": "parent(): AzureOpenAIResource",
"parameters": [],
@@ -398,7 +414,8 @@
"name": "setDeploymentName",
"capabilityId": "Aspire.Hosting.ApplicationModel/AzureOpenAIDeploymentResource.setDeploymentName",
"qualifiedName": "AzureOpenAIDeploymentResource.setDeploymentName",
- "description": "Sets the DeploymentName property",
+ "description": "Gets or sets the name of the deployment.",
+ "remarks": "This defaults to `Name`, but allows for a different deployment name in Azure.",
"kind": "PropertySetter",
"signature": "setDeploymentName(value: string): AzureOpenAIDeploymentResource",
"parameters": [
@@ -417,7 +434,7 @@
"name": "setModelName",
"capabilityId": "Aspire.Hosting.ApplicationModel/AzureOpenAIDeploymentResource.setModelName",
"qualifiedName": "AzureOpenAIDeploymentResource.setModelName",
- "description": "Sets the ModelName property",
+ "description": "Gets the name of the model.",
"kind": "PropertySetter",
"signature": "setModelName(value: string): AzureOpenAIDeploymentResource",
"parameters": [
@@ -436,7 +453,7 @@
"name": "setModelVersion",
"capabilityId": "Aspire.Hosting.ApplicationModel/AzureOpenAIDeploymentResource.setModelVersion",
"qualifiedName": "AzureOpenAIDeploymentResource.setModelVersion",
- "description": "Sets the ModelVersion property",
+ "description": "Gets the version of the model.",
"kind": "PropertySetter",
"signature": "setModelVersion(value: string): AzureOpenAIDeploymentResource",
"parameters": [
@@ -455,7 +472,7 @@
"name": "setSkuCapacity",
"capabilityId": "Aspire.Hosting.ApplicationModel/AzureOpenAIDeploymentResource.setSkuCapacity",
"qualifiedName": "AzureOpenAIDeploymentResource.setSkuCapacity",
- "description": "Sets the SkuCapacity property",
+ "description": "Gets the capacity of the SKU.",
"kind": "PropertySetter",
"signature": "setSkuCapacity(value: number): AzureOpenAIDeploymentResource",
"parameters": [
@@ -474,7 +491,7 @@
"name": "setSkuName",
"capabilityId": "Aspire.Hosting.ApplicationModel/AzureOpenAIDeploymentResource.setSkuName",
"qualifiedName": "AzureOpenAIDeploymentResource.setSkuName",
- "description": "Sets the SkuName property",
+ "description": "Gets the name of the SKU.",
"kind": "PropertySetter",
"signature": "setSkuName(value: string): AzureOpenAIDeploymentResource",
"parameters": [
@@ -493,7 +510,7 @@
"name": "skuCapacity",
"capabilityId": "Aspire.Hosting.ApplicationModel/AzureOpenAIDeploymentResource.skuCapacity",
"qualifiedName": "AzureOpenAIDeploymentResource.skuCapacity",
- "description": "Gets the SkuCapacity property",
+ "description": "Gets the capacity of the SKU.",
"kind": "PropertyGetter",
"signature": "skuCapacity(): number",
"parameters": [],
@@ -507,7 +524,7 @@
"name": "skuName",
"capabilityId": "Aspire.Hosting.ApplicationModel/AzureOpenAIDeploymentResource.skuName",
"qualifiedName": "AzureOpenAIDeploymentResource.skuName",
- "description": "Gets the SkuName property",
+ "description": "Gets the name of the SKU.",
"kind": "PropertyGetter",
"signature": "skuName(): string",
"parameters": [],
@@ -521,15 +538,17 @@
"name": "withProperties",
"capabilityId": "Aspire.Hosting.Azure.CognitiveServices/withProperties",
"qualifiedName": "withProperties",
- "description": "Configures properties of an Azure OpenAI deployment",
+ "description": "Allows setting the properties of an Azure OpenAI Deployment resource.",
+ "returns": "A reference to the `IResourceBuilder`1`.",
"kind": "Method",
- "signature": "withProperties(configure: (obj: AzureOpenAIDeploymentResource) =\u003E Promise\u003Cvoid\u003E): AzureOpenAIDeploymentResource",
+ "signature": "withProperties(configure: (obj: AzureOpenAIDeploymentResource) => Promise): AzureOpenAIDeploymentResource",
"parameters": [
{
"name": "configure",
"type": "callback",
"isCallback": true,
- "callbackSignature": "(obj: AzureOpenAIDeploymentResource) =\u003E Promise\u003Cvoid\u003E"
+ "callbackSignature": "(obj: AzureOpenAIDeploymentResource) => Promise",
+ "description": "A method that can be used for customizing the `AzureOpenAIDeploymentResource`."
}
],
"returnType": "AzureOpenAIDeploymentResource",
@@ -545,6 +564,7 @@
"name": "AzureOpenAIResource",
"fullName": "Aspire.Hosting.ApplicationModel.AzureOpenAIResource",
"kind": "handle",
+ "description": "Represents an Azure OpenAI resource.",
"implementedInterfaces": [
"Aspire.Hosting.ApplicationModel.IAzureResource",
"Aspire.Hosting.ApplicationModel.IExpressionValue",
@@ -562,21 +582,25 @@
"name": "addDeployment",
"capabilityId": "Aspire.Hosting.Azure.CognitiveServices/addDeployment",
"qualifiedName": "addDeployment",
- "description": "Adds an Azure OpenAI deployment resource",
+ "description": "Adds and returns an Azure OpenAI Deployment resource to the `AzureOpenAIResource` resource.",
+ "returns": "A reference to the `IResourceBuilder`1`.",
"kind": "Method",
"signature": "addDeployment(name: string, modelName: string, modelVersion: string): AzureOpenAIDeploymentResource",
"parameters": [
{
"name": "name",
- "type": "string"
+ "type": "string",
+ "description": "The name of the Azure OpenAI Deployment resource."
},
{
"name": "modelName",
- "type": "string"
+ "type": "string",
+ "description": "The name of the model to deploy."
},
{
"name": "modelVersion",
- "type": "string"
+ "type": "string",
+ "description": "The version of the model to deploy."
}
],
"returnType": "AzureOpenAIDeploymentResource",
@@ -595,10 +619,25 @@
"name": "AzureOpenAIRole",
"fullName": "Aspire.Hosting.Azure.CognitiveServices.AzureOpenAIRole",
"kind": "enum",
+ "description": "Represents ATS-compatible Azure OpenAI roles.",
"members": [
"CognitiveServicesOpenAIContributor",
"CognitiveServicesOpenAIUser",
"CognitiveServicesUser"
+ ],
+ "memberDocs": [
+ {
+ "name": "CognitiveServicesOpenAIContributor",
+ "description": "Allows full management of Azure OpenAI resources."
+ },
+ {
+ "name": "CognitiveServicesOpenAIUser",
+ "description": "Allows using Azure OpenAI models for inference."
+ },
+ {
+ "name": "CognitiveServicesUser",
+ "description": "Allows access to Azure Cognitive Services resources."
+ }
]
}
]
diff --git a/src/frontend/src/data/ts-modules/Aspire.Hosting.Azure.ContainerRegistry.13.3.0.json b/src/frontend/src/data/ts-modules/Aspire.Hosting.Azure.ContainerRegistry.13.3.0.json
index f99115352..688b28ba5 100644
--- a/src/frontend/src/data/ts-modules/Aspire.Hosting.Azure.ContainerRegistry.13.3.0.json
+++ b/src/frontend/src/data/ts-modules/Aspire.Hosting.Azure.ContainerRegistry.13.3.0.json
@@ -10,13 +10,15 @@
"name": "addAzureContainerRegistry",
"capabilityId": "Aspire.Hosting.Azure.ContainerRegistry/addAzureContainerRegistry",
"qualifiedName": "addAzureContainerRegistry",
- "description": "Adds an Azure Container Registry resource to the distributed application model.",
+ "description": "Adds an Azure Container Registry resource to the application model.",
+ "returns": "A reference to the `IResourceBuilder`1` builder.",
"kind": "Method",
"signature": "addAzureContainerRegistry(name: string): AzureContainerRegistryResource",
"parameters": [
{
"name": "name",
- "type": "string"
+ "type": "string",
+ "description": "The name of the resource."
}
],
"returnType": "AzureContainerRegistryResource",
@@ -30,7 +32,8 @@
"name": "getAzureContainerRegistry",
"capabilityId": "Aspire.Hosting.Azure.ContainerRegistry/getAzureContainerRegistry",
"qualifiedName": "getAzureContainerRegistry",
- "description": "Gets the Azure Container Registry associated with a compute environment resource.",
+ "description": "Gets the `AzureContainerRegistryResource` associated with the specified Azure compute environment resource.",
+ "returns": "A reference to the `IResourceBuilder`1` for the associated registry.",
"kind": "Method",
"signature": "getAzureContainerRegistry(): AzureContainerRegistryResource",
"parameters": [],
@@ -57,13 +60,15 @@
"name": "withAzureContainerRegistry",
"capabilityId": "Aspire.Hosting.Azure.ContainerRegistry/withContainerRegistryAzureContainerRegistry",
"qualifiedName": "withAzureContainerRegistry",
- "description": "Configures a compute environment resource to use an Azure Container Registry.",
+ "description": "Configures a resource that implements `IContainerRegistry` to use the specified Azure Container Registry.",
+ "returns": "A reference to the `IResourceBuilder`1`.",
"kind": "Method",
"signature": "withAzureContainerRegistry(registryBuilder: AzureContainerRegistryResource): IResource",
"parameters": [
{
"name": "registryBuilder",
- "type": "AzureContainerRegistryResource"
+ "type": "AzureContainerRegistryResource",
+ "description": "The resource builder for the `AzureContainerRegistryResource` to use."
}
],
"returnType": "IResource",
@@ -89,35 +94,41 @@
"name": "withPurgeTask",
"capabilityId": "Aspire.Hosting.Azure.ContainerRegistry/withPurgeTask",
"qualifiedName": "withPurgeTask",
- "description": "Configures a purge task for the Azure Container Registry resource.",
+ "description": "Adds a scheduled ACR purge task to remove old or unused container images from the registry.",
+ "returns": "A reference to the `IResourceBuilder`1` for chaining.",
"kind": "Method",
"signature": "withPurgeTask(schedule: string, filter?: string, ago?: timespan, keep?: number, taskName?: string): AzureContainerRegistryResource",
"parameters": [
{
"name": "schedule",
- "type": "string"
+ "type": "string",
+ "description": "The cron schedule for the purge task timer trigger. Must be a five-part cron expression (`minute hour day-of-month month day-of-week`); seconds are not supported."
},
{
"name": "filter",
"type": "string",
- "isOptional": true
+ "isOptional": true,
+ "description": "An optional filter for the `acr purge --filter` parameter. Only repositories matching this filter will be purged. Defaults to `\".*:.*\"` (all repositories and tags) when `null`."
},
{
"name": "ago",
"type": "timespan",
"isOptional": true,
- "isNullable": true
+ "isNullable": true,
+ "description": "The age threshold for `acr purge --ago`. Images older than this duration will be considered for removal. Uses Go-style duration format (e.g., `2d3h6m`). Defaults to `0d` when `null`."
},
{
"name": "keep",
"type": "number",
"isOptional": true,
- "defaultValue": "3"
+ "defaultValue": "3",
+ "description": "The number of most recent images to keep per repository, regardless of age. Must be greater than zero. Defaults to 3."
},
{
"name": "taskName",
"type": "string",
- "isOptional": true
+ "isOptional": true,
+ "description": "An optional name for the ACR task resource. If not provided, a name is auto-generated based on existing purge tasks to avoid conflicts. If a task with the specified name already exists, an `ArgumentException` is thrown."
}
],
"returnType": "AzureContainerRegistryResource",
@@ -131,17 +142,20 @@
"name": "withRoleAssignments",
"capabilityId": "Aspire.Hosting.Azure.ContainerRegistry/withContainerRegistryRoleAssignments",
"qualifiedName": "withRoleAssignments",
- "description": "Assigns Azure Container Registry roles to a resource.",
+ "description": "Adds role assignments to the specified Azure Container Registry resource.",
+ "returns": "A reference to the `IResourceBuilder`1`.",
"kind": "Method",
"signature": "withRoleAssignments(target: AzureContainerRegistryResource, roles: AzureContainerRegistryRole[]): IResource",
"parameters": [
{
"name": "target",
- "type": "AzureContainerRegistryResource"
+ "type": "AzureContainerRegistryResource",
+ "description": "The target Azure Container Registry resource."
},
{
"name": "roles",
- "type": "AzureContainerRegistryRole[]"
+ "type": "AzureContainerRegistryRole[]",
+ "description": "The Azure Container Registry roles to assign to the resource."
}
],
"returnType": "IResource",
@@ -182,35 +196,41 @@
"name": "withPurgeTask",
"capabilityId": "Aspire.Hosting.Azure.ContainerRegistry/withPurgeTask",
"qualifiedName": "withPurgeTask",
- "description": "Configures a purge task for the Azure Container Registry resource.",
+ "description": "Adds a scheduled ACR purge task to remove old or unused container images from the registry.",
+ "returns": "A reference to the `IResourceBuilder`1` for chaining.",
"kind": "Method",
"signature": "withPurgeTask(schedule: string, filter?: string, ago?: timespan, keep?: number, taskName?: string): AzureContainerRegistryResource",
"parameters": [
{
"name": "schedule",
- "type": "string"
+ "type": "string",
+ "description": "The cron schedule for the purge task timer trigger. Must be a five-part cron expression (`minute hour day-of-month month day-of-week`); seconds are not supported."
},
{
"name": "filter",
"type": "string",
- "isOptional": true
+ "isOptional": true,
+ "description": "An optional filter for the `acr purge --filter` parameter. Only repositories matching this filter will be purged. Defaults to `\".*:.*\"` (all repositories and tags) when `null`."
},
{
"name": "ago",
"type": "timespan",
"isOptional": true,
- "isNullable": true
+ "isNullable": true,
+ "description": "The age threshold for `acr purge --ago`. Images older than this duration will be considered for removal. Uses Go-style duration format (e.g., `2d3h6m`). Defaults to `0d` when `null`."
},
{
"name": "keep",
"type": "number",
"isOptional": true,
- "defaultValue": "3"
+ "defaultValue": "3",
+ "description": "The number of most recent images to keep per repository, regardless of age. Must be greater than zero. Defaults to 3."
},
{
"name": "taskName",
"type": "string",
- "isOptional": true
+ "isOptional": true,
+ "description": "An optional name for the ACR task resource. If not provided, a name is auto-generated based on existing purge tasks to avoid conflicts. If a task with the specified name already exists, an `ArgumentException` is thrown."
}
],
"returnType": "AzureContainerRegistryResource",
@@ -229,6 +249,7 @@
"name": "AzureContainerRegistryRole",
"fullName": "Aspire.Hosting.AzureContainerRegistryRole",
"kind": "enum",
+ "description": "Represents ATS-compatible Azure Container Registry roles.",
"members": [
"AcrDelete",
"AcrImageSigner",
diff --git a/src/frontend/src/data/ts-modules/Aspire.Hosting.Azure.CosmosDB.13.3.0.json b/src/frontend/src/data/ts-modules/Aspire.Hosting.Azure.CosmosDB.13.3.0.json
index e55ffb0f7..0087626bc 100644
--- a/src/frontend/src/data/ts-modules/Aspire.Hosting.Azure.CosmosDB.13.3.0.json
+++ b/src/frontend/src/data/ts-modules/Aspire.Hosting.Azure.CosmosDB.13.3.0.json
@@ -10,13 +10,15 @@
"name": "addAzureCosmosDB",
"capabilityId": "Aspire.Hosting.Azure.CosmosDB/addAzureCosmosDB",
"qualifiedName": "addAzureCosmosDB",
- "description": "Adds an Azure Cosmos DB resource",
+ "description": "Adds an Azure Cosmos DB connection to the application model.",
+ "returns": "A reference to the `IResourceBuilder`1`.",
"kind": "Method",
"signature": "addAzureCosmosDB(name: string): AzureCosmosDBResource",
"parameters": [
{
"name": "name",
- "type": "string"
+ "type": "string",
+ "description": "The name of the resource. This name will be used as the connection string name when referenced in a dependency."
}
],
"returnType": "AzureCosmosDBResource",
@@ -59,18 +61,21 @@
"name": "addCosmosDatabase",
"capabilityId": "Aspire.Hosting.Azure.CosmosDB/addCosmosDatabase",
"qualifiedName": "addCosmosDatabase",
- "description": "Adds an Azure Cosmos DB database resource",
+ "description": "Adds a database to the associated Cosmos DB account resource.",
+ "returns": "A reference to the `IResourceBuilder`1`.",
"kind": "Method",
"signature": "addCosmosDatabase(name: string, databaseName?: string): AzureCosmosDBDatabaseResource",
"parameters": [
{
"name": "name",
- "type": "string"
+ "type": "string",
+ "description": "The name of the database resource."
},
{
"name": "databaseName",
"type": "string",
- "isOptional": true
+ "isOptional": true,
+ "description": "The name of the database. If not provided, this defaults to the same value as `name`."
}
],
"returnType": "AzureCosmosDBDatabaseResource",
@@ -84,16 +89,19 @@
"name": "runAsEmulator",
"capabilityId": "Aspire.Hosting.Azure.CosmosDB/runAsEmulator",
"qualifiedName": "runAsEmulator",
- "description": "Configures the Azure Cosmos DB resource to run using the local emulator",
+ "description": "Configures an Azure Cosmos DB resource to be emulated using the Azure Cosmos DB emulator with the NoSQL API. This resource requires an `AzureCosmosDBResource` to be added to the application model. For more information on the Azure Cosmos DB emulator, see .",
+ "remarks": "When using the Azure Cosmos DB emulator, the container requires a TLS/SSL certificate.\nFor more information, see .\nThis version of the package defaults to the tag of the / container image.",
+ "returns": "A reference to the `IResourceBuilder`1`.",
"kind": "Method",
- "signature": "runAsEmulator(configureContainer?: (obj: AzureCosmosDBEmulatorResource) =\u003E Promise\u003Cvoid\u003E): AzureCosmosDBResource",
+ "signature": "runAsEmulator(configureContainer?: (obj: AzureCosmosDBEmulatorResource) => Promise): AzureCosmosDBResource",
"parameters": [
{
"name": "configureContainer",
"type": "callback",
"isOptional": true,
"isCallback": true,
- "callbackSignature": "(obj: AzureCosmosDBEmulatorResource) =\u003E Promise\u003Cvoid\u003E"
+ "callbackSignature": "(obj: AzureCosmosDBEmulatorResource) => Promise",
+ "description": "Callback that exposes underlying container used for emulation to allow for customization."
}
],
"returnType": "AzureCosmosDBResource",
@@ -107,16 +115,19 @@
"name": "runAsPreviewEmulator",
"capabilityId": "Aspire.Hosting.Azure.CosmosDB/runAsPreviewEmulator",
"qualifiedName": "runAsPreviewEmulator",
- "description": "Configures the Azure Cosmos DB resource to run using the preview emulator",
+ "description": "Configures an Azure Cosmos DB resource to be emulated using the Azure Cosmos DB Linux-based emulator (preview) with the NoSQL API. This resource requires an `AzureCosmosDBResource` to be added to the application model. For more information on the Azure Cosmos DB emulator, see .",
+ "remarks": "This version of the package defaults to the tag of the / container image.",
+ "returns": "A reference to the `IResourceBuilder`1`.",
"kind": "Method",
- "signature": "runAsPreviewEmulator(configureContainer?: (obj: AzureCosmosDBEmulatorResource) =\u003E Promise\u003Cvoid\u003E): AzureCosmosDBResource",
+ "signature": "runAsPreviewEmulator(configureContainer?: (obj: AzureCosmosDBEmulatorResource) => Promise): AzureCosmosDBResource",
"parameters": [
{
"name": "configureContainer",
"type": "callback",
"isOptional": true,
"isCallback": true,
- "callbackSignature": "(obj: AzureCosmosDBEmulatorResource) =\u003E Promise\u003Cvoid\u003E"
+ "callbackSignature": "(obj: AzureCosmosDBEmulatorResource) => Promise",
+ "description": "Callback that exposes underlying container used for emulation to allow for customization."
}
],
"returnType": "AzureCosmosDBResource",
@@ -151,7 +162,9 @@
"name": "withDataExplorer",
"capabilityId": "Aspire.Hosting.Azure.CosmosDB/withDataExplorer",
"qualifiedName": "withDataExplorer",
- "description": "Exposes the Data Explorer endpoint for the preview emulator",
+ "description": "Configures the Azure Cosmos DB preview emulator to expose the Data Explorer endpoint.",
+ "remarks": "The Data Explorer is only available with `RunAsPreviewEmulator`.",
+ "returns": "Cosmos emulator resource builder.",
"kind": "Method",
"signature": "withDataExplorer(port?: number): AzureCosmosDBEmulatorResource",
"parameters": [
@@ -159,7 +172,8 @@
"name": "port",
"type": "number",
"isOptional": true,
- "isNullable": true
+ "isNullable": true,
+ "description": "Optional host port to bind the Data Explorer to."
}
],
"returnType": "AzureCosmosDBEmulatorResource",
@@ -173,14 +187,16 @@
"name": "withDataVolume",
"capabilityId": "Aspire.Hosting.Azure.CosmosDB/withDataVolume",
"qualifiedName": "withDataVolume",
- "description": "Adds a named volume for the data folder to an Azure Cosmos DB emulator resource",
+ "description": "Adds a named volume for the data folder to an Azure Cosmos DB emulator resource.",
+ "returns": "A builder for the `AzureCosmosDBEmulatorResource`.",
"kind": "Method",
"signature": "withDataVolume(name?: string): AzureCosmosDBEmulatorResource",
"parameters": [
{
"name": "name",
"type": "string",
- "isOptional": true
+ "isOptional": true,
+ "description": "The name of the volume. Defaults to an auto-generated name based on the application and resource names."
}
],
"returnType": "AzureCosmosDBEmulatorResource",
@@ -194,7 +210,8 @@
"name": "withDefaultAzureSku",
"capabilityId": "Aspire.Hosting.Azure.CosmosDB/withDefaultAzureSku",
"qualifiedName": "withDefaultAzureSku",
- "description": "Configures Azure Cosmos DB to use the default Azure SKU",
+ "description": "Configures the Azure Cosmos DB resource to be deployed use the default SKU provided by Azure.",
+ "returns": "A reference to the `IResourceBuilder`1`.",
"kind": "Method",
"signature": "withDefaultAzureSku(): AzureCosmosDBResource",
"parameters": [],
@@ -209,14 +226,16 @@
"name": "withGatewayPort",
"capabilityId": "Aspire.Hosting.Azure.CosmosDB/withGatewayPort",
"qualifiedName": "withGatewayPort",
- "description": "Sets the host port for the Cosmos DB emulator gateway endpoint",
+ "description": "Configures the gateway port for the Azure Cosmos DB emulator.",
+ "returns": "Cosmos emulator resource builder.",
"kind": "Method",
"signature": "withGatewayPort(port: number): AzureCosmosDBEmulatorResource",
"parameters": [
{
"name": "port",
"type": "number",
- "isNullable": true
+ "isNullable": true,
+ "description": "Host port to bind to the emulator gateway port."
}
],
"returnType": "AzureCosmosDBEmulatorResource",
@@ -230,13 +249,16 @@
"name": "withPartitionCount",
"capabilityId": "Aspire.Hosting.Azure.CosmosDB/withPartitionCount",
"qualifiedName": "withPartitionCount",
- "description": "Sets the partition count for the Azure Cosmos DB emulator",
+ "description": "Configures the partition count for the Azure Cosmos DB emulator.",
+ "remarks": "Not calling this method will result in the default of 10 partitions. The actual started partitions is always one more than specified.\nSee this documentation about setting the partition count.",
+ "returns": "Cosmos emulator resource builder.",
"kind": "Method",
"signature": "withPartitionCount(count: number): AzureCosmosDBEmulatorResource",
"parameters": [
{
"name": "count",
- "type": "number"
+ "type": "number",
+ "description": "Desired partition count."
}
],
"returnType": "AzureCosmosDBEmulatorResource",
@@ -258,7 +280,7 @@
"Aspire.Hosting.ApplicationModel.IResource",
"Aspire.Hosting.ApplicationModel.IResourceWithConnectionString",
"Aspire.Hosting.ApplicationModel.IResourceWithParent",
- "Aspire.Hosting.ApplicationModel.IResourceWithParent\u00601[[Aspire.Hosting.Azure.AzureCosmosDBDatabaseResource]]",
+ "Aspire.Hosting.ApplicationModel.IResourceWithParent`1[[Aspire.Hosting.Azure.AzureCosmosDBDatabaseResource]]",
"Aspire.Hosting.ApplicationModel.IValueProvider",
"Aspire.Hosting.ApplicationModel.IValueWithReferences",
"Aspire.Hosting.Azure.IResourceWithAzureFunctionsConfig"
@@ -275,7 +297,7 @@
"Aspire.Hosting.ApplicationModel.IResource",
"Aspire.Hosting.ApplicationModel.IResourceWithConnectionString",
"Aspire.Hosting.ApplicationModel.IResourceWithParent",
- "Aspire.Hosting.ApplicationModel.IResourceWithParent\u00601[[Aspire.Hosting.AzureCosmosDBResource]]",
+ "Aspire.Hosting.ApplicationModel.IResourceWithParent`1[[Aspire.Hosting.AzureCosmosDBResource]]",
"Aspire.Hosting.ApplicationModel.IValueProvider",
"Aspire.Hosting.ApplicationModel.IValueWithReferences",
"Aspire.Hosting.Azure.IResourceWithAzureFunctionsConfig"
@@ -330,7 +352,9 @@
"name": "withDataExplorer",
"capabilityId": "Aspire.Hosting.Azure.CosmosDB/withDataExplorer",
"qualifiedName": "withDataExplorer",
- "description": "Exposes the Data Explorer endpoint for the preview emulator",
+ "description": "Configures the Azure Cosmos DB preview emulator to expose the Data Explorer endpoint.",
+ "remarks": "The Data Explorer is only available with `RunAsPreviewEmulator`.",
+ "returns": "Cosmos emulator resource builder.",
"kind": "Method",
"signature": "withDataExplorer(port?: number): AzureCosmosDBEmulatorResource",
"parameters": [
@@ -338,7 +362,8 @@
"name": "port",
"type": "number",
"isOptional": true,
- "isNullable": true
+ "isNullable": true,
+ "description": "Optional host port to bind the Data Explorer to."
}
],
"returnType": "AzureCosmosDBEmulatorResource",
@@ -352,14 +377,16 @@
"name": "withDataVolume",
"capabilityId": "Aspire.Hosting.Azure.CosmosDB/withDataVolume",
"qualifiedName": "withDataVolume",
- "description": "Adds a named volume for the data folder to an Azure Cosmos DB emulator resource",
+ "description": "Adds a named volume for the data folder to an Azure Cosmos DB emulator resource.",
+ "returns": "A builder for the `AzureCosmosDBEmulatorResource`.",
"kind": "Method",
"signature": "withDataVolume(name?: string): AzureCosmosDBEmulatorResource",
"parameters": [
{
"name": "name",
"type": "string",
- "isOptional": true
+ "isOptional": true,
+ "description": "The name of the volume. Defaults to an auto-generated name based on the application and resource names."
}
],
"returnType": "AzureCosmosDBEmulatorResource",
@@ -373,14 +400,16 @@
"name": "withGatewayPort",
"capabilityId": "Aspire.Hosting.Azure.CosmosDB/withGatewayPort",
"qualifiedName": "withGatewayPort",
- "description": "Sets the host port for the Cosmos DB emulator gateway endpoint",
+ "description": "Configures the gateway port for the Azure Cosmos DB emulator.",
+ "returns": "Cosmos emulator resource builder.",
"kind": "Method",
"signature": "withGatewayPort(port: number): AzureCosmosDBEmulatorResource",
"parameters": [
{
"name": "port",
"type": "number",
- "isNullable": true
+ "isNullable": true,
+ "description": "Host port to bind to the emulator gateway port."
}
],
"returnType": "AzureCosmosDBEmulatorResource",
@@ -394,13 +423,16 @@
"name": "withPartitionCount",
"capabilityId": "Aspire.Hosting.Azure.CosmosDB/withPartitionCount",
"qualifiedName": "withPartitionCount",
- "description": "Sets the partition count for the Azure Cosmos DB emulator",
+ "description": "Configures the partition count for the Azure Cosmos DB emulator.",
+ "remarks": "Not calling this method will result in the default of 10 partitions. The actual started partitions is always one more than specified.\nSee this documentation about setting the partition count.",
+ "returns": "Cosmos emulator resource builder.",
"kind": "Method",
"signature": "withPartitionCount(count: number): AzureCosmosDBEmulatorResource",
"parameters": [
{
"name": "count",
- "type": "number"
+ "type": "number",
+ "description": "Desired partition count."
}
],
"returnType": "AzureCosmosDBEmulatorResource",
@@ -435,18 +467,21 @@
"name": "addCosmosDatabase",
"capabilityId": "Aspire.Hosting.Azure.CosmosDB/addCosmosDatabase",
"qualifiedName": "addCosmosDatabase",
- "description": "Adds an Azure Cosmos DB database resource",
+ "description": "Adds a database to the associated Cosmos DB account resource.",
+ "returns": "A reference to the `IResourceBuilder`1`.",
"kind": "Method",
"signature": "addCosmosDatabase(name: string, databaseName?: string): AzureCosmosDBDatabaseResource",
"parameters": [
{
"name": "name",
- "type": "string"
+ "type": "string",
+ "description": "The name of the database resource."
},
{
"name": "databaseName",
"type": "string",
- "isOptional": true
+ "isOptional": true,
+ "description": "The name of the database. If not provided, this defaults to the same value as `name`."
}
],
"returnType": "AzureCosmosDBDatabaseResource",
@@ -460,16 +495,19 @@
"name": "runAsEmulator",
"capabilityId": "Aspire.Hosting.Azure.CosmosDB/runAsEmulator",
"qualifiedName": "runAsEmulator",
- "description": "Configures the Azure Cosmos DB resource to run using the local emulator",
+ "description": "Configures an Azure Cosmos DB resource to be emulated using the Azure Cosmos DB emulator with the NoSQL API. This resource requires an `AzureCosmosDBResource` to be added to the application model. For more information on the Azure Cosmos DB emulator, see .",
+ "remarks": "When using the Azure Cosmos DB emulator, the container requires a TLS/SSL certificate.\nFor more information, see .\nThis version of the package defaults to the tag of the / container image.",
+ "returns": "A reference to the `IResourceBuilder`1`.",
"kind": "Method",
- "signature": "runAsEmulator(configureContainer?: (obj: AzureCosmosDBEmulatorResource) =\u003E Promise\u003Cvoid\u003E): AzureCosmosDBResource",
+ "signature": "runAsEmulator(configureContainer?: (obj: AzureCosmosDBEmulatorResource) => Promise): AzureCosmosDBResource",
"parameters": [
{
"name": "configureContainer",
"type": "callback",
"isOptional": true,
"isCallback": true,
- "callbackSignature": "(obj: AzureCosmosDBEmulatorResource) =\u003E Promise\u003Cvoid\u003E"
+ "callbackSignature": "(obj: AzureCosmosDBEmulatorResource) => Promise",
+ "description": "Callback that exposes underlying container used for emulation to allow for customization."
}
],
"returnType": "AzureCosmosDBResource",
@@ -483,16 +521,19 @@
"name": "runAsPreviewEmulator",
"capabilityId": "Aspire.Hosting.Azure.CosmosDB/runAsPreviewEmulator",
"qualifiedName": "runAsPreviewEmulator",
- "description": "Configures the Azure Cosmos DB resource to run using the preview emulator",
+ "description": "Configures an Azure Cosmos DB resource to be emulated using the Azure Cosmos DB Linux-based emulator (preview) with the NoSQL API. This resource requires an `AzureCosmosDBResource` to be added to the application model. For more information on the Azure Cosmos DB emulator, see .",
+ "remarks": "This version of the package defaults to the tag of the / container image.",
+ "returns": "A reference to the `IResourceBuilder`1`.",
"kind": "Method",
- "signature": "runAsPreviewEmulator(configureContainer?: (obj: AzureCosmosDBEmulatorResource) =\u003E Promise\u003Cvoid\u003E): AzureCosmosDBResource",
+ "signature": "runAsPreviewEmulator(configureContainer?: (obj: AzureCosmosDBEmulatorResource) => Promise): AzureCosmosDBResource",
"parameters": [
{
"name": "configureContainer",
"type": "callback",
"isOptional": true,
"isCallback": true,
- "callbackSignature": "(obj: AzureCosmosDBEmulatorResource) =\u003E Promise\u003Cvoid\u003E"
+ "callbackSignature": "(obj: AzureCosmosDBEmulatorResource) => Promise