{ "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "https://stellaops.org/concelier/advisory.observation.updated@1.schema.json", "title": "advisory.observation.updated@1", "type": "object", "required": [ "eventId", "tenantId", "observationId", "advisoryId", "source", "linksetSummary", "documentSha", "observationHash", "ingestedAt", "replayCursor" ], "additionalProperties": false, "properties": { "eventId": { "type": "string", "format": "uuid" }, "tenantId": { "type": "string", "pattern": "^urn:tenant:[0-9a-fA-F-]{36}$" }, "observationId": { "type": "string", "pattern": "^[a-f0-9]{24}$" }, "advisoryId": { "type": "string", "minLength": 1 }, "source": { "type": "object", "required": ["vendor", "stream", "api", "collectorVersion"], "additionalProperties": false, "properties": { "vendor": { "type": "string", "minLength": 1 }, "stream": { "type": "string", "minLength": 1 }, "api": { "type": "string", "minLength": 1 }, "collectorVersion": { "type": "string", "minLength": 1 } } }, "linksetSummary": { "type": "object", "required": ["aliases", "purls"], "additionalProperties": false, "properties": { "aliases": { "type": "array", "items": { "type": "string" }, "uniqueItems": true }, "purls": { "type": "array", "items": { "type": "string" }, "uniqueItems": true }, "cpes": { "type": "array", "items": { "type": "string" }, "uniqueItems": true }, "scopes": { "type": "array", "items": { "type": "string" }, "uniqueItems": true }, "relationships": { "type": "array", "items": { "type": "object", "required": ["type", "source", "target"], "additionalProperties": false, "properties": { "type": { "type": "string" }, "source": { "type": "string" }, "target": { "type": "string" }, "provenance": { "type": "string" } } }, "uniqueItems": false } } }, "supersedesId": { "type": "string", "pattern": "^[a-f0-9]{24}$" }, "documentSha": { "type": "string", "pattern": "^[a-f0-9]{64}$" }, "observationHash": { "type": "string", "pattern": "^[a-f0-9]{64}$" }, "ingestedAt": { "type": "string", "format": "date-time" }, "traceId": { "type": "string" }, "replayCursor": { "type": "string", "minLength": 1 } } }