- 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
 | |
|     }
 | |
|   }
 | |
| }
 |