{ "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "https://stella-ops.org/schemas/sbom-linkage/v1.json", "title": "SBOM Linkage Predicate Schema", "description": "Schema for sbom-linkage/v1 predicate type - SBOM-to-component linkage", "type": "object", "required": [ "sbom", "generator", "generatedAt" ], "properties": { "sbom": { "type": "object", "required": ["id", "format", "specVersion", "mediaType", "sha256"], "properties": { "id": { "type": "string", "minLength": 1, "description": "Unique identifier of the SBOM" }, "format": { "type": "string", "enum": ["CycloneDX", "SPDX"], "description": "Format of the SBOM" }, "specVersion": { "type": "string", "description": "Specification version" }, "mediaType": { "type": "string", "description": "MIME type of the SBOM document" }, "sha256": { "type": "string", "pattern": "^[a-f0-9]{64}$", "description": "SHA-256 digest of the SBOM content" }, "location": { "type": "string", "description": "Optional location URI (oci:// or file://)" } }, "additionalProperties": false }, "generator": { "type": "object", "required": ["name", "version"], "properties": { "name": { "type": "string", "minLength": 1, "description": "Name of the generator tool" }, "version": { "type": "string", "description": "Version of the generator tool" } }, "additionalProperties": false }, "generatedAt": { "type": "string", "format": "date-time", "description": "UTC timestamp when this linkage was generated" }, "incompleteSubjects": { "type": "array", "items": { "type": "object", "required": ["name", "reason"], "properties": { "name": { "type": "string", "description": "Name or identifier of the incomplete subject" }, "reason": { "type": "string", "description": "Reason why the subject is incomplete" } }, "additionalProperties": false }, "description": "Subjects that could not be fully resolved" }, "tags": { "type": "object", "additionalProperties": { "type": "string" }, "description": "Arbitrary tags for classification or filtering" } }, "additionalProperties": false }