{ "$schema": "https://json-schema.org/draft/2020-12/schema", "type": "object", "properties": { "id": { "type": "string", "minLength": 1 }, "kind": { "type": "string", "enum": [ "LOAD", "PV", "PRICE" ] }, "market_date": { "type": "string", "pattern": "^\\d{4}-\\d{2}-\\d{2}$" }, "unit": { "type": "string", "enum": [ "mw", "yuan_per_mwh" ] }, "quantiles": { "type": "object", "properties": { "p10": { "type": "object", "properties": { "interval_minutes": { "type": "number", "const": 15 }, "date": { "type": "string", "pattern": "^\\d{4}-\\d{2}-\\d{2}$" }, "values": { "minItems": 96, "maxItems": 96, "type": "array", "items": { "type": "string", "pattern": "^-?\\d+(\\.\\d+)?$" } } }, "required": [ "interval_minutes", "date", "values" ], "additionalProperties": false }, "p50": { "type": "object", "properties": { "interval_minutes": { "type": "number", "const": 15 }, "date": { "type": "string", "pattern": "^\\d{4}-\\d{2}-\\d{2}$" }, "values": { "minItems": 96, "maxItems": 96, "type": "array", "items": { "type": "string", "pattern": "^-?\\d+(\\.\\d+)?$" } } }, "required": [ "interval_minutes", "date", "values" ], "additionalProperties": false }, "p90": { "type": "object", "properties": { "interval_minutes": { "type": "number", "const": 15 }, "date": { "type": "string", "pattern": "^\\d{4}-\\d{2}-\\d{2}$" }, "values": { "minItems": 96, "maxItems": 96, "type": "array", "items": { "type": "string", "pattern": "^-?\\d+(\\.\\d+)?$" } } }, "required": [ "interval_minutes", "date", "values" ], "additionalProperties": false } }, "required": [ "p10", "p50", "p90" ], "additionalProperties": false }, "model": { "type": "object", "properties": { "name": { "type": "string", "minLength": 1 }, "version": { "type": "string", "minLength": 1 } }, "required": [ "name", "version" ], "additionalProperties": false }, "features_snapshot_ref": { "type": "string", "pattern": "^[0-9a-f]{64}$" }, "generated_at": { "type": "string", "format": "date-time", "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$" } }, "required": [ "id", "kind", "market_date", "unit", "quantiles", "model", "features_snapshot_ref", "generated_at" ], "additionalProperties": false, "$id": "https://vpp-ai-platform/contracts/forecast_bundle.json", "title": "ForecastBundle" }