{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "$id": "https://aspire.dev/reference/cli/configuration/schema/13.2.3.json",
  "type": "object",
  "title": "Aspire Configuration",
  "description": "Aspire CLI unified configuration file (aspire.config.json). Replaces .aspire/settings.json and apphost.run.json.",
  "properties": {
    "appHost": {
      "description": "AppHost entry point configuration.",
      "type": "object",
      "properties": {
        "path": {
          "description": "Relative path to the AppHost entry point file (e.g., \"Program.cs\", \"app.ts\"). Relative to the directory containing aspire.config.json.",
          "type": "string"
        },
        "language": {
          "description": "Language identifier (e.g., \"typescript/nodejs\", \"python\"). Used to determine which runtime to use for execution.",
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "channel": {
      "description": "The Aspire channel to use for package resolution (e.g., \"stable\", \"preview\", \"staging\", \"daily\"). Used by aspire add to determine which NuGet feed to use.",
      "type": "string"
    },
    "features": {
      "description": "Feature flags for enabling/disabling experimental or optional features. Key is feature name, value is enabled (true) or disabled (false).",
      "type": "object",
      "properties": {
        "defaultWatchEnabled": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "type": "string",
              "enum": [
                "true",
                "false"
              ]
            }
          ],
          "description": "Enable or disable watch mode by default when running Aspire applications for automatic restarts on file changes",
          "default": false
        },
        "execCommandEnabled": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "type": "string",
              "enum": [
                "true",
                "false"
              ]
            }
          ],
          "description": "Enable or disable the 'aspire exec' command for executing commands inside running resources",
          "default": false
        },
        "experimentalPolyglot:go": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "type": "string",
              "enum": [
                "true",
                "false"
              ]
            }
          ],
          "description": "Enable or disable experimental Go language support for polyglot Aspire applications",
          "default": false
        },
        "experimentalPolyglot:java": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "type": "string",
              "enum": [
                "true",
                "false"
              ]
            }
          ],
          "description": "Enable or disable experimental Java language support for polyglot Aspire applications",
          "default": false
        },
        "experimentalPolyglot:python": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "type": "string",
              "enum": [
                "true",
                "false"
              ]
            }
          ],
          "description": "Enable or disable experimental Python language support for polyglot Aspire applications",
          "default": false
        },
        "experimentalPolyglot:rust": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "type": "string",
              "enum": [
                "true",
                "false"
              ]
            }
          ],
          "description": "Enable or disable experimental Rust language support for polyglot Aspire applications",
          "default": false
        },
        "showAllTemplates": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "type": "string",
              "enum": [
                "true",
                "false"
              ]
            }
          ],
          "description": "Show all available templates including experimental ones in 'aspire new' and 'aspire init' commands",
          "default": false
        },
        "showDeprecatedPackages": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "type": "string",
              "enum": [
                "true",
                "false"
              ]
            }
          ],
          "description": "Show or hide deprecated packages in 'aspire add' search results",
          "default": false
        },
        "stagingChannelEnabled": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "type": "string",
              "enum": [
                "true",
                "false"
              ]
            }
          ],
          "description": "Enable or disable access to the staging channel for early access to preview features and packages",
          "default": false
        },
        "updateNotificationsEnabled": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "type": "string",
              "enum": [
                "true",
                "false"
              ]
            }
          ],
          "description": "Check if update notifications are disabled and set version check environment variable",
          "default": true
        }
      },
      "additionalProperties": false
    },
    "packages": {
      "description": "Package references for non-first-class languages. Key is package name, value is version. A value ending in \".csproj\" is treated as a project reference.",
      "type": "object",
      "additionalProperties": {
        "type": "string"
      }
    },
    "profiles": {
      "description": "Launch profiles (ports, environment variables). Replaces apphost.run.json.",
      "type": "object",
      "additionalProperties": {
        "type": "object",
        "properties": {
          "applicationUrl": {
            "description": "Application URLs (e.g., \"https://localhost:17000;http://localhost:15000\").",
            "type": "string"
          },
          "environmentVariables": {
            "description": "Environment variables for this profile.",
            "type": "object",
            "additionalProperties": {
              "type": "string"
            }
          }
        },
        "additionalProperties": false
      }
    },
    "sdk": {
      "description": "Aspire SDK version configuration.",
      "type": "object",
      "properties": {
        "version": {
          "description": "The Aspire SDK version. Determines the version of Aspire.Hosting packages to use.",
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "$schema": {
      "type": "string",
      "description": "JSON Schema reference"
    }
  },
  "additionalProperties": false
}