{ "$schema": "https://json-schema.org/draft/2020-12/schema", "title": "DataOps Edge Runtime File Configuration", "type": "object", "additionalProperties": false, "required": [ "allowed_control_hosts", "allowed_control_origins", "allowed_proxy_hosts", "allowed_proxy_origins", "artifact_root", "ca_bundle_path", "certificate_sha256", "client_certificate_path", "client_private_key_path", "control_url", "environment", "gateway_id", "generation", "network_zone", "policy_digest", "proxy_url", "queue_path", "task_authority_clock_skew_seconds", "version" ], "properties": { "allowed_control_hosts": { "type": "array", "minItems": 1, "maxItems": 32, "uniqueItems": true, "items": {"type": "string", "pattern": "^[a-z0-9][a-z0-9.-]*[a-z0-9]$"} }, "allowed_control_origins": { "type": "array", "minItems": 1, "maxItems": 32, "uniqueItems": true, "items": {"type": "string", "pattern": "^https://[^/]+$", "maxLength": 2048} }, "allowed_proxy_hosts": { "type": "array", "maxItems": 32, "uniqueItems": true, "items": {"type": "string", "pattern": "^[a-z0-9][a-z0-9.-]*[a-z0-9]$"} }, "allowed_proxy_origins": { "type": "array", "maxItems": 32, "uniqueItems": true, "items": {"type": "string", "pattern": "^https://[^/]+$", "maxLength": 2048} }, "artifact_root": {"type": "string", "pattern": "^/", "maxLength": 2048}, "ca_bundle_path": {"type": "string", "pattern": "^/", "maxLength": 2048}, "certificate_sha256": {"type": "string", "pattern": "^[a-f0-9]{64}$"}, "client_certificate_path": {"type": "string", "pattern": "^/", "maxLength": 2048}, "client_private_key_path": {"type": "string", "pattern": "^/", "maxLength": 2048}, "control_url": {"type": "string", "pattern": "^https://[^/]+$", "maxLength": 2048}, "environment": {"type": "string", "enum": ["development", "staging", "production"]}, "gateway_id": {"type": "string", "format": "uuid"}, "generation": {"type": "integer", "minimum": 1, "maximum": 2147483647}, "network_zone": {"type": "string", "pattern": "^[A-Za-z0-9][A-Za-z0-9._:-]{0,254}$"}, "policy_digest": {"type": "string", "pattern": "^[a-f0-9]{64}$"}, "proxy_url": { "oneOf": [ {"type": "null"}, {"type": "string", "pattern": "^https://[^/]+$", "maxLength": 2048} ] }, "queue_path": {"type": "string", "pattern": "^/", "maxLength": 2048}, "task_authority_clock_skew_seconds": {"type": "integer", "minimum": 0, "maximum": 300}, "version": { "type": "string", "pattern": "^(0|[1-9][0-9]{0,9})\\.(0|[1-9][0-9]{0,9})\\.(0|[1-9][0-9]{0,9})$" } } }