- Added Program.cs to set up the web application with Serilog for logging, health check endpoints, and a placeholder admission endpoint. - Configured Kestrel server to use TLS 1.3 and handle client certificates appropriately. - Created StellaOps.Zastava.Webhook.csproj with necessary dependencies including Serilog and Polly. - Documented tasks in TASKS.md for the Zastava Webhook project, outlining current work and exit criteria for each task.
97 lines
2.9 KiB
JSON
97 lines
2.9 KiB
JSON
{
|
|
"$id": "https://stella-ops.org/schemas/notify/notify-rule@1.json",
|
|
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
"title": "Notify Rule",
|
|
"type": "object",
|
|
"required": [
|
|
"schemaVersion",
|
|
"ruleId",
|
|
"tenantId",
|
|
"name",
|
|
"enabled",
|
|
"match",
|
|
"actions",
|
|
"createdAt",
|
|
"updatedAt"
|
|
],
|
|
"properties": {
|
|
"schemaVersion": {"type": "string", "const": "notify.rule@1"},
|
|
"ruleId": {"type": "string"},
|
|
"tenantId": {"type": "string"},
|
|
"name": {"type": "string"},
|
|
"description": {"type": "string"},
|
|
"enabled": {"type": "boolean"},
|
|
"match": {"$ref": "#/$defs/ruleMatch"},
|
|
"actions": {
|
|
"type": "array",
|
|
"minItems": 1,
|
|
"items": {"$ref": "#/$defs/ruleAction"}
|
|
},
|
|
"labels": {"$ref": "#/$defs/stringMap"},
|
|
"metadata": {"$ref": "#/$defs/stringMap"},
|
|
"createdBy": {"type": "string"},
|
|
"createdAt": {"type": "string", "format": "date-time"},
|
|
"updatedBy": {"type": "string"},
|
|
"updatedAt": {"type": "string", "format": "date-time"}
|
|
},
|
|
"additionalProperties": false,
|
|
"$defs": {
|
|
"ruleMatch": {
|
|
"type": "object",
|
|
"properties": {
|
|
"eventKinds": {"$ref": "#/$defs/stringArray"},
|
|
"namespaces": {"$ref": "#/$defs/stringArray"},
|
|
"repositories": {"$ref": "#/$defs/stringArray"},
|
|
"digests": {"$ref": "#/$defs/stringArray"},
|
|
"labels": {"$ref": "#/$defs/stringArray"},
|
|
"componentPurls": {"$ref": "#/$defs/stringArray"},
|
|
"minSeverity": {"type": "string"},
|
|
"verdicts": {"$ref": "#/$defs/stringArray"},
|
|
"kevOnly": {"type": "boolean"},
|
|
"vex": {"$ref": "#/$defs/ruleMatchVex"}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
"ruleMatchVex": {
|
|
"type": "object",
|
|
"properties": {
|
|
"includeAcceptedJustifications": {"type": "boolean"},
|
|
"includeRejectedJustifications": {"type": "boolean"},
|
|
"includeUnknownJustifications": {"type": "boolean"},
|
|
"justificationKinds": {"$ref": "#/$defs/stringArray"}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
"ruleAction": {
|
|
"type": "object",
|
|
"required": ["actionId", "channel", "enabled"],
|
|
"properties": {
|
|
"actionId": {"type": "string"},
|
|
"channel": {"type": "string"},
|
|
"template": {"type": "string"},
|
|
"digest": {"type": "string"},
|
|
"throttle": {
|
|
"type": "string",
|
|
"pattern": "^P(T.*)?$",
|
|
"description": "ISO 8601 duration"
|
|
},
|
|
"locale": {"type": "string"},
|
|
"enabled": {"type": "boolean"},
|
|
"metadata": {"$ref": "#/$defs/stringMap"}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
"stringArray": {
|
|
"type": "array",
|
|
"items": {"type": "string"}
|
|
},
|
|
"stringMap": {
|
|
"type": "object",
|
|
"patternProperties": {
|
|
".*": {"type": "string"}
|
|
},
|
|
"additionalProperties": false
|
|
}
|
|
}
|
|
}
|