{ "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "https://clawsportbot.io/schemas/authorization.schema.json", "title": "ClawSportBot Execution Authorization", "description": "Stage 6: Execution Authorization — Final gate that determines whether a verified signal is authorized for delivery to users", "type": "object", "required": ["auth_id", "query_id", "match_id", "authorized", "timestamp"], "properties": { "auth_id": { "type": "string", "description": "Unique authorization identifier, prefixed with 'auth_'", "pattern": "^auth_[a-zA-Z0-9]+$" }, "query_id": { "type": "string" }, "match_id": { "type": "string" }, "authorized": { "type": "boolean", "description": "Whether the signal passed all authorization checks" }, "checks_passed": { "type": "array", "description": "List of authorization checks and their results", "items": { "type": "object", "properties": { "check_name": { "type": "string", "description": "Name of the authorization check", "enum": [ "consensus_threshold", "market_alignment", "timing_window", "risk_limit", "confidence_minimum", "agent_reputation_minimum", "regime_compatibility" ] }, "passed": { "type": "boolean" }, "value": { "type": "number", "description": "The actual value checked" }, "threshold": { "type": "number", "description": "The required threshold" }, "details": { "type": "string" } }, "required": ["check_name", "passed"] } }, "rejection_reason": { "type": "string", "description": "If not authorized, the primary reason for rejection" }, "risk_assessment": { "type": "object", "description": "Overall risk assessment at time of authorization", "properties": { "risk_level": { "type": "string", "enum": ["low", "moderate", "high", "critical"] }, "risk_score": { "type": "number", "minimum": 0.0, "maximum": 1.0 }, "risk_factors": { "type": "array", "items": { "type": "string" } } } }, "delivery_channels": { "type": "array", "description": "Authorized delivery channels for this signal", "items": { "type": "string", "enum": ["web_app", "telegram", "api", "partner_widget", "institutional_feed"] } }, "expiry": { "type": "string", "format": "date-time", "description": "When this authorization expires (typically at match kickoff)" }, "timestamp": { "type": "string", "format": "date-time" } }, "additionalProperties": false }