{ "$schema": "https://json-schema.org/draft/2020-12/schema", "type": "object", "additionalProperties": false, "required": ["schema_version", "rules_bundle_ref", "detector_manifest_ref", "task", "rate", "retention", "cache", "link", "clamav", "file_policy"], "properties": { "schema_version": {"const": 1}, "rules_bundle_ref": {"type": "string", "pattern": "^rules-[0-9]{4}-[0-9]{2}-[0-9]{2}$"}, "detector_manifest_ref": {"const": "detector-2026-08-03"}, "task": { "type": "object", "additionalProperties": false, "required": ["file_scan_timeout_sec", "lease_sec", "heartbeat_sec", "max_attempts", "execution_deadline_sec", "max_pending"], "properties": { "file_scan_timeout_sec": {"type": "integer", "minimum": 1, "maximum": 300}, "lease_sec": {"type": "integer", "minimum": 10, "maximum": 600}, "heartbeat_sec": {"type": "integer", "minimum": 1, "maximum": 300}, "max_attempts": {"type": "integer", "minimum": 1, "maximum": 10}, "execution_deadline_sec": {"type": "integer", "minimum": 60, "maximum": 7200}, "max_pending": {"type": "integer", "minimum": 1, "maximum": 10000} } }, "rate": { "type": "object", "additionalProperties": false, "required": ["text_rps", "file_rps"], "properties": {"text_rps": {"type": "integer", "minimum": 1}, "file_rps": {"type": "integer", "minimum": 1}} }, "retention": { "type": "object", "additionalProperties": false, "required": ["task_days", "audit_days"], "properties": {"task_days": {"type": "integer", "minimum": 1}, "audit_days": {"type": "integer", "minimum": 1}} }, "cache": { "type": "object", "additionalProperties": false, "required": ["file_verdict_ttl_sec", "text_rule_ttl_sec", "link_ttl_sec", "dns_max_ttl_sec", "dns_negative_ttl_sec"], "properties": { "file_verdict_ttl_sec": {"type": "integer", "minimum": 1}, "text_rule_ttl_sec": {"type": "integer", "minimum": 1}, "link_ttl_sec": {"type": "integer", "minimum": 1}, "dns_max_ttl_sec": {"type": "integer", "minimum": 1, "maximum": 3600}, "dns_negative_ttl_sec": {"type": "integer", "minimum": 1, "maximum": 300} } }, "link": { "type": "object", "additionalProperties": false, "required": ["max_per_message", "url_max_length", "dns_lookup_timeout_sec", "pipeline_timeout_sec"], "properties": { "max_per_message": {"type": "integer", "minimum": 0, "maximum": 5}, "url_max_length": {"type": "integer", "minimum": 1, "maximum": 2048}, "dns_lookup_timeout_sec": {"type": "number", "exclusiveMinimum": 0, "maximum": 2}, "pipeline_timeout_sec": {"type": "number", "exclusiveMinimum": 0, "maximum": 5} } }, "clamav": { "type": "object", "additionalProperties": false, "required": ["scan_timeout_sec", "max_signature_age_hours"], "properties": {"scan_timeout_sec": {"type": "integer", "minimum": 1, "maximum": 120}, "max_signature_age_hours": {"type": "integer", "minimum": 1, "maximum": 168}} }, "file_policy": { "type": "object", "additionalProperties": false, "required": ["enabled_mime_types", "max_size_bytes"], "properties": { "enabled_mime_types": {"type": "array", "minItems": 1, "uniqueItems": true, "items": {"type": "string"}}, "max_size_bytes": {"type": "integer", "minimum": 1, "maximum": 5242880} } } } }