{
  "$schema": "https://packageurl.org/purl-schemas/purl-type-definition.schema-1.1.json",
  "$id": "https://packageurl.org/purl-types/vcpkg-definition.json",
  "type": "vcpkg",
  "type_name": "Vcpkg C/C++ packages",
  "description": "Packages from the vcpkg C/C++ package manager.",
  "repository": {
    "use_repository": true,
    "default_repository_url": "https://github.com/microsoft/vcpkg/",
    "note": "The absolute URL of the vcpkg registry where the package is available. If omitted, the default registry `https://github.com/microsoft/vcpkg` is assumed. For filesystem registries or [overlay ports](https://learn.microsoft.com/vcpkg/concepts/overlay-ports), the URL uses the `file` scheme."
  },
  "namespace_definition": {
    "requirement": "prohibited"
  },
  "name_definition": {
    "requirement": "required",
    "native_name": "package-name",
    "note": "The vcpkg package name."
  },
  "version_definition": {
    "requirement": "optional",
    "native_name": "package-version",
    "note": "The vcpkg package version."
  },
  "qualifiers_definition": [
    {
      "key": "port_version",
      "native_name": "port_version",
      "requirement": "optional",
      "description": "The vcpkg [port-version](https://learn.microsoft.com/vcpkg/reference/vcpkg-json#port-version). If omitted, the purl refers to port-version 0."
    },
    {
      "key": "repository_revision",
      "native_name": "repository_revision",
      "requirement": "optional",
      "description": "The full 40-character commit hash of the vcpkg registry baseline. For git registries this is the `baseline` field in `vcpkg-configuration.json`. A baseline fixes the state of the whole registry rather than a single port, and the same port version can be reached from many baselines, so the exact port recipe is pinned by the `vcs_url` git-tree instead. If omitted, the purl refers to the latest revision available."
    },
    {
      "key": "triplet",
      "native_name": "triplet",
      "requirement": "optional",
      "description": "The vcpkg [triplet](https://learn.microsoft.com/vcpkg/concepts/triplets) describing the target build configuration (architecture, operating system, and CRT/library linkage), for example `x64-windows` or `arm64-osx`. It describes the build target and does not affect package identity."
    },
    {
      "key": "vcs_url",
      "requirement": "optional",
      "description": "The `vcs_url` common qualifier carries the port's version-control URL in pip VCS form, for example `git+https://github.com/microsoft/vcpkg@<git-tree>`. Its git-tree pins the exact port recipe."
    }
  ],
  "note": "A purl may carry extra qualifiers that describe the context in which the package is used, such as build configuration or platform. Parsers shall tolerate these and may ignore any they do not expect. The `vcs_url` common qualifier carries the port's version-control URL in pip VCS form, for example `git+https://github.com/microsoft/vcpkg@<git-tree>`. Its git-tree pins the exact port recipe. The `features` qualifier, a comma-separated list of enabled vcpkg feature names, records which optional features were enabled at build time; it is informational and not currently normative.",
  "examples": [
    "pkg:vcpkg/bzip2@1.0.8?port_version=6",
    "pkg:vcpkg/zlib@1.3.1?triplet=x64-linux&vcs_url=git%2Bhttps:%2F%2Fgithub.com%2Fmicrosoft%2Fvcpkg%40b5d3197b1a8a3f4c2d9e0f1a2b3c4d5e6f708192",
    "pkg:vcpkg/ffmpeg@5.1.2?repository_url=https:%2F%2Fgithub.com%2Fazure-sdk%2Fvcpkg",
    "pkg:vcpkg/zlib@1.3.1?repository_url=https:%2F%2Fgithub.com%2Fazure-sdk%2Fvcpkg&triplet=x64-linux&vcs_url=git%2Bhttps:%2F%2Fgithub.com%2Fazure-sdk%2Fvcpkg%40b5d3197b1a8a3f4c2d9e0f1a2b3c4d5e6f708192",
    "pkg:vcpkg/llvm@15.0.7?repository_url=file:%2F%2F%2FC:%2Flocal-registry%2Fvcpkg",
    "pkg:vcpkg/bzip2@1.0.8?port_version=6&repository_revision=84a143e4caf6b70db57f28d04c41df4a85c480fa&triplet=x64-linux"
  ]
}
