{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "$id": "https://aka.ms/unified-settings-experience/registration/schema",
  "title": "Visual Studio Unified Settings Registration Manifest",
  "description": "Meta-schema for Visual Studio Unified Settings registration manifests.",
  "$comment": "Configuration",
  "type": "object",
  "properties": {
    "properties": {
      "oneOf": [
        {
          "$comment": "[String => SettingRegistration]",
          "type": "object",
          "propertyNames": {
            "type": "string",
            "pattern": "^([a-z0-9][A-Za-z0-9]+\\.)*[a-z0-9][A-Za-z0-9]+$"
          },
          "additionalProperties": {
            "$ref": "#/$defs/SettingRegistration"
          }
        },
        {
          "type": "null"
        }
      ],
      "description": "A map of monikers to setting registrations",
      "title": "Properties"
    },
    "categories": {
      "oneOf": [
        {
          "$comment": "[String => CategoryRegistration]",
          "type": "object",
          "propertyNames": {
            "type": "string",
            "pattern": "^([a-z0-9][A-Za-z0-9]+\\.)*[a-z0-9][A-Za-z0-9]+$"
          },
          "additionalProperties": {
            "$ref": "#/$defs/CategoryRegistration"
          }
        },
        {
          "type": "null"
        }
      ],
      "description": "A map of monikers to category registrations",
      "title": "Categories"
    },
    "$schema": {
      "oneOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Schema"
    }
  },
  "additionalProperties": false,
  "$defs": {
    "AlternateDefault{ImmutableArray{IReadOnlyDictionary{System.String,Typing.JsonVariant}}}": {
      "type": "object",
      "properties": {
        "flagName": {
          "type": "string",
          "description": "The name of the feature flag",
          "title": "Flag Name"
        },
        "default": {
          "$comment": "IReadOnlyDictionary`2[]",
          "type": "array",
          "items": {
            "$comment": "[String => JsonVariant]",
            "type": "object",
            "propertyNames": {
              "type": "string"
            },
            "additionalProperties": {
              "$ref": "#/$defs/Typing.JsonVariant"
            }
          },
          "description": "The alternate default value",
          "title": "Default"
        }
      },
      "required": [
        "flagName",
        "default"
      ],
      "additionalProperties": false
    },
    "AlternateDefault{ImmutableArray{System.String}}": {
      "type": "object",
      "properties": {
        "flagName": {
          "type": "string",
          "description": "The name of the feature flag",
          "title": "Flag Name"
        },
        "default": {
          "$comment": "String[]",
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The alternate default value",
          "title": "Default"
        }
      },
      "required": [
        "flagName",
        "default"
      ],
      "additionalProperties": false
    },
    "AlternateDefault{System.Boolean}": {
      "type": "object",
      "properties": {
        "flagName": {
          "type": "string",
          "description": "The name of the feature flag",
          "title": "Flag Name"
        },
        "default": {
          "type": "boolean",
          "description": "The alternate default value",
          "title": "Default"
        }
      },
      "required": [
        "flagName",
        "default"
      ],
      "additionalProperties": false
    },
    "AlternateDefault{System.Decimal}": {
      "type": "object",
      "properties": {
        "flagName": {
          "type": "string",
          "description": "The name of the feature flag",
          "title": "Flag Name"
        },
        "default": {
          "$comment": "decimal",
          "type": "number",
          "minimum": -79228162514264337593543950335,
          "maximum": 79228162514264337593543950335,
          "description": "The alternate default value",
          "title": "Default"
        }
      },
      "required": [
        "flagName",
        "default"
      ],
      "additionalProperties": false
    },
    "AlternateDefault{System.Int32}": {
      "type": "object",
      "properties": {
        "flagName": {
          "type": "string",
          "description": "The name of the feature flag",
          "title": "Flag Name"
        },
        "default": {
          "type": "integer",
          "minimum": -2147483648,
          "maximum": 2147483647,
          "description": "The alternate default value",
          "title": "Default"
        }
      },
      "required": [
        "flagName",
        "default"
      ],
      "additionalProperties": false
    },
    "AlternateDefault{System.String}": {
      "type": "object",
      "properties": {
        "flagName": {
          "type": "string",
          "description": "The name of the feature flag",
          "title": "Flag Name"
        },
        "default": {
          "type": "string",
          "description": "The alternate default value",
          "title": "Default"
        }
      },
      "required": [
        "flagName",
        "default"
      ],
      "additionalProperties": false
    },
    "AlternateDefault{T}": {
      "oneOf": [
        {
          "$ref": "#/$defs/AlternateDefault{System.Boolean}"
        },
        {
          "$ref": "#/$defs/AlternateDefault{System.Int32}"
        },
        {
          "$ref": "#/$defs/AlternateDefault{System.Decimal}"
        },
        {
          "$ref": "#/$defs/AlternateDefault{System.String}"
        },
        {
          "$ref": "#/$defs/AlternateDefault{ImmutableArray{System.String}}"
        },
        {
          "$ref": "#/$defs/AlternateDefault{ImmutableArray{IReadOnlyDictionary{System.String,Typing.JsonVariant}}}"
        }
      ]
    },
    "Callback": {
      "$comment": "packageId, serviceId, or both may be specified",
      "description": "An invokable callback provided by a setting owner",
      "type": "object",
      "additionalProperties": false,
      "properties": {
        "packageId": {
          "type": "string"
        },
        "serviceId": {
          "type": "string"
        }
      },
      "anyOf": [
        {
          "required": [
            "packageId"
          ]
        },
        {
          "required": [
            "serviceId"
          ]
        },
        {
          "required": [
            "packageId",
            "serviceId"
          ]
        }
      ]
    },
    "CategoryRegistration": {
      "type": "object",
      "properties": {
        "description": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "description": "A verbose description. The value may be a plain string, or may be a special format that indicates the localized value should be retrieved from a resource dictionary, or from the resources of a Visual Studio package.",
          "title": "Description"
        },
        "order": {
          "oneOf": [
            {
              "type": "integer",
              "minimum": -2147483648,
              "maximum": 2147483647
            },
            {
              "type": "null"
            }
          ],
          "description": "Optionally override the preferred display order.",
          "title": "Order"
        },
        "title": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "description": "The display title. The value may be a plain string, or may be a special format that indicates the localized value should be retrieved from a resource dictionary, or from the resources of a Visual Studio package.",
          "title": "Title"
        },
        "helpUri": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "description": "The URI of a help page.",
          "title": "Help Uri"
        },
        "tags": {
          "$comment": "FilterTag[]",
          "type": "array",
          "items": {
            "$ref": "#/$defs/Display.FilterTag"
          },
          "uniqueItems": true,
          "description": "A list of tags to associate with the registration. Used when filtering the settings window.",
          "title": "Tags"
        },
        "additionalKeywords": {
          "$comment": "String[]",
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of additional keywords to associate with the setting when searching in the UI.",
          "title": "Additional Keywords"
        },
        "commands": {
          "$comment": "Command[]",
          "type": "array",
          "items": {
            "$ref": "#/$defs/Command"
          },
          "description": "Commands to render with this element.",
          "title": "Commands"
        },
        "messages": {
          "$comment": "Message[]",
          "type": "array",
          "items": {
            "$ref": "#/$defs/Message"
          },
          "description": "Messages to render with this element.",
          "title": "Messages"
        },
        "visibleWhen": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "description": "A boolean expression that determines when the element is visible in the UI.\r\nWhen 'null' or unset, the element is always visible.\r\n\r\nYou can reference setting values and environment variable values.\r\nExamples:\r\n    ${config:environment.general.showStatusBar} == 'true'\r\n    ${env:USERDOMAIN} != ''\r\n    ${config:environment.general.showStatusBar} == 'true' || (${config:environment.visualExperience.titleCaseMenus} == 'true' && ${config:environment.visualExperience.useMinimalMode} == 'false')",
          "title": "Visible When"
        },
        "previewUIFactory": {
          "oneOf": [
            {
              "$ref": "#/$defs/Factory"
            },
            {
              "type": "null"
            }
          ],
          "description": "The factory for creating the preview UI to render with this element.",
          "title": "Preview UI Factory"
        },
        "legacyOptionPageId": {
          "oneOf": [
            {
              "$comment": "Guid",
              "type": "string",
              "format": "uuid"
            },
            {
              "type": "null"
            }
          ],
          "title": "Legacy Option Page Id"
        },
        "legacyOptionCategoryMoniker": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Legacy Option Category Moniker"
        },
        "canBeVisibleWhenEmpty": {
          "type": "boolean",
          "title": "Can Be Visible When Empty"
        }
      },
      "additionalProperties": false
    },
    "Command": {
      "type": "object",
      "properties": {
        "vsct": {
          "$ref": "#/$defs/Command_VsctCommand",
          "title": "Vsct"
        }
      },
      "required": [
        "vsct"
      ],
      "minProperties": 1,
      "maxProperties": 1,
      "additionalProperties": false
    },
    "Command_VsctCommand": {
      "type": "object",
      "properties": {
        "text": {
          "type": "string",
          "description": "The text of the interactive element.",
          "title": "Text"
        },
        "set": {
          "$comment": "Guid",
          "type": "string",
          "format": "uuid",
          "description": "The command set.",
          "title": "Set"
        },
        "id": {
          "type": "integer",
          "minimum": -2147483648,
          "maximum": 2147483647,
          "description": "The command Id.",
          "title": "Id"
        },
        "parameter": {
          "oneOf": [
            {
              "$ref": "#/$defs/Typing.JsonVariant"
            },
            {
              "type": "null"
            }
          ],
          "description": "An optional command parameter.",
          "title": "Parameter"
        },
        "enableOnlyWhen": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "description": "An optional expression that must be satisfied in addition to the command's own enabled state in order for the command to be enabled in Unified Settings.",
          "title": "Enable Only When"
        }
      },
      "required": [
        "text",
        "set",
        "id"
      ],
      "additionalProperties": false
    },
    "Display.FilterTag": {
      "$comment": "FilterTag",
      "type": "string",
      "enum": [
        "accessibility",
        "performance"
      ]
    },
    "ExternalSettingRegistration": {
      "oneOf": [
        {
          "$ref": "#/$defs/ExternalSettingRegistration_Boolean"
        },
        {
          "$ref": "#/$defs/ExternalSettingRegistration_Integer"
        },
        {
          "$ref": "#/$defs/ExternalSettingRegistration_Number"
        },
        {
          "$ref": "#/$defs/ExternalSettingRegistration_String"
        },
        {
          "$ref": "#/$defs/ExternalSettingRegistration_FormatString"
        },
        {
          "$ref": "#/$defs/ExternalSettingRegistration_EnumString"
        },
        {
          "$ref": "#/$defs/ExternalSettingRegistration_StringArray"
        },
        {
          "$ref": "#/$defs/ExternalSettingRegistration_FormatStringArray"
        },
        {
          "$ref": "#/$defs/ExternalSettingRegistration_EnumStringArray"
        },
        {
          "$ref": "#/$defs/ExternalSettingRegistration_ObjectArray"
        }
      ]
    },
    "ExternalSettingRegistration_Boolean": {
      "type": "object",
      "properties": {
        "type": {
          "const": "boolean",
          "description": "The type of the setting value.",
          "title": "Schema Type"
        },
        "enableWhen": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "description": "A boolean expression that determines when the element is enabled in the UI.\r\nWhen 'null' or unset, the element is always enabled.\r\n\r\nYou can reference setting values and environment variable values.\r\nExamples:\r\n    ${config:environment.general.showStatusBar} == 'true'\r\n    ${env:USERDOMAIN} != ''\r\n    ${config:environment.general.showStatusBar} == 'true' || (${config:environment.visualExperience.titleCaseMenus} == 'true' && ${config:environment.visualExperience.useMinimalMode} == 'false')",
          "title": "Enable When"
        },
        "description": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "description": "A verbose description. The value may be a plain string, or may be a special format that indicates the localized value should be retrieved from a resource dictionary, or from the resources of a Visual Studio package.",
          "title": "Description"
        },
        "order": {
          "oneOf": [
            {
              "type": "integer",
              "minimum": -2147483648,
              "maximum": 2147483647
            },
            {
              "type": "null"
            }
          ],
          "description": "Optionally override the preferred display order.",
          "title": "Order"
        },
        "title": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "description": "The display title. The value may be a plain string, or may be a special format that indicates the localized value should be retrieved from a resource dictionary, or from the resources of a Visual Studio package.",
          "title": "Title"
        },
        "helpUri": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "description": "The URI of a help page.",
          "title": "Help Uri"
        },
        "tags": {
          "$comment": "FilterTag[]",
          "type": "array",
          "items": {
            "$ref": "#/$defs/Display.FilterTag"
          },
          "uniqueItems": true,
          "description": "A list of tags to associate with the registration. Used when filtering the settings window.",
          "title": "Tags"
        },
        "additionalKeywords": {
          "$comment": "String[]",
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of additional keywords to associate with the setting when searching in the UI.",
          "title": "Additional Keywords"
        },
        "commands": {
          "$comment": "Command[]",
          "type": "array",
          "items": {
            "$ref": "#/$defs/Command"
          },
          "description": "Commands to render with this element.",
          "title": "Commands"
        },
        "messages": {
          "$comment": "Message[]",
          "type": "array",
          "items": {
            "$ref": "#/$defs/Message"
          },
          "description": "Messages to render with this element.",
          "title": "Messages"
        },
        "visibleWhen": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "description": "A boolean expression that determines when the element is visible in the UI.\r\nWhen 'null' or unset, the element is always visible.\r\n\r\nYou can reference setting values and environment variable values.\r\nExamples:\r\n    ${config:environment.general.showStatusBar} == 'true'\r\n    ${env:USERDOMAIN} != ''\r\n    ${config:environment.general.showStatusBar} == 'true' || (${config:environment.visualExperience.titleCaseMenus} == 'true' && ${config:environment.visualExperience.useMinimalMode} == 'false')",
          "title": "Visible When"
        },
        "unsupportedMessage": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Unsupported Message"
        }
      },
      "required": [
        "type"
      ],
      "additionalProperties": false
    },
    "ExternalSettingRegistration_EnumString": {
      "type": "object",
      "properties": {
        "type": {
          "const": "string",
          "description": "The type of the setting value.",
          "title": "Schema Type"
        },
        "enum": {
          "$comment": "String[]",
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The allowed values.",
          "title": "Enum"
        },
        "enumItemLabels": {
          "$comment": "String[]",
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The labels to display in the UI for each allowed value.\r\nThere must be exactly one label for each value in 'enum'.",
          "title": "Enum Item Labels"
        },
        "enableWhen": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "description": "A boolean expression that determines when the element is enabled in the UI.\r\nWhen 'null' or unset, the element is always enabled.\r\n\r\nYou can reference setting values and environment variable values.\r\nExamples:\r\n    ${config:environment.general.showStatusBar} == 'true'\r\n    ${env:USERDOMAIN} != ''\r\n    ${config:environment.general.showStatusBar} == 'true' || (${config:environment.visualExperience.titleCaseMenus} == 'true' && ${config:environment.visualExperience.useMinimalMode} == 'false')",
          "title": "Enable When"
        },
        "description": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "description": "A verbose description. The value may be a plain string, or may be a special format that indicates the localized value should be retrieved from a resource dictionary, or from the resources of a Visual Studio package.",
          "title": "Description"
        },
        "order": {
          "oneOf": [
            {
              "type": "integer",
              "minimum": -2147483648,
              "maximum": 2147483647
            },
            {
              "type": "null"
            }
          ],
          "description": "Optionally override the preferred display order.",
          "title": "Order"
        },
        "title": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "description": "The display title. The value may be a plain string, or may be a special format that indicates the localized value should be retrieved from a resource dictionary, or from the resources of a Visual Studio package.",
          "title": "Title"
        },
        "helpUri": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "description": "The URI of a help page.",
          "title": "Help Uri"
        },
        "tags": {
          "$comment": "FilterTag[]",
          "type": "array",
          "items": {
            "$ref": "#/$defs/Display.FilterTag"
          },
          "uniqueItems": true,
          "description": "A list of tags to associate with the registration. Used when filtering the settings window.",
          "title": "Tags"
        },
        "additionalKeywords": {
          "$comment": "String[]",
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of additional keywords to associate with the setting when searching in the UI.",
          "title": "Additional Keywords"
        },
        "commands": {
          "$comment": "Command[]",
          "type": "array",
          "items": {
            "$ref": "#/$defs/Command"
          },
          "description": "Commands to render with this element.",
          "title": "Commands"
        },
        "messages": {
          "$comment": "Message[]",
          "type": "array",
          "items": {
            "$ref": "#/$defs/Message"
          },
          "description": "Messages to render with this element.",
          "title": "Messages"
        },
        "visibleWhen": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "description": "A boolean expression that determines when the element is visible in the UI.\r\nWhen 'null' or unset, the element is always visible.\r\n\r\nYou can reference setting values and environment variable values.\r\nExamples:\r\n    ${config:environment.general.showStatusBar} == 'true'\r\n    ${env:USERDOMAIN} != ''\r\n    ${config:environment.general.showStatusBar} == 'true' || (${config:environment.visualExperience.titleCaseMenus} == 'true' && ${config:environment.visualExperience.useMinimalMode} == 'false')",
          "title": "Visible When"
        },
        "unsupportedMessage": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Unsupported Message"
        }
      },
      "required": [
        "type",
        "enum",
        "enumItemLabels"
      ],
      "additionalProperties": false
    },
    "ExternalSettingRegistration_EnumStringArray": {
      "type": "object",
      "properties": {
        "type": {
          "const": "array",
          "description": "The type of the setting value.",
          "title": "Schema Type"
        },
        "minItems": {
          "oneOf": [
            {
              "type": "integer",
              "minimum": 0,
              "maximum": 2147483647
            },
            {
              "type": "null"
            }
          ],
          "title": "Min Items"
        },
        "maxItems": {
          "oneOf": [
            {
              "type": "integer",
              "minimum": 0,
              "maximum": 2147483647
            },
            {
              "type": "null"
            }
          ],
          "title": "Max Items"
        },
        "uniqueItems": {
          "type": "boolean",
          "description": "Whether the array items must be unique.",
          "title": "Unique Items"
        },
        "items": {
          "$ref": "#/$defs/ItemsRegistration_EnumString",
          "description": "Describes the type and validation constraints of the array items.",
          "title": "Items"
        },
        "itemsAreOrdered": {
          "type": "boolean",
          "description": "Whether the array items can be ordered by the user.",
          "title": "Items Are Ordered"
        },
        "hasUserSelectableDefaultItem": {
          "type": "boolean",
          "description": "Whether the array supports a user-selectable default item.",
          "title": "Has User Selectable Default Item"
        },
        "allowItemEditing": {
          "type": "boolean",
          "description": "Whether array items are user-editable in the IDE.  When this is false, items can still be added and removed, just not modified in place.",
          "title": "Allow Item Editing"
        },
        "allowAdditionsAndRemovals": {
          "type": "boolean",
          "description": "Whether items can be added or removed by the user.",
          "title": "Allow Additions and Removals"
        },
        "enableWhen": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "description": "A boolean expression that determines when the element is enabled in the UI.\r\nWhen 'null' or unset, the element is always enabled.\r\n\r\nYou can reference setting values and environment variable values.\r\nExamples:\r\n    ${config:environment.general.showStatusBar} == 'true'\r\n    ${env:USERDOMAIN} != ''\r\n    ${config:environment.general.showStatusBar} == 'true' || (${config:environment.visualExperience.titleCaseMenus} == 'true' && ${config:environment.visualExperience.useMinimalMode} == 'false')",
          "title": "Enable When"
        },
        "description": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "description": "A verbose description. The value may be a plain string, or may be a special format that indicates the localized value should be retrieved from a resource dictionary, or from the resources of a Visual Studio package.",
          "title": "Description"
        },
        "order": {
          "oneOf": [
            {
              "type": "integer",
              "minimum": -2147483648,
              "maximum": 2147483647
            },
            {
              "type": "null"
            }
          ],
          "description": "Optionally override the preferred display order.",
          "title": "Order"
        },
        "title": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "description": "The display title. The value may be a plain string, or may be a special format that indicates the localized value should be retrieved from a resource dictionary, or from the resources of a Visual Studio package.",
          "title": "Title"
        },
        "helpUri": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "description": "The URI of a help page.",
          "title": "Help Uri"
        },
        "tags": {
          "$comment": "FilterTag[]",
          "type": "array",
          "items": {
            "$ref": "#/$defs/Display.FilterTag"
          },
          "uniqueItems": true,
          "description": "A list of tags to associate with the registration. Used when filtering the settings window.",
          "title": "Tags"
        },
        "additionalKeywords": {
          "$comment": "String[]",
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of additional keywords to associate with the setting when searching in the UI.",
          "title": "Additional Keywords"
        },
        "commands": {
          "$comment": "Command[]",
          "type": "array",
          "items": {
            "$ref": "#/$defs/Command"
          },
          "description": "Commands to render with this element.",
          "title": "Commands"
        },
        "messages": {
          "$comment": "Message[]",
          "type": "array",
          "items": {
            "$ref": "#/$defs/Message"
          },
          "description": "Messages to render with this element.",
          "title": "Messages"
        },
        "visibleWhen": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "description": "A boolean expression that determines when the element is visible in the UI.\r\nWhen 'null' or unset, the element is always visible.\r\n\r\nYou can reference setting values and environment variable values.\r\nExamples:\r\n    ${config:environment.general.showStatusBar} == 'true'\r\n    ${env:USERDOMAIN} != ''\r\n    ${config:environment.general.showStatusBar} == 'true' || (${config:environment.visualExperience.titleCaseMenus} == 'true' && ${config:environment.visualExperience.useMinimalMode} == 'false')",
          "title": "Visible When"
        },
        "unsupportedMessage": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Unsupported Message"
        }
      },
      "required": [
        "type",
        "items"
      ],
      "additionalProperties": false
    },
    "ExternalSettingRegistration_FormatString": {
      "type": "object",
      "properties": {
        "type": {
          "const": "string",
          "description": "The type of the setting value.",
          "title": "Schema Type"
        },
        "example": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Example"
        },
        "format": {
          "$ref": "#/$defs/FormatStringKind",
          "description": "An optional format used to validate the contents of the string.",
          "title": "Format"
        },
        "pathKind": {
          "$ref": "#/$defs/PathKind",
          "description": "When 'format' is 'path', describes the kind of path the string must conform to.",
          "title": "Path Kind"
        },
        "enableWhen": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "description": "A boolean expression that determines when the element is enabled in the UI.\r\nWhen 'null' or unset, the element is always enabled.\r\n\r\nYou can reference setting values and environment variable values.\r\nExamples:\r\n    ${config:environment.general.showStatusBar} == 'true'\r\n    ${env:USERDOMAIN} != ''\r\n    ${config:environment.general.showStatusBar} == 'true' || (${config:environment.visualExperience.titleCaseMenus} == 'true' && ${config:environment.visualExperience.useMinimalMode} == 'false')",
          "title": "Enable When"
        },
        "description": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "description": "A verbose description. The value may be a plain string, or may be a special format that indicates the localized value should be retrieved from a resource dictionary, or from the resources of a Visual Studio package.",
          "title": "Description"
        },
        "order": {
          "oneOf": [
            {
              "type": "integer",
              "minimum": -2147483648,
              "maximum": 2147483647
            },
            {
              "type": "null"
            }
          ],
          "description": "Optionally override the preferred display order.",
          "title": "Order"
        },
        "title": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "description": "The display title. The value may be a plain string, or may be a special format that indicates the localized value should be retrieved from a resource dictionary, or from the resources of a Visual Studio package.",
          "title": "Title"
        },
        "helpUri": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "description": "The URI of a help page.",
          "title": "Help Uri"
        },
        "tags": {
          "$comment": "FilterTag[]",
          "type": "array",
          "items": {
            "$ref": "#/$defs/Display.FilterTag"
          },
          "uniqueItems": true,
          "description": "A list of tags to associate with the registration. Used when filtering the settings window.",
          "title": "Tags"
        },
        "additionalKeywords": {
          "$comment": "String[]",
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of additional keywords to associate with the setting when searching in the UI.",
          "title": "Additional Keywords"
        },
        "commands": {
          "$comment": "Command[]",
          "type": "array",
          "items": {
            "$ref": "#/$defs/Command"
          },
          "description": "Commands to render with this element.",
          "title": "Commands"
        },
        "messages": {
          "$comment": "Message[]",
          "type": "array",
          "items": {
            "$ref": "#/$defs/Message"
          },
          "description": "Messages to render with this element.",
          "title": "Messages"
        },
        "visibleWhen": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "description": "A boolean expression that determines when the element is visible in the UI.\r\nWhen 'null' or unset, the element is always visible.\r\n\r\nYou can reference setting values and environment variable values.\r\nExamples:\r\n    ${config:environment.general.showStatusBar} == 'true'\r\n    ${env:USERDOMAIN} != ''\r\n    ${config:environment.general.showStatusBar} == 'true' || (${config:environment.visualExperience.titleCaseMenus} == 'true' && ${config:environment.visualExperience.useMinimalMode} == 'false')",
          "title": "Visible When"
        },
        "unsupportedMessage": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Unsupported Message"
        }
      },
      "required": [
        "type",
        "format"
      ],
      "additionalProperties": false
    },
    "ExternalSettingRegistration_FormatStringArray": {
      "type": "object",
      "properties": {
        "type": {
          "const": "array",
          "description": "The type of the setting value.",
          "title": "Schema Type"
        },
        "minItems": {
          "oneOf": [
            {
              "type": "integer",
              "minimum": 0,
              "maximum": 2147483647
            },
            {
              "type": "null"
            }
          ],
          "title": "Min Items"
        },
        "maxItems": {
          "oneOf": [
            {
              "type": "integer",
              "minimum": 0,
              "maximum": 2147483647
            },
            {
              "type": "null"
            }
          ],
          "title": "Max Items"
        },
        "uniqueItems": {
          "type": "boolean",
          "description": "Whether the array items must be unique.",
          "title": "Unique Items"
        },
        "items": {
          "$ref": "#/$defs/ItemsRegistration_FormatString",
          "description": "Describes the type and validation constraints of the array items.",
          "title": "Items"
        },
        "itemsAreOrdered": {
          "type": "boolean",
          "description": "Whether the array items can be ordered by the user.",
          "title": "Items Are Ordered"
        },
        "hasUserSelectableDefaultItem": {
          "type": "boolean",
          "description": "Whether the array supports a user-selectable default item.",
          "title": "Has User Selectable Default Item"
        },
        "allowItemEditing": {
          "type": "boolean",
          "description": "Whether array items are user-editable in the IDE.  When this is false, items can still be added and removed, just not modified in place.",
          "title": "Allow Item Editing"
        },
        "allowAdditionsAndRemovals": {
          "type": "boolean",
          "description": "Whether items can be added or removed by the user.",
          "title": "Allow Additions and Removals"
        },
        "enableWhen": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "description": "A boolean expression that determines when the element is enabled in the UI.\r\nWhen 'null' or unset, the element is always enabled.\r\n\r\nYou can reference setting values and environment variable values.\r\nExamples:\r\n    ${config:environment.general.showStatusBar} == 'true'\r\n    ${env:USERDOMAIN} != ''\r\n    ${config:environment.general.showStatusBar} == 'true' || (${config:environment.visualExperience.titleCaseMenus} == 'true' && ${config:environment.visualExperience.useMinimalMode} == 'false')",
          "title": "Enable When"
        },
        "description": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "description": "A verbose description. The value may be a plain string, or may be a special format that indicates the localized value should be retrieved from a resource dictionary, or from the resources of a Visual Studio package.",
          "title": "Description"
        },
        "order": {
          "oneOf": [
            {
              "type": "integer",
              "minimum": -2147483648,
              "maximum": 2147483647
            },
            {
              "type": "null"
            }
          ],
          "description": "Optionally override the preferred display order.",
          "title": "Order"
        },
        "title": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "description": "The display title. The value may be a plain string, or may be a special format that indicates the localized value should be retrieved from a resource dictionary, or from the resources of a Visual Studio package.",
          "title": "Title"
        },
        "helpUri": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "description": "The URI of a help page.",
          "title": "Help Uri"
        },
        "tags": {
          "$comment": "FilterTag[]",
          "type": "array",
          "items": {
            "$ref": "#/$defs/Display.FilterTag"
          },
          "uniqueItems": true,
          "description": "A list of tags to associate with the registration. Used when filtering the settings window.",
          "title": "Tags"
        },
        "additionalKeywords": {
          "$comment": "String[]",
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of additional keywords to associate with the setting when searching in the UI.",
          "title": "Additional Keywords"
        },
        "commands": {
          "$comment": "Command[]",
          "type": "array",
          "items": {
            "$ref": "#/$defs/Command"
          },
          "description": "Commands to render with this element.",
          "title": "Commands"
        },
        "messages": {
          "$comment": "Message[]",
          "type": "array",
          "items": {
            "$ref": "#/$defs/Message"
          },
          "description": "Messages to render with this element.",
          "title": "Messages"
        },
        "visibleWhen": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "description": "A boolean expression that determines when the element is visible in the UI.\r\nWhen 'null' or unset, the element is always visible.\r\n\r\nYou can reference setting values and environment variable values.\r\nExamples:\r\n    ${config:environment.general.showStatusBar} == 'true'\r\n    ${env:USERDOMAIN} != ''\r\n    ${config:environment.general.showStatusBar} == 'true' || (${config:environment.visualExperience.titleCaseMenus} == 'true' && ${config:environment.visualExperience.useMinimalMode} == 'false')",
          "title": "Visible When"
        },
        "unsupportedMessage": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Unsupported Message"
        }
      },
      "required": [
        "type",
        "items"
      ],
      "additionalProperties": false
    },
    "ExternalSettingRegistration_Integer": {
      "type": "object",
      "properties": {
        "type": {
          "const": "integer",
          "description": "The type of the setting value.",
          "title": "Schema Type"
        },
        "maximum": {
          "oneOf": [
            {
              "type": "integer",
              "minimum": -2147483648,
              "maximum": 2147483647
            },
            {
              "type": "null"
            }
          ],
          "title": "Maximum"
        },
        "minimum": {
          "oneOf": [
            {
              "type": "integer",
              "minimum": -2147483648,
              "maximum": 2147483647
            },
            {
              "type": "null"
            }
          ],
          "title": "Minimum"
        },
        "enableWhen": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "description": "A boolean expression that determines when the element is enabled in the UI.\r\nWhen 'null' or unset, the element is always enabled.\r\n\r\nYou can reference setting values and environment variable values.\r\nExamples:\r\n    ${config:environment.general.showStatusBar} == 'true'\r\n    ${env:USERDOMAIN} != ''\r\n    ${config:environment.general.showStatusBar} == 'true' || (${config:environment.visualExperience.titleCaseMenus} == 'true' && ${config:environment.visualExperience.useMinimalMode} == 'false')",
          "title": "Enable When"
        },
        "description": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "description": "A verbose description. The value may be a plain string, or may be a special format that indicates the localized value should be retrieved from a resource dictionary, or from the resources of a Visual Studio package.",
          "title": "Description"
        },
        "order": {
          "oneOf": [
            {
              "type": "integer",
              "minimum": -2147483648,
              "maximum": 2147483647
            },
            {
              "type": "null"
            }
          ],
          "description": "Optionally override the preferred display order.",
          "title": "Order"
        },
        "title": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "description": "The display title. The value may be a plain string, or may be a special format that indicates the localized value should be retrieved from a resource dictionary, or from the resources of a Visual Studio package.",
          "title": "Title"
        },
        "helpUri": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "description": "The URI of a help page.",
          "title": "Help Uri"
        },
        "tags": {
          "$comment": "FilterTag[]",
          "type": "array",
          "items": {
            "$ref": "#/$defs/Display.FilterTag"
          },
          "uniqueItems": true,
          "description": "A list of tags to associate with the registration. Used when filtering the settings window.",
          "title": "Tags"
        },
        "additionalKeywords": {
          "$comment": "String[]",
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of additional keywords to associate with the setting when searching in the UI.",
          "title": "Additional Keywords"
        },
        "commands": {
          "$comment": "Command[]",
          "type": "array",
          "items": {
            "$ref": "#/$defs/Command"
          },
          "description": "Commands to render with this element.",
          "title": "Commands"
        },
        "messages": {
          "$comment": "Message[]",
          "type": "array",
          "items": {
            "$ref": "#/$defs/Message"
          },
          "description": "Messages to render with this element.",
          "title": "Messages"
        },
        "visibleWhen": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "description": "A boolean expression that determines when the element is visible in the UI.\r\nWhen 'null' or unset, the element is always visible.\r\n\r\nYou can reference setting values and environment variable values.\r\nExamples:\r\n    ${config:environment.general.showStatusBar} == 'true'\r\n    ${env:USERDOMAIN} != ''\r\n    ${config:environment.general.showStatusBar} == 'true' || (${config:environment.visualExperience.titleCaseMenus} == 'true' && ${config:environment.visualExperience.useMinimalMode} == 'false')",
          "title": "Visible When"
        },
        "unsupportedMessage": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Unsupported Message"
        }
      },
      "required": [
        "type"
      ],
      "additionalProperties": false
    },
    "ExternalSettingRegistration_Number": {
      "type": "object",
      "properties": {
        "type": {
          "const": "number",
          "description": "The type of the setting value.",
          "title": "Schema Type"
        },
        "maximum": {
          "oneOf": [
            {
              "$comment": "decimal",
              "type": "number",
              "minimum": -79228162514264337593543950335,
              "maximum": 79228162514264337593543950335
            },
            {
              "type": "null"
            }
          ],
          "title": "Maximum"
        },
        "minimum": {
          "oneOf": [
            {
              "$comment": "decimal",
              "type": "number",
              "minimum": -79228162514264337593543950335,
              "maximum": 79228162514264337593543950335
            },
            {
              "type": "null"
            }
          ],
          "title": "Minimum"
        },
        "enableWhen": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "description": "A boolean expression that determines when the element is enabled in the UI.\r\nWhen 'null' or unset, the element is always enabled.\r\n\r\nYou can reference setting values and environment variable values.\r\nExamples:\r\n    ${config:environment.general.showStatusBar} == 'true'\r\n    ${env:USERDOMAIN} != ''\r\n    ${config:environment.general.showStatusBar} == 'true' || (${config:environment.visualExperience.titleCaseMenus} == 'true' && ${config:environment.visualExperience.useMinimalMode} == 'false')",
          "title": "Enable When"
        },
        "description": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "description": "A verbose description. The value may be a plain string, or may be a special format that indicates the localized value should be retrieved from a resource dictionary, or from the resources of a Visual Studio package.",
          "title": "Description"
        },
        "order": {
          "oneOf": [
            {
              "type": "integer",
              "minimum": -2147483648,
              "maximum": 2147483647
            },
            {
              "type": "null"
            }
          ],
          "description": "Optionally override the preferred display order.",
          "title": "Order"
        },
        "title": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "description": "The display title. The value may be a plain string, or may be a special format that indicates the localized value should be retrieved from a resource dictionary, or from the resources of a Visual Studio package.",
          "title": "Title"
        },
        "helpUri": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "description": "The URI of a help page.",
          "title": "Help Uri"
        },
        "tags": {
          "$comment": "FilterTag[]",
          "type": "array",
          "items": {
            "$ref": "#/$defs/Display.FilterTag"
          },
          "uniqueItems": true,
          "description": "A list of tags to associate with the registration. Used when filtering the settings window.",
          "title": "Tags"
        },
        "additionalKeywords": {
          "$comment": "String[]",
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of additional keywords to associate with the setting when searching in the UI.",
          "title": "Additional Keywords"
        },
        "commands": {
          "$comment": "Command[]",
          "type": "array",
          "items": {
            "$ref": "#/$defs/Command"
          },
          "description": "Commands to render with this element.",
          "title": "Commands"
        },
        "messages": {
          "$comment": "Message[]",
          "type": "array",
          "items": {
            "$ref": "#/$defs/Message"
          },
          "description": "Messages to render with this element.",
          "title": "Messages"
        },
        "visibleWhen": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "description": "A boolean expression that determines when the element is visible in the UI.\r\nWhen 'null' or unset, the element is always visible.\r\n\r\nYou can reference setting values and environment variable values.\r\nExamples:\r\n    ${config:environment.general.showStatusBar} == 'true'\r\n    ${env:USERDOMAIN} != ''\r\n    ${config:environment.general.showStatusBar} == 'true' || (${config:environment.visualExperience.titleCaseMenus} == 'true' && ${config:environment.visualExperience.useMinimalMode} == 'false')",
          "title": "Visible When"
        },
        "unsupportedMessage": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Unsupported Message"
        }
      },
      "required": [
        "type"
      ],
      "additionalProperties": false
    },
    "ExternalSettingRegistration_ObjectArray": {
      "type": "object",
      "properties": {
        "type": {
          "const": "array",
          "description": "The type of the setting value.",
          "title": "Schema Type"
        },
        "minItems": {
          "oneOf": [
            {
              "type": "integer",
              "minimum": 0,
              "maximum": 2147483647
            },
            {
              "type": "null"
            }
          ],
          "title": "Min Items"
        },
        "maxItems": {
          "oneOf": [
            {
              "type": "integer",
              "minimum": 0,
              "maximum": 2147483647
            },
            {
              "type": "null"
            }
          ],
          "title": "Max Items"
        },
        "uniqueItems": {
          "type": "boolean",
          "description": "Whether the array items must be unique.",
          "title": "Unique Items"
        },
        "items": {
          "$ref": "#/$defs/ItemsRegistration_Object",
          "description": "Describes the type and validation constraints of the array items.",
          "title": "Items"
        },
        "itemsAreOrdered": {
          "type": "boolean",
          "description": "Whether the array items can be ordered by the user.",
          "title": "Items Are Ordered"
        },
        "hasUserSelectableDefaultItem": {
          "type": "boolean",
          "description": "Whether the array supports a user-selectable default item.",
          "title": "Has User Selectable Default Item"
        },
        "allowItemEditing": {
          "type": "boolean",
          "description": "Whether array items are user-editable in the IDE.  When this is false, items can still be added and removed, just not modified in place.",
          "title": "Allow Item Editing"
        },
        "allowAdditionsAndRemovals": {
          "type": "boolean",
          "description": "Whether items can be added or removed by the user.",
          "title": "Allow Additions and Removals"
        },
        "enableWhen": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "description": "A boolean expression that determines when the element is enabled in the UI.\r\nWhen 'null' or unset, the element is always enabled.\r\n\r\nYou can reference setting values and environment variable values.\r\nExamples:\r\n    ${config:environment.general.showStatusBar} == 'true'\r\n    ${env:USERDOMAIN} != ''\r\n    ${config:environment.general.showStatusBar} == 'true' || (${config:environment.visualExperience.titleCaseMenus} == 'true' && ${config:environment.visualExperience.useMinimalMode} == 'false')",
          "title": "Enable When"
        },
        "description": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "description": "A verbose description. The value may be a plain string, or may be a special format that indicates the localized value should be retrieved from a resource dictionary, or from the resources of a Visual Studio package.",
          "title": "Description"
        },
        "order": {
          "oneOf": [
            {
              "type": "integer",
              "minimum": -2147483648,
              "maximum": 2147483647
            },
            {
              "type": "null"
            }
          ],
          "description": "Optionally override the preferred display order.",
          "title": "Order"
        },
        "title": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "description": "The display title. The value may be a plain string, or may be a special format that indicates the localized value should be retrieved from a resource dictionary, or from the resources of a Visual Studio package.",
          "title": "Title"
        },
        "helpUri": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "description": "The URI of a help page.",
          "title": "Help Uri"
        },
        "tags": {
          "$comment": "FilterTag[]",
          "type": "array",
          "items": {
            "$ref": "#/$defs/Display.FilterTag"
          },
          "uniqueItems": true,
          "description": "A list of tags to associate with the registration. Used when filtering the settings window.",
          "title": "Tags"
        },
        "additionalKeywords": {
          "$comment": "String[]",
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of additional keywords to associate with the setting when searching in the UI.",
          "title": "Additional Keywords"
        },
        "commands": {
          "$comment": "Command[]",
          "type": "array",
          "items": {
            "$ref": "#/$defs/Command"
          },
          "description": "Commands to render with this element.",
          "title": "Commands"
        },
        "messages": {
          "$comment": "Message[]",
          "type": "array",
          "items": {
            "$ref": "#/$defs/Message"
          },
          "description": "Messages to render with this element.",
          "title": "Messages"
        },
        "visibleWhen": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "description": "A boolean expression that determines when the element is visible in the UI.\r\nWhen 'null' or unset, the element is always visible.\r\n\r\nYou can reference setting values and environment variable values.\r\nExamples:\r\n    ${config:environment.general.showStatusBar} == 'true'\r\n    ${env:USERDOMAIN} != ''\r\n    ${config:environment.general.showStatusBar} == 'true' || (${config:environment.visualExperience.titleCaseMenus} == 'true' && ${config:environment.visualExperience.useMinimalMode} == 'false')",
          "title": "Visible When"
        },
        "unsupportedMessage": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Unsupported Message"
        }
      },
      "required": [
        "type",
        "items"
      ],
      "additionalProperties": false
    },
    "ExternalSettingRegistration_String": {
      "type": "object",
      "properties": {
        "type": {
          "const": "string",
          "description": "The type of the setting value.",
          "title": "Schema Type"
        },
        "maxLength": {
          "oneOf": [
            {
              "type": "integer",
              "minimum": 0,
              "maximum": 2147483647
            },
            {
              "type": "null"
            }
          ],
          "title": "Max Length"
        },
        "minLength": {
          "oneOf": [
            {
              "type": "integer",
              "minimum": 0,
              "maximum": 2147483647
            },
            {
              "type": "null"
            }
          ],
          "title": "Min Length"
        },
        "example": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Example"
        },
        "enableWhen": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "description": "A boolean expression that determines when the element is enabled in the UI.\r\nWhen 'null' or unset, the element is always enabled.\r\n\r\nYou can reference setting values and environment variable values.\r\nExamples:\r\n    ${config:environment.general.showStatusBar} == 'true'\r\n    ${env:USERDOMAIN} != ''\r\n    ${config:environment.general.showStatusBar} == 'true' || (${config:environment.visualExperience.titleCaseMenus} == 'true' && ${config:environment.visualExperience.useMinimalMode} == 'false')",
          "title": "Enable When"
        },
        "description": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "description": "A verbose description. The value may be a plain string, or may be a special format that indicates the localized value should be retrieved from a resource dictionary, or from the resources of a Visual Studio package.",
          "title": "Description"
        },
        "order": {
          "oneOf": [
            {
              "type": "integer",
              "minimum": -2147483648,
              "maximum": 2147483647
            },
            {
              "type": "null"
            }
          ],
          "description": "Optionally override the preferred display order.",
          "title": "Order"
        },
        "title": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "description": "The display title. The value may be a plain string, or may be a special format that indicates the localized value should be retrieved from a resource dictionary, or from the resources of a Visual Studio package.",
          "title": "Title"
        },
        "helpUri": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "description": "The URI of a help page.",
          "title": "Help Uri"
        },
        "tags": {
          "$comment": "FilterTag[]",
          "type": "array",
          "items": {
            "$ref": "#/$defs/Display.FilterTag"
          },
          "uniqueItems": true,
          "description": "A list of tags to associate with the registration. Used when filtering the settings window.",
          "title": "Tags"
        },
        "additionalKeywords": {
          "$comment": "String[]",
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of additional keywords to associate with the setting when searching in the UI.",
          "title": "Additional Keywords"
        },
        "commands": {
          "$comment": "Command[]",
          "type": "array",
          "items": {
            "$ref": "#/$defs/Command"
          },
          "description": "Commands to render with this element.",
          "title": "Commands"
        },
        "messages": {
          "$comment": "Message[]",
          "type": "array",
          "items": {
            "$ref": "#/$defs/Message"
          },
          "description": "Messages to render with this element.",
          "title": "Messages"
        },
        "visibleWhen": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "description": "A boolean expression that determines when the element is visible in the UI.\r\nWhen 'null' or unset, the element is always visible.\r\n\r\nYou can reference setting values and environment variable values.\r\nExamples:\r\n    ${config:environment.general.showStatusBar} == 'true'\r\n    ${env:USERDOMAIN} != ''\r\n    ${config:environment.general.showStatusBar} == 'true' || (${config:environment.visualExperience.titleCaseMenus} == 'true' && ${config:environment.visualExperience.useMinimalMode} == 'false')",
          "title": "Visible When"
        },
        "unsupportedMessage": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Unsupported Message"
        }
      },
      "required": [
        "type"
      ],
      "additionalProperties": false
    },
    "ExternalSettingRegistration_StringArray": {
      "type": "object",
      "properties": {
        "type": {
          "const": "array",
          "description": "The type of the setting value.",
          "title": "Schema Type"
        },
        "minItems": {
          "oneOf": [
            {
              "type": "integer",
              "minimum": 0,
              "maximum": 2147483647
            },
            {
              "type": "null"
            }
          ],
          "title": "Min Items"
        },
        "maxItems": {
          "oneOf": [
            {
              "type": "integer",
              "minimum": 0,
              "maximum": 2147483647
            },
            {
              "type": "null"
            }
          ],
          "title": "Max Items"
        },
        "uniqueItems": {
          "type": "boolean",
          "description": "Whether the array items must be unique.",
          "title": "Unique Items"
        },
        "items": {
          "$ref": "#/$defs/ItemsRegistration_String",
          "description": "Describes the type and validation constraints of the array items.",
          "title": "Items"
        },
        "itemsAreOrdered": {
          "type": "boolean",
          "description": "Whether the array items can be ordered by the user.",
          "title": "Items Are Ordered"
        },
        "hasUserSelectableDefaultItem": {
          "type": "boolean",
          "description": "Whether the array supports a user-selectable default item.",
          "title": "Has User Selectable Default Item"
        },
        "allowItemEditing": {
          "type": "boolean",
          "description": "Whether array items are user-editable in the IDE.  When this is false, items can still be added and removed, just not modified in place.",
          "title": "Allow Item Editing"
        },
        "allowAdditionsAndRemovals": {
          "type": "boolean",
          "description": "Whether items can be added or removed by the user.",
          "title": "Allow Additions and Removals"
        },
        "enableWhen": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "description": "A boolean expression that determines when the element is enabled in the UI.\r\nWhen 'null' or unset, the element is always enabled.\r\n\r\nYou can reference setting values and environment variable values.\r\nExamples:\r\n    ${config:environment.general.showStatusBar} == 'true'\r\n    ${env:USERDOMAIN} != ''\r\n    ${config:environment.general.showStatusBar} == 'true' || (${config:environment.visualExperience.titleCaseMenus} == 'true' && ${config:environment.visualExperience.useMinimalMode} == 'false')",
          "title": "Enable When"
        },
        "description": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "description": "A verbose description. The value may be a plain string, or may be a special format that indicates the localized value should be retrieved from a resource dictionary, or from the resources of a Visual Studio package.",
          "title": "Description"
        },
        "order": {
          "oneOf": [
            {
              "type": "integer",
              "minimum": -2147483648,
              "maximum": 2147483647
            },
            {
              "type": "null"
            }
          ],
          "description": "Optionally override the preferred display order.",
          "title": "Order"
        },
        "title": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "description": "The display title. The value may be a plain string, or may be a special format that indicates the localized value should be retrieved from a resource dictionary, or from the resources of a Visual Studio package.",
          "title": "Title"
        },
        "helpUri": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "description": "The URI of a help page.",
          "title": "Help Uri"
        },
        "tags": {
          "$comment": "FilterTag[]",
          "type": "array",
          "items": {
            "$ref": "#/$defs/Display.FilterTag"
          },
          "uniqueItems": true,
          "description": "A list of tags to associate with the registration. Used when filtering the settings window.",
          "title": "Tags"
        },
        "additionalKeywords": {
          "$comment": "String[]",
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of additional keywords to associate with the setting when searching in the UI.",
          "title": "Additional Keywords"
        },
        "commands": {
          "$comment": "Command[]",
          "type": "array",
          "items": {
            "$ref": "#/$defs/Command"
          },
          "description": "Commands to render with this element.",
          "title": "Commands"
        },
        "messages": {
          "$comment": "Message[]",
          "type": "array",
          "items": {
            "$ref": "#/$defs/Message"
          },
          "description": "Messages to render with this element.",
          "title": "Messages"
        },
        "visibleWhen": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "description": "A boolean expression that determines when the element is visible in the UI.\r\nWhen 'null' or unset, the element is always visible.\r\n\r\nYou can reference setting values and environment variable values.\r\nExamples:\r\n    ${config:environment.general.showStatusBar} == 'true'\r\n    ${env:USERDOMAIN} != ''\r\n    ${config:environment.general.showStatusBar} == 'true' || (${config:environment.visualExperience.titleCaseMenus} == 'true' && ${config:environment.visualExperience.useMinimalMode} == 'false')",
          "title": "Visible When"
        },
        "unsupportedMessage": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Unsupported Message"
        }
      },
      "required": [
        "type",
        "items"
      ],
      "additionalProperties": false
    },
    "Factory": {
      "type": "object",
      "properties": {
        "gel": {
          "$ref": "#/$defs/Factory_GelFactory",
          "title": "Gel"
        }
      },
      "required": [
        "gel"
      ],
      "minProperties": 1,
      "maxProperties": 1,
      "additionalProperties": false
    },
    "Factory_GelFactory": {
      "type": "object",
      "properties": {
        "factoryGuid": {
          "$comment": "Guid",
          "type": "string",
          "format": "uuid",
          "description": "The Guid of the factory",
          "title": "Factory Guid"
        },
        "elementId": {
          "$comment": "uint",
          "type": "integer",
          "minimum": 0,
          "maximum": 4294967295,
          "description": "The identifier for the element produced by the factory",
          "title": "Element Id"
        }
      },
      "required": [
        "factoryGuid",
        "elementId"
      ],
      "additionalProperties": false
    },
    "FormatStringKind": {
      "$comment": "FormatStringKind",
      "type": "string",
      "enum": [
        "date",
        "time",
        "ipv4",
        "email",
        "uri",
        "path",
        "multi-line"
      ],
      "description": "The format used to validate the value"
    },
    "ItemsRegistration_EnumString": {
      "type": "object",
      "properties": {
        "type": {
          "const": "string",
          "description": "The type of the setting value.",
          "title": "Schema Type"
        },
        "enum": {
          "$comment": "String[]",
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The allowed values.",
          "title": "Enum"
        },
        "enumItemLabels": {
          "$comment": "String[]",
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The labels to display in the UI for each allowed value.\r\nThere must be exactly one label for each value in 'enum'.",
          "title": "Enum Item Labels"
        }
      },
      "required": [
        "type",
        "enum",
        "enumItemLabels"
      ],
      "additionalProperties": false
    },
    "ItemsRegistration_FormatString": {
      "type": "object",
      "properties": {
        "type": {
          "const": "string",
          "description": "The type of the setting value.",
          "title": "Schema Type"
        },
        "example": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Example"
        },
        "format": {
          "$ref": "#/$defs/FormatStringKind",
          "description": "An optional format used to validate the contents of the string.",
          "title": "Format"
        },
        "pathKind": {
          "$ref": "#/$defs/PathKind",
          "description": "When 'format' is 'path', describes the kind of path the string must conform to.",
          "title": "Path Kind"
        }
      },
      "required": [
        "type",
        "format"
      ],
      "additionalProperties": false
    },
    "ItemsRegistration_Object": {
      "type": "object",
      "properties": {
        "type": {
          "const": "object",
          "description": "The type of the setting value.",
          "title": "Schema Type"
        },
        "properties": {
          "$comment": "[String => PropertyRegistration]",
          "type": "object",
          "propertyNames": {
            "type": "string"
          },
          "additionalProperties": {
            "$ref": "#/$defs/PropertyRegistration"
          },
          "title": "Properties"
        }
      },
      "required": [
        "type",
        "properties"
      ],
      "additionalProperties": false
    },
    "ItemsRegistration_String": {
      "type": "object",
      "properties": {
        "type": {
          "const": "string",
          "description": "The type of the setting value.",
          "title": "Schema Type"
        },
        "maxLength": {
          "oneOf": [
            {
              "type": "integer",
              "minimum": 0,
              "maximum": 2147483647
            },
            {
              "type": "null"
            }
          ],
          "title": "Max Length"
        },
        "minLength": {
          "oneOf": [
            {
              "type": "integer",
              "minimum": 0,
              "maximum": 2147483647
            },
            {
              "type": "null"
            }
          ],
          "title": "Min Length"
        },
        "example": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Example"
        }
      },
      "required": [
        "type"
      ],
      "additionalProperties": false
    },
    "Message": {
      "type": "object",
      "properties": {
        "text": {
          "type": "string",
          "description": "The text of the message.",
          "title": "Text"
        },
        "visibleWhen": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "description": "A boolean expression that determines when the element is visible in the UI.\r\nWhen 'null' or unset, the element is always visible.\r\n\r\nYou can reference setting values and environment variable values.\r\nExamples:\r\n    ${config:environment.general.showStatusBar} == 'true'\r\n    ${env:USERDOMAIN} != ''\r\n    ${config:environment.general.showStatusBar} == 'true' || (${config:environment.visualExperience.titleCaseMenus} == 'true' && ${config:environment.visualExperience.useMinimalMode} == 'false')",
          "title": "Visible When"
        },
        "severity": {
          "$ref": "#/$defs/MessageSeverity",
          "title": "Severity"
        }
      },
      "required": [
        "text"
      ],
      "additionalProperties": false
    },
    "MessageSeverity": {
      "$comment": "MessageSeverity",
      "type": "string",
      "enum": [
        "informational",
        "warning",
        "error"
      ]
    },
    "Migration": {
      "type": "object",
      "properties": {
        "custom": {
          "oneOf": [
            {
              "$ref": "#/$defs/Migration_CustomRule"
            },
            {
              "type": "null"
            }
          ],
          "title": "Custom"
        },
        "pass": {
          "oneOf": [
            {
              "$ref": "#/$defs/Migration_PassRule"
            },
            {
              "type": "null"
            }
          ],
          "title": "Pass"
        },
        "enumPlusBoolToEnumWithNone": {
          "oneOf": [
            {
              "$ref": "#/$defs/Migration_EnumPlusBoolToEnumWithNoneRule"
            },
            {
              "type": "null"
            }
          ],
          "title": "Enum Plus Bool to Enum With None"
        },
        "enumIntegerToString": {
          "oneOf": [
            {
              "$ref": "#/$defs/Migration_EnumIntegerToStringRule"
            },
            {
              "type": "null"
            }
          ],
          "title": "Enum Integer to String"
        },
        "enumIntegerPlusBoolToEnumWithNone": {
          "oneOf": [
            {
              "$ref": "#/$defs/Migration_EnumIntegerPlusBoolToEnumWithNoneRule"
            },
            {
              "type": "null"
            }
          ],
          "title": "Enum Integer Plus Bool to Enum With None"
        },
        "valueWithSentinelToAutomaticBool": {
          "oneOf": [
            {
              "$ref": "#/$defs/Migration_ValueWithSentinelToAutomaticBoolRule"
            },
            {
              "type": "null"
            }
          ],
          "title": "Value With Sentinel to Automatic Bool"
        },
        "valueWithSentinelToManualParameter": {
          "oneOf": [
            {
              "$ref": "#/$defs/Migration_ValueWithSentinelToManualParameterRule"
            },
            {
              "type": "null"
            }
          ],
          "title": "Value With Sentinel to Manual Parameter"
        }
      },
      "minProperties": 1,
      "maxProperties": 1,
      "additionalProperties": false
    },
    "Migration_CustomRule": {
      "description": "A custom migration rule.",
      "type": "object",
      "properties": {
        "inputs": {
          "$comment": "LegacySetting[]",
          "type": "array",
          "items": {
            "$ref": "#/$defs/Migrations.LegacySetting"
          },
          "description": "An array of legacy setting locations. Each location can be referenced by index in the 'map' property.",
          "title": "Inputs"
        },
        "map": {
          "$comment": "ResultMapEntry[]",
          "type": "array",
          "items": {
            "$ref": "#/$defs/Migrations.ResultMapEntry"
          },
          "description": "A set of result mappings. Only one mapping in the set should match a given combination of inputs.",
          "title": "Map"
        }
      },
      "required": [
        "inputs",
        "map"
      ],
      "additionalProperties": false
    },
    "Migration_EnumIntegerPlusBoolToEnumWithNoneRule": {
      "description": "Migrates a legacy bool and legacy integer enumeration setting to a single string enumeration with a \"none\" value.",
      "type": "object",
      "properties": {
        "boolInput": {
          "$ref": "#/$defs/Migrations.LegacySetting",
          "title": "Bool Input"
        },
        "enumInput": {
          "$ref": "#/$defs/Migrations.LegacySetting",
          "title": "Enum Input"
        },
        "map": {
          "$comment": "StringIntMapEntry[]",
          "type": "array",
          "items": {
            "$ref": "#/$defs/Migrations.StringIntMapEntry"
          },
          "title": "Map"
        },
        "trueAndMissingDefault": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "True and Missing Default"
        }
      },
      "required": [
        "boolInput",
        "enumInput",
        "map"
      ],
      "additionalProperties": false
    },
    "Migration_EnumIntegerToStringRule": {
      "description": "Migrates a legacy integer enumeration setting to a string enumeration.",
      "type": "object",
      "properties": {
        "input": {
          "$ref": "#/$defs/Migrations.LegacySetting",
          "title": "Input"
        },
        "map": {
          "$comment": "StringIntMapEntry[]",
          "type": "array",
          "items": {
            "$ref": "#/$defs/Migrations.StringIntMapEntry"
          },
          "title": "Map"
        }
      },
      "required": [
        "input",
        "map"
      ],
      "additionalProperties": false
    },
    "Migration_EnumPlusBoolToEnumWithNoneRule": {
      "description": "Migrates a legacy bool and legacy enumeration setting to a single string enumeration with a \"none\" value.\r\nThe type of the legacy enumeration must be compatible with string.",
      "type": "object",
      "properties": {
        "boolInput": {
          "$ref": "#/$defs/Migrations.LegacySetting",
          "title": "Bool Input"
        },
        "enumInput": {
          "$ref": "#/$defs/Migrations.LegacySetting",
          "title": "Enum Input"
        },
        "trueAndMissingDefault": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "True and Missing Default"
        }
      },
      "required": [
        "boolInput",
        "enumInput"
      ],
      "additionalProperties": false
    },
    "Migration_PassRule": {
      "description": "Migrates a single legacy setting with a compatible type.",
      "type": "object",
      "properties": {
        "input": {
          "$ref": "#/$defs/Migrations.LegacySetting",
          "title": "Input"
        }
      },
      "required": [
        "input"
      ],
      "additionalProperties": false
    },
    "Migration_ValueWithSentinelToAutomaticBoolRule": {
      "description": "Migrates a legacy setting to an \"automatically adjust\" value depending on whether it matches a sentinel value.\r\nMust be applied to a boolean setting.  Should be paired with 'valueWithSentinelToManualParameterRule'.",
      "type": "object",
      "properties": {
        "input": {
          "$ref": "#/$defs/Migrations.LegacySetting",
          "title": "Input"
        },
        "sentinelValue": {
          "$ref": "#/$defs/Typing.JsonVariant",
          "title": "Sentinel Value"
        }
      },
      "required": [
        "input",
        "sentinelValue"
      ],
      "additionalProperties": false
    },
    "Migration_ValueWithSentinelToManualParameterRule": {
      "description": "Migrates a legacy setting to a manual parameter when it doesn't match a given sentinel value.",
      "type": "object",
      "properties": {
        "input": {
          "$ref": "#/$defs/Migrations.LegacySetting",
          "title": "Input"
        },
        "sentinelValue": {
          "$ref": "#/$defs/Typing.JsonVariant",
          "title": "Sentinel Value"
        }
      },
      "required": [
        "input",
        "sentinelValue"
      ],
      "additionalProperties": false
    },
    "Migrations.LegacySetting": {
      "type": "object",
      "properties": {
        "store": {
          "$ref": "#/$defs/Migrations.LegacyStore",
          "description": "The legacy settings store holding the input value.",
          "title": "Store"
        },
        "path": {
          "type": "string",
          "description": "The moniker of, or path to the legacy setting.",
          "title": "Path"
        },
        "bitmask": {
          "oneOf": [
            {
              "$comment": "ulong",
              "type": "integer",
              "minimum": 0,
              "maximum": 18446744073709551615
            },
            {
              "type": "null"
            }
          ],
          "description": "Address a set of bits in a legacy value. Interpreted as an unsigned long.",
          "title": "Bitmask"
        }
      },
      "required": [
        "store",
        "path"
      ],
      "additionalProperties": false
    },
    "Migrations.LegacyStore": {
      "$comment": "LegacyStore",
      "type": "string",
      "enum": [
        "VsUserSettingsRegistry",
        "SettingsManager",
        "AppidProperties"
      ]
    },
    "Migrations.ResultMapEntry": {
      "description": "Maps a single Unified Setting result to a set of legacy input matches.",
      "type": "object",
      "properties": {
        "result": {
          "title": "Unified Settings Result",
          "description": "A literal value returns that value. \"@=index\" returns the value of the indexed input.",
          "oneOf": [
            {
              "description": "Sets the result equal to the value of the indexed input",
              "type": "string",
              "pattern": "^@=[0-9]+$"
            },
            {
              "description": "Sets the result equal to the Unified Settings registered default",
              "type": "string",
              "pattern": "^@default$"
            },
            {
              "description": "Sets the result equal to the literal value",
              "type": "array",
              "items": {
                "type": [
                  "object",
                  "string"
                ]
              }
            },
            {
              "description": "Sets the result equal to the literal value",
              "type": [
                "boolean",
                "number",
                "integer"
              ]
            },
            {
              "$comment": "Valid string literals must not start with the '@' token specifier",
              "description": "Sets the result equal to the literal value",
              "type": "string",
              "pattern": "^[^@].+$"
            }
          ]
        },
        "matches": {
          "title": "Legacy Input Matches",
          "description": "An array of input matches. One match is required for each entry in the rule inputs array.",
          "type": "array",
          "items": {
            "description": "A literal value will match that value. \"@missing\" matches a missing legacy value. \"@any\" matches any legacy value.",
            "oneOf": [
              {
                "description": "\"@missing\" matches a missing legacy value. \"@any\" matches any legacy value.",
                "type": "string",
                "enum": [
                  "@missing",
                  "@any"
                ]
              },
              {
                "description": "Sets the result equal to the literal value",
                "type": "array",
                "items": {
                  "type": [
                    "object",
                    "string"
                  ]
                }
              },
              {
                "description": "Sets the result equal to the literal value",
                "type": [
                  "boolean",
                  "number",
                  "integer"
                ]
              },
              {
                "$comment": "Valid string literals must not start with the '@' token specifier",
                "description": "Sets the result equal to the literal value",
                "type": "string",
                "pattern": "^[^@].+$"
              }
            ]
          }
        }
      },
      "additionalProperties": false
    },
    "Migrations.StringIntMapEntry": {
      "type": "object",
      "properties": {
        "result": {
          "type": "string",
          "pattern": "^[^@].+$",
          "title": "Result"
        },
        "match": {
          "type": "integer",
          "minimum": -2147483648,
          "maximum": 2147483647,
          "title": "Match"
        }
      },
      "required": [
        "result",
        "match"
      ],
      "additionalProperties": false
    },
    "PathKind": {
      "$comment": "PathKind",
      "type": "string",
      "enum": [
        "file",
        "folder",
        "folder-or-uri"
      ],
      "description": "The format used to validate the path value"
    },
    "Placement": {
      "type": "object",
      "properties": {
        "category": {
          "type": "string",
          "pattern": "^([a-z0-9][A-Za-z0-9]+\\.)*[a-z0-9][A-Za-z0-9]+$",
          "description": "The moniker of the desired parent category.",
          "title": "Category"
        },
        "order": {
          "oneOf": [
            {
              "type": "integer",
              "minimum": -2147483648,
              "maximum": 2147483647
            },
            {
              "type": "null"
            }
          ],
          "description": "Optionally override the preferred display order of the setting within the parent category.\r\nIf not set here, the placement order will inherit the order of the setting.",
          "title": "Order"
        }
      },
      "required": [
        "category"
      ],
      "additionalProperties": false
    },
    "PropertyRegistration": {
      "oneOf": [
        {
          "$ref": "#/$defs/PropertyRegistration_Boolean"
        },
        {
          "$ref": "#/$defs/PropertyRegistration_Integer"
        },
        {
          "$ref": "#/$defs/PropertyRegistration_Number"
        },
        {
          "$ref": "#/$defs/PropertyRegistration_String"
        },
        {
          "$ref": "#/$defs/PropertyRegistration_FormatString"
        },
        {
          "$ref": "#/$defs/PropertyRegistration_EnumString"
        },
        {
          "$ref": "#/$defs/PropertyRegistration_EnumStringArray"
        }
      ]
    },
    "PropertyRegistration_Boolean": {
      "type": "object",
      "properties": {
        "type": {
          "const": "boolean",
          "description": "The type of the setting value.",
          "title": "Schema Type"
        },
        "default": {
          "type": "boolean",
          "title": "Default"
        },
        "alternateDefault": {
          "oneOf": [
            {
              "$ref": "#/$defs/AlternateDefault{System.Boolean}"
            },
            {
              "type": "null"
            }
          ],
          "description": "A rule for using a different default value if a Visual Studio feature flag is enabled.\r\nThis feature is under review and may be removed during the preview period.",
          "title": "Alternate Default"
        },
        "environmentVariableDefault": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "description": "The environment variable from which the default value is parsed.\r\nIf it is not defined or cannot be parsed, the value specified in 'default' is used instead.\r\n\r\nThis is not currently supported for array type settings.\r\n\r\nFor boolean type settings, case-insensitive \"true\" and \"1\" evaluate as\r\ntrue, \"false\" and \"0\" evaluate as false, and anything else is considered invalid.",
          "title": "Environment Variable Default"
        },
        "enableWhen": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "description": "A boolean expression that determines when the element is enabled in the UI.\r\nWhen 'null' or unset, the element is always enabled.\r\n\r\nYou can reference setting values and environment variable values.\r\nExamples:\r\n    ${config:environment.general.showStatusBar} == 'true'\r\n    ${env:USERDOMAIN} != ''\r\n    ${config:environment.general.showStatusBar} == 'true' || (${config:environment.visualExperience.titleCaseMenus} == 'true' && ${config:environment.visualExperience.useMinimalMode} == 'false')",
          "title": "Enable When"
        },
        "description": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "description": "A verbose description. The value may be a plain string, or may be a special format that indicates the localized value should be retrieved from a resource dictionary, or from the resources of a Visual Studio package.",
          "title": "Description"
        },
        "order": {
          "oneOf": [
            {
              "type": "integer",
              "minimum": -2147483648,
              "maximum": 2147483647
            },
            {
              "type": "null"
            }
          ],
          "description": "Optionally override the preferred display order.",
          "title": "Order"
        },
        "title": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "description": "The display title. The value may be a plain string, or may be a special format that indicates the localized value should be retrieved from a resource dictionary, or from the resources of a Visual Studio package.",
          "title": "Title"
        },
        "helpUri": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "description": "The URI of a help page.",
          "title": "Help Uri"
        },
        "tags": {
          "$comment": "FilterTag[]",
          "type": "array",
          "items": {
            "$ref": "#/$defs/Display.FilterTag"
          },
          "uniqueItems": true,
          "description": "A list of tags to associate with the registration. Used when filtering the settings window.",
          "title": "Tags"
        },
        "additionalKeywords": {
          "$comment": "String[]",
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of additional keywords to associate with the setting when searching in the UI.",
          "title": "Additional Keywords"
        },
        "messages": {
          "$comment": "Message[]",
          "type": "array",
          "items": {
            "$ref": "#/$defs/Message"
          },
          "title": "Messages"
        },
        "isEditable": {
          "type": "boolean",
          "title": "Is Editable"
        }
      },
      "required": [
        "type",
        "default"
      ],
      "additionalProperties": false
    },
    "PropertyRegistration_EnumString": {
      "type": "object",
      "properties": {
        "type": {
          "const": "string",
          "description": "The type of the setting value.",
          "title": "Schema Type"
        },
        "default": {
          "type": "string",
          "title": "Default"
        },
        "enum": {
          "$comment": "String[]",
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The allowed values.",
          "title": "Enum"
        },
        "enumItemLabels": {
          "$comment": "String[]",
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The labels to display in the UI for each allowed value.\r\nThere must be exactly one label for each value in 'enum'.",
          "title": "Enum Item Labels"
        },
        "alternateDefault": {
          "oneOf": [
            {
              "$ref": "#/$defs/AlternateDefault{System.String}"
            },
            {
              "type": "null"
            }
          ],
          "description": "A rule for using a different default value if a Visual Studio feature flag is enabled.\r\nThis feature is under review and may be removed during the preview period.",
          "title": "Alternate Default"
        },
        "environmentVariableDefault": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "description": "The environment variable from which the default value is parsed.\r\nIf it is not defined or cannot be parsed, the value specified in 'default' is used instead.\r\n\r\nThis is not currently supported for array type settings.\r\n\r\nFor boolean type settings, case-insensitive \"true\" and \"1\" evaluate as\r\ntrue, \"false\" and \"0\" evaluate as false, and anything else is considered invalid.",
          "title": "Environment Variable Default"
        },
        "enableWhen": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "description": "A boolean expression that determines when the element is enabled in the UI.\r\nWhen 'null' or unset, the element is always enabled.\r\n\r\nYou can reference setting values and environment variable values.\r\nExamples:\r\n    ${config:environment.general.showStatusBar} == 'true'\r\n    ${env:USERDOMAIN} != ''\r\n    ${config:environment.general.showStatusBar} == 'true' || (${config:environment.visualExperience.titleCaseMenus} == 'true' && ${config:environment.visualExperience.useMinimalMode} == 'false')",
          "title": "Enable When"
        },
        "description": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "description": "A verbose description. The value may be a plain string, or may be a special format that indicates the localized value should be retrieved from a resource dictionary, or from the resources of a Visual Studio package.",
          "title": "Description"
        },
        "order": {
          "oneOf": [
            {
              "type": "integer",
              "minimum": -2147483648,
              "maximum": 2147483647
            },
            {
              "type": "null"
            }
          ],
          "description": "Optionally override the preferred display order.",
          "title": "Order"
        },
        "title": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "description": "The display title. The value may be a plain string, or may be a special format that indicates the localized value should be retrieved from a resource dictionary, or from the resources of a Visual Studio package.",
          "title": "Title"
        },
        "helpUri": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "description": "The URI of a help page.",
          "title": "Help Uri"
        },
        "tags": {
          "$comment": "FilterTag[]",
          "type": "array",
          "items": {
            "$ref": "#/$defs/Display.FilterTag"
          },
          "uniqueItems": true,
          "description": "A list of tags to associate with the registration. Used when filtering the settings window.",
          "title": "Tags"
        },
        "additionalKeywords": {
          "$comment": "String[]",
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of additional keywords to associate with the setting when searching in the UI.",
          "title": "Additional Keywords"
        },
        "messages": {
          "$comment": "Message[]",
          "type": "array",
          "items": {
            "$ref": "#/$defs/Message"
          },
          "title": "Messages"
        },
        "isEditable": {
          "type": "boolean",
          "title": "Is Editable"
        }
      },
      "required": [
        "type",
        "default",
        "enum",
        "enumItemLabels"
      ],
      "additionalProperties": false
    },
    "PropertyRegistration_EnumStringArray": {
      "type": "object",
      "properties": {
        "type": {
          "const": "array",
          "description": "The type of the setting value.",
          "title": "Schema Type"
        },
        "minItems": {
          "oneOf": [
            {
              "type": "integer",
              "minimum": 0,
              "maximum": 2147483647
            },
            {
              "type": "null"
            }
          ],
          "title": "Min Items"
        },
        "maxItems": {
          "oneOf": [
            {
              "type": "integer",
              "minimum": 0,
              "maximum": 2147483647
            },
            {
              "type": "null"
            }
          ],
          "title": "Max Items"
        },
        "uniqueItems": {
          "type": "boolean",
          "description": "Whether the array items must be unique.",
          "title": "Unique Items"
        },
        "items": {
          "$ref": "#/$defs/ItemsRegistration_EnumString",
          "description": "Describes the type and validation constraints of the array items.",
          "title": "Items"
        },
        "default": {
          "$comment": "String[]",
          "type": "array",
          "items": {
            "type": "string"
          },
          "title": "Default"
        },
        "itemsAreOrdered": {
          "type": "boolean",
          "description": "Whether the array items can be ordered by the user.",
          "title": "Items Are Ordered"
        },
        "alternateDefault": {
          "oneOf": [
            {
              "$ref": "#/$defs/AlternateDefault{ImmutableArray{System.String}}"
            },
            {
              "type": "null"
            }
          ],
          "description": "A rule for using a different default value if a Visual Studio feature flag is enabled.\r\nThis feature is under review and may be removed during the preview period.",
          "title": "Alternate Default"
        },
        "environmentVariableDefault": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "description": "The environment variable from which the default value is parsed.\r\nIf it is not defined or cannot be parsed, the value specified in 'default' is used instead.\r\n\r\nThis is not currently supported for array type settings.\r\n\r\nFor boolean type settings, case-insensitive \"true\" and \"1\" evaluate as\r\ntrue, \"false\" and \"0\" evaluate as false, and anything else is considered invalid.",
          "title": "Environment Variable Default"
        },
        "hasUserSelectableDefaultItem": {
          "type": "boolean",
          "description": "Whether the array supports a user-selectable default item.",
          "title": "Has User Selectable Default Item"
        },
        "allowItemEditing": {
          "type": "boolean",
          "description": "Whether array items are user-editable in the IDE.  When this is false, items can still be added and removed, just not modified in place.",
          "title": "Allow Item Editing"
        },
        "allowAdditionsAndRemovals": {
          "type": "boolean",
          "description": "Whether items can be added or removed by the user.",
          "title": "Allow Additions and Removals"
        },
        "enableWhen": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "description": "A boolean expression that determines when the element is enabled in the UI.\r\nWhen 'null' or unset, the element is always enabled.\r\n\r\nYou can reference setting values and environment variable values.\r\nExamples:\r\n    ${config:environment.general.showStatusBar} == 'true'\r\n    ${env:USERDOMAIN} != ''\r\n    ${config:environment.general.showStatusBar} == 'true' || (${config:environment.visualExperience.titleCaseMenus} == 'true' && ${config:environment.visualExperience.useMinimalMode} == 'false')",
          "title": "Enable When"
        },
        "description": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "description": "A verbose description. The value may be a plain string, or may be a special format that indicates the localized value should be retrieved from a resource dictionary, or from the resources of a Visual Studio package.",
          "title": "Description"
        },
        "order": {
          "oneOf": [
            {
              "type": "integer",
              "minimum": -2147483648,
              "maximum": 2147483647
            },
            {
              "type": "null"
            }
          ],
          "description": "Optionally override the preferred display order.",
          "title": "Order"
        },
        "title": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "description": "The display title. The value may be a plain string, or may be a special format that indicates the localized value should be retrieved from a resource dictionary, or from the resources of a Visual Studio package.",
          "title": "Title"
        },
        "helpUri": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "description": "The URI of a help page.",
          "title": "Help Uri"
        },
        "tags": {
          "$comment": "FilterTag[]",
          "type": "array",
          "items": {
            "$ref": "#/$defs/Display.FilterTag"
          },
          "uniqueItems": true,
          "description": "A list of tags to associate with the registration. Used when filtering the settings window.",
          "title": "Tags"
        },
        "additionalKeywords": {
          "$comment": "String[]",
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of additional keywords to associate with the setting when searching in the UI.",
          "title": "Additional Keywords"
        },
        "messages": {
          "$comment": "Message[]",
          "type": "array",
          "items": {
            "$ref": "#/$defs/Message"
          },
          "title": "Messages"
        },
        "isEditable": {
          "type": "boolean",
          "title": "Is Editable"
        }
      },
      "required": [
        "type",
        "items",
        "default"
      ],
      "additionalProperties": false
    },
    "PropertyRegistration_FormatString": {
      "type": "object",
      "properties": {
        "type": {
          "const": "string",
          "description": "The type of the setting value.",
          "title": "Schema Type"
        },
        "default": {
          "type": "string",
          "title": "Default"
        },
        "example": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Example"
        },
        "format": {
          "$ref": "#/$defs/FormatStringKind",
          "description": "An optional format used to validate the contents of the string.",
          "title": "Format"
        },
        "pathKind": {
          "$ref": "#/$defs/PathKind",
          "description": "When 'format' is 'path', describes the kind of path the string must conform to.",
          "title": "Path Kind"
        },
        "alternateDefault": {
          "oneOf": [
            {
              "$ref": "#/$defs/AlternateDefault{System.String}"
            },
            {
              "type": "null"
            }
          ],
          "description": "A rule for using a different default value if a Visual Studio feature flag is enabled.\r\nThis feature is under review and may be removed during the preview period.",
          "title": "Alternate Default"
        },
        "environmentVariableDefault": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "description": "The environment variable from which the default value is parsed.\r\nIf it is not defined or cannot be parsed, the value specified in 'default' is used instead.\r\n\r\nThis is not currently supported for array type settings.\r\n\r\nFor boolean type settings, case-insensitive \"true\" and \"1\" evaluate as\r\ntrue, \"false\" and \"0\" evaluate as false, and anything else is considered invalid.",
          "title": "Environment Variable Default"
        },
        "enableWhen": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "description": "A boolean expression that determines when the element is enabled in the UI.\r\nWhen 'null' or unset, the element is always enabled.\r\n\r\nYou can reference setting values and environment variable values.\r\nExamples:\r\n    ${config:environment.general.showStatusBar} == 'true'\r\n    ${env:USERDOMAIN} != ''\r\n    ${config:environment.general.showStatusBar} == 'true' || (${config:environment.visualExperience.titleCaseMenus} == 'true' && ${config:environment.visualExperience.useMinimalMode} == 'false')",
          "title": "Enable When"
        },
        "description": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "description": "A verbose description. The value may be a plain string, or may be a special format that indicates the localized value should be retrieved from a resource dictionary, or from the resources of a Visual Studio package.",
          "title": "Description"
        },
        "order": {
          "oneOf": [
            {
              "type": "integer",
              "minimum": -2147483648,
              "maximum": 2147483647
            },
            {
              "type": "null"
            }
          ],
          "description": "Optionally override the preferred display order.",
          "title": "Order"
        },
        "title": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "description": "The display title. The value may be a plain string, or may be a special format that indicates the localized value should be retrieved from a resource dictionary, or from the resources of a Visual Studio package.",
          "title": "Title"
        },
        "helpUri": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "description": "The URI of a help page.",
          "title": "Help Uri"
        },
        "tags": {
          "$comment": "FilterTag[]",
          "type": "array",
          "items": {
            "$ref": "#/$defs/Display.FilterTag"
          },
          "uniqueItems": true,
          "description": "A list of tags to associate with the registration. Used when filtering the settings window.",
          "title": "Tags"
        },
        "additionalKeywords": {
          "$comment": "String[]",
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of additional keywords to associate with the setting when searching in the UI.",
          "title": "Additional Keywords"
        },
        "messages": {
          "$comment": "Message[]",
          "type": "array",
          "items": {
            "$ref": "#/$defs/Message"
          },
          "title": "Messages"
        },
        "isEditable": {
          "type": "boolean",
          "title": "Is Editable"
        }
      },
      "required": [
        "type",
        "default",
        "format"
      ],
      "additionalProperties": false
    },
    "PropertyRegistration_Integer": {
      "type": "object",
      "properties": {
        "type": {
          "const": "integer",
          "description": "The type of the setting value.",
          "title": "Schema Type"
        },
        "default": {
          "type": "integer",
          "minimum": -2147483648,
          "maximum": 2147483647,
          "title": "Default"
        },
        "minimum": {
          "oneOf": [
            {
              "type": "integer",
              "minimum": -2147483648,
              "maximum": 2147483647
            },
            {
              "type": "null"
            }
          ],
          "title": "Minimum"
        },
        "maximum": {
          "oneOf": [
            {
              "type": "integer",
              "minimum": -2147483648,
              "maximum": 2147483647
            },
            {
              "type": "null"
            }
          ],
          "title": "Maximum"
        },
        "alternateDefault": {
          "oneOf": [
            {
              "$ref": "#/$defs/AlternateDefault{System.Int32}"
            },
            {
              "type": "null"
            }
          ],
          "description": "A rule for using a different default value if a Visual Studio feature flag is enabled.\r\nThis feature is under review and may be removed during the preview period.",
          "title": "Alternate Default"
        },
        "environmentVariableDefault": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "description": "The environment variable from which the default value is parsed.\r\nIf it is not defined or cannot be parsed, the value specified in 'default' is used instead.\r\n\r\nThis is not currently supported for array type settings.\r\n\r\nFor boolean type settings, case-insensitive \"true\" and \"1\" evaluate as\r\ntrue, \"false\" and \"0\" evaluate as false, and anything else is considered invalid.",
          "title": "Environment Variable Default"
        },
        "enableWhen": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "description": "A boolean expression that determines when the element is enabled in the UI.\r\nWhen 'null' or unset, the element is always enabled.\r\n\r\nYou can reference setting values and environment variable values.\r\nExamples:\r\n    ${config:environment.general.showStatusBar} == 'true'\r\n    ${env:USERDOMAIN} != ''\r\n    ${config:environment.general.showStatusBar} == 'true' || (${config:environment.visualExperience.titleCaseMenus} == 'true' && ${config:environment.visualExperience.useMinimalMode} == 'false')",
          "title": "Enable When"
        },
        "description": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "description": "A verbose description. The value may be a plain string, or may be a special format that indicates the localized value should be retrieved from a resource dictionary, or from the resources of a Visual Studio package.",
          "title": "Description"
        },
        "order": {
          "oneOf": [
            {
              "type": "integer",
              "minimum": -2147483648,
              "maximum": 2147483647
            },
            {
              "type": "null"
            }
          ],
          "description": "Optionally override the preferred display order.",
          "title": "Order"
        },
        "title": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "description": "The display title. The value may be a plain string, or may be a special format that indicates the localized value should be retrieved from a resource dictionary, or from the resources of a Visual Studio package.",
          "title": "Title"
        },
        "helpUri": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "description": "The URI of a help page.",
          "title": "Help Uri"
        },
        "tags": {
          "$comment": "FilterTag[]",
          "type": "array",
          "items": {
            "$ref": "#/$defs/Display.FilterTag"
          },
          "uniqueItems": true,
          "description": "A list of tags to associate with the registration. Used when filtering the settings window.",
          "title": "Tags"
        },
        "additionalKeywords": {
          "$comment": "String[]",
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of additional keywords to associate with the setting when searching in the UI.",
          "title": "Additional Keywords"
        },
        "messages": {
          "$comment": "Message[]",
          "type": "array",
          "items": {
            "$ref": "#/$defs/Message"
          },
          "title": "Messages"
        },
        "isEditable": {
          "type": "boolean",
          "title": "Is Editable"
        }
      },
      "required": [
        "type",
        "default"
      ],
      "additionalProperties": false
    },
    "PropertyRegistration_Number": {
      "type": "object",
      "properties": {
        "type": {
          "const": "number",
          "description": "The type of the setting value.",
          "title": "Schema Type"
        },
        "default": {
          "$comment": "decimal",
          "type": "number",
          "minimum": -79228162514264337593543950335,
          "maximum": 79228162514264337593543950335,
          "title": "Default"
        },
        "minimum": {
          "oneOf": [
            {
              "$comment": "decimal",
              "type": "number",
              "minimum": -79228162514264337593543950335,
              "maximum": 79228162514264337593543950335
            },
            {
              "type": "null"
            }
          ],
          "title": "Minimum"
        },
        "maximum": {
          "oneOf": [
            {
              "$comment": "decimal",
              "type": "number",
              "minimum": -79228162514264337593543950335,
              "maximum": 79228162514264337593543950335
            },
            {
              "type": "null"
            }
          ],
          "title": "Maximum"
        },
        "alternateDefault": {
          "oneOf": [
            {
              "$ref": "#/$defs/AlternateDefault{System.Decimal}"
            },
            {
              "type": "null"
            }
          ],
          "description": "A rule for using a different default value if a Visual Studio feature flag is enabled.\r\nThis feature is under review and may be removed during the preview period.",
          "title": "Alternate Default"
        },
        "environmentVariableDefault": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "description": "The environment variable from which the default value is parsed.\r\nIf it is not defined or cannot be parsed, the value specified in 'default' is used instead.\r\n\r\nThis is not currently supported for array type settings.\r\n\r\nFor boolean type settings, case-insensitive \"true\" and \"1\" evaluate as\r\ntrue, \"false\" and \"0\" evaluate as false, and anything else is considered invalid.",
          "title": "Environment Variable Default"
        },
        "enableWhen": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "description": "A boolean expression that determines when the element is enabled in the UI.\r\nWhen 'null' or unset, the element is always enabled.\r\n\r\nYou can reference setting values and environment variable values.\r\nExamples:\r\n    ${config:environment.general.showStatusBar} == 'true'\r\n    ${env:USERDOMAIN} != ''\r\n    ${config:environment.general.showStatusBar} == 'true' || (${config:environment.visualExperience.titleCaseMenus} == 'true' && ${config:environment.visualExperience.useMinimalMode} == 'false')",
          "title": "Enable When"
        },
        "description": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "description": "A verbose description. The value may be a plain string, or may be a special format that indicates the localized value should be retrieved from a resource dictionary, or from the resources of a Visual Studio package.",
          "title": "Description"
        },
        "order": {
          "oneOf": [
            {
              "type": "integer",
              "minimum": -2147483648,
              "maximum": 2147483647
            },
            {
              "type": "null"
            }
          ],
          "description": "Optionally override the preferred display order.",
          "title": "Order"
        },
        "title": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "description": "The display title. The value may be a plain string, or may be a special format that indicates the localized value should be retrieved from a resource dictionary, or from the resources of a Visual Studio package.",
          "title": "Title"
        },
        "helpUri": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "description": "The URI of a help page.",
          "title": "Help Uri"
        },
        "tags": {
          "$comment": "FilterTag[]",
          "type": "array",
          "items": {
            "$ref": "#/$defs/Display.FilterTag"
          },
          "uniqueItems": true,
          "description": "A list of tags to associate with the registration. Used when filtering the settings window.",
          "title": "Tags"
        },
        "additionalKeywords": {
          "$comment": "String[]",
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of additional keywords to associate with the setting when searching in the UI.",
          "title": "Additional Keywords"
        },
        "messages": {
          "$comment": "Message[]",
          "type": "array",
          "items": {
            "$ref": "#/$defs/Message"
          },
          "title": "Messages"
        },
        "isEditable": {
          "type": "boolean",
          "title": "Is Editable"
        }
      },
      "required": [
        "type",
        "default"
      ],
      "additionalProperties": false
    },
    "PropertyRegistration_String": {
      "type": "object",
      "properties": {
        "type": {
          "const": "string",
          "description": "The type of the setting value.",
          "title": "Schema Type"
        },
        "default": {
          "type": "string",
          "title": "Default"
        },
        "example": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Example"
        },
        "minLength": {
          "oneOf": [
            {
              "type": "integer",
              "minimum": 0,
              "maximum": 2147483647
            },
            {
              "type": "null"
            }
          ],
          "title": "Min Length"
        },
        "maxLength": {
          "oneOf": [
            {
              "type": "integer",
              "minimum": 0,
              "maximum": 2147483647
            },
            {
              "type": "null"
            }
          ],
          "title": "Max Length"
        },
        "alternateDefault": {
          "oneOf": [
            {
              "$ref": "#/$defs/AlternateDefault{System.String}"
            },
            {
              "type": "null"
            }
          ],
          "description": "A rule for using a different default value if a Visual Studio feature flag is enabled.\r\nThis feature is under review and may be removed during the preview period.",
          "title": "Alternate Default"
        },
        "environmentVariableDefault": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "description": "The environment variable from which the default value is parsed.\r\nIf it is not defined or cannot be parsed, the value specified in 'default' is used instead.\r\n\r\nThis is not currently supported for array type settings.\r\n\r\nFor boolean type settings, case-insensitive \"true\" and \"1\" evaluate as\r\ntrue, \"false\" and \"0\" evaluate as false, and anything else is considered invalid.",
          "title": "Environment Variable Default"
        },
        "enableWhen": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "description": "A boolean expression that determines when the element is enabled in the UI.\r\nWhen 'null' or unset, the element is always enabled.\r\n\r\nYou can reference setting values and environment variable values.\r\nExamples:\r\n    ${config:environment.general.showStatusBar} == 'true'\r\n    ${env:USERDOMAIN} != ''\r\n    ${config:environment.general.showStatusBar} == 'true' || (${config:environment.visualExperience.titleCaseMenus} == 'true' && ${config:environment.visualExperience.useMinimalMode} == 'false')",
          "title": "Enable When"
        },
        "description": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "description": "A verbose description. The value may be a plain string, or may be a special format that indicates the localized value should be retrieved from a resource dictionary, or from the resources of a Visual Studio package.",
          "title": "Description"
        },
        "order": {
          "oneOf": [
            {
              "type": "integer",
              "minimum": -2147483648,
              "maximum": 2147483647
            },
            {
              "type": "null"
            }
          ],
          "description": "Optionally override the preferred display order.",
          "title": "Order"
        },
        "title": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "description": "The display title. The value may be a plain string, or may be a special format that indicates the localized value should be retrieved from a resource dictionary, or from the resources of a Visual Studio package.",
          "title": "Title"
        },
        "helpUri": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "description": "The URI of a help page.",
          "title": "Help Uri"
        },
        "tags": {
          "$comment": "FilterTag[]",
          "type": "array",
          "items": {
            "$ref": "#/$defs/Display.FilterTag"
          },
          "uniqueItems": true,
          "description": "A list of tags to associate with the registration. Used when filtering the settings window.",
          "title": "Tags"
        },
        "additionalKeywords": {
          "$comment": "String[]",
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of additional keywords to associate with the setting when searching in the UI.",
          "title": "Additional Keywords"
        },
        "messages": {
          "$comment": "Message[]",
          "type": "array",
          "items": {
            "$ref": "#/$defs/Message"
          },
          "title": "Messages"
        },
        "isEditable": {
          "type": "boolean",
          "title": "Is Editable"
        }
      },
      "required": [
        "type",
        "default"
      ],
      "additionalProperties": false
    },
    "SettingRegistration": {
      "title": "Setting Registration",
      "description": "Declares a setting and describes the type, validation constraints, and UI appearance.",
      "oneOf": [
        {
          "$ref": "#/$defs/SettingRegistration_Boolean"
        },
        {
          "$ref": "#/$defs/SettingRegistration_Integer"
        },
        {
          "$ref": "#/$defs/SettingRegistration_Number"
        },
        {
          "$ref": "#/$defs/SettingRegistration_String"
        },
        {
          "$ref": "#/$defs/SettingRegistration_FormatString"
        },
        {
          "$ref": "#/$defs/SettingRegistration_EnumString"
        },
        {
          "$ref": "#/$defs/SettingRegistration_StringArray"
        },
        {
          "$ref": "#/$defs/SettingRegistration_FormatStringArray"
        },
        {
          "$ref": "#/$defs/SettingRegistration_EnumStringArray"
        },
        {
          "$ref": "#/$defs/SettingRegistration_ObjectArray"
        },
        {
          "$ref": "#/$defs/SettingRegistration_External"
        }
      ]
    },
    "SettingRegistration_Boolean": {
      "title": "Boolean Setting",
      "type": "object",
      "properties": {
        "type": {
          "const": "boolean",
          "description": "The type of the setting value.",
          "title": "Schema Type"
        },
        "default": {
          "type": "boolean",
          "title": "Default"
        },
        "alternateDefault": {
          "oneOf": [
            {
              "$ref": "#/$defs/AlternateDefault{System.Boolean}"
            },
            {
              "type": "null"
            }
          ],
          "description": "A rule for using a different default value if a Visual Studio feature flag is enabled.\r\nThis feature is under review and may be removed during the preview period.",
          "title": "Alternate Default"
        },
        "environmentVariableDefault": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "description": "The environment variable from which the default value is parsed.\r\nIf it is not defined or cannot be parsed, the value specified in 'default' is used instead.\r\n\r\nThis is not currently supported for array type settings.\r\n\r\nFor boolean type settings, case-insensitive \"true\" and \"1\" evaluate as\r\ntrue, \"false\" and \"0\" evaluate as false, and anything else is considered invalid.",
          "title": "Environment Variable Default"
        },
        "requiresRestart": {
          "type": "boolean",
          "title": "Requires Restart"
        },
        "enableWhen": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "description": "A boolean expression that determines when the element is enabled in the UI.\r\nWhen 'null' or unset, the element is always enabled.\r\n\r\nYou can reference setting values and environment variable values.\r\nExamples:\r\n    ${config:environment.general.showStatusBar} == 'true'\r\n    ${env:USERDOMAIN} != ''\r\n    ${config:environment.general.showStatusBar} == 'true' || (${config:environment.visualExperience.titleCaseMenus} == 'true' && ${config:environment.visualExperience.useMinimalMode} == 'false')",
          "title": "Enable When"
        },
        "applyWhen": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Apply When"
        },
        "description": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "description": "A verbose description. The value may be a plain string, or may be a special format that indicates the localized value should be retrieved from a resource dictionary, or from the resources of a Visual Studio package.",
          "title": "Description"
        },
        "order": {
          "oneOf": [
            {
              "type": "integer",
              "minimum": -2147483648,
              "maximum": 2147483647
            },
            {
              "type": "null"
            }
          ],
          "description": "Optionally override the preferred display order.",
          "title": "Order"
        },
        "title": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "description": "The display title. The value may be a plain string, or may be a special format that indicates the localized value should be retrieved from a resource dictionary, or from the resources of a Visual Studio package.",
          "title": "Title"
        },
        "helpUri": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "description": "The URI of a help page.",
          "title": "Help Uri"
        },
        "tags": {
          "$comment": "FilterTag[]",
          "type": "array",
          "items": {
            "$ref": "#/$defs/Display.FilterTag"
          },
          "uniqueItems": true,
          "description": "A list of tags to associate with the registration. Used when filtering the settings window.",
          "title": "Tags"
        },
        "additionalKeywords": {
          "$comment": "String[]",
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of additional keywords to associate with the setting when searching in the UI.",
          "title": "Additional Keywords"
        },
        "commands": {
          "$comment": "Command[]",
          "type": "array",
          "items": {
            "$ref": "#/$defs/Command"
          },
          "description": "Commands to render with this element.",
          "title": "Commands"
        },
        "messages": {
          "$comment": "Message[]",
          "type": "array",
          "items": {
            "$ref": "#/$defs/Message"
          },
          "description": "Messages to render with this element.",
          "title": "Messages"
        },
        "visibleWhen": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "description": "A boolean expression that determines when the element is visible in the UI.\r\nWhen 'null' or unset, the element is always visible.\r\n\r\nYou can reference setting values and environment variable values.\r\nExamples:\r\n    ${config:environment.general.showStatusBar} == 'true'\r\n    ${env:USERDOMAIN} != ''\r\n    ${config:environment.general.showStatusBar} == 'true' || (${config:environment.visualExperience.titleCaseMenus} == 'true' && ${config:environment.visualExperience.useMinimalMode} == 'false')",
          "title": "Visible When"
        },
        "unsupportedMessage": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "description": "The message to display if the setting is not supported.\r\nA non-null value indicates the setting is not supported.",
          "title": "Unsupported Message"
        },
        "migration": {
          "oneOf": [
            {
              "$ref": "#/$defs/Migration"
            },
            {
              "type": "null"
            }
          ],
          "description": "The rule for migrating one or more legacy settings to this Unified Setting.\r\nA Unified Setting may have at most one migration rule.",
          "title": "Migration"
        },
        "transientScopesSupported": {
          "type": "boolean",
          "description": "Whether this setting can be customized in transient scopes, such as the solution/folder scope.",
          "title": "Transient Scopes Supported"
        },
        "placements": {
          "$comment": "Placement[]",
          "type": "array",
          "items": {
            "$ref": "#/$defs/Placement"
          },
          "minItems": 1,
          "uniqueItems": true,
          "description": "Defines the parent categories where this setting will be rendered in the visual hierarchy of the UI.\r\nInstead of the default behavior -- being placed based on the setting's moniker -- the setting will only be placed where specified by this property.\r\nThis property does not affect the setting's moniker.\r\nWhen using this property at least one placement must be specified.\r\nIf a setting defines an 'enableWhen' rule that references another setting using the \"${config:foo}\" placeholder,\r\nit must not also define 'placements'.",
          "title": "Placements"
        }
      },
      "required": [
        "type",
        "default"
      ],
      "additionalProperties": false
    },
    "SettingRegistration_EnumString": {
      "title": "Enum Setting",
      "type": "object",
      "properties": {
        "type": {
          "const": "string",
          "description": "The type of the setting value.",
          "title": "Schema Type"
        },
        "default": {
          "type": "string",
          "title": "Default"
        },
        "enum": {
          "$comment": "String[]",
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The allowed values.",
          "title": "Enum"
        },
        "enumItemLabels": {
          "$comment": "String[]",
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The labels to display in the UI for each allowed value.\r\nThere must be exactly one label for each value in 'enum'.",
          "title": "Enum Item Labels"
        },
        "alternateDefault": {
          "oneOf": [
            {
              "$ref": "#/$defs/AlternateDefault{System.String}"
            },
            {
              "type": "null"
            }
          ],
          "description": "A rule for using a different default value if a Visual Studio feature flag is enabled.\r\nThis feature is under review and may be removed during the preview period.",
          "title": "Alternate Default"
        },
        "environmentVariableDefault": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "description": "The environment variable from which the default value is parsed.\r\nIf it is not defined or cannot be parsed, the value specified in 'default' is used instead.\r\n\r\nThis is not currently supported for array type settings.\r\n\r\nFor boolean type settings, case-insensitive \"true\" and \"1\" evaluate as\r\ntrue, \"false\" and \"0\" evaluate as false, and anything else is considered invalid.",
          "title": "Environment Variable Default"
        },
        "requiresRestart": {
          "type": "boolean",
          "title": "Requires Restart"
        },
        "enableWhen": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "description": "A boolean expression that determines when the element is enabled in the UI.\r\nWhen 'null' or unset, the element is always enabled.\r\n\r\nYou can reference setting values and environment variable values.\r\nExamples:\r\n    ${config:environment.general.showStatusBar} == 'true'\r\n    ${env:USERDOMAIN} != ''\r\n    ${config:environment.general.showStatusBar} == 'true' || (${config:environment.visualExperience.titleCaseMenus} == 'true' && ${config:environment.visualExperience.useMinimalMode} == 'false')",
          "title": "Enable When"
        },
        "applyWhen": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Apply When"
        },
        "description": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "description": "A verbose description. The value may be a plain string, or may be a special format that indicates the localized value should be retrieved from a resource dictionary, or from the resources of a Visual Studio package.",
          "title": "Description"
        },
        "order": {
          "oneOf": [
            {
              "type": "integer",
              "minimum": -2147483648,
              "maximum": 2147483647
            },
            {
              "type": "null"
            }
          ],
          "description": "Optionally override the preferred display order.",
          "title": "Order"
        },
        "title": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "description": "The display title. The value may be a plain string, or may be a special format that indicates the localized value should be retrieved from a resource dictionary, or from the resources of a Visual Studio package.",
          "title": "Title"
        },
        "helpUri": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "description": "The URI of a help page.",
          "title": "Help Uri"
        },
        "tags": {
          "$comment": "FilterTag[]",
          "type": "array",
          "items": {
            "$ref": "#/$defs/Display.FilterTag"
          },
          "uniqueItems": true,
          "description": "A list of tags to associate with the registration. Used when filtering the settings window.",
          "title": "Tags"
        },
        "additionalKeywords": {
          "$comment": "String[]",
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of additional keywords to associate with the setting when searching in the UI.",
          "title": "Additional Keywords"
        },
        "commands": {
          "$comment": "Command[]",
          "type": "array",
          "items": {
            "$ref": "#/$defs/Command"
          },
          "description": "Commands to render with this element.",
          "title": "Commands"
        },
        "messages": {
          "$comment": "Message[]",
          "type": "array",
          "items": {
            "$ref": "#/$defs/Message"
          },
          "description": "Messages to render with this element.",
          "title": "Messages"
        },
        "visibleWhen": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "description": "A boolean expression that determines when the element is visible in the UI.\r\nWhen 'null' or unset, the element is always visible.\r\n\r\nYou can reference setting values and environment variable values.\r\nExamples:\r\n    ${config:environment.general.showStatusBar} == 'true'\r\n    ${env:USERDOMAIN} != ''\r\n    ${config:environment.general.showStatusBar} == 'true' || (${config:environment.visualExperience.titleCaseMenus} == 'true' && ${config:environment.visualExperience.useMinimalMode} == 'false')",
          "title": "Visible When"
        },
        "unsupportedMessage": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "description": "The message to display if the setting is not supported.\r\nA non-null value indicates the setting is not supported.",
          "title": "Unsupported Message"
        },
        "migration": {
          "oneOf": [
            {
              "$ref": "#/$defs/Migration"
            },
            {
              "type": "null"
            }
          ],
          "description": "The rule for migrating one or more legacy settings to this Unified Setting.\r\nA Unified Setting may have at most one migration rule.",
          "title": "Migration"
        },
        "transientScopesSupported": {
          "type": "boolean",
          "description": "Whether this setting can be customized in transient scopes, such as the solution/folder scope.",
          "title": "Transient Scopes Supported"
        },
        "placements": {
          "$comment": "Placement[]",
          "type": "array",
          "items": {
            "$ref": "#/$defs/Placement"
          },
          "minItems": 1,
          "uniqueItems": true,
          "description": "Defines the parent categories where this setting will be rendered in the visual hierarchy of the UI.\r\nInstead of the default behavior -- being placed based on the setting's moniker -- the setting will only be placed where specified by this property.\r\nThis property does not affect the setting's moniker.\r\nWhen using this property at least one placement must be specified.\r\nIf a setting defines an 'enableWhen' rule that references another setting using the \"${config:foo}\" placeholder,\r\nit must not also define 'placements'.",
          "title": "Placements"
        }
      },
      "required": [
        "type",
        "default",
        "enum",
        "enumItemLabels"
      ],
      "additionalProperties": false
    },
    "SettingRegistration_EnumStringArray": {
      "title": "Array of Enum Setting",
      "type": "object",
      "properties": {
        "type": {
          "const": "array",
          "description": "The type of the setting value.",
          "title": "Schema Type"
        },
        "minItems": {
          "oneOf": [
            {
              "type": "integer",
              "minimum": 0,
              "maximum": 2147483647
            },
            {
              "type": "null"
            }
          ],
          "title": "Min Items"
        },
        "maxItems": {
          "oneOf": [
            {
              "type": "integer",
              "minimum": 0,
              "maximum": 2147483647
            },
            {
              "type": "null"
            }
          ],
          "title": "Max Items"
        },
        "uniqueItems": {
          "type": "boolean",
          "description": "Whether the array items must be unique.",
          "title": "Unique Items"
        },
        "items": {
          "$ref": "#/$defs/ItemsRegistration_EnumString",
          "description": "Describes the type and validation constraints of the array items.",
          "title": "Items"
        },
        "default": {
          "$comment": "String[]",
          "type": "array",
          "items": {
            "type": "string"
          },
          "title": "Default"
        },
        "itemsAreOrdered": {
          "type": "boolean",
          "description": "Whether the array items can be ordered by the user.",
          "title": "Items Are Ordered"
        },
        "alternateDefault": {
          "oneOf": [
            {
              "$ref": "#/$defs/AlternateDefault{ImmutableArray{System.String}}"
            },
            {
              "type": "null"
            }
          ],
          "description": "A rule for using a different default value if a Visual Studio feature flag is enabled.\r\nThis feature is under review and may be removed during the preview period.",
          "title": "Alternate Default"
        },
        "environmentVariableDefault": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "description": "The environment variable from which the default value is parsed.\r\nIf it is not defined or cannot be parsed, the value specified in 'default' is used instead.\r\n\r\nThis is not currently supported for array type settings.\r\n\r\nFor boolean type settings, case-insensitive \"true\" and \"1\" evaluate as\r\ntrue, \"false\" and \"0\" evaluate as false, and anything else is considered invalid.",
          "title": "Environment Variable Default"
        },
        "hasUserSelectableDefaultItem": {
          "type": "boolean",
          "description": "Whether the array supports a user-selectable default item.",
          "title": "Has User Selectable Default Item"
        },
        "migrationCallback": {
          "oneOf": [
            {
              "$ref": "#/$defs/Callback"
            },
            {
              "type": "null"
            }
          ],
          "title": "Migration Callback"
        },
        "allowItemEditing": {
          "type": "boolean",
          "description": "Whether array items are user-editable in the IDE.  When this is false, items can still be added and removed, just not modified in place.",
          "title": "Allow Item Editing"
        },
        "allowAdditionsAndRemovals": {
          "type": "boolean",
          "description": "Whether items can be added or removed by the user.",
          "title": "Allow Additions and Removals"
        },
        "requiresRestart": {
          "type": "boolean",
          "title": "Requires Restart"
        },
        "enableWhen": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "description": "A boolean expression that determines when the element is enabled in the UI.\r\nWhen 'null' or unset, the element is always enabled.\r\n\r\nYou can reference setting values and environment variable values.\r\nExamples:\r\n    ${config:environment.general.showStatusBar} == 'true'\r\n    ${env:USERDOMAIN} != ''\r\n    ${config:environment.general.showStatusBar} == 'true' || (${config:environment.visualExperience.titleCaseMenus} == 'true' && ${config:environment.visualExperience.useMinimalMode} == 'false')",
          "title": "Enable When"
        },
        "applyWhen": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Apply When"
        },
        "description": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "description": "A verbose description. The value may be a plain string, or may be a special format that indicates the localized value should be retrieved from a resource dictionary, or from the resources of a Visual Studio package.",
          "title": "Description"
        },
        "order": {
          "oneOf": [
            {
              "type": "integer",
              "minimum": -2147483648,
              "maximum": 2147483647
            },
            {
              "type": "null"
            }
          ],
          "description": "Optionally override the preferred display order.",
          "title": "Order"
        },
        "title": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "description": "The display title. The value may be a plain string, or may be a special format that indicates the localized value should be retrieved from a resource dictionary, or from the resources of a Visual Studio package.",
          "title": "Title"
        },
        "helpUri": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "description": "The URI of a help page.",
          "title": "Help Uri"
        },
        "tags": {
          "$comment": "FilterTag[]",
          "type": "array",
          "items": {
            "$ref": "#/$defs/Display.FilterTag"
          },
          "uniqueItems": true,
          "description": "A list of tags to associate with the registration. Used when filtering the settings window.",
          "title": "Tags"
        },
        "additionalKeywords": {
          "$comment": "String[]",
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of additional keywords to associate with the setting when searching in the UI.",
          "title": "Additional Keywords"
        },
        "commands": {
          "$comment": "Command[]",
          "type": "array",
          "items": {
            "$ref": "#/$defs/Command"
          },
          "description": "Commands to render with this element.",
          "title": "Commands"
        },
        "messages": {
          "$comment": "Message[]",
          "type": "array",
          "items": {
            "$ref": "#/$defs/Message"
          },
          "description": "Messages to render with this element.",
          "title": "Messages"
        },
        "visibleWhen": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "description": "A boolean expression that determines when the element is visible in the UI.\r\nWhen 'null' or unset, the element is always visible.\r\n\r\nYou can reference setting values and environment variable values.\r\nExamples:\r\n    ${config:environment.general.showStatusBar} == 'true'\r\n    ${env:USERDOMAIN} != ''\r\n    ${config:environment.general.showStatusBar} == 'true' || (${config:environment.visualExperience.titleCaseMenus} == 'true' && ${config:environment.visualExperience.useMinimalMode} == 'false')",
          "title": "Visible When"
        },
        "unsupportedMessage": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "description": "The message to display if the setting is not supported.\r\nA non-null value indicates the setting is not supported.",
          "title": "Unsupported Message"
        },
        "migration": {
          "oneOf": [
            {
              "$ref": "#/$defs/Migration"
            },
            {
              "type": "null"
            }
          ],
          "description": "The rule for migrating one or more legacy settings to this Unified Setting.\r\nA Unified Setting may have at most one migration rule.",
          "title": "Migration"
        },
        "transientScopesSupported": {
          "type": "boolean",
          "description": "Whether this setting can be customized in transient scopes, such as the solution/folder scope.",
          "title": "Transient Scopes Supported"
        },
        "placements": {
          "$comment": "Placement[]",
          "type": "array",
          "items": {
            "$ref": "#/$defs/Placement"
          },
          "minItems": 1,
          "uniqueItems": true,
          "description": "Defines the parent categories where this setting will be rendered in the visual hierarchy of the UI.\r\nInstead of the default behavior -- being placed based on the setting's moniker -- the setting will only be placed where specified by this property.\r\nThis property does not affect the setting's moniker.\r\nWhen using this property at least one placement must be specified.\r\nIf a setting defines an 'enableWhen' rule that references another setting using the \"${config:foo}\" placeholder,\r\nit must not also define 'placements'.",
          "title": "Placements"
        }
      },
      "required": [
        "type",
        "items",
        "default"
      ],
      "additionalProperties": false
    },
    "SettingRegistration_External": {
      "title": "External Region",
      "type": "object",
      "properties": {
        "type": {
          "const": "external",
          "description": "The type of the setting value.",
          "title": "Schema Type"
        },
        "backingStoreDescription": {
          "type": "string",
          "description": "The description of the backing store.",
          "title": "Backing Store Description"
        },
        "callback": {
          "$ref": "#/$defs/Callback",
          "title": "Callback"
        },
        "realtimeNotifications": {
          "type": "boolean",
          "description": "Whether the callback provides real-time notifications.",
          "title": "Realtime Notifications"
        },
        "properties": {
          "$comment": "[String => ExternalSettingRegistration]",
          "type": "object",
          "propertyNames": {
            "type": "string"
          },
          "additionalProperties": {
            "$ref": "#/$defs/ExternalSettingRegistration"
          },
          "description": "A map of moniker => external setting registration.\r\nThe full moniker is determined by prefixing the parent region moniker to the child's moniker.",
          "title": "Properties"
        },
        "categories": {
          "oneOf": [
            {
              "$comment": "[String => CategoryRegistration]",
              "type": "object",
              "propertyNames": {
                "type": "string"
              },
              "additionalProperties": {
                "$ref": "#/$defs/CategoryRegistration"
              }
            },
            {
              "type": "null"
            }
          ],
          "title": "Categories"
        },
        "dynamicMessageIds": {
          "$comment": "String[]",
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of dynamic message IDs.",
          "title": "Dynamic Message Ids"
        },
        "requiresRestart": {
          "type": "boolean",
          "title": "Requires Restart"
        },
        "enableWhen": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "description": "A boolean expression that determines when the element is enabled in the UI.\r\nWhen 'null' or unset, the element is always enabled.\r\n\r\nYou can reference setting values and environment variable values.\r\nExamples:\r\n    ${config:environment.general.showStatusBar} == 'true'\r\n    ${env:USERDOMAIN} != ''\r\n    ${config:environment.general.showStatusBar} == 'true' || (${config:environment.visualExperience.titleCaseMenus} == 'true' && ${config:environment.visualExperience.useMinimalMode} == 'false')",
          "title": "Enable When"
        },
        "applyWhen": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Apply When"
        },
        "description": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "description": "A verbose description. The value may be a plain string, or may be a special format that indicates the localized value should be retrieved from a resource dictionary, or from the resources of a Visual Studio package.",
          "title": "Description"
        },
        "order": {
          "oneOf": [
            {
              "type": "integer",
              "minimum": -2147483648,
              "maximum": 2147483647
            },
            {
              "type": "null"
            }
          ],
          "description": "Optionally override the preferred display order.",
          "title": "Order"
        },
        "title": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "description": "The display title. The value may be a plain string, or may be a special format that indicates the localized value should be retrieved from a resource dictionary, or from the resources of a Visual Studio package.",
          "title": "Title"
        },
        "helpUri": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "description": "The URI of a help page.",
          "title": "Help Uri"
        },
        "tags": {
          "$comment": "FilterTag[]",
          "type": "array",
          "items": {
            "$ref": "#/$defs/Display.FilterTag"
          },
          "uniqueItems": true,
          "description": "A list of tags to associate with the registration. Used when filtering the settings window.",
          "title": "Tags"
        },
        "additionalKeywords": {
          "$comment": "String[]",
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of additional keywords to associate with the setting when searching in the UI.",
          "title": "Additional Keywords"
        },
        "commands": {
          "$comment": "Command[]",
          "type": "array",
          "items": {
            "$ref": "#/$defs/Command"
          },
          "description": "Commands to render with this element.",
          "title": "Commands"
        },
        "messages": {
          "$comment": "Message[]",
          "type": "array",
          "items": {
            "$ref": "#/$defs/Message"
          },
          "description": "Messages to render with this element.",
          "title": "Messages"
        },
        "visibleWhen": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "description": "A boolean expression that determines when the element is visible in the UI.\r\nWhen 'null' or unset, the element is always visible.\r\n\r\nYou can reference setting values and environment variable values.\r\nExamples:\r\n    ${config:environment.general.showStatusBar} == 'true'\r\n    ${env:USERDOMAIN} != ''\r\n    ${config:environment.general.showStatusBar} == 'true' || (${config:environment.visualExperience.titleCaseMenus} == 'true' && ${config:environment.visualExperience.useMinimalMode} == 'false')",
          "title": "Visible When"
        },
        "unsupportedMessage": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "description": "The message to display if the setting is not supported.\r\nA non-null value indicates the setting is not supported.",
          "title": "Unsupported Message"
        },
        "migration": {
          "oneOf": [
            {
              "$ref": "#/$defs/Migration"
            },
            {
              "type": "null"
            }
          ],
          "description": "The rule for migrating one or more legacy settings to this Unified Setting.\r\nA Unified Setting may have at most one migration rule.",
          "title": "Migration"
        },
        "transientScopesSupported": {
          "type": "boolean",
          "description": "Whether this setting can be customized in transient scopes, such as the solution/folder scope.",
          "title": "Transient Scopes Supported"
        },
        "placements": {
          "$comment": "Placement[]",
          "type": "array",
          "items": {
            "$ref": "#/$defs/Placement"
          },
          "minItems": 1,
          "uniqueItems": true,
          "description": "Defines the parent categories where this setting will be rendered in the visual hierarchy of the UI.\r\nInstead of the default behavior -- being placed based on the setting's moniker -- the setting will only be placed where specified by this property.\r\nThis property does not affect the setting's moniker.\r\nWhen using this property at least one placement must be specified.\r\nIf a setting defines an 'enableWhen' rule that references another setting using the \"${config:foo}\" placeholder,\r\nit must not also define 'placements'.",
          "title": "Placements"
        }
      },
      "required": [
        "type",
        "backingStoreDescription",
        "callback",
        "properties"
      ],
      "additionalProperties": false
    },
    "SettingRegistration_FormatString": {
      "title": "Formatted String Setting",
      "type": "object",
      "properties": {
        "type": {
          "const": "string",
          "description": "The type of the setting value.",
          "title": "Schema Type"
        },
        "default": {
          "type": "string",
          "title": "Default"
        },
        "example": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Example"
        },
        "format": {
          "$ref": "#/$defs/FormatStringKind",
          "description": "An optional format used to validate the contents of the string.",
          "title": "Format"
        },
        "pathKind": {
          "$ref": "#/$defs/PathKind",
          "description": "When 'format' is 'path', describes the kind of path the string must conform to.",
          "title": "Path Kind"
        },
        "alternateDefault": {
          "oneOf": [
            {
              "$ref": "#/$defs/AlternateDefault{System.String}"
            },
            {
              "type": "null"
            }
          ],
          "description": "A rule for using a different default value if a Visual Studio feature flag is enabled.\r\nThis feature is under review and may be removed during the preview period.",
          "title": "Alternate Default"
        },
        "environmentVariableDefault": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "description": "The environment variable from which the default value is parsed.\r\nIf it is not defined or cannot be parsed, the value specified in 'default' is used instead.\r\n\r\nThis is not currently supported for array type settings.\r\n\r\nFor boolean type settings, case-insensitive \"true\" and \"1\" evaluate as\r\ntrue, \"false\" and \"0\" evaluate as false, and anything else is considered invalid.",
          "title": "Environment Variable Default"
        },
        "requiresRestart": {
          "type": "boolean",
          "title": "Requires Restart"
        },
        "enableWhen": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "description": "A boolean expression that determines when the element is enabled in the UI.\r\nWhen 'null' or unset, the element is always enabled.\r\n\r\nYou can reference setting values and environment variable values.\r\nExamples:\r\n    ${config:environment.general.showStatusBar} == 'true'\r\n    ${env:USERDOMAIN} != ''\r\n    ${config:environment.general.showStatusBar} == 'true' || (${config:environment.visualExperience.titleCaseMenus} == 'true' && ${config:environment.visualExperience.useMinimalMode} == 'false')",
          "title": "Enable When"
        },
        "applyWhen": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Apply When"
        },
        "description": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "description": "A verbose description. The value may be a plain string, or may be a special format that indicates the localized value should be retrieved from a resource dictionary, or from the resources of a Visual Studio package.",
          "title": "Description"
        },
        "order": {
          "oneOf": [
            {
              "type": "integer",
              "minimum": -2147483648,
              "maximum": 2147483647
            },
            {
              "type": "null"
            }
          ],
          "description": "Optionally override the preferred display order.",
          "title": "Order"
        },
        "title": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "description": "The display title. The value may be a plain string, or may be a special format that indicates the localized value should be retrieved from a resource dictionary, or from the resources of a Visual Studio package.",
          "title": "Title"
        },
        "helpUri": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "description": "The URI of a help page.",
          "title": "Help Uri"
        },
        "tags": {
          "$comment": "FilterTag[]",
          "type": "array",
          "items": {
            "$ref": "#/$defs/Display.FilterTag"
          },
          "uniqueItems": true,
          "description": "A list of tags to associate with the registration. Used when filtering the settings window.",
          "title": "Tags"
        },
        "additionalKeywords": {
          "$comment": "String[]",
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of additional keywords to associate with the setting when searching in the UI.",
          "title": "Additional Keywords"
        },
        "commands": {
          "$comment": "Command[]",
          "type": "array",
          "items": {
            "$ref": "#/$defs/Command"
          },
          "description": "Commands to render with this element.",
          "title": "Commands"
        },
        "messages": {
          "$comment": "Message[]",
          "type": "array",
          "items": {
            "$ref": "#/$defs/Message"
          },
          "description": "Messages to render with this element.",
          "title": "Messages"
        },
        "visibleWhen": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "description": "A boolean expression that determines when the element is visible in the UI.\r\nWhen 'null' or unset, the element is always visible.\r\n\r\nYou can reference setting values and environment variable values.\r\nExamples:\r\n    ${config:environment.general.showStatusBar} == 'true'\r\n    ${env:USERDOMAIN} != ''\r\n    ${config:environment.general.showStatusBar} == 'true' || (${config:environment.visualExperience.titleCaseMenus} == 'true' && ${config:environment.visualExperience.useMinimalMode} == 'false')",
          "title": "Visible When"
        },
        "unsupportedMessage": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "description": "The message to display if the setting is not supported.\r\nA non-null value indicates the setting is not supported.",
          "title": "Unsupported Message"
        },
        "migration": {
          "oneOf": [
            {
              "$ref": "#/$defs/Migration"
            },
            {
              "type": "null"
            }
          ],
          "description": "The rule for migrating one or more legacy settings to this Unified Setting.\r\nA Unified Setting may have at most one migration rule.",
          "title": "Migration"
        },
        "transientScopesSupported": {
          "type": "boolean",
          "description": "Whether this setting can be customized in transient scopes, such as the solution/folder scope.",
          "title": "Transient Scopes Supported"
        },
        "placements": {
          "$comment": "Placement[]",
          "type": "array",
          "items": {
            "$ref": "#/$defs/Placement"
          },
          "minItems": 1,
          "uniqueItems": true,
          "description": "Defines the parent categories where this setting will be rendered in the visual hierarchy of the UI.\r\nInstead of the default behavior -- being placed based on the setting's moniker -- the setting will only be placed where specified by this property.\r\nThis property does not affect the setting's moniker.\r\nWhen using this property at least one placement must be specified.\r\nIf a setting defines an 'enableWhen' rule that references another setting using the \"${config:foo}\" placeholder,\r\nit must not also define 'placements'.",
          "title": "Placements"
        }
      },
      "required": [
        "type",
        "default",
        "format"
      ],
      "additionalProperties": false
    },
    "SettingRegistration_FormatStringArray": {
      "title": "Array of Formatted String Setting",
      "type": "object",
      "properties": {
        "type": {
          "const": "array",
          "description": "The type of the setting value.",
          "title": "Schema Type"
        },
        "minItems": {
          "oneOf": [
            {
              "type": "integer",
              "minimum": 0,
              "maximum": 2147483647
            },
            {
              "type": "null"
            }
          ],
          "title": "Min Items"
        },
        "maxItems": {
          "oneOf": [
            {
              "type": "integer",
              "minimum": 0,
              "maximum": 2147483647
            },
            {
              "type": "null"
            }
          ],
          "title": "Max Items"
        },
        "uniqueItems": {
          "type": "boolean",
          "description": "Whether the array items must be unique.",
          "title": "Unique Items"
        },
        "items": {
          "$ref": "#/$defs/ItemsRegistration_FormatString",
          "description": "Describes the type and validation constraints of the array items.",
          "title": "Items"
        },
        "default": {
          "$comment": "String[]",
          "type": "array",
          "items": {
            "type": "string"
          },
          "title": "Default"
        },
        "itemsAreOrdered": {
          "type": "boolean",
          "description": "Whether the array items can be ordered by the user.",
          "title": "Items Are Ordered"
        },
        "alternateDefault": {
          "oneOf": [
            {
              "$ref": "#/$defs/AlternateDefault{ImmutableArray{System.String}}"
            },
            {
              "type": "null"
            }
          ],
          "description": "A rule for using a different default value if a Visual Studio feature flag is enabled.\r\nThis feature is under review and may be removed during the preview period.",
          "title": "Alternate Default"
        },
        "environmentVariableDefault": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "description": "The environment variable from which the default value is parsed.\r\nIf it is not defined or cannot be parsed, the value specified in 'default' is used instead.\r\n\r\nThis is not currently supported for array type settings.\r\n\r\nFor boolean type settings, case-insensitive \"true\" and \"1\" evaluate as\r\ntrue, \"false\" and \"0\" evaluate as false, and anything else is considered invalid.",
          "title": "Environment Variable Default"
        },
        "hasUserSelectableDefaultItem": {
          "type": "boolean",
          "description": "Whether the array supports a user-selectable default item.",
          "title": "Has User Selectable Default Item"
        },
        "migrationCallback": {
          "oneOf": [
            {
              "$ref": "#/$defs/Callback"
            },
            {
              "type": "null"
            }
          ],
          "title": "Migration Callback"
        },
        "allowItemEditing": {
          "type": "boolean",
          "description": "Whether array items are user-editable in the IDE.  When this is false, items can still be added and removed, just not modified in place.",
          "title": "Allow Item Editing"
        },
        "allowAdditionsAndRemovals": {
          "type": "boolean",
          "description": "Whether items can be added or removed by the user.",
          "title": "Allow Additions and Removals"
        },
        "requiresRestart": {
          "type": "boolean",
          "title": "Requires Restart"
        },
        "enableWhen": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "description": "A boolean expression that determines when the element is enabled in the UI.\r\nWhen 'null' or unset, the element is always enabled.\r\n\r\nYou can reference setting values and environment variable values.\r\nExamples:\r\n    ${config:environment.general.showStatusBar} == 'true'\r\n    ${env:USERDOMAIN} != ''\r\n    ${config:environment.general.showStatusBar} == 'true' || (${config:environment.visualExperience.titleCaseMenus} == 'true' && ${config:environment.visualExperience.useMinimalMode} == 'false')",
          "title": "Enable When"
        },
        "applyWhen": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Apply When"
        },
        "description": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "description": "A verbose description. The value may be a plain string, or may be a special format that indicates the localized value should be retrieved from a resource dictionary, or from the resources of a Visual Studio package.",
          "title": "Description"
        },
        "order": {
          "oneOf": [
            {
              "type": "integer",
              "minimum": -2147483648,
              "maximum": 2147483647
            },
            {
              "type": "null"
            }
          ],
          "description": "Optionally override the preferred display order.",
          "title": "Order"
        },
        "title": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "description": "The display title. The value may be a plain string, or may be a special format that indicates the localized value should be retrieved from a resource dictionary, or from the resources of a Visual Studio package.",
          "title": "Title"
        },
        "helpUri": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "description": "The URI of a help page.",
          "title": "Help Uri"
        },
        "tags": {
          "$comment": "FilterTag[]",
          "type": "array",
          "items": {
            "$ref": "#/$defs/Display.FilterTag"
          },
          "uniqueItems": true,
          "description": "A list of tags to associate with the registration. Used when filtering the settings window.",
          "title": "Tags"
        },
        "additionalKeywords": {
          "$comment": "String[]",
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of additional keywords to associate with the setting when searching in the UI.",
          "title": "Additional Keywords"
        },
        "commands": {
          "$comment": "Command[]",
          "type": "array",
          "items": {
            "$ref": "#/$defs/Command"
          },
          "description": "Commands to render with this element.",
          "title": "Commands"
        },
        "messages": {
          "$comment": "Message[]",
          "type": "array",
          "items": {
            "$ref": "#/$defs/Message"
          },
          "description": "Messages to render with this element.",
          "title": "Messages"
        },
        "visibleWhen": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "description": "A boolean expression that determines when the element is visible in the UI.\r\nWhen 'null' or unset, the element is always visible.\r\n\r\nYou can reference setting values and environment variable values.\r\nExamples:\r\n    ${config:environment.general.showStatusBar} == 'true'\r\n    ${env:USERDOMAIN} != ''\r\n    ${config:environment.general.showStatusBar} == 'true' || (${config:environment.visualExperience.titleCaseMenus} == 'true' && ${config:environment.visualExperience.useMinimalMode} == 'false')",
          "title": "Visible When"
        },
        "unsupportedMessage": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "description": "The message to display if the setting is not supported.\r\nA non-null value indicates the setting is not supported.",
          "title": "Unsupported Message"
        },
        "migration": {
          "oneOf": [
            {
              "$ref": "#/$defs/Migration"
            },
            {
              "type": "null"
            }
          ],
          "description": "The rule for migrating one or more legacy settings to this Unified Setting.\r\nA Unified Setting may have at most one migration rule.",
          "title": "Migration"
        },
        "transientScopesSupported": {
          "type": "boolean",
          "description": "Whether this setting can be customized in transient scopes, such as the solution/folder scope.",
          "title": "Transient Scopes Supported"
        },
        "placements": {
          "$comment": "Placement[]",
          "type": "array",
          "items": {
            "$ref": "#/$defs/Placement"
          },
          "minItems": 1,
          "uniqueItems": true,
          "description": "Defines the parent categories where this setting will be rendered in the visual hierarchy of the UI.\r\nInstead of the default behavior -- being placed based on the setting's moniker -- the setting will only be placed where specified by this property.\r\nThis property does not affect the setting's moniker.\r\nWhen using this property at least one placement must be specified.\r\nIf a setting defines an 'enableWhen' rule that references another setting using the \"${config:foo}\" placeholder,\r\nit must not also define 'placements'.",
          "title": "Placements"
        }
      },
      "required": [
        "type",
        "items",
        "default"
      ],
      "additionalProperties": false
    },
    "SettingRegistration_Integer": {
      "title": "Integer Setting",
      "type": "object",
      "properties": {
        "type": {
          "const": "integer",
          "description": "The type of the setting value.",
          "title": "Schema Type"
        },
        "default": {
          "type": "integer",
          "minimum": -2147483648,
          "maximum": 2147483647,
          "title": "Default"
        },
        "maximum": {
          "oneOf": [
            {
              "type": "integer",
              "minimum": -2147483648,
              "maximum": 2147483647
            },
            {
              "type": "null"
            }
          ],
          "title": "Maximum"
        },
        "minimum": {
          "oneOf": [
            {
              "type": "integer",
              "minimum": -2147483648,
              "maximum": 2147483647
            },
            {
              "type": "null"
            }
          ],
          "title": "Minimum"
        },
        "alternateDefault": {
          "oneOf": [
            {
              "$ref": "#/$defs/AlternateDefault{System.Int32}"
            },
            {
              "type": "null"
            }
          ],
          "description": "A rule for using a different default value if a Visual Studio feature flag is enabled.\r\nThis feature is under review and may be removed during the preview period.",
          "title": "Alternate Default"
        },
        "environmentVariableDefault": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "description": "The environment variable from which the default value is parsed.\r\nIf it is not defined or cannot be parsed, the value specified in 'default' is used instead.\r\n\r\nThis is not currently supported for array type settings.\r\n\r\nFor boolean type settings, case-insensitive \"true\" and \"1\" evaluate as\r\ntrue, \"false\" and \"0\" evaluate as false, and anything else is considered invalid.",
          "title": "Environment Variable Default"
        },
        "requiresRestart": {
          "type": "boolean",
          "title": "Requires Restart"
        },
        "enableWhen": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "description": "A boolean expression that determines when the element is enabled in the UI.\r\nWhen 'null' or unset, the element is always enabled.\r\n\r\nYou can reference setting values and environment variable values.\r\nExamples:\r\n    ${config:environment.general.showStatusBar} == 'true'\r\n    ${env:USERDOMAIN} != ''\r\n    ${config:environment.general.showStatusBar} == 'true' || (${config:environment.visualExperience.titleCaseMenus} == 'true' && ${config:environment.visualExperience.useMinimalMode} == 'false')",
          "title": "Enable When"
        },
        "applyWhen": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Apply When"
        },
        "description": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "description": "A verbose description. The value may be a plain string, or may be a special format that indicates the localized value should be retrieved from a resource dictionary, or from the resources of a Visual Studio package.",
          "title": "Description"
        },
        "order": {
          "oneOf": [
            {
              "type": "integer",
              "minimum": -2147483648,
              "maximum": 2147483647
            },
            {
              "type": "null"
            }
          ],
          "description": "Optionally override the preferred display order.",
          "title": "Order"
        },
        "title": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "description": "The display title. The value may be a plain string, or may be a special format that indicates the localized value should be retrieved from a resource dictionary, or from the resources of a Visual Studio package.",
          "title": "Title"
        },
        "helpUri": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "description": "The URI of a help page.",
          "title": "Help Uri"
        },
        "tags": {
          "$comment": "FilterTag[]",
          "type": "array",
          "items": {
            "$ref": "#/$defs/Display.FilterTag"
          },
          "uniqueItems": true,
          "description": "A list of tags to associate with the registration. Used when filtering the settings window.",
          "title": "Tags"
        },
        "additionalKeywords": {
          "$comment": "String[]",
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of additional keywords to associate with the setting when searching in the UI.",
          "title": "Additional Keywords"
        },
        "commands": {
          "$comment": "Command[]",
          "type": "array",
          "items": {
            "$ref": "#/$defs/Command"
          },
          "description": "Commands to render with this element.",
          "title": "Commands"
        },
        "messages": {
          "$comment": "Message[]",
          "type": "array",
          "items": {
            "$ref": "#/$defs/Message"
          },
          "description": "Messages to render with this element.",
          "title": "Messages"
        },
        "visibleWhen": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "description": "A boolean expression that determines when the element is visible in the UI.\r\nWhen 'null' or unset, the element is always visible.\r\n\r\nYou can reference setting values and environment variable values.\r\nExamples:\r\n    ${config:environment.general.showStatusBar} == 'true'\r\n    ${env:USERDOMAIN} != ''\r\n    ${config:environment.general.showStatusBar} == 'true' || (${config:environment.visualExperience.titleCaseMenus} == 'true' && ${config:environment.visualExperience.useMinimalMode} == 'false')",
          "title": "Visible When"
        },
        "unsupportedMessage": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "description": "The message to display if the setting is not supported.\r\nA non-null value indicates the setting is not supported.",
          "title": "Unsupported Message"
        },
        "migration": {
          "oneOf": [
            {
              "$ref": "#/$defs/Migration"
            },
            {
              "type": "null"
            }
          ],
          "description": "The rule for migrating one or more legacy settings to this Unified Setting.\r\nA Unified Setting may have at most one migration rule.",
          "title": "Migration"
        },
        "transientScopesSupported": {
          "type": "boolean",
          "description": "Whether this setting can be customized in transient scopes, such as the solution/folder scope.",
          "title": "Transient Scopes Supported"
        },
        "placements": {
          "$comment": "Placement[]",
          "type": "array",
          "items": {
            "$ref": "#/$defs/Placement"
          },
          "minItems": 1,
          "uniqueItems": true,
          "description": "Defines the parent categories where this setting will be rendered in the visual hierarchy of the UI.\r\nInstead of the default behavior -- being placed based on the setting's moniker -- the setting will only be placed where specified by this property.\r\nThis property does not affect the setting's moniker.\r\nWhen using this property at least one placement must be specified.\r\nIf a setting defines an 'enableWhen' rule that references another setting using the \"${config:foo}\" placeholder,\r\nit must not also define 'placements'.",
          "title": "Placements"
        }
      },
      "required": [
        "type",
        "default"
      ],
      "additionalProperties": false
    },
    "SettingRegistration_Number": {
      "title": "Number Setting",
      "type": "object",
      "properties": {
        "type": {
          "const": "number",
          "description": "The type of the setting value.",
          "title": "Schema Type"
        },
        "default": {
          "$comment": "decimal",
          "type": "number",
          "minimum": -79228162514264337593543950335,
          "maximum": 79228162514264337593543950335,
          "title": "Default"
        },
        "maximum": {
          "oneOf": [
            {
              "$comment": "decimal",
              "type": "number",
              "minimum": -79228162514264337593543950335,
              "maximum": 79228162514264337593543950335
            },
            {
              "type": "null"
            }
          ],
          "title": "Maximum"
        },
        "minimum": {
          "oneOf": [
            {
              "$comment": "decimal",
              "type": "number",
              "minimum": -79228162514264337593543950335,
              "maximum": 79228162514264337593543950335
            },
            {
              "type": "null"
            }
          ],
          "title": "Minimum"
        },
        "alternateDefault": {
          "oneOf": [
            {
              "$ref": "#/$defs/AlternateDefault{System.Decimal}"
            },
            {
              "type": "null"
            }
          ],
          "description": "A rule for using a different default value if a Visual Studio feature flag is enabled.\r\nThis feature is under review and may be removed during the preview period.",
          "title": "Alternate Default"
        },
        "environmentVariableDefault": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "description": "The environment variable from which the default value is parsed.\r\nIf it is not defined or cannot be parsed, the value specified in 'default' is used instead.\r\n\r\nThis is not currently supported for array type settings.\r\n\r\nFor boolean type settings, case-insensitive \"true\" and \"1\" evaluate as\r\ntrue, \"false\" and \"0\" evaluate as false, and anything else is considered invalid.",
          "title": "Environment Variable Default"
        },
        "requiresRestart": {
          "type": "boolean",
          "title": "Requires Restart"
        },
        "enableWhen": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "description": "A boolean expression that determines when the element is enabled in the UI.\r\nWhen 'null' or unset, the element is always enabled.\r\n\r\nYou can reference setting values and environment variable values.\r\nExamples:\r\n    ${config:environment.general.showStatusBar} == 'true'\r\n    ${env:USERDOMAIN} != ''\r\n    ${config:environment.general.showStatusBar} == 'true' || (${config:environment.visualExperience.titleCaseMenus} == 'true' && ${config:environment.visualExperience.useMinimalMode} == 'false')",
          "title": "Enable When"
        },
        "applyWhen": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Apply When"
        },
        "description": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "description": "A verbose description. The value may be a plain string, or may be a special format that indicates the localized value should be retrieved from a resource dictionary, or from the resources of a Visual Studio package.",
          "title": "Description"
        },
        "order": {
          "oneOf": [
            {
              "type": "integer",
              "minimum": -2147483648,
              "maximum": 2147483647
            },
            {
              "type": "null"
            }
          ],
          "description": "Optionally override the preferred display order.",
          "title": "Order"
        },
        "title": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "description": "The display title. The value may be a plain string, or may be a special format that indicates the localized value should be retrieved from a resource dictionary, or from the resources of a Visual Studio package.",
          "title": "Title"
        },
        "helpUri": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "description": "The URI of a help page.",
          "title": "Help Uri"
        },
        "tags": {
          "$comment": "FilterTag[]",
          "type": "array",
          "items": {
            "$ref": "#/$defs/Display.FilterTag"
          },
          "uniqueItems": true,
          "description": "A list of tags to associate with the registration. Used when filtering the settings window.",
          "title": "Tags"
        },
        "additionalKeywords": {
          "$comment": "String[]",
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of additional keywords to associate with the setting when searching in the UI.",
          "title": "Additional Keywords"
        },
        "commands": {
          "$comment": "Command[]",
          "type": "array",
          "items": {
            "$ref": "#/$defs/Command"
          },
          "description": "Commands to render with this element.",
          "title": "Commands"
        },
        "messages": {
          "$comment": "Message[]",
          "type": "array",
          "items": {
            "$ref": "#/$defs/Message"
          },
          "description": "Messages to render with this element.",
          "title": "Messages"
        },
        "visibleWhen": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "description": "A boolean expression that determines when the element is visible in the UI.\r\nWhen 'null' or unset, the element is always visible.\r\n\r\nYou can reference setting values and environment variable values.\r\nExamples:\r\n    ${config:environment.general.showStatusBar} == 'true'\r\n    ${env:USERDOMAIN} != ''\r\n    ${config:environment.general.showStatusBar} == 'true' || (${config:environment.visualExperience.titleCaseMenus} == 'true' && ${config:environment.visualExperience.useMinimalMode} == 'false')",
          "title": "Visible When"
        },
        "unsupportedMessage": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "description": "The message to display if the setting is not supported.\r\nA non-null value indicates the setting is not supported.",
          "title": "Unsupported Message"
        },
        "migration": {
          "oneOf": [
            {
              "$ref": "#/$defs/Migration"
            },
            {
              "type": "null"
            }
          ],
          "description": "The rule for migrating one or more legacy settings to this Unified Setting.\r\nA Unified Setting may have at most one migration rule.",
          "title": "Migration"
        },
        "transientScopesSupported": {
          "type": "boolean",
          "description": "Whether this setting can be customized in transient scopes, such as the solution/folder scope.",
          "title": "Transient Scopes Supported"
        },
        "placements": {
          "$comment": "Placement[]",
          "type": "array",
          "items": {
            "$ref": "#/$defs/Placement"
          },
          "minItems": 1,
          "uniqueItems": true,
          "description": "Defines the parent categories where this setting will be rendered in the visual hierarchy of the UI.\r\nInstead of the default behavior -- being placed based on the setting's moniker -- the setting will only be placed where specified by this property.\r\nThis property does not affect the setting's moniker.\r\nWhen using this property at least one placement must be specified.\r\nIf a setting defines an 'enableWhen' rule that references another setting using the \"${config:foo}\" placeholder,\r\nit must not also define 'placements'.",
          "title": "Placements"
        }
      },
      "required": [
        "type",
        "default"
      ],
      "additionalProperties": false
    },
    "SettingRegistration_ObjectArray": {
      "title": "Array of Object Setting",
      "type": "object",
      "properties": {
        "type": {
          "const": "array",
          "description": "The type of the setting value.",
          "title": "Schema Type"
        },
        "minItems": {
          "oneOf": [
            {
              "type": "integer",
              "minimum": 0,
              "maximum": 2147483647
            },
            {
              "type": "null"
            }
          ],
          "title": "Min Items"
        },
        "maxItems": {
          "oneOf": [
            {
              "type": "integer",
              "minimum": 0,
              "maximum": 2147483647
            },
            {
              "type": "null"
            }
          ],
          "title": "Max Items"
        },
        "uniqueItems": {
          "type": "boolean",
          "description": "Whether the array items must be unique.",
          "title": "Unique Items"
        },
        "items": {
          "$ref": "#/$defs/ItemsRegistration_Object",
          "description": "Describes the type and validation constraints of the array items.",
          "title": "Items"
        },
        "default": {
          "$comment": "IReadOnlyDictionary`2[]",
          "type": "array",
          "items": {
            "$comment": "[String => JsonVariant]",
            "type": "object",
            "propertyNames": {
              "type": "string"
            },
            "additionalProperties": {
              "$ref": "#/$defs/Typing.JsonVariant"
            }
          },
          "title": "Default"
        },
        "itemsAreOrdered": {
          "type": "boolean",
          "description": "Whether the array items can be ordered by the user.",
          "title": "Items Are Ordered"
        },
        "alternateDefault": {
          "oneOf": [
            {
              "$ref": "#/$defs/AlternateDefault{ImmutableArray{IReadOnlyDictionary{System.String,Typing.JsonVariant}}}"
            },
            {
              "type": "null"
            }
          ],
          "description": "A rule for using a different default value if a Visual Studio feature flag is enabled.\r\nThis feature is under review and may be removed during the preview period.",
          "title": "Alternate Default"
        },
        "environmentVariableDefault": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "description": "The environment variable from which the default value is parsed.\r\nIf it is not defined or cannot be parsed, the value specified in 'default' is used instead.\r\n\r\nThis is not currently supported for array type settings.\r\n\r\nFor boolean type settings, case-insensitive \"true\" and \"1\" evaluate as\r\ntrue, \"false\" and \"0\" evaluate as false, and anything else is considered invalid.",
          "title": "Environment Variable Default"
        },
        "hasUserSelectableDefaultItem": {
          "type": "boolean",
          "description": "Whether the array supports a user-selectable default item.",
          "title": "Has User Selectable Default Item"
        },
        "migrationCallback": {
          "oneOf": [
            {
              "$ref": "#/$defs/Callback"
            },
            {
              "type": "null"
            }
          ],
          "title": "Migration Callback"
        },
        "allowItemEditing": {
          "type": "boolean",
          "description": "Whether array items are user-editable in the IDE.  When this is false, items can still be added and removed, just not modified in place.",
          "title": "Allow Item Editing"
        },
        "allowAdditionsAndRemovals": {
          "type": "boolean",
          "description": "Whether items can be added or removed by the user.",
          "title": "Allow Additions and Removals"
        },
        "requiresRestart": {
          "type": "boolean",
          "title": "Requires Restart"
        },
        "enableWhen": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "description": "A boolean expression that determines when the element is enabled in the UI.\r\nWhen 'null' or unset, the element is always enabled.\r\n\r\nYou can reference setting values and environment variable values.\r\nExamples:\r\n    ${config:environment.general.showStatusBar} == 'true'\r\n    ${env:USERDOMAIN} != ''\r\n    ${config:environment.general.showStatusBar} == 'true' || (${config:environment.visualExperience.titleCaseMenus} == 'true' && ${config:environment.visualExperience.useMinimalMode} == 'false')",
          "title": "Enable When"
        },
        "applyWhen": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Apply When"
        },
        "description": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "description": "A verbose description. The value may be a plain string, or may be a special format that indicates the localized value should be retrieved from a resource dictionary, or from the resources of a Visual Studio package.",
          "title": "Description"
        },
        "order": {
          "oneOf": [
            {
              "type": "integer",
              "minimum": -2147483648,
              "maximum": 2147483647
            },
            {
              "type": "null"
            }
          ],
          "description": "Optionally override the preferred display order.",
          "title": "Order"
        },
        "title": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "description": "The display title. The value may be a plain string, or may be a special format that indicates the localized value should be retrieved from a resource dictionary, or from the resources of a Visual Studio package.",
          "title": "Title"
        },
        "helpUri": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "description": "The URI of a help page.",
          "title": "Help Uri"
        },
        "tags": {
          "$comment": "FilterTag[]",
          "type": "array",
          "items": {
            "$ref": "#/$defs/Display.FilterTag"
          },
          "uniqueItems": true,
          "description": "A list of tags to associate with the registration. Used when filtering the settings window.",
          "title": "Tags"
        },
        "additionalKeywords": {
          "$comment": "String[]",
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of additional keywords to associate with the setting when searching in the UI.",
          "title": "Additional Keywords"
        },
        "commands": {
          "$comment": "Command[]",
          "type": "array",
          "items": {
            "$ref": "#/$defs/Command"
          },
          "description": "Commands to render with this element.",
          "title": "Commands"
        },
        "messages": {
          "$comment": "Message[]",
          "type": "array",
          "items": {
            "$ref": "#/$defs/Message"
          },
          "description": "Messages to render with this element.",
          "title": "Messages"
        },
        "visibleWhen": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "description": "A boolean expression that determines when the element is visible in the UI.\r\nWhen 'null' or unset, the element is always visible.\r\n\r\nYou can reference setting values and environment variable values.\r\nExamples:\r\n    ${config:environment.general.showStatusBar} == 'true'\r\n    ${env:USERDOMAIN} != ''\r\n    ${config:environment.general.showStatusBar} == 'true' || (${config:environment.visualExperience.titleCaseMenus} == 'true' && ${config:environment.visualExperience.useMinimalMode} == 'false')",
          "title": "Visible When"
        },
        "unsupportedMessage": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "description": "The message to display if the setting is not supported.\r\nA non-null value indicates the setting is not supported.",
          "title": "Unsupported Message"
        },
        "migration": {
          "oneOf": [
            {
              "$ref": "#/$defs/Migration"
            },
            {
              "type": "null"
            }
          ],
          "description": "The rule for migrating one or more legacy settings to this Unified Setting.\r\nA Unified Setting may have at most one migration rule.",
          "title": "Migration"
        },
        "transientScopesSupported": {
          "type": "boolean",
          "description": "Whether this setting can be customized in transient scopes, such as the solution/folder scope.",
          "title": "Transient Scopes Supported"
        },
        "placements": {
          "$comment": "Placement[]",
          "type": "array",
          "items": {
            "$ref": "#/$defs/Placement"
          },
          "minItems": 1,
          "uniqueItems": true,
          "description": "Defines the parent categories where this setting will be rendered in the visual hierarchy of the UI.\r\nInstead of the default behavior -- being placed based on the setting's moniker -- the setting will only be placed where specified by this property.\r\nThis property does not affect the setting's moniker.\r\nWhen using this property at least one placement must be specified.\r\nIf a setting defines an 'enableWhen' rule that references another setting using the \"${config:foo}\" placeholder,\r\nit must not also define 'placements'.",
          "title": "Placements"
        }
      },
      "required": [
        "type",
        "items",
        "default"
      ],
      "additionalProperties": false
    },
    "SettingRegistration_String": {
      "title": "String Setting",
      "type": "object",
      "properties": {
        "type": {
          "const": "string",
          "description": "The type of the setting value.",
          "title": "Schema Type"
        },
        "default": {
          "type": "string",
          "title": "Default"
        },
        "example": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Example"
        },
        "maxLength": {
          "oneOf": [
            {
              "type": "integer",
              "minimum": 0,
              "maximum": 2147483647
            },
            {
              "type": "null"
            }
          ],
          "title": "Max Length"
        },
        "minLength": {
          "oneOf": [
            {
              "type": "integer",
              "minimum": 0,
              "maximum": 2147483647
            },
            {
              "type": "null"
            }
          ],
          "title": "Min Length"
        },
        "alternateDefault": {
          "oneOf": [
            {
              "$ref": "#/$defs/AlternateDefault{System.String}"
            },
            {
              "type": "null"
            }
          ],
          "description": "A rule for using a different default value if a Visual Studio feature flag is enabled.\r\nThis feature is under review and may be removed during the preview period.",
          "title": "Alternate Default"
        },
        "environmentVariableDefault": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "description": "The environment variable from which the default value is parsed.\r\nIf it is not defined or cannot be parsed, the value specified in 'default' is used instead.\r\n\r\nThis is not currently supported for array type settings.\r\n\r\nFor boolean type settings, case-insensitive \"true\" and \"1\" evaluate as\r\ntrue, \"false\" and \"0\" evaluate as false, and anything else is considered invalid.",
          "title": "Environment Variable Default"
        },
        "requiresRestart": {
          "type": "boolean",
          "title": "Requires Restart"
        },
        "enableWhen": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "description": "A boolean expression that determines when the element is enabled in the UI.\r\nWhen 'null' or unset, the element is always enabled.\r\n\r\nYou can reference setting values and environment variable values.\r\nExamples:\r\n    ${config:environment.general.showStatusBar} == 'true'\r\n    ${env:USERDOMAIN} != ''\r\n    ${config:environment.general.showStatusBar} == 'true' || (${config:environment.visualExperience.titleCaseMenus} == 'true' && ${config:environment.visualExperience.useMinimalMode} == 'false')",
          "title": "Enable When"
        },
        "applyWhen": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Apply When"
        },
        "description": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "description": "A verbose description. The value may be a plain string, or may be a special format that indicates the localized value should be retrieved from a resource dictionary, or from the resources of a Visual Studio package.",
          "title": "Description"
        },
        "order": {
          "oneOf": [
            {
              "type": "integer",
              "minimum": -2147483648,
              "maximum": 2147483647
            },
            {
              "type": "null"
            }
          ],
          "description": "Optionally override the preferred display order.",
          "title": "Order"
        },
        "title": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "description": "The display title. The value may be a plain string, or may be a special format that indicates the localized value should be retrieved from a resource dictionary, or from the resources of a Visual Studio package.",
          "title": "Title"
        },
        "helpUri": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "description": "The URI of a help page.",
          "title": "Help Uri"
        },
        "tags": {
          "$comment": "FilterTag[]",
          "type": "array",
          "items": {
            "$ref": "#/$defs/Display.FilterTag"
          },
          "uniqueItems": true,
          "description": "A list of tags to associate with the registration. Used when filtering the settings window.",
          "title": "Tags"
        },
        "additionalKeywords": {
          "$comment": "String[]",
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of additional keywords to associate with the setting when searching in the UI.",
          "title": "Additional Keywords"
        },
        "commands": {
          "$comment": "Command[]",
          "type": "array",
          "items": {
            "$ref": "#/$defs/Command"
          },
          "description": "Commands to render with this element.",
          "title": "Commands"
        },
        "messages": {
          "$comment": "Message[]",
          "type": "array",
          "items": {
            "$ref": "#/$defs/Message"
          },
          "description": "Messages to render with this element.",
          "title": "Messages"
        },
        "visibleWhen": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "description": "A boolean expression that determines when the element is visible in the UI.\r\nWhen 'null' or unset, the element is always visible.\r\n\r\nYou can reference setting values and environment variable values.\r\nExamples:\r\n    ${config:environment.general.showStatusBar} == 'true'\r\n    ${env:USERDOMAIN} != ''\r\n    ${config:environment.general.showStatusBar} == 'true' || (${config:environment.visualExperience.titleCaseMenus} == 'true' && ${config:environment.visualExperience.useMinimalMode} == 'false')",
          "title": "Visible When"
        },
        "unsupportedMessage": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "description": "The message to display if the setting is not supported.\r\nA non-null value indicates the setting is not supported.",
          "title": "Unsupported Message"
        },
        "migration": {
          "oneOf": [
            {
              "$ref": "#/$defs/Migration"
            },
            {
              "type": "null"
            }
          ],
          "description": "The rule for migrating one or more legacy settings to this Unified Setting.\r\nA Unified Setting may have at most one migration rule.",
          "title": "Migration"
        },
        "transientScopesSupported": {
          "type": "boolean",
          "description": "Whether this setting can be customized in transient scopes, such as the solution/folder scope.",
          "title": "Transient Scopes Supported"
        },
        "placements": {
          "$comment": "Placement[]",
          "type": "array",
          "items": {
            "$ref": "#/$defs/Placement"
          },
          "minItems": 1,
          "uniqueItems": true,
          "description": "Defines the parent categories where this setting will be rendered in the visual hierarchy of the UI.\r\nInstead of the default behavior -- being placed based on the setting's moniker -- the setting will only be placed where specified by this property.\r\nThis property does not affect the setting's moniker.\r\nWhen using this property at least one placement must be specified.\r\nIf a setting defines an 'enableWhen' rule that references another setting using the \"${config:foo}\" placeholder,\r\nit must not also define 'placements'.",
          "title": "Placements"
        }
      },
      "required": [
        "type",
        "default"
      ],
      "additionalProperties": false
    },
    "SettingRegistration_StringArray": {
      "title": "Array of String Setting",
      "type": "object",
      "properties": {
        "type": {
          "const": "array",
          "description": "The type of the setting value.",
          "title": "Schema Type"
        },
        "minItems": {
          "oneOf": [
            {
              "type": "integer",
              "minimum": 0,
              "maximum": 2147483647
            },
            {
              "type": "null"
            }
          ],
          "title": "Min Items"
        },
        "maxItems": {
          "oneOf": [
            {
              "type": "integer",
              "minimum": 0,
              "maximum": 2147483647
            },
            {
              "type": "null"
            }
          ],
          "title": "Max Items"
        },
        "uniqueItems": {
          "type": "boolean",
          "description": "Whether the array items must be unique.",
          "title": "Unique Items"
        },
        "items": {
          "$ref": "#/$defs/ItemsRegistration_String",
          "description": "Describes the type and validation constraints of the array items.",
          "title": "Items"
        },
        "default": {
          "$comment": "String[]",
          "type": "array",
          "items": {
            "type": "string"
          },
          "title": "Default"
        },
        "itemsAreOrdered": {
          "type": "boolean",
          "description": "Whether the array items can be ordered by the user.",
          "title": "Items Are Ordered"
        },
        "alternateDefault": {
          "oneOf": [
            {
              "$ref": "#/$defs/AlternateDefault{ImmutableArray{System.String}}"
            },
            {
              "type": "null"
            }
          ],
          "description": "A rule for using a different default value if a Visual Studio feature flag is enabled.\r\nThis feature is under review and may be removed during the preview period.",
          "title": "Alternate Default"
        },
        "environmentVariableDefault": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "description": "The environment variable from which the default value is parsed.\r\nIf it is not defined or cannot be parsed, the value specified in 'default' is used instead.\r\n\r\nThis is not currently supported for array type settings.\r\n\r\nFor boolean type settings, case-insensitive \"true\" and \"1\" evaluate as\r\ntrue, \"false\" and \"0\" evaluate as false, and anything else is considered invalid.",
          "title": "Environment Variable Default"
        },
        "hasUserSelectableDefaultItem": {
          "type": "boolean",
          "description": "Whether the array supports a user-selectable default item.",
          "title": "Has User Selectable Default Item"
        },
        "migrationCallback": {
          "oneOf": [
            {
              "$ref": "#/$defs/Callback"
            },
            {
              "type": "null"
            }
          ],
          "title": "Migration Callback"
        },
        "allowItemEditing": {
          "type": "boolean",
          "description": "Whether array items are user-editable in the IDE.  When this is false, items can still be added and removed, just not modified in place.",
          "title": "Allow Item Editing"
        },
        "allowAdditionsAndRemovals": {
          "type": "boolean",
          "description": "Whether items can be added or removed by the user.",
          "title": "Allow Additions and Removals"
        },
        "requiresRestart": {
          "type": "boolean",
          "title": "Requires Restart"
        },
        "enableWhen": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "description": "A boolean expression that determines when the element is enabled in the UI.\r\nWhen 'null' or unset, the element is always enabled.\r\n\r\nYou can reference setting values and environment variable values.\r\nExamples:\r\n    ${config:environment.general.showStatusBar} == 'true'\r\n    ${env:USERDOMAIN} != ''\r\n    ${config:environment.general.showStatusBar} == 'true' || (${config:environment.visualExperience.titleCaseMenus} == 'true' && ${config:environment.visualExperience.useMinimalMode} == 'false')",
          "title": "Enable When"
        },
        "applyWhen": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Apply When"
        },
        "description": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "description": "A verbose description. The value may be a plain string, or may be a special format that indicates the localized value should be retrieved from a resource dictionary, or from the resources of a Visual Studio package.",
          "title": "Description"
        },
        "order": {
          "oneOf": [
            {
              "type": "integer",
              "minimum": -2147483648,
              "maximum": 2147483647
            },
            {
              "type": "null"
            }
          ],
          "description": "Optionally override the preferred display order.",
          "title": "Order"
        },
        "title": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "description": "The display title. The value may be a plain string, or may be a special format that indicates the localized value should be retrieved from a resource dictionary, or from the resources of a Visual Studio package.",
          "title": "Title"
        },
        "helpUri": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "description": "The URI of a help page.",
          "title": "Help Uri"
        },
        "tags": {
          "$comment": "FilterTag[]",
          "type": "array",
          "items": {
            "$ref": "#/$defs/Display.FilterTag"
          },
          "uniqueItems": true,
          "description": "A list of tags to associate with the registration. Used when filtering the settings window.",
          "title": "Tags"
        },
        "additionalKeywords": {
          "$comment": "String[]",
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of additional keywords to associate with the setting when searching in the UI.",
          "title": "Additional Keywords"
        },
        "commands": {
          "$comment": "Command[]",
          "type": "array",
          "items": {
            "$ref": "#/$defs/Command"
          },
          "description": "Commands to render with this element.",
          "title": "Commands"
        },
        "messages": {
          "$comment": "Message[]",
          "type": "array",
          "items": {
            "$ref": "#/$defs/Message"
          },
          "description": "Messages to render with this element.",
          "title": "Messages"
        },
        "visibleWhen": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "description": "A boolean expression that determines when the element is visible in the UI.\r\nWhen 'null' or unset, the element is always visible.\r\n\r\nYou can reference setting values and environment variable values.\r\nExamples:\r\n    ${config:environment.general.showStatusBar} == 'true'\r\n    ${env:USERDOMAIN} != ''\r\n    ${config:environment.general.showStatusBar} == 'true' || (${config:environment.visualExperience.titleCaseMenus} == 'true' && ${config:environment.visualExperience.useMinimalMode} == 'false')",
          "title": "Visible When"
        },
        "unsupportedMessage": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "description": "The message to display if the setting is not supported.\r\nA non-null value indicates the setting is not supported.",
          "title": "Unsupported Message"
        },
        "migration": {
          "oneOf": [
            {
              "$ref": "#/$defs/Migration"
            },
            {
              "type": "null"
            }
          ],
          "description": "The rule for migrating one or more legacy settings to this Unified Setting.\r\nA Unified Setting may have at most one migration rule.",
          "title": "Migration"
        },
        "transientScopesSupported": {
          "type": "boolean",
          "description": "Whether this setting can be customized in transient scopes, such as the solution/folder scope.",
          "title": "Transient Scopes Supported"
        },
        "placements": {
          "$comment": "Placement[]",
          "type": "array",
          "items": {
            "$ref": "#/$defs/Placement"
          },
          "minItems": 1,
          "uniqueItems": true,
          "description": "Defines the parent categories where this setting will be rendered in the visual hierarchy of the UI.\r\nInstead of the default behavior -- being placed based on the setting's moniker -- the setting will only be placed where specified by this property.\r\nThis property does not affect the setting's moniker.\r\nWhen using this property at least one placement must be specified.\r\nIf a setting defines an 'enableWhen' rule that references another setting using the \"${config:foo}\" placeholder,\r\nit must not also define 'placements'.",
          "title": "Placements"
        }
      },
      "required": [
        "type",
        "items",
        "default"
      ],
      "additionalProperties": false
    },
    "Typing.JsonVariant": {
      "type": [
        "boolean",
        "string",
        "number",
        "integer"
      ]
    }
  }
}