Consumer

every operation of the consumption specification, including its error paths

CasesPassedFailedAdvisory
15815701

Fixtures

The run walked the object graph outwards from /products; these are the live identifiers it resolved. Seeding from the API instead of from constants is what makes a green run mean the graph is navigable, and not simply that a fixture exists.

ObjectIdentifier
TEA Product36117cc1-7417-572f-8ac2-efe2bb6587b2 (Vulnetix/ai-firewall)
TEA Product Releaseae59594d-d833-57b6-bb70-e44b19b32a08 (version 111d521b4d0c7fb8c742ad14dc1765333fd60801)
TEA Componentbfe0d6a9-9007-5541-8284-e44d02d5c32a
TEA Component Release92ee4ed8-2b0f-5be0-8316-2901af2f174a
TEA Artifact8ebab5c4-cdac-4753-b664-4ea8cc539491
TEI authorityvulnetix.com

Artifact retrieval and trust validation

The TEA Consumer API artifact-retrieval document, version 1.0, describes a draft, normative profile layered over the consumption API. It distinguishes Base TEA from TEA with the Trust Architecture and from a high-assurance profile. The configured consumption OpenAPI remains the source of the overall verdict; this table reports the additional profile requirements separately. Because independent evidence-bundle retrieval is not exercised, this run does not demonstrate conformance to the Trust Architecture profile, even where Base TEA artifact retrieval succeeds.

Requirement or profileEvidence from this runAssessment
Base TEA: artifact retrieval (MUST)Artifact metadata: 7 requests were exercised, 2 returned content successfully, and 7 passed their applicable checks. Artifact content: 25 requests were exercised, 25 returned content successfully, and 25 passed their applicable checks. The sampled catalogue exposed a download URL for 118 of 118 artifacts. Content URLs were learned through collections; retrieval by artifact identity without first reading a collection was not probed.partially demonstrated
Detached-signature retrieval (MAY)The sampled catalogue exposed 0 detached-signature URLs; no matching request was exercised. Fetched signatures are not cryptographically verified and do not establish timestamp, transparency or long-term validity.not observed (optional)
Trust Architecture: independent evidence-bundle retrieval (MUST)No conformance case in this run retrieved an evidence bundle independently of a collection or tied a bundle to the returned artifact. Attestation artifacts and detached signatures are not treated as substitutes for an evidence bundle.not demonstrated
Artifact plus evidence-bundle multipart retrieval (SHOULD)This run did not negotiate multipart/mixed; profile="artifact+evidence", identify its two parts, or test artifact and bundle mismatch handling.not assessed
Validation behavior and transport-versus-trust semantics25 artifact-content responses were retrieved and 25 passed their applicable document and digest checks. 118 of 118 sampled artifact records carried a checksum. Certificate chains, timestamp evidence, transparency inclusion and local trust policy were not validated.content integrity partially demonstrated
Collection inclusion versus independent authenticityCollection UUID and belongsTo rules are checked by the consumption cases. Artifact/evidence reuse across collections, and authenticity validation without a collection, are not exercised.partially assessed
Error handling5 artifact metadata error-path cases were exercised; 5 conformed. The trust-profile errors for missing evidence, unsupported multipart profiles and artifact/evidence or artifact/signature mismatch were not exercised.base errors partially demonstrated
High-assurance profileBundle caching and reuse, offline validation, and operation without live timestamp or transparency services are outside this black-box run.not assessed

Efficacy

Conformance proves the responses are well formed. It cannot prove they are complete: a server that published one artifact per release and dropped the rest would validate just as cleanly. This is what the published graph actually contains.

MeasureValue
Products published42
Releases sampled24
Collections read24
Collections with no artifacts0
Artifacts published118
Artifacts per collection (mean)4.9
Artifacts carrying a checksum118
Artifacts carrying a media type118
Artifacts carrying a download URL118
Artifacts carrying a signature0
Artifacts with more than one revision0
Deepest artifact revision1
Deepest collection version19
Releases flagged pre-release2
Releases flagged final98

Published artifact types

artifact-typeCount
BOM45
BUILD_META50
OTHER1
VULNERABILITIES22

Published documents

