{
  "$schema": "https://packageurl.org/schemas/purl-type-definition.schema-1.0.json",
  "$id": "https://packageurl.org/types/cpan-definition.json",
  "type": "cpan",
  "type_name": "CPAN",
  "description": "Perl package distributions published on CPAN",
  "repository": {
    "use_repository": true,
    "default_repository_url": "https://www.cpan.org/"
  },
  "namespace_definition": {
    "requirement": "required",
    "native_name": "CPAN ID of the author/publisher",
    "note": "It MUST be written uppercase and is required"
  },
  "name_definition": {
    "requirement": "required",
    "case_sensitive": true,
    "native_name": "distribution name",
    "note": "The name is the distribution name and is case sensitive. A distribution name MUST NOT contain the string '::'"
  },
  "version_definition": {
    "note": "The version is the distribution version",
    "requirement": "optional",
    "native_name": "version"
  },
  "qualifiers_definition": [
    {
      "key": "repository_url",
      "requirement": "optional",
      "description": "CPAN/MetaCPAN/BackPAN/DarkPAN repository base URL"
    },
    {
      "key": "download_url",
      "requirement": "optional",
      "description": "URL of package or distribution"
    },
    {
      "key": "vcs_url",
      "requirement": "optional",
      "description": "extra URL for a package version control system"
    },
    {
      "key": "ext",
      "requirement": "optional",
      "description": "file extension",
      "default_value": "tar.gz"
    }
  ],
  "note":"The previous CPAN PURL type specification allowed module names (e.g. URI::PackageURL) to be used as PURL 'name' while also omitting the PURL 'namespace'. The parser MUST emit an error when a module is specified as a PURL 'name' or detect '::' characters.",
  "examples": [
    "pkg:cpan/GDT/URI-PackageURL",
    "pkg:cpan/OALDERS/libwww-perl@6.76",
    "pkg:cpan/DROLSKY/DateTime@1.55?repository_url=backpan.perl.org"
  ]
}
