Skip to content

Commit 7fc30f6

Browse files
committed
fix: Documentation of Release and Artifact object
Signed-off-by: Piotr P. Karwasz <[email protected]>
1 parent 6f3735b commit 7fc30f6

File tree

2 files changed

+116
-75
lines changed

2 files changed

+116
-75
lines changed

spec/openapi.yaml

Lines changed: 18 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -384,7 +384,7 @@ components:
384384
- idType: PURL
385385
idValue: pkg:maven/org.apache.tomcat/[email protected]
386386
distributions:
387-
- id: zip
387+
- distributionType: zip
388388
description: Core binary distribution, zip archive
389389
identifiers:
390390
- idType: PURL
@@ -394,7 +394,7 @@ components:
394394
algValue: 9da736a1cdd27231e70187cbc67398d29ca0b714f885e7032da9f1fb247693c1
395395
url: https://repo.maven.apache.org/maven2/org/apache/tomcat/tomcat/11.0.7/tomcat-11.0.6.zip
396396
signatureUrl: https://repo.maven.apache.org/maven2/org/apache/tomcat/tomcat/11.0.7/tomcat-11.0.6.zip.asc
397-
- id: tar.gz
397+
- distributionType: tar.gz
398398
description: Core binary distribution, tar.gz archive
399399
identifiers:
400400
- idType: PURL
@@ -404,7 +404,7 @@ components:
404404
algValue: 2fcece641c62ba1f28e1d7b257493151fc44f161fb391015ee6a95fa71632fb9
405405
url: https://repo.maven.apache.org/maven2/org/apache/tomcat/tomcat/11.0.7/tomcat-11.0.6.tar.gz
406406
signatureUrl: https://repo.maven.apache.org/maven2/org/apache/tomcat/tomcat/11.0.7/tomcat-11.0.6.tar.gz.asc
407-
- id: windows-x64
407+
- distributionType: windows-x64.zip
408408
description: Core binary distribution, Windows x64 zip archive
409409
identifiers:
410410
- idType: PURL
@@ -414,7 +414,7 @@ components:
414414
algValue: 62a5c358d87a8ef21d7ec1b3b63c9bbb577453dda9c00cbb522b16cee6c23fc4
415415
url: https://repo.maven.apache.org/maven2/org/apache/tomcat/tomcat/11.0.7/tomcat-11.0.6-windows-x64.zip
416416
signatureUrl: https://repo.maven.apache.org/maven2/org/apache/tomcat/tomcat/11.0.7/tomcat-11.0.6.zip.asc
417-
- id: windows-msi
417+
- distributionType: windows-x64.exe
418418
description: Core binary distribution, Windows Service Installer (MSI)
419419
checksums:
420420
- algType: SHA_512
@@ -432,34 +432,34 @@ components:
432432
release-distribution:
433433
type: object
434434
properties:
435-
id:
435+
distributionType:
436436
type: string
437-
description: A short name for this release format
437+
description: Unique identifier for the distribution type.
438438
description:
439439
type: string
440-
description: A free text describing the component variant
440+
description: Free-text description of the distribution.
441441
identifiers:
442442
type: array
443-
description: List identifiers for this release format
443+
description: List of identifiers specific to this distribution.
444444
items:
445445
$ref: "#/components/schemas/identifier"
446446
url:
447447
type: string
448-
description: Direct download URL for the release format
448+
description: Direct download URL for the distribution.
449449
format: url
450450
signatureUrl:
451451
type: string
452-
description: Direct download URL for an external signature of the release format
452+
description: Direct download URL for the distribution's external signature.
453453
format: url
454454
checksums:
455455
type: array
456-
description: List of checksums for the release format
456+
description: List of checksums for the distribution.
457457
items:
458458
"$ref": "#/components/schemas/checksum"
459459
required:
460460
- id
461461
examples:
462-
- id: zip
462+
- distributionType: zip
463463
description: Core binary distribution, zip archive
464464
identifiers:
465465
- idType: PURL
@@ -469,7 +469,7 @@ components:
469469
algValue: 9da736a1cdd27231e70187cbc67398d29ca0b714f885e7032da9f1fb247693c1
470470
url: https://repo.maven.apache.org/maven2/org/apache/tomcat/tomcat/11.0.7/tomcat-11.0.6.zip
471471
signatureUrl: https://repo.maven.apache.org/maven2/org/apache/tomcat/tomcat/11.0.7/tomcat-11.0.6.zip.asc
472-
- id: tar.gz
472+
- distributionType: tar.gz
473473
description: Core binary distribution, tar.gz archive
474474
identifiers:
475475
- idType: PURL
@@ -479,7 +479,7 @@ components:
479479
algValue: 2fcece641c62ba1f28e1d7b257493151fc44f161fb391015ee6a95fa71632fb9
480480
url: https://repo.maven.apache.org/maven2/org/apache/tomcat/tomcat/11.0.7/tomcat-11.0.6.tar.gz
481481
signatureUrl: https://repo.maven.apache.org/maven2/org/apache/tomcat/tomcat/11.0.7/tomcat-11.0.6.tar.gz.asc
482-
- id: windows-x64
482+
- distributionType: windows-x64.zip
483483
description: Core binary distribution, Windows x64 zip archive
484484
identifiers:
485485
- idType: PURL
@@ -489,7 +489,7 @@ components:
489489
algValue: 62a5c358d87a8ef21d7ec1b3b63c9bbb577453dda9c00cbb522b16cee6c23fc4
490490
url: https://repo.maven.apache.org/maven2/org/apache/tomcat/tomcat/11.0.7/tomcat-11.0.6-windows-x64.zip
491491
signatureUrl: https://repo.maven.apache.org/maven2/org/apache/tomcat/tomcat/11.0.7/tomcat-11.0.6.zip.asc
492-
- id: windows-msi
492+
- distributionType: windows-x64.exe
493493
description: Core binary distribution, Windows Service Installer (MSI)
494494
checksums:
495495
- algType: SHA_512
@@ -596,11 +596,11 @@ components:
596596
type:
597597
description: Type of artifact
598598
"$ref": "#/components/schemas/artifact-type"
599-
componentFormats:
599+
distributionTypes:
600600
type: array
601601
description: |
602-
List of component formats that this artifact applies to.
603-
If absent, the artifact applies to all components.
602+
List of component distributions types that this artifact applies to.
603+
If absent, the artifact applies to all distributions.
604604
items:
605605
type: string
606606
description: |

