Skip to content

Commit 4142a03

Browse files
Merge pull request #186 from oej/add-link-to-release
Adding a "componentref" structure in the product definition
2 parents 98f0ba1 + 6d8f320 commit 4142a03

File tree

3 files changed

+67
-24
lines changed

3 files changed

+67
-24
lines changed

README.md

Lines changed: 16 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -32,16 +32,16 @@ tags in the repository as well as in the slack channel.
3232
## Introduction
3333

3434
This specification defines a standard, format agnostic, API for the exchange of
35-
product related artefacts, like BOMs, between systems. The work includes:
35+
product related artifacts, like BOMs, between systems. The work includes:
3636

3737
- [Discovery of servers](/discovery/readme.md): Describes discovery using the Transparency Exchange Identifier (TEI)
38-
- Retrieval of artefacts
39-
- Publication of artefacts
38+
- Retrieval of artifacts
39+
- Publication of artifacts
4040
- Authentication and authorization
4141
- Querying
4242

4343
System and tooling implementors are encouraged to adopt this API standard for
44-
sending/receiving transparency artefacts between systems.
44+
sending/receiving transparency artifacts between systems.
4545
This will enable more widespread
4646
"out of the box" integration support in the BOM ecosystem.
4747

@@ -54,13 +54,19 @@ The working group has produced a list of use cases and requirements for the prot
5454

5555
## Data model
5656

57-
- [TEA Product](tea-product/tea-product): This is the starting point. A "product" is something for sale or distributed as an Open Source project. The [Transparency Exchange Identifier, TEI](/discovery/readme.md) points to a single product.
58-
- [TEA Component index](tea-component/tea-component.md): A Component index is a version entry. The Component version index has one entry per version of the product.
59-
- [TEA Collection](tea-collection/tea-collection.md): The collection is a list of artefacts for a specific version. The collection can be dynamic or static, depending on the implemenation.
57+
- [TEA Product](tea-product/tea-product): This is the starting point. A "product" is something for sale or distributed as an Open Source project. The [Transparency Exchange Identifier, TEI](/discovery/readme.md) points to a single product. A product can have multiple TEIs.
58+
- [TEA Component](tea-component/tea-component.md): A Component is a versioned part of the product. In many cases, the product has a single component,
59+
and in other cases a product consists of multiple components.
60+
- TEA Components has a list of "releases" for each component.
61+
- [TEA Collection](tea-collection/tea-collection.md): The collection is a list of artifacts for a specific release. The collection can be
62+
dynamic or static, depending on the implemenation. TEA collections are versioned to indicate a change for a specific release,
63+
like an update of a VEX file or a correction of an SBOM.
64+
- [TEA Artifacts](tea-artifact/tea-artifact.md): The artifact is a file associated with the collection. One artifact can be part of many collections,
65+
for multiple components.
6066

61-
## Artefacts available of the API
67+
## artifacts available of the API
6268

63-
The Transparency Exchange API (TEA) supports publication and retrieval of a set of transparency exchange artefacts. The API itself should not be restricting the types of the artefacts. A few examples:
69+
The Transparency Exchange API (TEA) supports publication and retrieval of a set of transparency exchange artifacts. The API itself should not be restricting the types of the artifacts. A few examples:
6470

6571
### xBOM
6672

@@ -78,7 +84,7 @@ Vulnerability Disclosure Reports (VDR) and Vulnerability Exploitability eXchange
7884

7985
Product lifecycle events that are captured and communicated through the Common Lifecycle Enumeration will be supported. This includes product rebranding, repackaging, mergers and acquisitions, and product milestone events such as end-of-life and end-of-support.
8086

81-
### Insights
87+
## Insights
8288

8389
Much of the focus on Software Transparency from the U.S. Government and others center around the concept of “full transparency”. Consumers often need to ingest, process, and analyze SBOMs or VEXs just to be able to answer simple questions such as:
8490

spec/openapi.yaml