DocumentCount
AI Bill of Materials6
Build manifest .github/workflows/api-ci.yml1
Build manifest .github/workflows/api-deploy.yml1
Build manifest .github/workflows/auto-version.yml1
Build manifest .github/workflows/ci.yml2
Build manifest .github/workflows/docs.yml1
Build manifest .github/workflows/ecr-deploy.yml1
Build manifest .github/workflows/frontend-ci.yml1
Build manifest .github/workflows/frontend-deploy.yml1
Build manifest .github/workflows/http-tests.yml1
Build manifest .github/workflows/release.yml1
Build manifest .github/workflows/reporter-deploy.yml1
Build manifest .github/workflows/sca.yml1
Build manifest .github/workflows/terraform.yml1
Build manifest .github/workflows/test.yml1
Build manifest .github/workflows/vulnetix.yml14
Build manifest Dockerfile1
Build manifest api/go.mod1
Build manifest api/go.sum1
Build manifest frontend/package-lock.json1
Build manifest frontend/package.json1
Build manifest go.mod3
Build manifest go.sum3
Build manifest lambda/go.mod1
Build manifest lambda/go.sum1
Build manifest pyproject.toml1
Build manifest reporter/go.mod1
Build manifest reporter/go.sum1
Build manifest tests/package-lock.json1
Build manifest tests/package.json1
Build manifest uv.lock1
Build manifest web/package.json1
Build manifest web/yarn.lock1
Cryptography Bill of Materials9
Repository Analysis Report1
Vulnetix SAST Findings Report1
Vulnetix SAST Vulnerability Exploitability eXchange1
Vulnetix SCA Monitor Software Bill of Materials8
Vulnetix SCA Software Bill of Materials10
Vulnetix SCA Vulnerability Exploitability eXchange5
Vulnetix Secrets Findings Report7
Vulnetix Secrets Vulnerability Exploitability eXchange7
ai-bom.cdx.json4
cbom.cdx.json4
sbom.cdx.json3
vulnetix-containers OCI Findings Report1
vulnetix-containers Software Bill of Materials1

Artifact revision depth

How many immutable revisions each published artifact has. Depth beyond 1 is TEA’s (uuid, version) identity doing real work.

RevisionsArtifacts
1118

consumer cases

