{ "$schema": "http://json-schema.org/draft-07/schema#", "$id": "https://coreshield.siemens.com/schemas/hsp-config-v1.json", "title": "HTTP Sender Plugin Configuration", "description": "Configuration schema for HSP diagnostic data collection system", "type": "object", "required": [ "endpoints", "grpc_connection", "buffer" ], "properties": { "http_polling": { "type": "object", "description": "HTTP polling configuration", "properties": { "timeout_seconds": { "type": "integer", "description": "HTTP request timeout in seconds", "default": 30, "minimum": 1, "maximum": 300 }, "retry_attempts": { "type": "integer", "description": "Number of retry attempts for failed requests", "default": 3, "minimum": 0, "maximum": 10 }, "retry_interval_seconds": { "type": "integer", "description": "Interval between retry attempts in seconds", "default": 5, "minimum": 1, "maximum": 60 }, "rate_limiting": { "type": "object", "description": "Rate limiting configuration (Phase 1.1)", "properties": { "enabled": { "type": "boolean", "description": "Enable rate limiting for HTTP requests", "default": true }, "requests_per_second": { "type": "number", "description": "Maximum requests per second (global)", "default": 10.0, "exclusiveMinimum": 0, "maximum": 1000.0 }, "per_endpoint": { "type": "boolean", "description": "Apply rate limit per endpoint (true) or globally (false)", "default": true } }, "required": ["enabled", "requests_per_second"] }, "backpressure": { "type": "object", "description": "Backpressure configuration (Phase 1.2)", "properties": { "enabled": { "type": "boolean", "description": "Enable backpressure mechanism", "default": true }, "monitor_interval_ms": { "type": "integer", "description": "Buffer monitoring interval in milliseconds", "default": 100, "minimum": 10, "maximum": 1000 }, "threshold_percent": { "type": "number", "description": "Buffer usage threshold to trigger backpressure (0-100)", "default": 80.0, "minimum": 0.0, "maximum": 100.0 } } } } }, "endpoints": { "type": "array", "description": "List of HTTP endpoints to poll", "minItems": 1, "maxItems": 1000, "items": { "type": "object", "required": ["url", "poll_interval_seconds"], "properties": { "url": { "type": "string", "description": "HTTP endpoint URL", "format": "uri", "pattern": "^https?://.+" }, "poll_interval_seconds": { "type": "integer", "description": "Polling interval in seconds", "minimum": 1, "maximum": 3600 }, "enabled": { "type": "boolean", "description": "Enable polling for this endpoint", "default": true }, "rate_limit_override": { "type": "number", "description": "Per-endpoint rate limit override (requests per second)", "exclusiveMinimum": 0, "maximum": 1000.0 }, "priority": { "type": "string", "description": "Endpoint priority (for future use)", "enum": ["low", "normal", "high", "critical"], "default": "normal" }, "metadata": { "type": "object", "description": "Additional endpoint metadata", "properties": { "device_id": { "type": "string" }, "location": { "type": "string" }, "tags": { "type": "array", "items": { "type": "string" } } } } } } }, "grpc_connection": { "type": "object", "description": "gRPC connection configuration", "required": ["host", "port"], "properties": { "host": { "type": "string", "description": "gRPC server hostname", "minLength": 1 }, "port": { "type": "integer", "description": "gRPC server port", "minimum": 1, "maximum": 65535 }, "receiver_id": { "type": "integer", "description": "Receiver ID for gRPC transmission", "default": 99 }, "reconnect_interval_seconds": { "type": "integer", "description": "Reconnection interval on failure (seconds)", "default": 5, "minimum": 1, "maximum": 60 }, "max_reconnect_attempts": { "type": "integer", "description": "Maximum reconnection attempts (0 = infinite)", "default": 0, "minimum": 0, "maximum": 100 }, "tls": { "type": "object", "description": "TLS configuration (future enhancement)", "properties": { "enabled": { "type": "boolean", "default": false }, "cert_path": { "type": "string" }, "key_path": { "type": "string" }, "ca_cert_path": { "type": "string" } } } } }, "buffer": { "type": "object", "description": "Circular buffer configuration", "required": ["capacity"], "properties": { "capacity": { "type": "integer", "description": "Buffer capacity (number of messages)", "default": 300, "minimum": 10, "maximum": 10000 }, "overflow_policy": { "type": "string", "description": "Behavior when buffer is full", "enum": ["discard_oldest", "block", "discard_newest"], "default": "discard_oldest" }, "statistics_enabled": { "type": "boolean", "description": "Enable buffer statistics collection", "default": true } } }, "transmission": { "type": "object", "description": "Data transmission configuration", "properties": { "batch_size_bytes": { "type": "integer", "description": "Maximum batch size in bytes", "default": 4194304, "minimum": 1024, "maximum": 10485760 }, "batch_timeout_seconds": { "type": "integer", "description": "Maximum time to accumulate batch (seconds)", "default": 1, "minimum": 1, "maximum": 60 } } }, "health_check": { "type": "object", "description": "Health check endpoint configuration", "properties": { "enabled": { "type": "boolean", "description": "Enable health check endpoint", "default": true }, "port": { "type": "integer", "description": "Health check HTTP server port", "default": 8080, "minimum": 1024, "maximum": 65535 }, "path": { "type": "string", "description": "Health check endpoint path", "default": "/health", "pattern": "^/.+" } } }, "logging": { "type": "object", "description": "Logging configuration", "properties": { "level": { "type": "string", "description": "Log level", "enum": ["TRACE", "DEBUG", "INFO", "WARN", "ERROR"], "default": "INFO" }, "file_path": { "type": "string", "description": "Log file path (default: temp directory)", "default": "${java.io.tmpdir}/hsp.log" }, "max_file_size_mb": { "type": "integer", "description": "Maximum log file size in MB", "default": 100, "minimum": 1, "maximum": 1000 }, "max_files": { "type": "integer", "description": "Maximum number of log files to keep", "default": 5, "minimum": 1, "maximum": 100 } } }, "performance": { "type": "object", "description": "Performance tuning configuration", "properties": { "virtual_threads": { "type": "boolean", "description": "Use Java 25 virtual threads", "default": true }, "max_concurrent_polls": { "type": "integer", "description": "Maximum concurrent polling operations", "default": 1000, "minimum": 1, "maximum": 10000 }, "memory_limit_mb": { "type": "integer", "description": "Memory usage limit in MB", "default": 4096, "minimum": 512, "maximum": 16384 } } } } }