{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "$id": "https://raw.githubusercontent.com/microsoft/vcpkg-tool/main/docs/vcpkg.schema.json",
  "type": "object",
  "allOf": [
    {
      "properties": {
        "name": {
          "description": "The name of the top-level package",
          "$ref": "vcpkg-schema-definitions.schema.json#/definitions/identifier"
        },
        "version-string": {
          "description": "Text used to identify an arbitrary version",
          "type": "string",
          "pattern": "^[^#]+$"
        },
        "version": {
          "description": "A relaxed version string (1.2.3.4...)",
          "type": "string",
          "pattern": "^\\d+(\\.\\d+)*(?:-((?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\\.(?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\\+([0-9a-zA-Z-]+(?:\\.[0-9a-zA-Z-]+)*))?$"
        },
        "version-date": {
          "description": "A date version string (e.g. 2020-01-20)",
          "type": "string",
          "pattern": "^\\d{4}-\\d{2}-\\d{2}(\\.\\d+)*$"
        },
        "version-semver": {
          "$ref": "vcpkg-schema-definitions.schema.json#/definitions/semantic-version"
        },
        "port-version": {
          "$ref": "vcpkg-schema-definitions.schema.json#/definitions/port-version"
        },
        "maintainers": {
          "$ref": "vcpkg-schema-definitions.schema.json#/definitions/maintainers"
        },
        "summary": {
          "description": "A shorter description of the port or project.",
          "type": "string"
        },
        "description": {
          "$ref": "vcpkg-schema-definitions.schema.json#/definitions/description-field"
        },
        "homepage": {
          "description": "A url which points to the homepage of a package.",
          "type": "string",
          "format": "uri"
        },
        "documentation": {
          "description": "A url which points to the documentation of a package.",
          "type": "string",
          "format": "uri"
        },
        "license": {
          "$ref": "vcpkg-schema-definitions.schema.json#/definitions/license"
        },
        "builtin-baseline": {
          "description": "A vcpkg repository commit for version control.",
          "type": "string"
        },
        "dependencies": {
          "description": "Dependencies that are always required.",
          "type": "array",
          "items": {
            "$ref": "vcpkg-schema-definitions.schema.json#/definitions/dependency"
          }
        },
        "overrides": {
          "description": "Version overrides for dependencies.",
          "type": "array",
          "items": {
            "$ref": "vcpkg-schema-definitions.schema.json#/definitions/override"
          }
        },
        "features": {
          "description": "A map of features supported by the package",
          "type": "object",
          "patternProperties": {
            "": {
              "$ref": "vcpkg-schema-definitions.schema.json#/definitions/feature"
            }
          }
        },
        "default-features": {
          "description": "Features enabled by default with the package.",
          "type": "array",
          "items": {
            "$ref": "vcpkg-schema-definitions.schema.json#/definitions/dependency-feature"
          }
        },
        "supports": {
          "$ref": "vcpkg-schema-definitions.schema.json#/definitions/platform-expression"
        },
        "vcpkg-configuration": {
          "description": "Embedded vcpkg.configuration.json file.",
          "$ref": "vcpkg-configuration.schema.json"
        }
      },
      "patternProperties": {
        "^\\$": {}
      },
      "additionalProperties": false
    },
    {
      "$ref": "vcpkg-schema-definitions.schema.json#/definitions/has-zero-or-one-version"
    }
  ]
}