Skip to main content

PURL Types

Package-URL type definitions

Each package manager, platform, type, or ecosystem has its own conventions and protocols to identify, locate, and provision software packages.

The package type is the component of a Package-URL that is used to capture this information with a short string such as 'maven', 'npm', 'nuget', 'gem', 'pypi', etc.

PURL type definitions are maintained in a set of JSON Schema files with a separate file for each PURL type. Each PURL type has a corresponding file of automatically generated documentation. There is also a simple index of all currently registered PURL types.

Registered PURL Types

Click on a type in the table to see the documentation for that type.

Note: The linked .md documentation pages are auto-generated from the PURL JSON Schema *-definition.json files located in the purl-spec repo. These .md files can be modified only by editing the underlying .json files.

Where to find PURL type information

How PURL Types are maintained

PURL type definitions are maintained as JSON definition files and JSON test files in the PURL specification repository. These JSON files serve as the source of truth and define the structure of each PURL type, including:

  • Namespace and name formatting rules
  • Supported qualifiers
  • Repository requirements
  • Mapping of PURL concepts to the native ecosystem concepts

How to Propose a New PURL Type

To propose a new PURL type, please start by creating an issue using the "Register a new PURL type" template in the PURL specification repository.

You may also want to create a draft PR to document the PURL component definitions. Ensure that your PURL component definitions follow the PURL Type Definition Schema. See also the ECMA-427 Core Specification.

Additional instructions to follow.