?
u
m
/
p
1-9
0
`
The PURL Type Definition JSON Schema is the reference data model that is used to define PURL types in a structured way. Each PURL type is specified in a JSON document that matches this schema. These JSON documents are then used to generate PURL type documentation and to support PURL libraries and tools so that they can more easily parse, build, and validate PURLs by type in a consistent and standardized manner across programing languages and technology stacks.
Schema to specify a Package-URL (PURL) type as a structured definition.
Property | Type | Requirement | Description |
---|---|---|---|
type | String | Required | The type string for this Package-URL type. |
type_name | String | Required | The name for this PURL type. |
description | String | Required | The description of this PURL type. |
repository | Object | Required | The package repository usage for this PURL type. |
namespace_definition | Array | Required | Definition of the namespace component for this PURL type. The PURL namespace component must be required, optional or prohibited for a specific PURL type definition. |
name_definition | Array | Required | Definition of the name component for this PURL type. The PURL name component is required for all PURL type definitions. |
version_definition | Array | Optional | Definition of the version component for this PURL type. The PURL version component is optional for a specific PURL type definition. |
qualifiers_definition | Array | Optional | Definition of the qualifiers specific to this PURL type. The PURL qualifiers component is optional for a specific PURL type, but a qualifiers key or keys may be required for a specific PURL type. |
subpath_definition | Array | Optional | The definition for the subpath for this PURL type. The PURL subpath component is optional for a specific PURL type definition. |
examples | Array | Required | Example of valid, canonical PURLs for this package type. |
note | String | Optional | Note about this PURL type. |
reference_urls | Array | Optional | Optional list of informational reference URLs about this PURL type. |
^[a-z][a-z0-9-\.]+$
The type string for this Package-URL type.
The name for this PURL type.
The description of this PURL type.
The package repository usage for this PURL type.
Property | Type | Requirement | Description |
---|---|---|---|
use_repository | Boolean | Required | true if this PURL type uses a public package repository. |
default_repository_url | String | Optional | The default public repository URL for this PURL type. |
note | String | Optional | Extra note text. |
true if this PURL type uses a public package repository.
The default public repository URL for this PURL type.
Extra note text.
Definition of the namespace component for this PURL type. The PURL namespace component must be required, optional or prohibited for a specific PURL type definition.
Property | Type | Requirement | Description |
---|---|---|---|
requirement | Array | Required | States that the PURL namespace component is optional, required or prohibited for a PURL type. |
permitted_characters | String | Optional | A regular expression (ECMA-262 dialect) defining the 'Permitted characters' for this component of this Package-URL type. If provided, this must be a subset of the 'Permitted characters' defined in the PURL specification. |
case_sensitive | Boolean | Optional | true if this PURL component is case sensitive. If false, the canonical form must be lowercased. |
normalization_rules | Array | Optional | List of rules to normalize this component for this PURL type. These are plain text, unstructured rules as some require programming and cannot be enforced only with a schema. Tools are expected to apply these rules programmatically. |
native_name | String | Optional | The native name of this PURL component in the package ecosystem. For instance, the 'namespace' for the 'maven' type is 'groupId', and 'scope' for the 'npm' PURL type. |
note | String | Optional | Extra note text. |
States that the PURL namespace component is optional, required or prohibited for a PURL type.
States that this PURL component is optional for a PURL type.
States that this PURL component is required for a PURL type.
States that this PURL component is prohibited for a PURL type.
A regular expression (ECMA-262 dialect) defining the 'Permitted characters' for this component of this Package-URL type. If provided, this must be a subset of the 'Permitted characters' defined in the PURL specification.
true if this PURL component is case sensitive. If false, the canonical form must be lowercased.
List of rules to normalize this component for this PURL type. These are plain text, unstructured rules as some require programming and cannot be enforced only with a schema. Tools are expected to apply these rules programmatically. Each item of this array must be a string.
The native name of this PURL component in the package ecosystem. For instance, the 'namespace' for the 'maven' type is 'groupId', and 'scope' for the 'npm' PURL type.
Extra note text.
Definition of the name component for this PURL type. The PURL name component is required for all PURL type definitions.
Property | Type | Requirement | Description |
---|---|---|---|
requirement | Array | Required | States that the PURL name component is always required. |
permitted_characters | String | Optional | A regular expression (ECMA-262 dialect) defining the 'Permitted characters' for this component of this Package-URL type. If provided, this must be a subset of the 'Permitted characters' defined in the PURL specification. |
case_sensitive | Boolean | Optional | true if this PURL component is case sensitive. If false, the canonical form must be lowercased. |
normalization_rules | Array | Optional | List of rules to normalize this component for this PURL type. These are plain text, unstructured rules as some require programming and cannot be enforced only with a schema. Tools are expected to apply these rules programmatically. |
native_name | String | Optional | The native name of this PURL component in the package ecosystem. For instance, the 'namespace' for the 'maven' type is 'groupId', and 'scope' for the 'npm' PURL type. |
note | String | Optional | Extra note text. |
States that the PURL name component is always required.
States that this PURL component is required for a PURL type.
A regular expression (ECMA-262 dialect) defining the 'Permitted characters' for this component of this Package-URL type. If provided, this must be a subset of the 'Permitted characters' defined in the PURL specification.
true if this PURL component is case sensitive. If false, the canonical form must be lowercased.
List of rules to normalize this component for this PURL type. These are plain text, unstructured rules as some require programming and cannot be enforced only with a schema. Tools are expected to apply these rules programmatically. Each item of this array must be a string.
The native name of this PURL component in the package ecosystem. For instance, the 'namespace' for the 'maven' type is 'groupId', and 'scope' for the 'npm' PURL type.
Extra note text.
Definition of the version component for this PURL type. The PURL version component is optional for a specific PURL type definition.
Property | Type | Requirement | Description |
---|---|---|---|
requirement | Array | Required | States that the PURL version is optional. |
permitted_characters | String | Optional | A regular expression (ECMA-262 dialect) defining the 'Permitted characters' for this component of this Package-URL type. If provided, this must be a subset of the 'Permitted characters' defined in the PURL specification. |
case_sensitive | Boolean | Optional | true if this PURL component is case sensitive. If false, the canonical form must be lowercased. |
normalization_rules | Array | Optional | List of rules to normalize this component for this PURL type. These are plain text, unstructured rules as some require programming and cannot be enforced only with a schema. Tools are expected to apply these rules programmatically. |
native_name | String | Optional | The native name of this PURL component in the package ecosystem. For instance, the 'namespace' for the 'maven' type is 'groupId', and 'scope' for the 'npm' PURL type. |
note | String | Optional | Extra note text. |
States that the PURL version is optional.
States that this PURL component is optional for a PURL type.
A regular expression (ECMA-262 dialect) defining the 'Permitted characters' for this component of this Package-URL type. If provided, this must be a subset of the 'Permitted characters' defined in the PURL specification.
true if this PURL component is case sensitive. If false, the canonical form must be lowercased.
List of rules to normalize this component for this PURL type. These are plain text, unstructured rules as some require programming and cannot be enforced only with a schema. Tools are expected to apply these rules programmatically. Each item of this array must be a string.
The native name of this PURL component in the package ecosystem. For instance, the 'namespace' for the 'maven' type is 'groupId', and 'scope' for the 'npm' PURL type.
Extra note text.
Definition of the qualifiers specific to this PURL type. The PURL qualifiers component is optional for a specific PURL type, but a qualifiers key or keys may be required for a specific PURL type. Each item of this array must be a Qualifiers definition object.
The definition of a qualifier specific to this PURL type.
Property | Type | Requirement | Description |
---|---|---|---|
key | String | Required | The key for the qualifier. |
requirement | Array | Optional | States that a PURL qualifier key is optional or required for a PURL type. |
description | String | Required | The description of this qualifier. |
default_value | String | Optional | The optional default value of this qualifier if not provided. |
native_name | String | Optional | The equivalent native name for this qualifier key. |
The key for the qualifier.
States that a PURL qualifier key is optional or required for a PURL type.
States that this PURL component is optional for a PURL type.
States that this PURL component is required for a PURL type.
The description of this qualifier.
The optional default value of this qualifier if not provided.
The equivalent native name for this qualifier key.
The definition for the subpath for this PURL type. The PURL subpath component is optional for a specific PURL type definition.
Property | Type | Requirement | Description |
---|---|---|---|
requirement | Array | Required | States that the PURL subpath is optional. |
permitted_characters | String | Optional | A regular expression (ECMA-262 dialect) defining the 'Permitted characters' for this component of this Package-URL type. If provided, this must be a subset of the 'Permitted characters' defined in the PURL specification. |
case_sensitive | Boolean | Optional | true if this PURL component is case sensitive. If false, the canonical form must be lowercased. |
normalization_rules | Array | Optional | List of rules to normalize this component for this PURL type. These are plain text, unstructured rules as some require programming and cannot be enforced only with a schema. Tools are expected to apply these rules programmatically. |
native_name | String | Optional | The native name of this PURL component in the package ecosystem. For instance, the 'namespace' for the 'maven' type is 'groupId', and 'scope' for the 'npm' PURL type. |
note | String | Optional | Extra note text. |
States that the PURL subpath is optional.
States that this PURL component is optional for a PURL type.
A regular expression (ECMA-262 dialect) defining the 'Permitted characters' for this component of this Package-URL type. If provided, this must be a subset of the 'Permitted characters' defined in the PURL specification.
true if this PURL component is case sensitive. If false, the canonical form must be lowercased.
List of rules to normalize this component for this PURL type. These are plain text, unstructured rules as some require programming and cannot be enforced only with a schema. Tools are expected to apply these rules programmatically. Each item of this array must be a string.
The native name of this PURL component in the package ecosystem. For instance, the 'namespace' for the 'maven' type is 'groupId', and 'scope' for the 'npm' PURL type.
Extra note text.
^pkg:[a-z][a-z0-9-\.]+/.*$
Example of valid, canonical PURLs for this package type. Each item of this array must be a string.
Note about this PURL type.
Optional list of informational reference URLs about this PURL type. Each item of this array must be a string.