Skip to content

Commit 33d4d0d

Browse files
authored
Merge pull request #127 from taleodor/main
feat: add release into spec, further clean up
2 parents 3442c23 + b60fdad commit 33d4d0d

File tree

2 files changed

+213
-136
lines changed

2 files changed

+213
-136
lines changed

spec/openapi.yaml

Lines changed: 118 additions & 136 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
1-
---
2-
jsonSchemaDialect: https://spec.openapis.org/oas/3.1/dialect/base
31
openapi: 3.1.1
2+
jsonSchemaDialect: https://spec.openapis.org/oas/3.1/dialect/base
43
info:
54
title: Transparency Exchange API
65
summary: The OWASP Transparency Exchange API specification for consumers and publishers
@@ -85,10 +84,10 @@ paths:
8584
$ref: "#/components/responses/404-object-by-id-not-found"
8685
tags:
8786
- TEA Component
88-
/component/{uuid}/versions:
87+
/component/{uuid}/releases:
8988
get:
90-
description: Get all TEA Component versions that match the given criteria
91-
operationId: getCollectionsByComponentId
89+
description: Get releases of the component
90+
operationId: getReleasesByComponentId
9291
parameters:
9392
- name: uuid
9493
in: path
@@ -99,34 +98,91 @@ paths:
9998
format: uuid
10099
responses:
101100
'200':
102-
description: Requested TEA Component found and returned
101+
description: Requested Releases of TEA Component found and returned
103102
content:
104103
application/json:
105104
schema:
106105
type: array
107-
items:
108-
"$ref": "#/components/schemas/component-version"
106+
items:
107+
"$ref": "#/components/schemas/release"
109108
'400':
110109
$ref: "#/components/responses/400-invalid-request"
111110
'404':
112111
$ref: "#/components/responses/404-object-by-id-not-found"
113112
tags:
114-
- TEA Leaf
115-
/collection/{uuid}:
113+
- TEA Component
114+
/release/{uuid}/collection:
116115
get:
117-
description: Get a TEA Collection by its identifier
118-
operationId: getTeaCollectionById
116+
description: Get the latest TEA Collection belonging to the TEA Release
117+
operationId: getLatestCollectionByReleaseId
119118
parameters:
120119
- name: uuid
121120
in: path
122121
required: true
123-
description: UUID of TEA Collection in the TEA server
122+
description: UUID of TEA Release in the TEA server
123+
schema:
124+
type: string
125+
format: uuid
126+
responses:
127+
'200':
128+
description: Requested TEA Collection found and returned
129+
content:
130+
application/json:
131+
schema:
132+
"$ref": "#/components/schemas/collection"
133+
'400':
134+
$ref: "#/components/responses/400-invalid-request"
135+
'404':
136+
$ref: "#/components/responses/404-object-by-id-not-found"
137+
tags:
138+
- TEA Release
139+
/release/{uuid}/collections:
140+
get:
141+
description: Get the TEA Collections belonging to the TEA Release
142+
operationId: getCollectionsByReleaseId
143+
parameters:
144+
- name: uuid
145+
in: path
146+
required: true
147+
description: UUID of TEA Release in the TEA server
124148
schema:
125149
type: string
126150
format: uuid
127151
responses:
128152
'200':
129153
description: Requested TEA Collection found and returned
154+
content:
155+
application/json:
156+
schema:
157+
type: array
158+
items:
159+
"$ref": "#/components/schemas/collection"
160+
'400':
161+
$ref: "#/components/responses/400-invalid-request"
162+
'404':
163+
$ref: "#/components/responses/404-object-by-id-not-found"
164+
tags:
165+
- TEA Release
166+
/release/{uuid}/collection/{version}:
167+
get:
168+
description: Get all versions of a TEA Collection by its UUID
169+
operationId: getTeaCollectionVersionByCollectionIdAndVersion
170+
parameters:
171+
- name: uuid
172+
in: path
173+
required: true
174+
description: UUID of TEA Collection in the TEA server
175+
schema:
176+
"$ref": "#/components/schemas/uuid"
177+
- name: version
178+
in: path
179+
required: true
180+
description: Version of TEA Collection
181+
schema:
182+
type: integer
183+
responses:
184+
'200':
185+
description: Requested TEA Collection Version found and returned
130186
content:
131187
application/json:
132188
schema:
@@ -136,7 +192,31 @@ paths:
136192
'404':
137193
$ref: "#/components/responses/404-object-by-id-not-found"
138194
tags:
139-
- TEA Collection
195+
- TEA Release
196+
/artifact/{uuid}:
197+
get:
198+
description: Get metadata for specific TEA artifact
199+
operationId: getArtifact
200+
parameters:
201+
- name: uuid
202+
in: path
203+
required: true
204+
description: UUID of TEA Artifact in the TEA server
205+
schema:
206+
"$ref": "#/components/schemas/uuid"
207+
responses:
208+
'200':
209+
description: Requested TEA Artifact metadata found and returned
210+
content:
211+
application/json:
212+
schema:
213+
"$ref": "#/components/schemas/artifact"
214+
'400':
215+
$ref: "#/components/responses/400-invalid-request"
216+
'404':
217+
$ref: "#/components/responses/404-object-by-id-not-found"
218+
tags:
219+
- TEA Artifact
140220
components:
141221
schemas:
142222
#
@@ -218,36 +298,31 @@ components:
218298
- name
219299
- identifiers
220300
- versions
221-
component-version:
301+
#
302+
# TEA Release and related objects
303+
#
304+
release:
222305
type: object
223-
description: A specific version of a TEA component
224306
properties:
225-
collection_uuid:
307+
uuid:
226308
"$ref": "#/components/schemas/uuid"
227309
version:
228310
type: string
229-
description: Version number of TEA component
230-
identifiers:
231-
type: array
232-
description: List of identifiers for this component version
233-
items:
234-
"$ref": "#/components/schemas/identifier"
235311
release_date:
236312
"$ref": "#/components/schemas/date-time"
237-
description: Release date
238313
pre_release:
239314
type: boolean
240315
description: Marks if the version is a pre-release version
241-
classifier:
242-
type: object
243-
description: Optional classifier to distinguish between artifacts
316+
identifiers:
317+
type: array
318+
description: List of identifiers for the component
319+
items:
320+
"$ref": "#/components/schemas/identifier"
321+
# add lifecycle here
244322
required:
245323
- uuid
246324
- version
247-
- identifiers
248-
- release_date
249-
- pre_release
250-
325+
- release_date
251326
#
252327
# TEA Collection and related objects
253328
#
@@ -257,11 +332,12 @@ components:
257332
properties:
258333
uuid:
259334
"$ref": "#/components/schemas/uuid"
260-
description: Must match the UUID of the corresponding `component_version` object
335+
description: Must match the UUID of the corresponding `release` object
261336
version:
262337
type: integer
263-
default: 1
264338
description: Collection version, incremented each time its content changes.
339+
release_date:
340+
"$ref": "#/components/schemas/date-time"
265341
update_reason:
266342
"$ref": "#/components/schemas/collection-update-reason"
267343
artifacts:
@@ -270,7 +346,7 @@ components:
270346
"$ref": "#/components/schemas/artifact"
271347
collection-update-reason:
272348
type: object
273-
description: Reason for the last update to the TEA collection
349+
description: Reason for the update to the TEA collection
274350
properties:
275351
type:
276352
"$ref": "#/components/schemas/collection-update-reason-type"
@@ -281,10 +357,11 @@ components:
281357
type: string
282358
description: Type of TEA collection update
283359
enum:
284-
- product_released
285-
- vulnerability_disclosed
286-
- attestation_added
287-
- document_fixed
360+
- INITIAL_RELEASE
361+
- VEX_UPDATED
362+
- ARTIFACT_UPDATED
363+
- ARTIFACT_ADDED
364+
- ARTIFACT_REMOVED
288365