tea-collection/tea-collection.md

Lines changed: 98 additions & 57 deletions
Original file line numberDiff line numberDiff line change
@@ -1,33 +1,51 @@
1-
# TEA release and collections
2-
3-
## The TEA release object (TRO)
4-
5-
The TEA Component Release object corresponds to a specific variant
6-
(version) of a component with a release identifier (string),
7-
release timestamp and a lifecycle enumeration for the release.
8-
The UUID of the TEA Component Release object matches the UUID of the associated TEA Collection objects (TCO).
9-
10-
A TEA Component Release object has the following parts:
11-
12-
- __uuid__: A unique identifier for the TEA Component Release
13-
- __version__: Version number
14-
- __releaseDate__: Timestamp of the release (for sorting purposes)
15-
- __preRelease__: A flag indicating pre-release (or beta) status.
16-
May be disabled after the creation of the release object, but can't be enabled after creation of an object.
17-
- __identifiers__: List of identifiers for the component
18-
- __idType__: Type of identifier, e.g. `tei`, `purl`, `cpe`
19-
- __idValue__: Identifier value
20-
- __formats__: List of different formats of this component release
21-
- __id__: A short name for this release format
22-
- __description__: A free text describing the component variant
23-
- __identifiers__: List identifiers for this release format
24-
- __idType__: Type of identifier, e.g. `tei`, `purl`, `cpe`
25-
- __idValue__: Identifier value
26-
- __url__: Direct download URL for the release format
27-
- __signatureUrl__: Direct download URL for an external signature of the release format
28-
- __checksums__: List of checksums for the release format
29-
- __algType__: Checksum algorithm
30-
- __algValue__: Checksum value
1+
# TEA Releases and Collections
2+
3+
## The TEA Component Release object (TRO)
4+
5+
A TEA Component Release object represents a specific version of a component,
6+
identified by a unique release identifier and associated metadata.
7+
Each release may include multiple distributions,
8+
which capture variations such as architecture, packaging, or localization.
9+
10+
- For software components,
11+
each distribution typically corresponds to a different digital file delivered to users
12+
(e.g., by platform or packaging type).
13+
- For hardware components, distributions may reflect differences in packaging, language, or other physical attributes.
14+
15+
Each distribution is assigned a unique `distributionType`, defined by the producer,
16+
which is used to associate relevant TEA Artifacts with that distribution.
17+
Since TEA Artifacts can be associated with multiple release objects,
18+
the taxonomy for `distributionType` values should be defined on a TEA service level
19+
and consistently applied to all TEA Artifacts published by that producer.
20+
This ensures global uniqueness and reliable association across releases.
21+
22+
The `uuid` of the TEA Component Release object is identical to the `uuid` of its associated
23+
[TEA Collection object (TCO)](#the-tea-collection-object-tco).
24+
25+
### Structure
26+
27+
A TEA Component Release object contains the following fields:
28+
29+
- __uuid__: Unique identifier for the TEA Component Release.
30+
- __version__: Version number of the release.
31+
- __createdDate__: Timestamp when the release object was created.
32+
- __releaseDate__: Timestamp of the actual release.
33+
- __preRelease__: Boolean flag indicating if this is a pre-release (e.g., beta).
34+
This flag can be disabled after creation, but not enabled.
35+
- __identifiers__: List of identifiers for the component.
36+
- __idType__: Type of identifier (e.g., `tei`, `purl`, `cpe`).
37+
- __idValue__: Value of the identifier.
38+
- __distributions__: List of release distributions, each with:
39+
- __distributionType__: Unique identifier for the distribution type.
40+
- __description__: Free-text description of the distribution.
41+
- __identifiers__: List of identifiers specific to this distribution.
42+
- __idType__: Type of identifier (e.g., `tei`, `purl`, `cpe`).
43+
- __idValue__: Value of the identifier.
44+
- __url__: Direct download URL for the distribution.
45+
- __signatureUrl__: Direct download URL for the distribution's external signature.
46+
- __checksums__: List of checksums for the distribution.
47+
- __algType__: Checksum algorithm used.
48+
- __algValue__: Checksum value.
3149

3250
### Examples
3351

@@ -129,32 +147,55 @@ The TEA Collection object has the following parts:
129147
- __type__: Type of update reason.
130148
See [reasons for TEA Collection update](#the-reason-for-tco-update-enum) below.
131149
- __comment__: Free text description.
132-
- __artifacts__: List of TEA artifact objects.
133-
See [below](#artifact-object).
134-
135-
### Artifact object
136-
137-
The TEA Artifact object has the following parts:
138-
139-
- __uuid__: UUID of the TEA Artifact object.
140-
- __name__: Artifact name.
141-
- __type__: Type of artifact.
142-
See [TEA Artifact types](#tea-artifact-types) for a list.
143-
- __componentFormats__:
144-
List of `id`s of component formats that this artifact applies to.
145-
If absent, the artifact applies to all components.
146-
- __formats__: List of objects with the same content, but in different formats.
147-
The order of the list has no significance.
148-
- __mime_type__: The MIME type of the document
149-
- __description__: A free text describing the artifact
150-
- __url__: Direct download URL for the artifact
151-
- __signature_url__: Direct download URL for an external signature of the artifact
152-
- __checksums__: List of checksums for the artifact
153-
- __algType__: Checksum algorithm
154-
See [CycloneDX checksum algorithms](https://cyclonedx.org/docs/1.6/json/#components_items_hashes_items_alg) for a list of supported values.
155-
- __algValue__: Checksum value
156-
157-
### The reason for TCO update enum
150+
-
151+
- __artifacts__: List of TEA artifact objects.
152+
See [below](#artifact-object).
153+
154+
## The TEA Artifact object
155+
156+
A TEA Artifact object represents a security-related document or file linked to a component release,
157+
such as an SBOM, VEX, attestation, or license.
158+
Artifacts are strictly **immutable**: if the underlying document changes, a new TEA Artifact object must be created.
159+
URLs referenced in this object must always resolve to the same resource to ensure that published checksums remain valid and verifiable.
160+
161+
TEA Artifacts can be reused across multiple TEA Collections,
162+
allowing the same document to be referenced by different component releases or even different components.
163+
This promotes consistency and reduces duplication.
164+
165+
Optionally, each artifact can specify the `distributionType` identifiers of the distributions it applies to.
166+
If this field is absent, the artifact is considered applicable to all distributions of the release.
167+
168+
### Structure
169+
170+
A TEA Artifact object contains the following fields:
171+
172+
- __uuid__: The UUID of the TEA Artifact object. This uniquely identifies the artifact.
173+
- __name__: A human-readable name for the artifact.
174+
- __type__: The type of artifact. See [TEA Artifact types](#tea-artifact-types) for allowed values (e.g., `BOM`, `VULNERABILITIES`, `LICENSE`).
175+
- __componentDistributions__ (optional):
176+
An array of `distributionType` identifiers indicating which distributions this artifact applies to.
177+
If omitted, the artifact applies to all distributions.
178+
- __formats__:
179+
An array of objects, each representing the same artifact content in a different format.
180+
The order of the list is not significant.
181+
Each format object includes:
182+
- __mime_type__: The MIME type of the document (e.g., `application/vnd.cyclonedx+xml`).
183+
- __description__: A free-text description of the artifact format.
184+
- __url__: A direct download URL for the artifact. This must point to an immutable resource.
185+
- __signature_url__ (optional): A direct download URL for a detached digital signature of the artifact, if available.
186+
- __checksums__:
187+
An array of checksum objects for the artifact, each containing:
188+
- __algType__: The checksum algorithm used (e.g., `SHA_256`, `SHA3_512`).
189+
- __algValue__: The checksum value as a string.
190+
191+
### Notes
192+
193+
- The `formats` array allows the same artifact to be provided in multiple encodings or serializations (e.g., JSON, XML).
194+
- The `checksums` field provides integrity verification for each artifact format.
195+
- The `signature_url` enables consumers to verify the authenticity of the artifact using detached signatures.
196+
- Artifacts should be published to stable, versioned URLs to ensure immutability and traceability.
197+
198+
## The reason for TCO update enum
158199

159200
| ENUM | Description |
160201
|------------------|----------------------------------------|
@@ -167,7 +208,7 @@ The TEA Artifact object has the following parts:
167208
Updates of VEX (CSAF) files may be handled in a different way by a TEA client,
168209
producing different alerts than other changes of a collection.
169210

170-
### TEA Artifact types
211+
## TEA Artifact types
171212

172213
| ENUM | Description |
173214
|-----------------|-------------------------------------------------------------------------------------|

0 commit comments

Comments
 (0)