feat: Initialize Zastava Webhook service with TLS and Authority authentication
- 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.
This commit is contained in:
		
							
								
								
									
										96
									
								
								docs/notify/schemas/notify-rule@1.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										96
									
								
								docs/notify/schemas/notify-rule@1.json
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,96 @@ | ||||
| { | ||||
|   "$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 | ||||
|     } | ||||
|   } | ||||
| } | ||||
		Reference in New Issue
	
	Block a user