Files

68 lines
3.4 KiB
JSON

{
"$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", "antivirus", "file_policy"],
"properties": {
"schema_version": {"const": 2},
"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}
}
},
"antivirus": {
"type": "object", "additionalProperties": false, "required": ["engine", "scan_timeout_sec", "max_signature_age_hours"],
"properties": {
"engine": {"const": "kesl"},
"scan_timeout_sec": {"type": "integer", "minimum": 1, "maximum": 300},
"max_signature_age_hours": {"type": "integer", "minimum": 1, "maximum": 720}
}
},
"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}
}
}
}
}