Skip to content

Commit 46ab211

Browse files
authored
Merge branch 'main' into 2025-08-add-product-release-on-pr-186
Signed-off-by: Pavel Shukhman <[email protected]>
2 parents 62e1409 + 98f0ba1 commit 46ab211

File tree

4 files changed

+155
-32
lines changed

4 files changed

+155
-32
lines changed

.github/workflows/test-generate-api-clients.yaml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,9 @@ env:
1414
PYTHON_VERSION_DEFAULT: '3.12'
1515
POETRY_VERSION: '1.8.1'
1616

17+
# see https://docs.github.com/en/actions/writing-workflows/choosing-what-your-workflow-does/controlling-permissions-for-github_token
18+
permissions: {}
19+
1720
jobs:
1821
generate-library-code:
1922
name: Generate Library Code ${{ matrix.language }}

discovery/readme.md

Lines changed: 18 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,5 @@
11
# Transparency Exchange API - Discovery
22

3-
**NOTE**: _This is a proposal for the WG_
4-
53
- [From product identifier to API endpoint](#from-product-identifier-to-api-endpoint)
64
- [Advertising the TEI](#advertising-the-tei)
75
- [TEA Discovery - defining an extensible identifier](#tea-discovery---defining-an-extensible-identifier)
@@ -17,9 +15,10 @@
1715
## From product identifier to API endpoint
1816

1917
TEA Discovery is the connection between a product identifier and the API endpoint.
20-
A "product" is something that the customer aquires or downloads. It can be a bundle
21-
of many digital devices or software applications. A "product" normally also has an
22-
entry in a large corporation's asset inventory system.
18+
A "product" is something that the customer aquires or downloads - hardware and/or software.
19+
20+
It can be a bundle of many digital devices or software applications.
21+
A "product" normally also has an entry in a large corporation's asset inventory system.
2322

2423
A product identifier is embedded in a URN where the identifier is one of many existing
2524
identifiers or a random string - like an EAN or UPC bar code, UUID, product
@@ -37,6 +36,9 @@ The TEI for a product can be communicated to the user in many ways.
3736
- On the invoice or delivery note
3837
- For software with a GUI, in an "about" box
3938

39+
The user needs to get the TEI from the manufacturer, through a reseller or directly. The TEI
40+
is defined by the manufacturer and can normally not be derived from known information.
41+
4042
## TEA Discovery - defining an extensible identifier
4143

4244
TEA discovery is the process where a user with a product identifier can discover and download
@@ -48,20 +50,25 @@ and gives the vendor a name space to define product identifiers based on existin
4850
like EAN/UPC bar code, PURLs or other existing schemes. A given product may have multiple identifiers
4951
as long as they all resolve into the same destination.
5052

53+
The vendor needs to make sure that the TEI is unique within the vendor's name space. There is no
54+
intention to create any TEI registries.
55+
5156
## The TEI URN: An extensible identifier
5257

5358
The TEI, Transparency Exchange Identifier, is a URN schema that is extensible based on existing
5459
identifiers like EAN codes, PURL and other identifiers. It is based on a DNS name, which leads
5560
to global uniqueness without new registries.
5661

5762
The TEI can be shown in the software itself, in shipping documentation, in web pages and app stores.
58-
TEI is unique for a product, not a version of a software. The TEI consist of three core parts
63+
TEI is unique for a product, not a version of a product.
5964

6065
A TEI belongs to a single product. A product can have multiple TEIs - like one with a EAN/UPC
6166
barcode and one with the vendor's product number.
6267

6368
### TEI syntax
6469

70+
The TEI consists of three core parts
71+
6572
```text
6673
urn:tei:<type>:<domain-name>:<unique-identifier>
6774
````
@@ -149,6 +156,11 @@ urn:tei:uuid:cyclonedx.org:d4d9f54a-abcf-11ee-ac79-1a52914d44b1
149156
- GS1
150157
- STD
151158

159+
Note that if an identifier, like EAN, is used for multiple different products then this
160+
EAN code will not be unique for a given product and should not be used as an identifier.
161+
In this case, the vendor is recommended to create a separate identifier for each unique
162+
product sold by other means, like UUID or hash.
163+
152164
### TEI resolution using DNS
153165

154166
The `domain-name` part of the TEI is used in a DNS query to find one or multiple locations for
@@ -200,11 +212,6 @@ Always prefix with the https:// scheme. http (unencrypted) is not valid.
200212

201213
**NOTE:** The `/.well-known/tea` names space needs to be registred.
202214

203-
## The TEA Version Index
204-
205-
The resulting URL leads to the TEA version index, which is documented in another document.
206-
One redirect (302) is allowed in order to provide for aliasing, where a single product
207-
has many identifiers. The redirect should not lead to a separate web server.
208215

209216
## References
210217

spec/openapi.yaml

Lines changed: 130 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -547,6 +547,7 @@ components:
547547
#
548548
release:
549549
type: object
550+
description: A TEA Component Release
550551
properties:
551552
uuid:
552553
description: A unique identifier for the TEA Component Release
@@ -574,28 +575,63 @@ components:
574575
description: List of identifiers for the component
575576
items:
576577
"$ref": "#/components/schemas/identifier"
578+
distributions:
579+
type: array
580+
description: List of different formats of this component release
581+
items:
582+
"$ref": "#/components/schemas/release-distribution"
577583
# add lifecycle here
578584
required:
579585
- uuid
580586
- version
581587
- createdDate
582588
examples:
583-
# Apache Tomcat 11.0.6
589+
# Apache Tomcat 11.0.7
584590
- uuid: 605d0ecb-1057-40e4-9abf-c400b10f0345
585-
version: "11.0.6"
586-
createdDate: 2025-04-01T15:43:00Z
587-
releaseDate: 2025-04-01T15:43:00Z
591+
version: "11.0.7"
592+
createdDate: 2025-05-07T18:08:00Z
593+
releaseDate: 2025-05-12T18:08:00Z
588594
identifiers:
589595
- idType: PURL
590-
idValue: pkg:maven/org.apache.tomcat/[email protected]
591-
# Different release of Apache Tomcat
592-
- uuid: da89e38e-95e7-44ca-aa7d-f3b6b34c7fab
593-
version: "10.1.40"
594-
createdDate: 2025-04-01T18:20:00Z
595-
releaseDate: 2025-04-01T18:20:00Z
596-
identifiers:
597-
- idType: PURL
598-
idValue: pkg:maven/org.apache.tomcat/[email protected]
596+
idValue: pkg:maven/org.apache.tomcat/[email protected]
597+
distributions:
598+
- distributionType: zip
599+
description: Core binary distribution, zip archive
600+
identifiers:
601+
- idType: PURL
602+
idValue: pkg:maven/org.apache.tomcat/[email protected]?type=zip
603+
checksums:
604+
- algType: SHA_256
605+
algValue: 9da736a1cdd27231e70187cbc67398d29ca0b714f885e7032da9f1fb247693c1
606+
url: https://repo.maven.apache.org/maven2/org/apache/tomcat/tomcat/11.0.7/tomcat-11.0.6.zip
607+
signatureUrl: https://repo.maven.apache.org/maven2/org/apache/tomcat/tomcat/11.0.7/tomcat-11.0.6.zip.asc
608+
- distributionType: tar.gz
609+
description: Core binary distribution, tar.gz archive
610+
identifiers:
611+
- idType: PURL
612+
idValue: pkg:maven/org.apache.tomcat/[email protected]?type=tar.gz
613+
checksums:
614+
- algType: SHA_256
615+
algValue: 2fcece641c62ba1f28e1d7b257493151fc44f161fb391015ee6a95fa71632fb9
616+
url: https://repo.maven.apache.org/maven2/org/apache/tomcat/tomcat/11.0.7/tomcat-11.0.6.tar.gz
617+
signatureUrl: https://repo.maven.apache.org/maven2/org/apache/tomcat/tomcat/11.0.7/tomcat-11.0.6.tar.gz.asc
618+
- distributionType: windows-x64.zip
619+
description: Core binary distribution, Windows x64 zip archive
620+
identifiers:
621+
- idType: PURL
622+
idValue: pkg:maven/org.apache.tomcat/[email protected]?classifier=windows-x64&type=zip
623+
checksums:
624+
- algType: SHA_256
625+
algValue: 62a5c358d87a8ef21d7ec1b3b63c9bbb577453dda9c00cbb522b16cee6c23fc4
626+
url: https://repo.maven.apache.org/maven2/org/apache/tomcat/tomcat/11.0.7/tomcat-11.0.6-windows-x64.zip
627+
signatureUrl: https://repo.maven.apache.org/maven2/org/apache/tomcat/tomcat/11.0.7/tomcat-11.0.6.zip.asc
628+
- distributionType: windows-x64.exe
629+
description: Core binary distribution, Windows Service Installer (MSI)
630+
checksums:
631+
- algType: SHA_512
632+
algValue: 1d3824e7643c8aba455ab0bd9e67b14a60f2aaa6aa7775116bce40eb0579e8ced162a4f828051d3b867e96ee2858ec5da0cc654e83a83ba30823cbea0df4ff96
633+
url: https://dlcdn.apache.org/tomcat/tomcat-11/v11.0.7/bin/apache-tomcat-11.0.7.exe
634+
signatureUrl: https://downloads.apache.org/tomcat/tomcat-11/v11.0.7/bin/apache-tomcat-11.0.7.exe.asc
599635
# A pre-release of Apache Tomcat
600636
- uuid: 95f481df-f760-47f4-b2f2-f8b76d858450
601637
version: "11.0.0-M26"
@@ -604,6 +640,74 @@ components:
604640
identifiers:
605641
- idType: PURL
606642
idValue: pkg:maven/org.apache.tomcat/[email protected]
643+
release-distribution:
644+
type: object
645+
properties:
646+
distributionType:
647+
type: string
648+
description: Unique identifier for the distribution type.
649+
description:
650+
type: string
651+
description: Free-text description of the distribution.
652+
identifiers:
653+
type: array
654+
description: List of identifiers specific to this distribution.
655+
items:
656+
$ref: "#/components/schemas/identifier"
657+
url:
658+
type: string
659+
description: Direct download URL for the distribution.
660+
format: url
661+
signatureUrl:
662+
type: string
663+
description: Direct download URL for the distribution's external signature.
664+
format: url
665+
checksums:
666+
type: array
667+
description: List of checksums for the distribution.
668+
items:
669+
"$ref": "#/components/schemas/checksum"
670+
required:
671+
- id
672+
examples:
673+
- distributionType: zip
674+
description: Core binary distribution, zip archive
675+
identifiers:
676+
- idType: PURL
677+
idValue: pkg:maven/org.apache.tomcat/[email protected]?type=zip
678+
checksums:
679+
- algType: SHA_256
680+
algValue: 9da736a1cdd27231e70187cbc67398d29ca0b714f885e7032da9f1fb247693c1
681+
url: https://repo.maven.apache.org/maven2/org/apache/tomcat/tomcat/11.0.7/tomcat-11.0.6.zip
682+
signatureUrl: https://repo.maven.apache.org/maven2/org/apache/tomcat/tomcat/11.0.7/tomcat-11.0.6.zip.asc
683+
- distributionType: tar.gz
684+
description: Core binary distribution, tar.gz archive
685+
identifiers:
686+
- idType: PURL
687+
idValue: pkg:maven/org.apache.tomcat/[email protected]?type=tar.gz
688+
checksums:
689+
- algType: SHA_256
690+
algValue: 2fcece641c62ba1f28e1d7b257493151fc44f161fb391015ee6a95fa71632fb9
691+
url: https://repo.maven.apache.org/maven2/org/apache/tomcat/tomcat/11.0.7/tomcat-11.0.6.tar.gz
692+
signatureUrl: https://repo.maven.apache.org/maven2/org/apache/tomcat/tomcat/11.0.7/tomcat-11.0.6.tar.gz.asc
693+
- distributionType: windows-x64.zip
694+
description: Core binary distribution, Windows x64 zip archive
695+
identifiers:
696+
- idType: PURL
697+
idValue: pkg:maven/org.apache.tomcat/[email protected]?classifier=windows-x64&type=zip
698+
checksums:
699+
- algType: SHA_256
700+
algValue: 62a5c358d87a8ef21d7ec1b3b63c9bbb577453dda9c00cbb522b16cee6c23fc4
701+
url: https://repo.maven.apache.org/maven2/org/apache/tomcat/tomcat/11.0.7/tomcat-11.0.6-windows-x64.zip
702+
signatureUrl: https://repo.maven.apache.org/maven2/org/apache/tomcat/tomcat/11.0.7/tomcat-11.0.6.zip.asc
703+
- distributionType: windows-x64.exe
704+
description: Core binary distribution, Windows Service Installer (MSI)
705+
checksums:
706+
- algType: SHA_512
707+
algValue: 1d3824e7643c8aba455ab0bd9e67b14a60f2aaa6aa7775116bce40eb0579e8ced162a4f828051d3b867e96ee2858ec5da0cc654e83a83ba30823cbea0df4ff96
708+
url: https://dlcdn.apache.org/tomcat/tomcat-11/v11.0.7/bin/apache-tomcat-11.0.7.exe
709+
signatureUrl: https://downloads.apache.org/tomcat/tomcat-11/v11.0.7/bin/apache-tomcat-11.0.7.exe.asc
710+
607711

608712
#
609713
# TEA Collection and related objects
@@ -713,6 +817,15 @@ components:
713817
type:
714818
description: Type of artifact
715819
"$ref": "#/components/schemas/artifact-type"
820+
distributionTypes:
821+
type: array
822+
description: |
823+
List of component distributions types that this artifact applies to.
824+
If absent, the artifact applies to all distributions.
825+
items:
826+
type: string
827+
description: |
828+
The `id` of the component format that this artifact applies to.
716829
formats:
717830
type: array
718831
description: |
@@ -757,17 +870,17 @@ components:
757870
type: array
758871
description: List of checksums for the artifact
759872
items:
760-
"$ref": "#/components/schemas/artifact-checksum"
761-
artifact-checksum:
873+
"$ref": "#/components/schemas/checksum"
874+
checksum:
762875
type: object
763876
properties:
764877
algType:
765878
description: Checksum algorithm
766-
"$ref": "#/components/schemas/artifact-checksum-type"
879+
"$ref": "#/components/schemas/checksum-type"
767880
algValue:
768881
type: string
769882
description: Checksum value
770-
artifact-checksum-type:
883+
checksum-type:
771884
type: string
772885
description: Checksum algorithm
773886
enum:

tea-collection/tea-collection.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -33,14 +33,14 @@ A TEA Component Release object contains the following fields:
3333
- __preRelease__: Boolean flag indicating if this is a pre-release (e.g., beta).
3434
This flag can be disabled after creation, but not enabled.
3535
- __identifiers__: List of identifiers for the component.
36-
- __idType__: Type of identifier (e.g., `TEI`, `PURL`, `CPE`).
37-
- __idValue__: Value of the identifier.
36+
- __idType__: Type of identifier (e.g., `TEI`, `PURL`, `CPE`).
37+
- __idValue__: Value of the identifier.
3838
- __distributions__: List of release distributions, each with:
3939
- __distributionType__: Unique identifier for the distribution type.
4040
- __description__: Free-text description of the distribution.
4141
- __identifiers__: List of identifiers specific to this distribution.
42-
- __idType__: Type of identifier (e.g., `TEI`, `PURL`, `CPE`).
43-
- __idValue__: Value of the identifier.
42+
- __idType__: Type of identifier (e.g., `TEI`, `PURL`, `CPE`).
43+
- __idValue__: Value of the identifier.
4444
- __url__: Direct download URL for the distribution.
4545
- __signatureUrl__: Direct download URL for the distribution's external signature.
4646
- __checksums__: List of checksums for the distribution.

0 commit comments

Comments
 (0)