Skip to content

Commit 12c4d1a

Browse files
committed
Change line lenght to 80
1 parent 5b296df commit 12c4d1a

File tree

11 files changed

+340
-232
lines changed

11 files changed

+340
-232
lines changed

.dprint.json

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
{
2-
"lineWidth": 120,
2+
"lineWidth": 80,
33
"markdown": {
44
"textWrap": "always",
5-
"lineWidth": 120
5+
"lineWidth": 80
66
},
77
"includes": ["**/*.md"],
88
"excludes": [
@@ -13,4 +13,4 @@
1313
"plugins": [
1414
"https://plugins.dprint.dev/markdown-0.16.3.wasm"
1515
]
16-
}
16+
}

README.md

Lines changed: 52 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -8,89 +8,106 @@
88

99
# CycloneDX Transparency Exchange API Standard
1010

11-
The Transparency Exchange API is being worked on within the CycloneDX community with the goal to standardise the API in
12-
ECMA. A working group within ECMA TC54 has been formed - TC54 TG1. The working group has a slack channel in the
11+
The Transparency Exchange API is being worked on within the CycloneDX community
12+
with the goal to standardise the API in ECMA. A working group within ECMA TC54
13+
has been formed - TC54 TG1. The working group has a slack channel in the
1314
CycloneDX slack space.
1415

1516
![](images/tealogo.png)
1617

1718
## Introduction
1819

19-
This specification defines a standard, format agnostic, API for the exchange of product related artefacts, like BOMs,
20-
between systems. The work includes:
20+
This specification defines a standard, format agnostic, API for the exchange of
21+
product related artefacts, like BOMs, between systems. The work includes:
2122

22-
- [Discovery of servers](/discovery/readme.md): Describes discovery using the Transparency Exchange Identifier (TEI)
23+
- [Discovery of servers](/discovery/readme.md): Describes discovery using the
24+
Transparency Exchange Identifier (TEI)
2325
- Retrieval of artefacts
2426
- Publication of artefacts
2527
- Authentication and authorization
2628
- Querying
2729

28-
System and tooling implementors are encouraged to adopt this API standard for sending/receiving transparency artefacts
29-
between systems. This will enable more widespread "out of the box" integration support in the BOM ecosystem.
30+
System and tooling implementors are encouraged to adopt this API standard for
31+
sending/receiving transparency artefacts between systems. This will enable more
32+
widespread "out of the box" integration support in the BOM ecosystem.
3033

3134
## Use cases and requirements
3235

33-
The working group has produced a list of use cases and requirements for the protocol.
36+
The working group has produced a list of use cases and requirements for the
37+
protocol.
3438

3539
- [TEA requirements](doc/tea-requirements.md)
3640
- [TEA use cases](doc/tea-usecases.md)
3741

3842
## Data model
3943

40-
- [TEA Product index](tea-index/tea-index.md): This is the starting point. A "product" is something for sale. The
41-
[Transparency Exchange Identifier, TEI](/discovery/readme.md) points to a single product.
42-
- [TEA Leaf index](tea-leaf/tea-leaf.md): A leaf is a version entry. The leaf index has one entry per version of the
43-
product.
44-
- [TEA Collection](tea-collection/tea-collection.md): The collection is a list of artefacts for a specific version. The
45-
collection can be dynamic or static, depending on the implemenation.
44+
- [TEA Product index](tea-index/tea-index.md): This is the starting point. A
45+
"product" is something for sale. The
46+
[Transparency Exchange Identifier, TEI](/discovery/readme.md) points to a
47+
single product.
48+
- [TEA Leaf index](tea-leaf/tea-leaf.md): A leaf is a version entry. The leaf
49+
index has one entry per version of the product.
50+
- [TEA Collection](tea-collection/tea-collection.md): The collection is a list
51+
of artefacts for a specific version. The collection can be dynamic or static,
52+
depending on the implemenation.
4653

4754
## Artefacts available of the API
4855

49-
The Transparency Exchange API (TEA) supports publication and retrieval of a set of transparency exchange artefacts. The
50-
API itself should not be restricting the types of the artefacts. A few examples:
56+
The Transparency Exchange API (TEA) supports publication and retrieval of a set
57+
of transparency exchange artefacts. The API itself should not be restricting the
58+
types of the artefacts. A few examples:
5159

5260
### xBOM
5361