289366
#
290367
# TEA Artifact and related objects
@@ -367,105 +444,10 @@ components:
367444
- digital-signature
368445
- rfc-9116
369446
- other
370-
meta:enum:
371-
vcs: Version Control System
372-
issue-tracker: Issue or defect tracking system, or an Application Lifecycle
373-
Management (ALM) system
374-
website: Website
375-
advisories: Security advisories
376-
bom: Bill of Materials (SBOM, OBOM, HBOM, SaaSBOM, etc)
377-
mailing-list: Mailing list or discussion group
378-
social: Social media account
379-
chat: Real-time chat platform
380-
documentation: Documentation, guides, or how-to instructions
381-
support: Community or commercial support
382-
source-distribution:
383-
description: The location where the source code distributable can be obtained.
384-
This is often an archive format such as zip or tgz. The source-distribution
385-
type complements use of the version control (vcs) type.
386-
distribution: Direct or repository download location
387-
distribution-intake: The location where a component was published to. This
388-
is often the same as "distribution" but may also include specialized publishing
389-
processes that act as an intermediary.
390-
license: The reference to the license file. If a license URL has been defined
391-
in the license node, it should also be defined as an external reference
392-
for completeness.
393-
build-meta: Build-system specific meta file (i.e. pom.xml, package.json, .nuspec,
394-
etc)
395-
build-system: Reference to an automated build system
396-
release-notes: Reference to release notes
397-
security-contact: Specifies a way to contact the maintainer, supplier, or
398-
provider in the event of a security incident. Common URIs include links
399-
to a disclosure procedure, a mailto (RFC-2368) that specifies an email address,
400-
a tel (RFC-3966) that specifies a phone number, or dns (RFC-4501) that specifies
401-
the records containing DNS Security TXT.
402-
model-card: A model card describes the intended uses of a machine learning
403-
model, potential limitations, biases, ethical considerations, training parameters,
404-
datasets used to train the model, performance metrics, and other relevant
405-
data useful for ML transparency.
406-
log: A record of events that occurred in a computer system or application,
407-
such as problems, errors, or information on current operations.
408-
configuration: Parameters or settings that may be used by other components
409-
or services.
410-
evidence: Information used to substantiate a claim.
411-
formulation: Describes how a component or service was manufactured or deployed.
412-
attestation: Human or machine-readable statements containing facts, evidence,
413-
or testimony.
414-
threat-model: An enumeration of identified weaknesses, threats, and countermeasures,
415-
dataflow diagram (DFD), attack tree, and other supporting documentation
416-
in human-readable or machine-readable format.
417-
adversary-model: The defined assumptions, goals, and capabilities of an adversary.
418-
risk-assessment: Identifies and analyzes the potential of future events that
419-
may negatively impact individuals, assets, and/or the environment. Risk
420-
assessments may also include judgments on the tolerability of each risk.
421-
vulnerability-assertion: A Vulnerability Disclosure Report (VDR) which asserts
422-
the known and previously unknown vulnerabilities that affect a component,
423-
service, or product including the analysis and findings describing the impact
424-
(or lack of impact) that the reported vulnerability has on a component,
425-
service, or product.
426-
exploitability-statement: A Vulnerability Exploitability eXchange (VEX) which
427-
asserts the known vulnerabilities that do not affect a product, product
428-
family, or organization, and optionally the ones that do. The VEX should
429-
include the analysis and findings describing the impact (or lack of impact)
430-
that the reported vulnerability has on the product, product family, or organization.
431-
pentest-report: Results from an authorized simulated cyberattack on a component
432-
or service, otherwise known as a penetration test.
433-
static-analysis-report: SARIF or proprietary machine or human-readable report
434-
for which static analysis has identified code quality, security, and other
435-
potential issues with the source code.
436-
dynamic-analysis-report: Dynamic analysis report that has identified issues
437-
such as vulnerabilities and misconfigurations.
438-
runtime-analysis-report: Report generated by analyzing the call stack of a
439-
running application.
440-
component-analysis-report: Report generated by Software Composition Analysis
441-
(SCA), container analysis, or other forms of component analysis.
442-
maturity-report: Report containing a formal assessment of an organization,
443-
business unit, or team against a maturity model.
444-
certification-report: Industry, regulatory, or other certification from an
445-
accredited (if applicable) certification body.
446-
codified-infrastructure: Code or configuration that defines and provisions
447-
virtualized infrastructure, commonly referred to as Infrastructure as Code
448-
(IaC).
449-
quality-metrics: Report or system in which quality metrics can be obtained.
450-
poam: Plans of Action and Milestones (POAM) complement an "attestation" external
451-
reference. POAM is defined by NIST as a "document that identifies tasks
452-
needing to be accomplished. It details resources required to accomplish
453-
the elements of the plan, any milestones in meeting the tasks and scheduled
454-
completion dates for the milestones".
455-
electronic-signature: An e-signature is commonly a scanned representation
456-
of a written signature or a stylized script of the person's name.
457-
digital-signature: A signature that leverages cryptography, typically public/private
458-
key pairs, which provides strong authenticity verification.
459-
rfc-9116: Document that complies with RFC-9116 (A File Format to Aid in Security
460-
Vulnerability Disclosure)
461-
other: Use this if no other types accurately describe the purpose of the external
462-
reference.
463447
artifact-format:
464448
type: object
465449
description: A security-related document in a specific format
466450
properties:
467-
uuid:
468-
"$ref": "#/components/schemas/uuid"
469451
mimeType:
470452
type: string
471453
description: The MIME type of the document
@@ -509,7 +491,6 @@ components:
509491
- BLAKE2b-384
510492
- BLAKE2b-512
511493
- BLAKE3
512-
513494
#
514495
# Types used in API responses
515496
#
@@ -606,9 +587,10 @@ security:
606587
- bearerAuth: []
607588
- basicAuth: []
608589
tags:
609-
- name: TEA Collection
610-
- name: TEA Component
611590
- name: TEA Product
591+
- name: TEA Component
592+
- name: TEA Release
593+
- name: TEA Artifact
612594
externalDocs:
613595
description: Transparency Exchange API specification
614596
url: https://github.com/CycloneDX/transparency-exchange-api

0 commit comments

Comments
 (0)