CaseOperationStatusSchemaLatencyVerdict
default pagequeryTeaProducts200yes249.83 mspass
explicit page sizequeryTeaProducts200yes248.87 mspass
maximum page sizequeryTeaProducts200yes248.54 mspass
follow nextPageTokenqueryTeaProducts200yes249.93 mspass
reject pageSize below minimumqueryTeaProducts400-248.49 mspass
reject pageSize above maximumqueryTeaProducts400-24.61 mspass
reject non-numeric pageSizequeryTeaProducts400-249.23 mspass
reject foreign pageTokenqueryTeaProducts400-27.11 mspass
reject unknown sortFieldqueryTeaProducts400-26.54 mspass
reject unknown sortOrderqueryTeaProducts400-26.59 mspass
descending orderqueryTeaProducts200yes248.97 mspass
filter by PURL identifierqueryTeaProducts200yes249.81 mspass
reject unknown idTypequeryTeaProducts400-250.06 mspass
existing objectgetTeaProductByUuid200yes249.90 mspass
absent object reports OBJECT_UNKNOWNgetTeaProductByUuid404yes250.81 mspass
malformed uuid is rejectedgetTeaProductByUuid400-249.03 mspass
default pagegetReleasesByProductId200yes249.94 mspass
explicit page sizegetReleasesByProductId200yes249.95 mspass
maximum page sizegetReleasesByProductId200yes249.04 mspass
follow nextPageTokengetReleasesByProductId200yes251.34 mspass
reject pageSize below minimumgetReleasesByProductId400-248.74 mspass
reject pageSize above maximumgetReleasesByProductId400-249.88 mspass
reject non-numeric pageSizegetReleasesByProductId400-248.66 mspass
reject foreign pageTokengetReleasesByProductId400-249.00 mspass
reject unknown sortFieldgetReleasesByProductId400-248.80 mspass
reject unknown sortOrdergetReleasesByProductId400-249.74 mspass
descending ordergetReleasesByProductId200yes250.50 mspass
absent parent reports OBJECT_UNKNOWNgetReleasesByProductId404yes249.16 mspass
malformed parent uuid is rejectedgetReleasesByProductId400-249.31 mspass
sort by createdDate ascgetReleasesByProductId200yes249.76 mspass
sort by createdDate descgetReleasesByProductId200yes248.47 mspass
sort by releaseDate ascgetReleasesByProductId200yes248.78 mspass
sort by releaseDate descgetReleasesByProductId200yes225.25 mspass
sort by version ascgetReleasesByProductId200yes223.12 mspass
sort by version descgetReleasesByProductId200yes223.21 mspass
existing objectgetCleByProductId200yes223.71 mspass
absent object reports OBJECT_UNKNOWNgetCleByProductId404yes203.52 mspass
malformed uuid is rejectedgetCleByProductId400-170.78 mspass
default pagequeryTeaProductReleases200yes203.49 mspass
explicit page sizequeryTeaProductReleases200yes170.87 mspass
maximum page sizequeryTeaProductReleases200yes254.25 mspass
follow nextPageTokenqueryTeaProductReleases200yes202.95 mspass
reject pageSize below minimumqueryTeaProductReleases400-169.82 mspass
reject pageSize above maximumqueryTeaProductReleases400-169.81 mspass
reject non-numeric pageSizequeryTeaProductReleases400-254.09 mspass
reject foreign pageTokenqueryTeaProductReleases400-202.35 mspass
reject unknown sortFieldqueryTeaProductReleases400-202.30 mspass
reject unknown sortOrderqueryTeaProductReleases400-202.31 mspass
descending orderqueryTeaProductReleases200yes202.40 mspass
filter by TEI identifierqueryTeaProductReleases200yes202.24 mspass
existing objectgetTeaProductReleaseByUuid200yes202.16 mspass
absent object reports OBJECT_UNKNOWNgetTeaProductReleaseByUuid404yes253.69 mspass
malformed uuid is rejectedgetTeaProductReleaseByUuid400-202.06 mspass
existing objectgetCleByProductReleaseId200yes201.57 mspass
absent object reports OBJECT_UNKNOWNgetCleByProductReleaseId404yes265.57 mspass
malformed uuid is rejectedgetCleByProductReleaseId400-201.49 mspass
existing objectgetLatestCollectionForProductRelease200yes265.62 mspass
absent object reports OBJECT_UNKNOWNgetLatestCollectionForProductRelease404yes265.58 mspass
malformed uuid is rejectedgetLatestCollectionForProductRelease400-265.55 mspass
default pagegetCollectionsByProductReleaseId200yes265.80 mspass
explicit page sizegetCollectionsByProductReleaseId200yes252.95 mspass
maximum page sizegetCollectionsByProductReleaseId200yes252.99 mspass
follow nextPageTokengetCollectionsByProductReleaseId200yes266.08 mspass
reject pageSize below minimumgetCollectionsByProductReleaseId400-265.51 mspass
reject pageSize above maximumgetCollectionsByProductReleaseId400-201.15 mspass
reject non-numeric pageSizegetCollectionsByProductReleaseId400-252.61 mspass
reject foreign pageTokengetCollectionsByProductReleaseId400-265.21 mspass
reject unknown sortFieldgetCollectionsByProductReleaseId400-265.25 mspass
reject unknown sortOrdergetCollectionsByProductReleaseId400-300.85 mspass
descending ordergetCollectionsByProductReleaseId200yes332.85 mspass
absent parent reports OBJECT_UNKNOWNgetCollectionsByProductReleaseId404yes96.63 mspass
malformed parent uuid is rejectedgetCollectionsByProductReleaseId400-96.75 mspass
first versiongetCollectionForProductRelease200yes63.76 mspass
version beyond history is unknowngetCollectionForProductRelease404yes63.78 mspass
reject non-integer collectionVersiongetCollectionForProductRelease400-63.77 mspass
reject zero collectionVersiongetCollectionForProductRelease400-63.78 mspass
default pagequeryTeaComponents200yes63.78 mspass
explicit page sizequeryTeaComponents200yes64.75 mspass
maximum page sizequeryTeaComponents200yes267.88 mspass
follow nextPageTokenqueryTeaComponents200yes63.79 mspass
reject pageSize below minimumqueryTeaComponents400-64.04 mspass
reject pageSize above maximumqueryTeaComponents400-267.83 mspass
reject non-numeric pageSizequeryTeaComponents400-63.45 mspass
reject foreign pageTokenqueryTeaComponents400-62.93 mspass
reject unknown sortFieldqueryTeaComponents400-62.63 mspass
reject unknown sortOrderqueryTeaComponents400-191.24 mspass
descending orderqueryTeaComponents200yes190.94 mspass
reject unknown idTypequeryTeaComponents400-190.66 mspass
existing objectgetTeaComponentById200yes190.73 mspass
absent object reports OBJECT_UNKNOWNgetTeaComponentById404yes188.25 mspass
malformed uuid is rejectedgetTeaComponentById400-186.99 mspass
default pagegetReleasesByComponentId200yes178.58 mspass
explicit page sizegetReleasesByComponentId200yes178.72 mspass
maximum page sizegetReleasesByComponentId200yes178.01 mspass
follow nextPageTokengetReleasesByComponentId200yes234.59 mspass
reject pageSize below minimumgetReleasesByComponentId400-177.86 mspass
reject pageSize above maximumgetReleasesByComponentId400-177.90 mspass
reject non-numeric pageSizegetReleasesByComponentId400-178.49 mspass
reject foreign pageTokengetReleasesByComponentId400-234.43 mspass
reject unknown sortFieldgetReleasesByComponentId400-178.10 mspass
reject unknown sortOrdergetReleasesByComponentId400-177.80 mspass
descending ordergetReleasesByComponentId200yes234.20 mspass
absent parent reports OBJECT_UNKNOWNgetReleasesByComponentId404yes203.11 mspass
malformed parent uuid is rejectedgetReleasesByComponentId400-177.76 mspass
existing objectgetCleByComponentId200yes177.89 mspass
absent object reports OBJECT_UNKNOWNgetCleByComponentId404yes234.06 mspass
malformed uuid is rejectedgetCleByComponentId400-177.75 mspass
default pagequeryTeaComponentReleases200yes234.17 mspass
explicit page sizequeryTeaComponentReleases200yes208.89 mspass
maximum page sizequeryTeaComponentReleases200yes233.82 mspass
follow nextPageTokenqueryTeaComponentReleases200yes199.91 mspass
reject pageSize below minimumqueryTeaComponentReleases400-202.54 mspass
reject pageSize above maximumqueryTeaComponentReleases400-196.58 mspass
reject non-numeric pageSizequeryTeaComponentReleases400-55.98 mspass
reject foreign pageTokenqueryTeaComponentReleases400-55.88 mspass
reject unknown sortFieldqueryTeaComponentReleases400-55.91 mspass
reject unknown sortOrderqueryTeaComponentReleases400-55.91 mspass
descending orderqueryTeaComponentReleases200yes69.49 mspass
existing objectgetComponentReleaseById200yes56.16 mspass
absent object reports OBJECT_UNKNOWNgetComponentReleaseById404yes270.83 mspass
malformed uuid is rejectedgetComponentReleaseById400-55.38 mspass
existing objectgetCleByComponentReleaseId200yes69.33 mspass
absent object reports OBJECT_UNKNOWNgetCleByComponentReleaseId404yes69.37 mspass
malformed uuid is rejectedgetCleByComponentReleaseId400-69.30 mspass
existing objectgetLatestCollection200yes69.48 mspass
absent object reports OBJECT_UNKNOWNgetLatestCollection404yes270.82 mspass
malformed uuid is rejectedgetLatestCollection400-71.65 mspass
default pagegetCollectionsByReleaseId200yes270.71 mspass
explicit page sizegetCollectionsByReleaseId200yes69.09 mspass
maximum page sizegetCollectionsByReleaseId200yes270.60 mspass
follow nextPageTokengetCollectionsByReleaseId200yes248.99 mspass
reject pageSize below minimumgetCollectionsByReleaseId400-248.83 mspass
reject pageSize above maximumgetCollectionsByReleaseId400-246.26 mspass
reject non-numeric pageSizegetCollectionsByReleaseId400-246.22 mspass
reject foreign pageTokengetCollectionsByReleaseId400-247.57 mspass
reject unknown sortFieldgetCollectionsByReleaseId400-246.24 mspass
reject unknown sortOrdergetCollectionsByReleaseId400-245.71 mspass
descending ordergetCollectionsByReleaseId200yes240.45 mspass
absent parent reports OBJECT_UNKNOWNgetCollectionsByReleaseId404yes215.17 mspass
malformed parent uuid is rejectedgetCollectionsByReleaseId400-215.92 mspass
first versiongetCollection200yes215.21 mspass
version beyond history is unknowngetCollection404yes215.00 mspass
reject non-integer collectionVersiongetCollection400-214.88 mspass
reject zero collectionVersiongetCollection400-214.95 mspass
existing objectgetLatestArtifact200yes215.42 mspass
absent object reports OBJECT_UNKNOWNgetLatestArtifact404yes214.98 mspass
malformed uuid is rejectedgetLatestArtifact400-214.21 mspass
first revisiongetArtifactByVersion200yes214.68 mspass
revision beyond history is unknowngetArtifactByVersion404yes214.86 mspass
reject non-integer versiongetArtifactByVersion400-213.60 mspass
reject malformed uuidgetArtifactByVersion400-212.34 mspass
resolve uuid TEIdiscoveryByTei200yes201.32 mspass
reject TEI from another authoritydiscoveryByTei404yes201.53 mspass
unknown identifier in this authoritydiscoveryByTei404yes201.45 mspass
reject missing tei parameterdiscoveryByTei400-201.67 mspass
reject malformed urndiscoveryByTei400-200.52 mspass
anonymous listing is refusedqueryTeaProducts200-201.11 msadvisory
anonymous object read is refusedgetTeaProductByUuid404-199.52 mspass

Detail

anonymous listing is refused: GET https://www.vulnetix.com/tea/v0.4.0/products

  • expected HTTP 401, got 200: {“hasNext”:false,“nextPageToken”:"",“results”:[{“uuid”:“54e8820d-0803-5a4f-858d-88a279486564”,“name”:“Vulnetix/cli”,“identifiers”:[{“idType”:“TEI”,“idValue”:“urn:tei:uuid:vulnetix.com:54e8820d-0803-5a4f-858d-88a279486564…
  • evidence: responses/consumer/0157-get-anonymous-listing-is-refused.meta.json

Back to the summary