{ "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "https://raw.githubusercontent.com/Popidge/omasoccer/main/config.schema.json", "title": "OmaSoccer configuration", "description": "Configuration for the OmaSoccer Omarchy football ticker.", "type": "object", "required": ["schemaVersion", "favoriteTeams", "preferences"], "additionalProperties": false, "properties": { "$schema": {"type": "string"}, "_comment": { "description": "Human-readable guidance retained when OmaSoccer writes the file.", "type": "array", "items": {"type": "string"} }, "schemaVersion": {"const": 3}, "favoriteTeams": { "description": "Followed clubs in priority order.", "type": "array", "maxItems": 5, "items": {"$ref": "#/$defs/team"} }, "preferences": {"$ref": "#/$defs/preferences"} }, "$defs": { "team": { "type": "object", "required": ["id", "name", "leagueId"], "additionalProperties": true, "properties": { "id": {"type": "string", "pattern": "^[0-9]+$"}, "name": {"type": "string", "minLength": 1}, "shortName": {"type": "string"}, "abbreviation": {"type": "string", "maxLength": 8}, "logoUrl": { "type": "string", "pattern": "^$|^https://a\\.espncdn\\.com/i/teamlogos/soccer/500/" }, "color": {"type": "string"}, "leagueId": {"type": "string", "pattern": "^[a-z0-9._-]+$"}, "leagueName": {"type": "string"}, "region": {"type": "string"} } }, "preferences": { "type": "object", "additionalProperties": false, "required": [ "barBehaviour", "barStyle", "rotationSeconds", "pollPreset", "demoMode", "showDetails", "resultRetention", "badgeOpacity" ], "properties": { "_comment": {"type": "object", "additionalProperties": {"type": "string"}}, "barBehaviour": {"enum": ["smart", "cycle", "priority"], "default": "smart"}, "barStyle": {"enum": ["full", "compact", "icon"], "default": "full"}, "rotationSeconds": {"type": "integer", "minimum": 3, "maximum": 30, "default": 8}, "pollPreset": {"enum": ["fast", "balanced", "gentle"], "default": "balanced"}, "demoMode": {"enum": ["off", "mixed", "live"], "default": "off"}, "showDetails": {"type": "boolean", "default": true}, "resultRetention": {"enum": ["day", "next"], "default": "day"}, "badgeOpacity": {"type": "number", "minimum": 0, "maximum": 0.6, "default": 0.25} } } } }