{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "definitions": {
    "profile": {
      "type": "object",
      "allOf": [
        {
          "$ref": "#/definitions/profileContent"
        }
      ],
      "required": ["commandName"]
    },
    "iisSetting": {
      "type": "object",
      "allOf": [
        {
          "$ref": "#/definitions/iisSettingContent"
        }
      ]
    },
    "iisSettingContent": {
      "properties": {
        "windowsAuthentication": {
          "type": "boolean",
          "description": "Set to true to enable windows authentication for your site in IIS and IIS Express.",
          "default": false
        },
        "anonymousAuthentication": {
          "type": "boolean",
          "description": "Set to true to enable anonymous authentication for your site in IIS and IIS Express.",
          "default": true
        },
        "iisExpress": {
          "type": "object",
          "description": "Site settings to use with IISExpress profiles.",
          "allOf": [
            {
              "$ref": "#/definitions/iisBindingContent"
            }
          ]
        },
        "iis": {
          "type": "object",
          "description": "Site settings to use with IIS profiles.",
          "allOf": [
            {
              "$ref": "#/definitions/iisBindingContent"
            }
          ]
        }
      }
    },
    "iisBindingContent": {
      "properties": {
        "applicationUrl": {
          "type": "string",
          "format": "uri",
          "description": "The URL of the web site.",
          "default": ""
        },
        "sslPort": {
          "type": "integer",
          "maximum": 65535,
          "minimum": 0,
          "description": "The SSL port to use for the web site.",
          "default": 0
        }
      }
    },
    "profileContent": {
      "properties": {
        "commandName": {
          "type": "string",
          "description": "Identifies the debug target to run.",
          "enum": [
            "Executable",
            "Project",
            "IIS",
            "IISExpress",
            "DebugRoslynComponent",
            "Docker",
            "DockerCompose",
            "MsixPackage"
          ],
          "default": "",
          "minLength": 1
        },
        "commandLineArgs": {
          "type": "string",
          "description": "The arguments to pass to the target being run.",
          "default": ""
        },
        "executablePath": {
          "type": "string",
          "description": "An absolute or relative path to the executable.",
          "default": ""
        },
        "workingDirectory": {
          "type": "string",
          "description": "Sets the working directory of the command."
        },
        "launchBrowser": {
          "type": "boolean",
          "description": "Set to true if the browser should be launched.",
          "default": false
        },
        "launchUrl": {
          "type": "string",
          "description": "The relative URL to launch in the browser."
        },
        "environmentVariables": {
          "type": "object",
          "description": "Set the environment variables as key/value pairs.",
          "additionalProperties": {
            "type": "string"
          }
        },
        "applicationUrl": {
          "type": "string",
          "description": "A semi-colon delimited list of URL(s) to configure for the web server."
        },
        "nativeDebugging": {
          "type": "boolean",
          "description": "Set to true to enable native code debugging.",
          "default": false
        },
        "externalUrlConfiguration": {
          "type": "boolean",
          "description": "Set to true to disable configuration of the site when running the Asp.Net Core Project profile.",
          "default": false
        },
        "use64Bit": {
          "type": "boolean",
          "description": "Set to true to run the 64 bit version of IIS Express, false to run the x86 version.",
          "default": true
        },
        "ancmHostingModel": {
          "enum": ["InProcess", "OutOfProcess"],
          "description": "Specifies the hosting model to use when running ASP.NET core projects in IIS and IIS Express.",
          "default": false
        },
        "sqlDebugging": {
          "type": "boolean",
          "description": "Set to true to enable debugging of SQL scripts and stored procedures.",
          "default": false
        },
        "jsWebView2Debugging": {
          "type": "boolean",
          "description": "Set to true to enable the JavaScript debugger for Microsoft Edge (Chromium) based WebView2.",
          "default": false
        },
        "leaveRunningOnClose": {
          "type": "boolean",
          "description": "Set to true to leave the IIS application pool running when the project is closed.",
          "default": false
        },
        "remoteDebugEnabled": {
          "type": "boolean",
          "description": "Set to true to have the debugger attach to a process on a remote computer.",
          "default": false
        },
        "remoteDebugMachine": {
          "type": "string",
          "description": "The name and port number of the remote machine in name:port format."
        },
        "authenticationMode": {
          "enum": ["None", "Windows"],
          "description": "The authentication scheme to use when connecting to the remote computer.",
          "default": "None"
        },
        "hotReloadEnabled": {
          "type": "boolean",
          "description": "Set to true to enable applying code changes to the running application.",
          "default": true
        },
        "publishAllPorts": {
          "type": "boolean",
          "description": "Publish all exposed ports to random ports in Docker (-P).",
          "default": true
        },
        "useSSL": {
          "type": "boolean",
          "description": "Set to true to bind the SSL port.",
          "default": true
        },
        "sslPort": {
          "type": "integer",
          "maximum": 65535,
          "minimum": 0,
          "description": "The SSL port to use for the web site.",
          "default": 0
        },
        "httpPort": {
          "type": "integer",
          "maximum": 65535,
          "minimum": 0,
          "description": "The HTTP port to use for the web site.",
          "default": 0
        },
        "dotnetRunMessages": {
          "type": "boolean",
          "description": "Set to true to display a message when the project is building.",
          "default": true
        },
        "inspectUri": {
          "type": "string",
          "description": "The url to enable debugging on a Blazor WebAssembly application.",
          "default": "{wsProtocol}://{url.hostname}:{url.port}/_framework/debug/ws-proxy?browser={browserInspectUri}"
        },
        "targetProject": {
          "type": "string",
          "description": "A relative ot absolute path to the .NET project file on which Roslyn component should be executed. Relative to the current project's folder.",
          "default": ""
        }
      }
    }
  },
  "id": "https://json.schemastore.org/launchsettings.json",
  "properties": {
    "profiles": {
      "type": "object",
      "description": "A list of debug profiles",
      "additionalProperties": {
        "$ref": "#/definitions/profile"
      }
    },
    "iisSettings": {
      "type": "object",
      "description": "IIS and IIS Express settings",
      "allOf": [
        {
          "$ref": "#/definitions/iisSettingContent"
        }
      ]
    }
  },
  "title": "JSON schema for the Visual Studio LaunchSettings.json file.",
  "type": "object"
}