54-
Bill of materials for any type of component and service are supported. This includes, but is not limited to, SBOM, HBOM,
55-
AI/ML-BOM, SaaSBOM, and CBOM. The API provides a BOM format agnostic way of publishing, searching, and retrieval of xBOM
56-
artifacts.
62+
Bill of materials for any type of component and service are supported. This
63+
includes, but is not limited to, SBOM, HBOM, AI/ML-BOM, SaaSBOM, and CBOM. The
64+
API provides a BOM format agnostic way of publishing, searching, and retrieval
65+
of xBOM artifacts.
5766

5867
### CDXA
5968

60-
Standards and requirements along with attestations to those standards and requirements are captured and supported by
61-
CycloneDX Attestations (CDXA). Much like xBOM, these are supply chain artifacts that are captured allowing for
69+
Standards and requirements along with attestations to those standards and
70+
requirements are captured and supported by CycloneDX Attestations (CDXA). Much
71+
like xBOM, these are supply chain artifacts that are captured allowing for
6272
consistent publishing, searching, and retrieval.
6373

6474
### VDR/VEX
6575

66-
Vulnerability Disclosure Reports (VDR) and Vulnerability Exploitability eXchange (VEX) are supported artifact types.
67-
Like the xBOM element, the VDR/VEX support is format agnostic. However, CSAF has its own distribution requirements that
68-
may not be compatible with APIs. Therefore, the initial focus will be on CycloneDX (VDR and VEX) and OpenVEX.
76+
Vulnerability Disclosure Reports (VDR) and Vulnerability Exploitability eXchange
77+
(VEX) are supported artifact types. Like the xBOM element, the VDR/VEX support
78+
is format agnostic. However, CSAF has its own distribution requirements that may
79+
not be compatible with APIs. Therefore, the initial focus will be on CycloneDX
80+
(VDR and VEX) and OpenVEX.
6981

7082
### CLE
7183

72-
Product lifecycle events that are captured and communicated through the Common Lifecycle Enumeration will be supported.
73-
This includes product rebranding, repackaging, mergers and acquisitions, and product milestone events such as
84+
Product lifecycle events that are captured and communicated through the Common
85+
Lifecycle Enumeration will be supported. This includes product rebranding,
86+
repackaging, mergers and acquisitions, and product milestone events such as
7487
end-of-life and end-of-support.
7588

7689
### Insights
7790

78-
Much of the focus on Software Transparency from the U.S. Government and others center around the concept of "full
79-
transparency". Consumers often need to ingest, process, and analyze SBOMs or VEXs just to be able to answer simple
91+
Much of the focus on Software Transparency from the U.S. Government and others
92+
center around the concept of "full transparency". Consumers often need to
93+
ingest, process, and analyze SBOMs or VEXs just to be able to answer simple
8094
questions such as:
8195

8296
- Do any of my licensed products from Vendor A use Apache Struts?
83-
- Are any of my licensed products from Vendor A vulnerable to log4shell and is there any action I need to take?
97+
- Are any of my licensed products from Vendor A vulnerable to log4shell and is
98+
there any action I need to take?
8499

85-
Insights allows for "limited transparency" that can be asked and answered using an expression language that can be
86-
tightly scoped or outcome-driven. Insights also removes the complexities of BOM format conversion away from the
87-
consumers. An object model derived from CycloneDX will be an integral part of this API, since the objects within
88-
CycloneDX are self-contained (thus API friendly) and the specification supports all the necessary xBOM types along with
89-
CDXA.
100+
Insights allows for "limited transparency" that can be asked and answered using
101+
an expression language that can be tightly scoped or outcome-driven. Insights
102+
also removes the complexities of BOM format conversion away from the consumers.
103+
An object model derived from CycloneDX will be an integral part of this API,
104+
since the objects within CycloneDX are self-contained (thus API friendly) and
105+
the specification supports all the necessary xBOM types along with CDXA.
90106

91107
## Presentations and videos
92108

