68 lines
3.4 KiB
JSON
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}
|
|
}
|
|
}
|
|
}
|
|
}
|