?um/p1-90`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.
Location: /
Type: Object
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 shall 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. |
Location: /type
Property: type (Required)
Type: String
Pattern Constraint: ^[a-z][a-z0-9-\.]+$
The type string for this Package-URL type.
Location: /type_name
Property: type_name (Required)
Type: String
The name for this PURL type.
Location: /description
Property: description (Required)
Type: String
The description of this PURL type.
Location: /repository
Property: repository (Required)
Type: Object
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. |
Location: /repository/use_repository
Property: use_repository (Required)
Type: Boolean
true if this PURL type uses a public package repository.
Location: /repository/default_repository_url
Property: default_repository_url (Optional)
Type: String
Format: URI as specified in RFC 3986
The default public repository URL for this PURL type.
Location: /repository/note
Property: note (Optional)
Type: String
Extra note text.
Location: /namespace_definition
Property: namespace_definition (Required)
Type: Object
Definition of the namespace component for this PURL type. The PURL namespace component shall 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 shall 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 shall 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. |
Location: /namespace_definition/requirement
Property: requirement (Required)
Type: String
States that the PURL namespace component is optional, required or prohibited for a PURL type.
Shall be one of:
Type: String
Constant: optional
States that this PURL component is optional for a PURL type.
Type: String
Constant: required
States that this PURL component is required for a PURL type.
Type: String
Constant: prohibited
States that this PURL component is prohibited for a PURL type.
Location: /namespace_definition/permitted_characters
Property: permitted_characters (Optional)
Type: String
Format: A regular expression dialect defined by ECMA-262
A regular expression (ECMA-262 dialect) defining the 'Permitted characters' for this component of this Package-URL type. If provided, this shall be a subset of the 'Permitted characters' defined in the PURL specification.
Location: /namespace_definition/case_sensitive
Property: case_sensitive (Optional)
Type: Boolean
Default Value: true
true if this PURL component is case sensitive. If false, the canonical form shall be lowercased.
Location: /namespace_definition/normalization_rules
Property: normalization_rules (Optional)
Type: array (of String)
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 shall be a string.
All items shall be unique.
Location: /namespace_definition/native_name
Property: native_name (Optional)
Type: 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.
Location: /namespace_definition/note
Property: note (Optional)
Type: String
Extra note text.
Location: /name_definition
Property: name_definition (Required)
Type: Object
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 shall 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 shall 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. |
Location: /name_definition/requirement
Property: requirement (Required)
Type: String
States that the PURL name component is always required.
Shall be one of:
Type: String
Constant: required
States that this PURL component is required for a PURL type.
Location: /name_definition/permitted_characters
Property: permitted_characters (Optional)
Type: String
Format: A regular expression dialect defined by ECMA-262
A regular expression (ECMA-262 dialect) defining the 'Permitted characters' for this component of this Package-URL type. If provided, this shall be a subset of the 'Permitted characters' defined in the PURL specification.
Location: /name_definition/case_sensitive
Property: case_sensitive (Optional)
Type: Boolean
Default Value: true
true if this PURL component is case sensitive. If false, the canonical form shall be lowercased.
Location: /name_definition/normalization_rules
Property: normalization_rules (Optional)
Type: array (of String)
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 shall be a string.
All items shall be unique.
Location: /name_definition/native_name
Property: native_name (Optional)
Type: 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.
Location: /name_definition/note
Property: note (Optional)
Type: String
Extra note text.
Location: /version_definition
Property: version_definition (Optional)
Type: Object
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 shall 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 shall 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. |
Location: /version_definition/requirement
Property: requirement (Required)
Type: String
States that the PURL version is optional.
Shall be one of:
Type: String
Constant: optional
States that this PURL component is optional for a PURL type.
Location: /version_definition/permitted_characters
Property: permitted_characters (Optional)
Type: String
Format: A regular expression dialect defined by ECMA-262
A regular expression (ECMA-262 dialect) defining the 'Permitted characters' for this component of this Package-URL type. If provided, this shall be a subset of the 'Permitted characters' defined in the PURL specification.
Location: /version_definition/case_sensitive
Property: case_sensitive (Optional)
Type: Boolean
Default Value: true
true if this PURL component is case sensitive. If false, the canonical form shall be lowercased.
Location: /version_definition/normalization_rules
Property: normalization_rules (Optional)
Type: array (of String)
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 shall be a string.
All items shall be unique.
Location: /version_definition/native_name
Property: native_name (Optional)
Type: 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.
Location: /version_definition/note
Property: note (Optional)
Type: String
Extra note text.
Location: /qualifiers_definition
Property: qualifiers_definition (Optional)
Type: Array
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 shall be a Qualifiers definition object.
Location: /qualifiers_definition/[]
Type: 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. |
Location: /qualifiers_definition/[]/key
Type: String
The key for the qualifier.
Location: /qualifiers_definition/[]/requirement
Type: String
States that a PURL qualifier key is optional or required for a PURL type.
Shall be one of:
Type: String
Constant: optional
States that this PURL component is optional for a PURL type.
Type: String
Constant: required
States that this PURL component is required for a PURL type.
Location: /qualifiers_definition/[]/description
Type: String
The description of this qualifier.
Location: /qualifiers_definition/[]/default_value
Type: String
The optional default value of this qualifier if not provided.
Location: /qualifiers_definition/[]/native_name
Type: String
The equivalent native name for this qualifier key.
All items shall be unique.
Location: /subpath_definition
Property: subpath_definition (Optional)
Type: Object
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 shall 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 shall 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. |
Location: /subpath_definition/requirement
Property: requirement (Required)
Type: String
States that the PURL subpath is optional.
Shall be one of:
Type: String
Constant: optional
States that this PURL component is optional for a PURL type.
Location: /subpath_definition/permitted_characters
Property: permitted_characters (Optional)
Type: String
Format: A regular expression dialect defined by ECMA-262
A regular expression (ECMA-262 dialect) defining the 'Permitted characters' for this component of this Package-URL type. If provided, this shall be a subset of the 'Permitted characters' defined in the PURL specification.
Location: /subpath_definition/case_sensitive
Property: case_sensitive (Optional)
Type: Boolean
Default Value: true
true if this PURL component is case sensitive. If false, the canonical form shall be lowercased.
Location: /subpath_definition/normalization_rules
Property: normalization_rules (Optional)
Type: array (of String)
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 shall be a string.
All items shall be unique.
Location: /subpath_definition/native_name
Property: native_name (Optional)
Type: 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.
Location: /subpath_definition/note
Property: note (Optional)
Type: String
Extra note text.
Location: /examples
Property: examples (Required)
Type: array (of String)
Pattern Constraint: ^pkg:[a-z][a-z0-9-\.]+/.*$
Example of valid, canonical PURLs for this package type. Each item of this array shall be a string.
All items shall be unique.
Location: /note
Property: note (Optional)
Type: String
Note about this PURL type.
Location: /reference_urls
Property: reference_urls (Optional)
Type: array (of String)
Format: URI as specified in RFC 3986
Optional list of informational reference URLs about this PURL type. Each item of this array shall be a string.
All items shall be unique.