Lines changed: 33 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -266,14 +266,18 @@ components:
266266
description: Product name
267267
identifiers:
268268
type: array
269-
description: List of identifiers for the product
269+
description: |
270+
List of identifiers for the product, like TEI, CPE, PURL or other identifiers
270271
items:
271272
"$ref": "#/components/schemas/identifier"
272273
components:
273274
type: array
274-
description: List of TEA components for the product
275+
description: |
276+
List of TEA component-refs for the product. The component-ref by default just
277+
includes the UUID of the component, but in some cases also include a reference
278+
to the UUID of a specific release.
275279
items:
276-
description: Unique identifier of the TEA component
280+
description: Unique identifier of the TEA component-ref
277281
"$ref": "#/components/schemas/uuid"
278282
required:
279283
- uuid
@@ -288,10 +292,6 @@ components:
288292
idValue: cpe:2.3:a:apache:log4j
289293
- idType: PURL
290294
idValue: pkg:maven/org.apache.logging.log4j/log4j-api
291-
- idType: PURL
292-
idValue: pkg:maven/org.apache.logging.log4j/log4j-core
293-
- idType: PURL
294-
idValue: pkg:maven/org.apache.logging.log4j/log4j-layout-template-json
295295
components:
296296
- 3910e0fd-aff4-48d6-b75f-8bf6b84687f0
297297
- b844c9bd-55d6-478c-af59-954a932b6ad3
@@ -334,6 +334,32 @@ components:
334334
- idType: PURL
335335
idValue: pkg:maven/org.apache.logging.log4j/log4j-core
336336

337+
#
338+
# Reference to a component, in some cases directly to a specific release
339+
#
340+
# The release reference (release UUID) is only used in cases where a product
341+
# name incldues a version and this version of the product always include
342+
# the same releases of the component.
343+
component-ref:
344+
type: object
345+
description: A reference to a TEA component or specific component release
346+
properties:
347+
uuid:
348+
description: A unique identifier for the TEA component
349+
"$ref": "#/components/schemas/uuid"
350+
release:
351+
type: string
352+
description: |
353+
Optional UUID of a specific release included in the product in the case where the product
354+
always include a specific release of a component. The product name should include a version
355+
identifier in this case.
356+
items:
357+
"$ref": "#/components/schemas/uuid"
358+
required:
359+
- uuid
360+
361+
362+
337363
#
338364
# TEA Release and related objects
339365
#

tea-product/tea-product.md

Lines changed: 18 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,8 @@ which can be a single unit or multiple units in a bundle.
1010
will be multiple TEA COMPONENT objects.
1111

1212
In addition, all known TEIs for the product will be returned,
13-
in order for a TEA client to avoid duplication.
13+
in order for a TEA client to avoid duplication. This list can
14+
also include known Package URLs (PURL) and CPEs for the product.
1415

1516
## Authorization
1617

@@ -20,9 +21,11 @@ which products and versions are supported for a specific user.
2021
## Composite products
2122

2223
If a product consists of a set of products, each with a different
23-
version number and update scheme, a TEA bundle will be the starting
24-
point of discovery. The TEA bundle will list all included parts
25-
and include pointers (URLs) to the TEA index for these.
24+
version number and update scheme, a TEA "bundle" will be the starting
25+
point of discovery. The TEA product will list all included components
26+
with the UUID of the TEA component. The reference list may also include
27+
a UUID of a specific release of a component in the case where a product
28+
always includes a single release of the component.
2629

2730
The URL can be to a different vendor or different site with the
2831
same vendor.
@@ -38,6 +41,7 @@ A TEA Product object has the following parts:
3841
- __idValue__: Identifier value
3942
- __components__: List of TEA components for the product
4043
- __uuid__: Unique identifier of the TEA component
44+
- __release__: Optional UUID of a TEA component release
4145

4246
The TEA Component UUID is used in the Component API to find out which versions
4347
of the Component that exists.
@@ -73,9 +77,16 @@ An example of a product consisting of an OSS project and all its Maven artifacts
7377
}
7478
],
7579
"components": [
76-
"3910e0fd-aff4-48d6-b75f-8bf6b84687f0",
77-
"b844c9bd-55d6-478c-af59-954a932b6ad3",
78-
"d6d3f754-d4f4-4672-b096-b994b064ca2d"
80+
{
81+
"uuid": "3910e0fd-aff4-48d6-b75f-8bf6b84687f0",
82+
"release": "c1f2f9c4-d86e-4007-b61c-a53dc36f3e72"
83+
},
84+
{
85+
"uuid": "b844c9bd-55d6-478c-af59-954a932b6ad3"
86+
},
87+
{
88+
"uuid": "d6d3f754-d4f4-4672-b096-b994b064ca2d"
89+
}
7990
]
8091
}
8192
```

0 commit comments

Comments
 (0)