{"success":true,"message":"OBS Control Center - All Routes","usage":"Add ?apiKey=YOUR_KEY to any URL for authenticated access","baseUrl":"https://stream.vivell.family","count":41,"routes":[{"path":"/overlay","label":"Lower Third","icon":"🎬","category":"overlay","modes":["all"],"auth":true,"essential":true,"description":"Anchored lower-third with speaker name, title, and optional logo.","actions":[{"id":"state","verb":"GET","path":"/api/v1/lowerthird","description":"Get lower third state"},{"id":"update","verb":"PUT","path":"/api/v1/lowerthird","description":"Update lower third settings"},{"id":"visibility","verb":"PATCH","path":"/api/v1/lowerthird/visibility","body":{"visible":"boolean (omit to toggle)"},"event":"lowerthird-visibility","description":"Toggle lower third visibility"}],"variants":[{"id":"default","label":"Default","params":{}},{"id":"dealscape","label":"Dealscape template","params":{"template":"dealscape"}},{"id":"sap","label":"SAP template","params":{"template":"sap"}},{"id":"webinar","label":"Webinar template","params":{"template":"webinar"}}]},{"path":"/overlay/glass","label":"Lower Third — Glass","icon":"✨","category":"overlay","modes":["all"],"auth":true,"description":"Lower third v2 with Glass & Glow aesthetic — chromatic glow, frosted panel, mode-aware.","actions":[{"id":"state","verb":"GET","path":"/api/v1/lowerthird","description":"Get lower third state"},{"id":"update","verb":"PUT","path":"/api/v1/lowerthird","description":"Update lower third settings"},{"id":"visibility","verb":"PATCH","path":"/api/v1/lowerthird/visibility","body":{"visible":"boolean (omit to toggle)"},"event":"lowerthird-visibility","description":"Toggle lower third visibility"}],"variants":[{"id":"dealscape","label":"Dealscape mode","params":{"mode":"dealscape"}},{"id":"sap","label":"SAP mode","params":{"mode":"sap"}},{"id":"webinar","label":"Webinar mode","params":{"mode":"webinar"}},{"id":"demo","label":"Demo (no socket)","params":{"demo":"1"}}]},{"path":"/widget","label":"Stock Widget","icon":"📊","category":"overlay","modes":["sap"],"auth":true,"essential":true,"description":"Live stock price widget with corp-dev metrics (EV, multiples, margins).","actions":[{"id":"state","verb":"GET","path":"/api/v1/widget","description":"Get widget state"},{"id":"update","verb":"PUT","path":"/api/v1/widget","description":"Update widget settings"},{"id":"visibility","verb":"PATCH","path":"/api/v1/widget/visibility","body":{"visible":"boolean (omit to toggle)"},"event":"stock-visibility","description":"Toggle widget visibility"},{"id":"orientation","verb":"PATCH","path":"/api/v1/widget/orientation","body":{"orientation":"horizontal | vertical"},"description":"Set widget orientation"},{"id":"mode","verb":"PATCH","path":"/api/v1/widget/mode","body":{"mode":"string"},"description":"Set widget mode"},{"id":"set-stock","verb":"POST","path":"/api/v1/widget/stock","body":{"symbol":"string"},"description":"Fetch & display stock"},{"id":"swap-slots","verb":"PUT","path":"/api/v1/widget/slots/swap","body":{"from":"number","to":"number"},"description":"Swap two stock slots"}]},{"path":"/chart","label":"Stock Chart","icon":"📈","category":"overlay","modes":["sap"],"auth":true,"essential":true,"description":"Historical stock chart with configurable time range.","actions":[{"id":"state","verb":"GET","path":"/api/v1/stockchart","description":"Get stock chart state"},{"id":"update","verb":"PUT","path":"/api/v1/stockchart","description":"Update stock chart settings"},{"id":"visibility","verb":"PATCH","path":"/api/v1/stockchart/visibility","body":{"visible":"boolean (omit to toggle)"},"event":"stockchart-visibility","description":"Toggle stock chart visibility"}]},{"path":"/comparison","label":"Comparison","icon":"⚖️","category":"overlay","modes":["sap"],"auth":true,"description":"Side-by-side company comparison overlay for M&A talk-tracks.","actions":[{"id":"state","verb":"GET","path":"/api/v1/comparison","description":"Get comparison state"},{"id":"update","verb":"PUT","path":"/api/v1/comparison","description":"Update comparison settings"},{"id":"visibility","verb":"PATCH","path":"/api/v1/comparison/visibility","body":{"visible":"boolean (omit to toggle)"},"event":"comparison-overlay-visibility","description":"Toggle comparison visibility"}]},{"path":"/onepager","label":"Company One-Pager","icon":"📄","category":"overlay","modes":["sap"],"auth":true,"description":"Full company overview panel for BD presentations.","actions":[{"id":"state","verb":"GET","path":"/api/v1/onepager","description":"Get one-pager state"},{"id":"update","verb":"PUT","path":"/api/v1/onepager","description":"Update one-pager settings"},{"id":"visibility","verb":"PATCH","path":"/api/v1/onepager/visibility","body":{"visible":"boolean (omit to toggle)"},"event":"onepager-visibility","description":"Toggle one-pager visibility"}]},{"path":"/overlays/timer.html","label":"Meeting Timer","icon":"⏱️","category":"overlay","modes":["all"],"auth":true,"description":"Countdown or count-up timer with configurable position, style, and thresholds.","actions":[{"id":"state","verb":"GET","path":"/api/v1/meeting-timer","description":"Get meeting timer state"},{"id":"update","verb":"PUT","path":"/api/v1/meeting-timer","description":"Update meeting timer settings"},{"id":"visibility","verb":"PATCH","path":"/api/v1/meeting-timer/visibility","body":{"visible":"boolean (omit to toggle)"},"event":"meeting-timer-visibility","description":"Toggle meeting timer visibility"},{"id":"start","verb":"POST","path":"/api/v1/meeting-timer/start","description":"Start the timer"},{"id":"pause","verb":"POST","path":"/api/v1/meeting-timer/pause","description":"Pause the timer"},{"id":"reset","verb":"POST","path":"/api/v1/meeting-timer/reset","description":"Reset to initial duration"},{"id":"adjust","verb":"POST","path":"/api/v1/meeting-timer/adjust","body":{"seconds":"number (±)"},"description":"Adjust by ±seconds"},{"id":"set","verb":"POST","path":"/api/v1/meeting-timer/set","body":{"duration":"number (seconds)"},"description":"Set absolute duration"},{"id":"style","verb":"PATCH","path":"/api/v1/meeting-timer/style","body":{"style":"card | minimal | progress"},"description":"Change visual style"},{"id":"mode","verb":"PATCH","path":"/api/v1/meeting-timer/mode","body":{"type":"countdown | countup | clock"},"description":"Change timer mode"}],"variants":[{"id":"card","label":"Card style","params":{"style":"card"}},{"id":"minimal","label":"Minimal","params":{"style":"minimal"}},{"id":"progress","label":"Progress ring","params":{"style":"progress"}}]},{"path":"/overlays/polls-reactions.html","label":"Polls & Reactions","icon":"📊","category":"overlay","modes":["webinar"],"auth":true,"description":"Live polls and emoji reactions overlay.","actions":[{"id":"list","verb":"GET","path":"/api/v1/polls","description":"List all polls"},{"id":"active","verb":"GET","path":"/api/v1/polls/active","description":"Get currently-active poll"},{"id":"create","verb":"POST","path":"/api/v1/polls","body":{"question":"string","options":"string[]"},"description":"Create a poll"},{"id":"launch","verb":"POST","path":"/api/v1/polls/:id/launch","description":"Launch (show) a poll"},{"id":"close","verb":"POST","path":"/api/v1/polls/:id/close","description":"Close (stop voting on) a poll"},{"id":"show-results","verb":"POST","path":"/api/v1/polls/:id/show-results","description":"Reveal results to viewers"},{"id":"hide","verb":"POST","path":"/api/v1/polls/:id/hide","description":"Hide poll from viewers"}]},{"path":"/overlays/deal-pipeline.html","label":"Deal Pipeline","icon":"🧭","category":"overlay","modes":["sap","dealscape"],"auth":true,"description":"Corp-dev deal pipeline with funnel and kanban views."},{"path":"/overlays/feargreed.html","label":"Fear & Greed Index","icon":"😱","category":"overlay","modes":["sap"],"auth":true,"description":"Live market sentiment gauge.","actions":[{"id":"state","verb":"GET","path":"/api/v1/feargreed","description":"Get fear & greed state"},{"id":"update","verb":"PUT","path":"/api/v1/feargreed","description":"Update fear & greed settings"},{"id":"visibility","verb":"PATCH","path":"/api/v1/feargreed/visibility","body":{"visible":"boolean (omit to toggle)"},"event":"feargreed-visibility","description":"Toggle fear & greed visibility"},{"id":"refresh","verb":"POST","path":"/api/v1/feargreed/refresh","description":"Force-refresh sentiment data"}]},{"path":"/overlays/broadcast/timer.html","label":"Broadcast Timer","icon":"⏱️","category":"overlay","modes":["webinar"],"auth":true,"description":"Broadcast-style countdown/count-up timer.","actions":[{"id":"state","verb":"GET","path":"/api/v1/timer","description":"Get broadcast timer state"},{"id":"update","verb":"PUT","path":"/api/v1/timer","description":"Update broadcast timer settings"},{"id":"visibility","verb":"PATCH","path":"/api/v1/timer/visibility","body":{"visible":"boolean (omit to toggle)"},"event":"timer-visibility","description":"Toggle broadcast timer visibility"},{"id":"start","verb":"POST","path":"/api/v1/timer/start","description":"Start the timer"},{"id":"pause","verb":"POST","path":"/api/v1/timer/pause","description":"Pause the timer"},{"id":"reset","verb":"POST","path":"/api/v1/timer/reset","description":"Reset to initial duration"},{"id":"adjust","verb":"POST","path":"/api/v1/timer/adjust","body":{"seconds":"number (±)"},"description":"Adjust by ±seconds"}]},{"path":"/overlays/broadcast/agenda.html","label":"Agenda","icon":"📋","category":"overlay","modes":["webinar"],"auth":true,"description":"Session agenda with active-item highlighting.","actions":[{"id":"state","verb":"GET","path":"/api/v1/agenda","description":"Get agenda state"},{"id":"update","verb":"PUT","path":"/api/v1/agenda","description":"Update agenda settings"},{"id":"visibility","verb":"PATCH","path":"/api/v1/agenda/visibility","body":{"visible":"boolean (omit to toggle)"},"event":"agenda-visibility","description":"Toggle agenda visibility"},{"id":"next","verb":"POST","path":"/api/v1/agenda/next","description":"Advance to next agenda item"},{"id":"previous","verb":"POST","path":"/api/v1/agenda/previous","description":"Step back to previous item"},{"id":"goto","verb":"POST","path":"/api/v1/agenda/goto/:id","description":"Jump to a specific item"}]},{"path":"/overlays/broadcast/live-indicator.html","label":"Live Indicator","icon":"🔴","category":"overlay","modes":["all"],"auth":true,"description":"On-air / recording status indicator.","actions":[{"id":"state","verb":"GET","path":"/api/v1/broadcast-status","description":"Get broadcast status state"},{"id":"update","verb":"PUT","path":"/api/v1/broadcast-status","description":"Update broadcast status settings"},{"id":"visibility","verb":"PATCH","path":"/api/v1/broadcast-status/visibility","body":{"visible":"boolean (omit to toggle)"},"event":"broadcast-status-update","description":"Toggle broadcast status visibility"},{"id":"go-live","verb":"POST","path":"/api/v1/broadcast-status/go-live","description":"Mark stream as live"},{"id":"go-offline","verb":"POST","path":"/api/v1/broadcast-status/go-offline","description":"Mark stream as offline"},{"id":"start-recording","verb":"POST","path":"/api/v1/broadcast-status/start-recording","description":"Start recording indicator"},{"id":"pause","verb":"POST","path":"/api/v1/broadcast-status/pause","description":"Pause recording indicator"},{"id":"resume","verb":"POST","path":"/api/v1/broadcast-status/resume","description":"Resume recording indicator"}]},{"path":"/overlays/broadcast/qa-display.html","label":"Q&A Display","icon":"❓","category":"overlay","modes":["webinar"],"auth":true,"description":"Audience question display for Q&A segments.","actions":[{"id":"state","verb":"GET","path":"/api/v1/qa","description":"Get Q&A state"},{"id":"update","verb":"PUT","path":"/api/v1/qa","description":"Update Q&A settings"},{"id":"visibility","verb":"PATCH","path":"/api/v1/qa/visibility","body":{"visible":"boolean (omit to toggle)"},"event":"qa-update","description":"Toggle Q&A visibility"}]},{"path":"/overlays/broadcast/poll-results.html","label":"Poll Results","icon":"📊","category":"overlay","modes":["webinar"],"auth":true,"description":"Live poll results overlay.","actions":[{"id":"list","verb":"GET","path":"/api/v1/polls","description":"List all polls"},{"id":"active","verb":"GET","path":"/api/v1/polls/active","description":"Get currently-active poll"},{"id":"show","verb":"POST","path":"/api/v1/polls/:id/show-results","description":"Reveal poll results"},{"id":"hide","verb":"POST","path":"/api/v1/polls/:id/hide","description":"Hide poll results"}]},{"path":"/overlays/broadcast/cta.html","label":"Call to Action","icon":"📢","category":"overlay","modes":["webinar","dealscape"],"auth":true,"description":"CTA banner for viewer conversion moments.","actions":[{"id":"state","verb":"GET","path":"/api/v1/cta","description":"Get CTA state"},{"id":"update","verb":"PUT","path":"/api/v1/cta","description":"Update CTA settings"},{"id":"visibility","verb":"PATCH","path":"/api/v1/cta/visibility","body":{"visible":"boolean (omit to toggle)"},"event":"cta-update","description":"Toggle CTA visibility"}]},{"path":"/overlays/broadcast/sponsors.html","label":"Sponsors","icon":"🏢","category":"overlay","modes":["webinar"],"auth":true,"description":"Sponsor ticker / carousel.","actions":[{"id":"state","verb":"GET","path":"/api/v1/sponsors","description":"Get sponsors state"},{"id":"update","verb":"PUT","path":"/api/v1/sponsors","description":"Update sponsors settings"},{"id":"visibility","verb":"PATCH","path":"/api/v1/sponsors/visibility","body":{"visible":"boolean (omit to toggle)"},"event":"sponsors-update","description":"Toggle sponsors visibility"},{"id":"next","verb":"POST","path":"/api/v1/sponsors/next","description":"Rotate to next sponsor"}]},{"path":"/overlays/broadcast/captions.html","label":"Captions","icon":"💬","category":"overlay","modes":["all"],"auth":true,"description":"Live captions overlay.","actions":[{"id":"state","verb":"GET","path":"/api/v1/captions","description":"Get captions state"},{"id":"update","verb":"PUT","path":"/api/v1/captions","description":"Update captions settings"},{"id":"visibility","verb":"PATCH","path":"/api/v1/captions/visibility","body":{"visible":"boolean (omit to toggle)"},"event":"caption-update","description":"Toggle captions visibility"},{"id":"text","verb":"POST","path":"/api/v1/captions/text","body":{"text":"string"},"description":"Push caption text"},{"id":"clear","verb":"POST","path":"/api/v1/captions/clear","description":"Clear current caption"}]},{"path":"/saplogo/obs","label":"SAP Logo — OBS","icon":"🏷️","category":"overlay","modes":["sap"],"auth":true,"description":"Draw-in stroke animation with pulsing gradient.","actions":[{"id":"state","verb":"GET","path":"/api/v1/saplogo/obs","description":"Get SAP Logo (OBS) state"},{"id":"update","verb":"PUT","path":"/api/v1/saplogo/obs","description":"Update SAP Logo (OBS) settings"},{"id":"visibility","verb":"PATCH","path":"/api/v1/saplogo/obs/visibility","body":{"visible":"boolean (omit to toggle)"},"event":"saplogo-update","description":"Toggle SAP Logo (OBS) visibility"}]},{"path":"/saplogo/animated","label":"SAP Logo — Animated","icon":"🏷️","category":"overlay","modes":["sap"],"auth":true,"description":"3D entrance with shine effect.","actions":[{"id":"state","verb":"GET","path":"/api/v1/saplogo/animated","description":"Get SAP Logo (Animated) state"},{"id":"update","verb":"PUT","path":"/api/v1/saplogo/animated","description":"Update SAP Logo (Animated) settings"},{"id":"visibility","verb":"PATCH","path":"/api/v1/saplogo/animated/visibility","body":{"visible":"boolean (omit to toggle)"},"event":"saplogo-update","description":"Toggle SAP Logo (Animated) visibility"}]},{"path":"/saplogo/futuristic","label":"SAP Logo — Futuristic","icon":"🏷️","category":"overlay","modes":["sap"],"auth":true,"description":"Fragment assembly with holographic scanline.","actions":[{"id":"state","verb":"GET","path":"/api/v1/saplogo/futuristic","description":"Get SAP Logo (Futuristic) state"},{"id":"update","verb":"PUT","path":"/api/v1/saplogo/futuristic","description":"Update SAP Logo (Futuristic) settings"},{"id":"visibility","verb":"PATCH","path":"/api/v1/saplogo/futuristic/visibility","body":{"visible":"boolean (omit to toggle)"},"event":"saplogo-update","description":"Toggle SAP Logo (Futuristic) visibility"}]},{"path":"/saplogo/transparent","label":"SAP Logo — Transparent","icon":"🏷️","category":"overlay","modes":["sap"],"auth":true,"description":"Simplified assembly animation — recommended for OBS.","actions":[{"id":"state","verb":"GET","path":"/api/v1/saplogo/transparent","description":"Get SAP Logo (Transparent) state"},{"id":"update","verb":"PUT","path":"/api/v1/saplogo/transparent","description":"Update SAP Logo (Transparent) settings"},{"id":"visibility","verb":"PATCH","path":"/api/v1/saplogo/transparent/visibility","body":{"visible":"boolean (omit to toggle)"},"event":"saplogo-update","description":"Toggle SAP Logo (Transparent) visibility"},{"id":"show-only","verb":"POST","path":"/api/v1/saplogo/show/transparent","description":"Show this variant exclusively (hides others)"},{"id":"hide-all","verb":"POST","path":"/api/v1/saplogo/hide-all","description":"Hide every SAP logo variant"}]},{"path":"/overlays/dealscape-starting-soon.html","label":"Dealscape Starting Soon","icon":"⏳","category":"overlay","modes":["dealscape"],"auth":true,"description":"Pre-stream holding scene."},{"path":"/overlays/dealscape-live-scene.html","label":"Dealscape Live Scene","icon":"🎥","category":"overlay","modes":["dealscape"],"auth":true,"description":"Main live scene frame."},{"path":"/overlays/dealscape-brb.html","label":"Dealscape BRB","icon":"☕","category":"overlay","modes":["dealscape"],"auth":true,"description":"Be Right Back scene."},{"path":"/overlays/dealscape-end-screen.html","label":"Dealscape End Screen","icon":"🎬","category":"overlay","modes":["dealscape"],"auth":true,"description":"Closing CTA / thank-you scene."},{"path":"/overlays/dealscape-feature-spotlight.html","label":"Dealscape Feature Spotlight","icon":"💡","category":"overlay","modes":["dealscape"],"auth":true,"description":"Corner callout for product features.","actions":[{"id":"state","verb":"GET","path":"/api/v1/dealscape/spotlight","description":"Get spotlight state"},{"id":"update","verb":"POST","path":"/api/v1/dealscape/spotlight","body":{"feature":"string","position":"string?"},"description":"Set/update spotlight content"},{"id":"visibility","verb":"PATCH","path":"/api/v1/dealscape/spotlight/visibility","body":{"visible":"boolean (omit to toggle)"},"event":"spotlightVisibility","description":"Toggle spotlight visibility"}]},{"path":"/overlays/dealscape-demo-frame.html","label":"Dealscape Demo Frame","icon":"🖼️","category":"overlay","modes":["dealscape"],"auth":true,"description":"Branded frame for product demos.","actions":[{"id":"state","verb":"GET","path":"/api/v1/dealscape/demoframe","description":"Get demo-frame state"},{"id":"update","verb":"POST","path":"/api/v1/dealscape/demoframe","body":{"label":"string?","accent":"string?"},"description":"Set/update demo-frame content"},{"id":"visibility","verb":"PATCH","path":"/api/v1/dealscape/demoframe/visibility","body":{"visible":"boolean (omit to toggle)"},"event":"demoFrameVisibility","description":"Toggle demo-frame visibility"}]},{"path":"/overlays/starting-soon.html","label":"Starting Soon (classic)","icon":"⏳","category":"overlay","modes":["all"],"auth":true,"description":"Classic pre-stream holding scene."},{"path":"/overlays/brb.html","label":"Be Right Back (classic)","icon":"☕","category":"overlay","modes":["all"],"auth":true,"description":"Classic BRB scene."},{"path":"/overlays/end-screen.html","label":"End Screen (classic)","icon":"🎬","category":"overlay","modes":["all"],"auth":true,"description":"Classic closing scene."},{"path":"/scene/starting-soon/glass","label":"Starting Soon — Glass","icon":"✨","category":"overlay","modes":["all"],"auth":true,"description":"Glass & Glow pre-stream scene with optional live countdown. Mode-aware glow color.","variants":[{"id":"dealscape","label":"Dealscape mode","params":{"mode":"dealscape"}},{"id":"sap","label":"SAP mode","params":{"mode":"sap"}},{"id":"webinar","label":"Webinar mode","params":{"mode":"webinar"}}]},{"path":"/scene/brb/glass","label":"Be Right Back — Glass","icon":"✨","category":"overlay","modes":["all"],"auth":true,"description":"Glass & Glow BRB scene with pulsing dots and mode-aware aura.","variants":[{"id":"dealscape","label":"Dealscape mode","params":{"mode":"dealscape"}},{"id":"sap","label":"SAP mode","params":{"mode":"sap"}},{"id":"webinar","label":"Webinar mode","params":{"mode":"webinar"}}]},{"path":"/scene/end-screen/glass","label":"End Screen — Glass","icon":"✨","category":"overlay","modes":["all"],"auth":true,"description":"Glass & Glow closing scene with optional CTA and outro footer.","variants":[{"id":"dealscape","label":"Dealscape mode","params":{"mode":"dealscape"}},{"id":"sap","label":"SAP mode","params":{"mode":"sap"}},{"id":"webinar","label":"Webinar mode","params":{"mode":"webinar"}}]},{"path":"/controller","label":"Controller — Full","icon":"🎛️","category":"controller","modes":["all"],"auth":true,"description":"Full control panel with all sections and settings."},{"path":"/compact","label":"Controller — Compact","icon":"⚡","category":"controller","modes":["all"],"auth":true,"description":"Streamlined single-page controller."},{"path":"/controller/glass","label":"Mission Control","icon":"✦","category":"controller","modes":["all"],"auth":true,"description":"Glass & Glow controller with live OBS WebSocket integration, auto-provision, and command palette (⌘K)."},{"path":"/","label":"Landing","icon":"🏠","category":"page","modes":["all"],"auth":false,"description":"Landing page with route index and copy-URL tools."},{"path":"/setup","label":"Setup","icon":"⚙️","category":"page","modes":["all"],"auth":false,"description":"Setup page for quick URL generation with API key."},{"path":"/pages","label":"Pages Index","icon":"📄","category":"page","modes":["all"],"auth":false,"description":"Auto-generated index of every route in the registry."},{"path":"/login","label":"Login","icon":"🔐","category":"page","modes":["all"],"auth":false,"description":"API key login for controllers."}]}