93-
- You can find presentations in the repository in the [Presentations](/presentations) directory
109+
- You can find presentations in the repository in the
110+
[Presentations](/presentations) directory
94111
- Our biweekly meetings are available on
95112
[YouTube playlist: Project Koala](https://www.youtube.com/playlist?list=PLqjEqUxHjy1XtSzGYL7Dj_WJbiLu_ty58)
96113
- KoalaCon 2024 - an introduction to the project - can be

api-flow/consumer.md

Lines changed: 19 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,29 @@
11
# Transparency Exchange API: Consumer access
22

3-
The consumer access starts with a TEI, A transparency Exchange Identifier. This is used to find the API server as
4-
described in the [discovery document](/discovery/readme.md).
3+
The consumer access starts with a TEI, A transparency Exchange Identifier. This
4+
is used to find the API server as described in the
5+
[discovery document](/discovery/readme.md).
56

67
## API usage
78

89
The standard TEI points to a product.
910

10-
- **List of TEA leafs**: Leafs are components of something sold. Each leaf has it's own versioning and it's own set of
11-
artefacts. Note that a single artefact can belong to multiple versions of a leaf and multiple leafs.
12-
- **List of TEA collections**: For each leaf, there is a list of TEA collections as indicated by release date and a
13-
version string. The TEA API has no requirements of type of version string (semantic or any other scheme) - it's just
14-
an identifier set by the manufacturer. It's sorted by release date as a default.
15-
- **List of TEA artefacts**: The collection is unique for a version and contains a list of artefacts. This can be SBOM
16-
files, VEX, SCITT, IN-TOTO or other documents.
17-
- **List of artefact formats**: An artefact can be published in multiple formats.
18-
19-
The user has to know product TEI and version of each component (TEA LEAF) to find the list of artefacts for the used
20-
version.
11+
- **List of TEA leafs**: Leafs are components of something sold. Each leaf has
12+
it's own versioning and it's own set of artefacts. Note that a single artefact
13+
can belong to multiple versions of a leaf and multiple leafs.
14+
- **List of TEA collections**: For each leaf, there is a list of TEA collections
15+
as indicated by release date and a version string. The TEA API has no
16+
requirements of type of version string (semantic or any other scheme) - it's
17+
just an identifier set by the manufacturer. It's sorted by release date as a
18+
default.
19+
- **List of TEA artefacts**: The collection is unique for a version and contains
20+
a list of artefacts. This can be SBOM files, VEX, SCITT, IN-TOTO or other
21+
documents.
22+
- **List of artefact formats**: An artefact can be published in multiple
23+
formats.
24+
25+
The user has to know product TEI and version of each component (TEA LEAF) to
26+
find the list of artefacts for the used version.
2127

2228
## API flow
2329

api/bomexchangeapi.md

Lines changed: 40 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,13 @@
11
# CycloneDX BOM exchange API
22

3-
**Note:** this is an older version of the API not being worked on any more. This work will be replaced by the
4-
Transparency Exchange API.
3+
**Note:** this is an older version of the API not being worked on any more. This
4+
work will be replaced by the Transparency Exchange API.
55

66
## Conventions
77

8-
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and
9-
"OPTIONAL" in this document are to be interpreted as described in [RFC2119](http://www.ietf.org/rfc/rfc2119.txt).
8+
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD",
9+
"SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be
10+
interpreted as described in [RFC2119](http://www.ietf.org/rfc/rfc2119.txt).
1011

1112
### ABNF Syntax
1213

@@ -30,8 +31,9 @@ See also:
3031

3132
## Specification Compliance
3233

33-
An API server/client can be referred to as compliant if it correctly implements any of the methods described within this
34-
specification. It is not a requirement to implement all the methods described.
34+
An API server/client can be referred to as compliant if it correctly implements
35+
any of the methods described within this specification. It is not a requirement
36+
to implement all the methods described.
3537

3638
## BOM Retrieval
3739

@@ -49,36 +51,41 @@ bom-identifier = *( pchar / "/" / "?" )
4951

5052
The HTTP request method MUST be `GET`.
5153

52-
For CycloneDX BOMs the `bom-identifier` MUST be either a CDX URN (https://www.iana.org/assignments/urn-formal/cdx) or a
53-
BOM serial number UUID URN (https://cyclonedx.org/docs/1.4/json/#serialNumber).
54+
For CycloneDX BOMs the `bom-identifier` MUST be either a CDX URN
55+
(https://www.iana.org/assignments/urn-formal/cdx) or a BOM serial number UUID
56+
URN (https://cyclonedx.org/docs/1.4/json/#serialNumber).
5457

5558
For SPDX documents the `bom-identifier` MUST be the SPDX Document Namespace
5659
(https://spdx.github.io/spdx-spec/document-creation-information/#65-spdx-document-namespace-field).
5760

5861
### Server Requirements
5962

60-
Servers MAY require authorization. If authorization is required it MUST use the HTTP `Authorization` header. If a server
61-
requires authorization, and no `Authorization` request header is supplied by the client, the server MUST respond with a
62-
401 Unauthorized response.
63+
Servers MAY require authorization. If authorization is required it MUST use the
64+
HTTP `Authorization` header. If a server requires authorization, and no
65+
`Authorization` request header is supplied by the client, the server MUST
66+
respond with a 401 Unauthorized response.
6367

64-
Servers MUST honour the requested content types in the `Accept` header. If the server does not support any of the
65-
requested content types a HTTP 406 response MUST be returned. The 406 response body MUST contain a list of server
66-
supported content types in the below format with `text/plain` content type.
68+
Servers MUST honour the requested content types in the `Accept` header. If the
69+
server does not support any of the requested content types a HTTP 406 response
70+
MUST be returned. The 406 response body MUST contain a list of server supported
71+
content types in the below format with `text/plain` content type.
6772

6873
```abnf
6974
media-type *(", " media-type)
7075
```
7176

72-
e.g. `application/vnd.cyclonedx+xml; version=1.4, application/vnd.cyclonedx+xml; version=1.3`
77+
e.g.
78+
`application/vnd.cyclonedx+xml; version=1.4, application/vnd.cyclonedx+xml; version=1.3`
7379

74-
API servers MUST provide the correct `Content-Type` HTTP response header. For example:
80+
API servers MUST provide the correct `Content-Type` HTTP response header. For
81+
example:
7582

7683
```http
7784
Content-Type: application/vnd.cyclonedx+xml; version=1.4
7885
```
7986

80-
If a BOM serial number UUID URN is used as the `bom-identifier`, the server MUST respond with the latest available
81-
version of the BOM.
87+
If a BOM serial number UUID URN is used as the `bom-identifier`, the server MUST
88+
respond with the latest available version of the BOM.
8289

8390
### Client Requirements
8491

@@ -103,28 +110,33 @@ The HTTP request method MUST be `POST`.
103110

104111
### Server Requirements
105112

106-
Servers MAY require authorization. If authorization is required it MUST use the HTTP `Authorization` header. If a server
107-
requires authorization, and no `Authorization` request header is supplied by the client, the server MUST respond with a
108-
401 Unauthorized response.
113+
Servers MAY require authorization. If authorization is required it MUST use the
114+
HTTP `Authorization` header. If a server requires authorization, and no
115+
`Authorization` request header is supplied by the client, the server MUST
116+
respond with a 401 Unauthorized response.
109117

110-
Servers MUST honour the specified content type in the `Content-Type` header. If the server does not support the supplied
111-
content type a HTTP 415 Unsupported Media Type response MUST be returned. The 415 response body MUST contain a list of
112-
server supported content types in the below format with `text/plain` content type.
118+
Servers MUST honour the specified content type in the `Content-Type` header. If
119+
the server does not support the supplied content type a HTTP 415 Unsupported
120+
Media Type response MUST be returned. The 415 response body MUST contain a list
121+
of server supported content types in the below format with `text/plain` content
122+
type.
113123

114124
```abnf
115125
media-type *(", " media-type)
116126
```
117127

118-
e.g. `application/vnd.cyclonedx+xml; version=1.4, application/vnd.cyclonedx+xml; version=1.3`
128+
e.g.
129+
`application/vnd.cyclonedx+xml; version=1.4, application/vnd.cyclonedx+xml; version=1.3`
119130

120-
If the submitted BOM has been successfully submitted the API server MUST respond with an appropriate 2xx HTTP status
121-
code.
131+
If the submitted BOM has been successfully submitted the API server MUST respond
132+
with an appropriate 2xx HTTP status code.
122133

123134
### Client Requirements
124135

125136
Clients MUST support an optional `Authorization` header being specified.
126137

127-
Clients MUST provide the correct `Content-Type` HTTP request header. For example:
138+
Clients MUST provide the correct `Content-Type` HTTP request header. For
139+
example:
128140

129141
```http
130142
Content-Type: application/vnd.cyclonedx+xml; version=1.4

0 commit comments

Comments
 (0)