{ "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "https://cityresourcegraph.com/schemas/match_query_request.json", "title": "Match Query Request", "description": "Request schema for finding resource matches", "type": "object", "properties": { "resource": { "type": "object", "properties": { "type": { "type": "string", "enum": ["heat", "water", "steam", "CO2", "biowaste", "cooling", "logistics", "materials", "service"], "description": "Resource type to match" }, "direction": { "type": "string", "enum": ["input", "output"], "description": "Looking for supply or demand" }, "site_id": { "type": "string", "format": "uuid", "description": "Site location for spatial matching" }, "temperature_range": { "type": "object", "properties": { "min_celsius": {"type": "number"}, "max_celsius": {"type": "number"} }, "description": "Temperature range for thermal resources" }, "quantity_range": { "type": "object", "properties": { "min_amount": {"type": "number"}, "max_amount": {"type": "number"}, "unit": {"type": "string"} }, "description": "Quantity range requirements" } }, "required": ["type", "direction"] }, "constraints": { "type": "object", "properties": { "max_distance_km": { "type": "number", "minimum": 0, "maximum": 1000, "default": 25, "description": "Maximum transport distance" }, "min_economic_value": { "type": "number", "minimum": 0, "default": 1000, "description": "Minimum annual economic value (€)" }, "precision_preference": { "type": "array", "items": { "type": "string", "enum": ["measured", "estimated", "rough"] }, "default": ["measured", "estimated"], "description": "Preferred data precision levels" }, "include_services": { "type": "boolean", "default": true, "description": "Include service matches" } } }, "pagination": { "type": "object", "properties": { "limit": { "type": "integer", "minimum": 1, "maximum": 100, "default": 20 }, "offset": { "type": "integer", "minimum": 0, "default": 0 } } } }, "required": ["resource"], "additionalProperties": false }