{ "$schema": "http://json-schema.org/draft-07/schema#", "type": "object", "additionalProperties": false, "properties": { "locale": { "description": "Dashboard language", "type": "string", "enum": ["en", "sr"], "default": "en" }, "branding": { "description": "First-run replicant seeds — only applied when nothing is persisted yet; everything is editable from the dashboard afterwards", "type": "object", "additionalProperties": false, "properties": { "tickerBlurb": { "description": "Recurring ticker blurb shown at every loop seam", "type": "string" }, "breakHeading": { "description": "Default heading on the break slide", "type": "string" }, "sampleQrUrl": { "description": "URL encoded in the sample ad's QR code", "type": "string" } } }, "obs": { "type": "object", "additionalProperties": false, "properties": { "enabled": { "description": "Connect to OBS and drive scene switches", "type": "boolean", "default": false }, "url": { "description": "obs-websocket URL", "type": "string", "default": "ws://127.0.0.1:4455" }, "password": { "description": "obs-websocket password (empty when authentication is disabled)", "type": "string", "default": "" }, "scenes": { "description": "Names of the six scenes NodeCG switches between", "type": "object", "additionalProperties": false, "properties": { "main": { "type": "string", "default": "MAIN" }, "mainAdTr": { "type": "string", "default": "MAIN_AD_TR" }, "mainAdBl": { "type": "string", "default": "MAIN_AD_BL" }, "break": { "type": "string", "default": "BREAK" }, "breakAdTr": { "type": "string", "default": "BREAK_AD_TR" }, "breakAdBl": { "type": "string", "default": "BREAK_AD_BL" } } }, "transitions": { "description": "Names of the transitions in the OBS transition dock", "type": "object", "additionalProperties": false, "properties": { "default": { "description": "Selected before ad shrink/hop switches (the Move transition)", "type": "string", "default": "Move" }, "break": { "description": "Selected before MAIN↔BREAK toggles (the stinger)", "type": "string", "default": "Stinger" } } }, "sources": { "description": "Names of the shared sources/nested scenes, used by the OBS setup verifier and the scene-collection generator", "type": "object", "additionalProperties": false, "properties": { "adOverlay": { "type": "string", "default": "AdOverlay" }, "ticker": { "type": "string", "default": "TickerOverlay" }, "breakSlide": { "type": "string", "default": "BreakSlide" }, "programScene": { "type": "string", "default": "PROGRAM" }, "breakScene": { "type": "string", "default": "BREAK_SLIDE" }, "programPlaceholder": { "type": "string", "default": "Program Placeholder" } } } } } } }