diff options
Diffstat (limited to 'docs')
| -rw-r--r-- | docs/36c3.json | 478 | ||||
| -rw-r--r-- | docs/config-schema.json | 618 | 
2 files changed, 1096 insertions, 0 deletions
| diff --git a/docs/36c3.json b/docs/36c3.json new file mode 100644 index 0000000..423d73a --- /dev/null +++ b/docs/36c3.json @@ -0,0 +1,478 @@ +{ +    "$schema": "./config-schema.json", +    "conference": { +        "title": "36C3", +        "acronym": "36c3", +        "organizer": "CCC", +        "description": "Live streaming from the 36th Chaos Communication Congress", +        "keywords": [ +            "36C3", +            "Hacking", +            "Chaos Computer Club", +            "Video", +            "Music", +            "Podcast", +            "Media", +            "Streaming", +            "Hacker", +            "Leipzig", +            "Resource exhaustion" +        ], +        "start": "2019-12-27T07:00:00+02:00", +        "end": "2019-12-30T19:00:00+02:00" +    }, +    "rooms": [ +        { +            "name": "Ada", +            "slug": "halla", +            "streamId": "s1", +            "streamingConfig": { +                "display": "Ada", +                "wide": true, +                "stream": "s1", +                "preview": true, +                "translation": [ +                    { +                        "endpoint": "translated", +                        "label": "Translated1" +                    }, +                    { +                        "endpoint": "translated-2", +                        "label": "Translated2" +                    } +                ], +                "sd_video": true, +                "hd_video": true, +                "slides": true, +                "dash": true, +                "audio": true, +                "music": false, +                "schedule": true, +                "schedule_name": "Ada", +                "feedback": true, +                "subtitles": false, +                "subtitles_room_id": 1, +                "embed": true, +                "irc": true, +                "irc_config": { +                    "display": "#36C3-hall-a @ hackint", +                    "url": "https://webirc.hackint.org/#irc://irc.hackint.org/#36C3-hall-a" +                }, +                "twitter": true, +                "twitter_config": { +                    "display": "#Ada @ twitter", +                    "text": "#36C3 #Ada" +                } +            } +        }, +        { +            "name": "Borg", +            "slug": "hallb", +            "streamId": "s2", +            "streamingConfig": { +                "display": "Borg", +                "stream": "s2", +                "preview": true, +                "translation": [ +                    { +                        "endpoint": "translated", +                        "label": "Translated1" +                    }, +                    { +                        "endpoint": "translated-2", +                        "label": "Translated2" +                    } +                ], +                "sd_video": true, +                "hd_video": true, +                "slides": true, +                "dash": true, +                "audio": true, +                "music": false, +                "schedule": true, +                "schedule_name": "Borg", +                "feedback": true, +                "subtitles": false, +                "embed": true, +                "irc": true, +                "irc_config": { +                    "display": "#36C3-hall-b @ hackint", +                    "url": "https://webirc.hackint.org/#irc://irc.hackint.org/#36C3-hall-b" +                }, +                "twitter": true, +                "twitter_config": { +                    "display": "#Borg @ twitter", +                    "text": "#36C3 #Borg" +                } +            } +        }, +        { +            "name": "Clarke", +            "slug": "hallc", +            "streamId": "s3", +            "streamingConfig": { +                "display": "Clarke", +                "stream": "s3", +                "preview": true, +                "translation": [ +                    { +                        "endpoint": "translated", +                        "label": "Translated1" +                    }, +                    { +                        "endpoint": "translated-2", +                        "label": "Translated2" +                    } +                ], +                "sd_video": true, +                "hd_video": true, +                "slides": true, +                "dash": true, +                "audio": true, +                "music": false, +                "schedule": true, +                "schedule_name": "Clarke", +                "feedback": true, +                "subtitles": false, +                "subtitles_room_id": 3, +                "embed": true, +                "irc": true, +                "irc_config": { +                    "display": "#36C3-hall-c @ hackint", +                    "url": "https://webirc.hackint.org/#irc://irc.hackint.org/#36C3-hall-c" +                }, +                "twitter": true, +                "twitter_config": { +                    "display": "#Clarke @ twitter", +                    "text": "#36C3 #Clarke" +                } +            } +        }, +        { +            "name": "Dijkstra", +            "slug": "halld", +            "streamId": "s4", +            "streamingConfig": { +                "display": "Dijkstra", +                "stream": "s4", +                "preview": true, +                "translation": [ +                    { +                        "endpoint": "translated", +                        "label": "Translated1" +                    }, +                    { +                        "endpoint": "translated-2", +                        "label": "Translated2" +                    } +                ], +                "sd_video": true, +                "hd_video": true, +                "slides": true, +                "dash": true, +                "audio": true, +                "music": false, +                "schedule": true, +                "schedule_name": "Dijkstra", +                "feedback": true, +                "subtitles": false, +                "subtitles_room_id": 4, +                "embed": true, +                "irc": true, +                "irc_config": { +                    "display": "#36C3-hall-d @ hackint", +                    "url": "https://webirc.hackint.org/#irc://irc.hackint.org/#36C3-hall-d" +                }, +                "twitter": true, +                "twitter_config": { +                    "display": "#Dijkstra @ twitter", +                    "text": "#36C3 #Dijkstra" +                } +            } +        }, +        { +            "name": "Eliza", +            "slug": "halle", +            "streamId": "s5", +            "streamingConfig": { +                "display": "Eliza", +                "stream": "s5", +                "preview": true, +                "translation": [ +                    { +                        "endpoint": "translated", +                        "label": "Translated1" +                    }, +                    { +                        "endpoint": "translated-2", +                        "label": "Translated2" +                    } +                ], +                "sd_video": true, +                "hd_video": true, +                "slides": true, +                "dash": true, +                "audio": true, +                "music": false, +                "schedule": true, +                "schedule_name": "Eliza", +                "feedback": true, +                "subtitles": false, +                "subtitles_room_id": 5, +                "embed": true, +                "irc": true, +                "irc_config": { +                    "display": "#36C3-hall-e @ hackint", +                    "url": "https://webirc.hackint.org/#irc://irc.hackint.org/#36C3-hall-e" +                }, +                "twitter": true, +                "twitter_config": { +                    "display": "#Eliza @ twitter", +                    "text": "#36C3 #Eliza" +                } +            } +        }, +        { +            "name": "Chaos-West Bühne", +            "slug": "chaoswest", +            "streamId": "s150", +            "streamingConfig": { +                "display": "Chaos-West Bühne", +                "display_short": "Chaos-West", +                "stream": "s150", +                "preview": true, +                "translation": [], +                "sd_video": true, +                "hd_video": true, +                "dash": true, +                "audio": true, +                "slides": false, +                "music": false, +                "schedule": true, +                "schedule_name": "Chaos-West Bühne", +                "feedback": true, +                "subtitles": false, +                "embed": true, +                "irc": true, +                "twitter": true, +                "twitter_config": { +                    "display": "#CWStage @ twitter", +                    "text": "#CWStage" +                }, +                "irc_config": { +                    "display": "#chaoswest-stage @ hackint", +                    "url": "https://webirc.hackint.org/#irc://irc.hackint.org/#chaoswest-stage" +                } +            } +        }, +        { +            "name": "WikiPakaWG Esszimmer", +            "slug": "wikipakawg", +            "streamId": "s89", +            "streamingConfig": { +                "display": "WikiPakaWG Esszimmer", +                "display_short": "WikiPakaWG", +                "stream": "s89", +                "preview": true, +                "translation": [ +                    { +                        "endpoint": "translated", +                        "label": "Translated1" +                    } +                ], +                "sd_video": true, +                "hd_video": true, +                "dash": true, +                "audio": true, +                "slides": false, +                "music": false, +                "schedule": true, +                "schedule_name": "WikiPaka WG: Esszimmer", +                "feedback": true, +                "subtitles": false, +                "embed": true, +                "irc": false, +                "twitter": true, +                "twitter_config": { +                    "display": "#wikipakaWG @ twitter", +                    "text": "#wikipakaWG" +                } +            } +        }, +        { +            "name": "Open Infrastructure Orbit", +            "slug": "oio", +            "streamId": "oio", +            "streamingConfig": { +                "display": "Open Infrastructure Orbit", +                "display_short": "OIO", +                "stream": "oio", +                "preview": true, +                "translation": [], +                "sd_video": true, +                "hd_video": true, +                "dash": true, +                "audio": true, +                "slides": false, +                "music": false, +                "schedule": true, +                "schedule_name": "OIO Stage", +                "feedback": true, +                "subtitles": false, +                "embed": true, +                "irc": false, +                "twitter": true, +                "twitter_config": { +                    "display": "#OIOStage @ twitter", +                    "text": "#OIOStage" +                } +            } +        }, +        { +            "name": "CDC", +            "slug": "cdc", +            "streamId": "cdc", +            "streamingConfig": { +                "display": "CDC", +                "display_short": "CDC", +                "stream": "cdc", +                "preview": true, +                "translation": [], +                "sd_video": true, +                "hd_video": true, +                "dash": true, +                "audio": true, +                "slides": false, +                "music": false, +                "schedule": true, +                "schedule_name": "CDC Stage", +                "feedback": true, +                "subtitles": false, +                "embed": true, +                "irc": false +            } +        }, +        { +            "name": "Sendezentrum", +            "slug": "sz", +            "streamId": "s80", +            "streamingConfig": { +                "display": "Sendezentrum", +                "display_short": "SZ", +                "stream": "s80", +                "preview": true, +                "translation": [], +                "sd_video": true, +                "hd_video": true, +                "dash": true, +                "audio": true, +                "slides": false, +                "music": false, +                "schedule": true, +                "schedule_name": "DLF- und Podcast-Bühne", +                "feedback": true, +                "subtitles": false, +                "embed": true, +                "irc": false, +                "twitter": true, +                "twitter_config": { +                    "display": "sendezentrum @ twitter", +                    "text": "@sendezentrum" +                } +            } +        } +    ], +    "streamingConfig": { +        "features": { +            "embed": true, +            "relive": true, +            "feedback": true, +            "chat": { +                "hashtag": "#36C3", +                "irc": { +                    "display": "#36C3-%s @ hackint", +                    "url": "https://webirc.hackint.org/#irc://irc.hackint.org/#36C3-%s" +                }, +                "twitter": { +                    "text": "#36C3 #%s" +                } +            } +        }, +        "schedule": { +            "url": "https://data.c3voc.de/36C3/stages.schedule.xml", +            "roomfilter": [ +                "Ada", +                "Borg", +                "Clarke", +                "Dijkstra", +                "Eliza", +                "WikiPaka WG: Esszimmer", +                "Chaos-West Bühne", +                "OIO Stage", +                "DLF- und Podcast-Bühne" +            ], +            "scale": 7 +        }, +        "overviewPage": { +            "sections": [ +                { +                    "title": "Live", +                    "rooms": [ +                        { +                            "slug": "halla" +                        }, +                        { +                            "slug": "hallb" +                        }, +                        { +                            "slug": "hallc" +                        }, +                        { +                            "slug": "halld" +                        }, +                        { +                            "slug": "halle" +                        } +                    ] +                }, +                { +                    "title": "Assemblies Live", +                    "rooms": [ +                        { +                            "slug": "chaoswest" +                        }, +                        { +                            "slug": "wikipakawg" +                        }, +                        { +                            "slug": "oio" +                        }, +                        { +                            "slug": "sz" +                        }, +                        { +                            "slug": "cdc" +                        } +                    ] +                } +            ] +        }, +        "html": { +            "banner": "<div class=\"congress\"></div><div class=\"congress-motto\"></div>", +            "footer": "\n\t\tby <a href=\"https://ccc.de\">Chaos Computer Club e.V</a>,\n\t\t<a href=\"https://www.isystems.at/\">iSystems</a>,\n\t\t<a href=\"https://fem.tu-ilmenau.de/\">FeM</a>,\n\t\t<a href=\"https://www.ags.tu-bs.de/\">ags</a> &\n\t\t<a href=\"https://c3voc.de\">C3VOC</a>\n\t", +            "not_started": null +        }, +        "extraFiles": { +            "schedule.xml": "https://fahrplan.events.ccc.de/congress/2019/Fahrplan/schedule.xml", +            "schedule.json": "https://fahrplan.events.ccc.de/congress/2019/Fahrplan/schedule.json", +            "schedule.ics": "https://fahrplan.events.ccc.de/congress/2019/Fahrplan/schedule.ics", +            "schedule.xcal": "https://fahrplan.events.ccc.de/congress/2019/Fahrplan/schedule.xcal", +            "everything.schedule.xml": "http://data.c3voc.de/36C3/everything.schedule.xml", +            "everything.schedule.json": "http://data.c3voc.de/36C3/everything.schedule.json", +            "stages.schedule.xml": "http://data.c3voc.de/36C3/stages.schedule.xml", +            "stages.schedule.json": "http://data.c3voc.de/36C3/stages.schedule.json", +            "wiki.schedule.xml": "http://data.c3voc.de/36C3/wiki.schedule.xml", +            "wiki.schedule.json": "http://data.c3voc.de/36C3/wiki.schedule.json" +        } +    } +}
\ No newline at end of file diff --git a/docs/config-schema.json b/docs/config-schema.json new file mode 100644 index 0000000..f804081 --- /dev/null +++ b/docs/config-schema.json @@ -0,0 +1,618 @@ +{ +  "$schema": "http://json-schema.org/draft-07/schema", +  "$id": "https://c3voc.de/streaming-website/config", +  "type": "object", +  "title": "VOC streaming-website configuration", +  "description": " deployed at https://streaming.media.ccc.de", +  "required": ["conference"], +  "properties": { +    "conference": { +      "type": "object", +      "required": ["title", "acronym"], +      "additionalProperties": false, +      "properties": { +        "title": { +          "type": "string", +          "title": "Titel der Konferenz", +          "description": "Kann Leer- und Sonderzeichen enthalten. Dieser wird im Seiten-Header, im <title>-Tag, in der About-Seite und ggf. ab weiteren Stellen als Anzeigetext benutzt.", +          "examples": ["DiVOC - Reboot to Respawn"] +        }, +        "acronym": { +          "title": "Acronym", +          "description": "VOC Kürzel für die Konferenz, falls nicht bekannt bitte nicht selbst ausdenken sondern nachfragen. Wird in den URLs als Slug für die Konferenz verwendet.", +          "type": "string", +          "examples": ["36c3", "rc3", "divoc-ptt"], +          "pattern": "^[a-z0-9_-]+$" +        }, +        "organizer": { +          "type": "string", +          "title": "Veranstalter", +          "description": "Wird für den <meta name=\"author\">-Tag verwendt. Ist das Feld leer, wird kein solcher <meta>-Tag generiert.", +          "examples": ["CCC", "DiVOC"] +        }, +        "description": { +          "type": "string", +          "title": "Beschreibungstext", +          "description": "Wird für den <meta name=\"description\">-Tag verwendet. Wird diese Option ignoriert, wird kein solcher <meta>-Tag generiert.", +          "examples": [ +            "Livestream des Digital verteilten Online-Chaos", +            "Live streaming from the 36th Chaos Communication Congress" +          ] +        }, +        "start": { +          "type": "string", +          "format": "datetime-local", +          "title": "Startzeitpunkt der Konferenz", +          "description": "Befinden wir uns davor, wird die Closed-Seite mit einem Text der Art 'hat noch nicht angefangen' angezeigt. Wird dieser Zeitpunkt nicht angegeben, gilt die Konferenz immer als angefangen. ", +          "examples": ["2021-04-02T09:30:00+02:00"], +          "options": { +            "grid_columns": 2, +            "inputAttributes": { +              "placeholder": "Enter datetime" +            }, +            "flatpickr": { +              "wrap": true, +              "time_24hr": true, +              "allowInput": true +            } +          } +        }, +        "end": { +          "type": "string", +          "format": "datetime-local", +          "examples": ["2021-04-05T18:30:00+02:00"], +          "options": { +            "grid_columns": 2, +            "inputAttributes": { +              "placeholder": "Enter datetime" +            }, +            "flatpickr": { +              "wrap": true, +              "time_24hr": true, +              "allowInput": true +            } +          } +        }, +        "time_zone_name": { +          "title": "Zeitzone", +          "type": "string", +          "examples": ["Europe/Amsterdam", "Europe/Berlin"], +          "default": "Europe/Amsterdam", +          "pattern": "^[A-Z][a-z+]/[A-Z][a-z+]$" +        }, +        "colors": { +          "type": "object", +          "properties": { +            "main": { +              "type": "string", +              "format": "color" +            }, +            "background": { +              "type": "string", +              "format": "color" +            } +          } +        }, +        "keywords" :{ +          "type":"array", +          "items": { +            "type": "string" +          } +        } +      } +    }, +    "rooms": { +      "type": "array", +      "title": "Räume", +      "description": "(= Audio & Video Produktionen, also auch DJ-Sets o.ä.)", +      "default": [], +      "additionalItems": true, +      "items": { +        "anyOf": [ +          { +            "type": "object", +            "default": {}, +            "required": ["name", "slug", "streamId", "streamingConfig"], +            "properties": { +              "name": { +                "type": "string", +                "title": "Raum Name", +                "description": "(aus Schedule)", +                "default": "", +                "examples": ["Piscopia"] +              }, +              "slug": { +                "type": "string", +                "title": "Raum-Slug", +                "description": "Wird in den URLs oder im Feedback verwendet", +                "default": "", +                "examples": ["halla", "vortrag", "piscopia"] +              }, +              "streamId": { +                "type": "string", +                "title": "Stream ID", +                "description": "Der Name des Kanals im VOC Streaming CDN z.B. s1", +                "default": "", +                "examples": ["s1", "s2", "s3", "s4", "q1", "divoc", "cccb"] +              }, +              "streamingConfig": { +                "$ref": "#/definitions/RoomStreamingConfig" +              } +            } +          } +        ] +      } +    }, +    "streamingConfig": { +      "$ref": "#/definitions/StreamingConfig" +    } +   +  }, +  "definitions": { +    "Room": { +      "type": "object", +      "description": "Liste der Räume (= Audio & Video Produktionen, also auch DJ-Sets o.ä.)", +      "additionalProperties": false, +      "properties": { +        "name": { +          "type": "string" +        }, +        "slug": { +          "type": "string" +        }, +        "streamId": { +          "type": "string" +        }, +        "streamingConfig": { +          "$ref": "#/definitions/RoomStreamingConfig" +        } +      }, +      "required": ["streamId", "name", "slug", "streamingConfig"] +    }, +    "Features": { +      "type": "object", +      "additionalProperties": false, +      "title": "Globale Schalter", +      "description": "", +      "properties": { +        "relive": { +          "type": "boolean", +          "title": "Relive aktiv", +          "description": "Wird diese Option deaktivert, wird die UI für temporäre Mitschnitte nicht angezeigt", +          "default": false +        }, +        "embed": { +          "type": "boolean", +          "title": "Embedding", +          "description": "Wird diese Option deaktivert, werden alle Embedding-Funktionen deaktiviert.", +          "default": true +        }, +        "feedback": { +          "type": "boolean", +          "title": "Feedback Formular", +          "description": "Wird diese Option deaktivert, wird das gesamte Feedback-System deaktiviert", +          "default": false +        }, +        "chat": { +          "type": "object", +          "title": "Globale Konfiguration für Chat und Social Media", +          "properties": { +            "hashtag": { +              "type": "string", +              "title": "Hashtag der Konferenz", +              "examples": ["#36C3", "#divoc-r2r"] +            }, +            "twitter": { +              "type": ["boolean", "object"] +            }, +            "mastodon":{ +              "type": "boolean" +            }, +            "matrix": { +              "type": "boolean" +            }, +            "irc": { +              "$ref": "#/definitions/IrcConfig", +              "title": "Globale Konfiguration der IRC-Links", +              "description": "Wird dieser Block auf null gesetzt, werden keine IRC-Links mehr erzeugt. Sollen die IRC-Links für jeden Raum einzeln konfiguriert werden, muss dieser Block trotzdem existieren sein. ggf. einfach auf true setzen.", +              "required": ["display", "url"], +              "properties": { +                "url": { +                  "title": "URL für die IRC-Links", +                  "description": "Hierbei kann sowohl ein irc://-Link als auch ein Link zu einem WebIrc-Provider wie z.B. 'https://webirc.hackint.org/#irc://irc.hackint.org/#36C3-%s' verwendet werden. %s wird durch den urlencodeten Raum-Slug ersetzt. Eine Anpassung kann ebenfalls in der Raum-Konfiguration vorgenommen werden.", +                  "examples": ["https://webirc.hackint.org/#irc://irc.hackint.org/#36C3-%s", "ircs://irc.hackint.eu:6667/36C3-%s"] +                }, +                "display": { +                  "type": "string", +                  "title": "Anzeigetext für die IRC-Links", +                  "description": "%s wird durch den Raum-Slug ersetzt. Ist eine weitere Anpassung erfoderlich, kann ein IRC_CONFIG-Block in der Raum-Konfiguration zum Überschreiben dieser Angaben verwendet werden." +                } +              } +            } +          } +        } +      } +    }, +    "StreamingConfig": { +      "type": "object", +      "additionalProperties": false, +      "title": "Konfigurationen", +      "description": "", +      "default": {}, +      "required": ["features", "overviewPage"], +      "properties": { +        "schedule": { +          "type": "object", +          "title": "Konferenz-Fahrplan", +          "required": ["url", "scale"], +          "properties": { +            "url": { +              "type": "string", +              "title": "URL zum Fahrplan-XML", +              "description": "Diese URL muss immer verfügbar sein, sonst können kann die Programm-Ansicht aufhören zu funktionieren. Wenn die Quelle unverlässlich ist ;) sollte ein externer HTTP-Cache vorgeschaltet werden.", +              "default": "", +              "examples": [ +                "https://data.c3voc.de/divoc/everything.schedule.xml" +              ] +            }, +            "scale": { +              "$id": "#/properties/conference/properties/streamingConfig/properties/schedule/properties/scale", +              "type": "integer", +              "title": "Skalierung der Programm-Vorschau ", +              "description": "in Sekunden pro Pixel", +              "default": 7 +            }, +            "roomfilter": { +              "type": "array", +              "title": "Nur die angegebenen Räume aus dem Fahrplan beachten", +              "description": "Wird diese Option ignoriert, werden alle Räume angezeigt", +              "default": [], +              "additionalItems": true, +              "items": { +                "type": "string", +                "description": "", +                "default": "", +                "examples": ["Piscopia"] +              } +            } +          }, +          "additionalProperties": true +        }, +        "features": { +          "$ref": "#/definitions/Features" +        }, +        "overviewPage": { +          "$ref": "#/definitions/Page" +        }, +        "html": { +          "type": "object", +          "description": "Anpassung der Standard-Texte", +          "properties": { +            "banner": { +              "type": ["string", "null"], +              "format": "text", +              "title": "HTML-Code für den Banner (nur auf der Startseite, direkt unter dem Header)", +              "description": "wird üblicherweise für KeyVisuals oder Textmarke verwendet (vgl. Hintergrund des Sliders oben auf http://media.ccc.de/)\nDieser HTML-Block wird üblicherweise in der main.less speziell für die Konferenz umgestaltet.\nWird diese Zeile nicht konnfiguriert, wird kein Banner ausgegeben.", +              "examples": [ +                "<img src=\"../configs/conferences/fiffkon16/logo.png\" class=\"FIfFKon\">", +                "<div class=\"congress\"></div><div class=\"congress-motto\"></div>" +              ] +            }, +            "footer": { +              "type": ["string", "null"], +              "format": "html", +              "title": "HTML-Code für den Footer (z.B. für spezielle Attribuierung mit <a>-Tags)", +              "description": "Sollte üblicherweise nur Inline-Elemente enthalten. Wird diese Zeile gelassen, wird die Standard-Attribuierung für (c3voc.de) verwendet", +              "default": null, +              "examples": [ +                "by <a href=\"https://di.c3voc.de\">DiVOC Organizers</a> &\n\t\t<a href=\"https://c3voc.de\">C3VOC</a>\n\t" +              ] +            }, +            "not_started": { +              "$id": "#/properties/conference/properties/streamingConfig/properties/html/properties/not_started", +              "type": ["string", "null"], +              "format": "textarea", +              "title": "HTML-Code für die 'Event has not started yet' Seite", +              "description": "Ersetzt den Standardtext", +              "examples": [ +                "<h1>Sonoj 2019 has not started yet</h1>\n<p>Live streams will be available here throughout the event. During and leading up to the event <a href=\"ircs://chat.freenode.net/sonoj\">#sonoj on Freenode</a>\nwill be a place for discussion and questions.\nIf you do not have an IRC client installed, try out <a href=\"https://webchat.freenode.net/#sonoj\">freenode webchat</a>. So even if you are not able to visit in person, please feel free to participate remotely.\n</p>" +              ] +            } +          } +        }, +        "extraFiles": { +          "type": "object", +          "additionalProperties": true +        } +      } +    }, +    "RoomStreamingConfig": { +      "type": "object", +      "title": "RoomStreamingConfig", +      "description": "", +      "default": {}, +      "examples": [ +        { +          "schedule_name": "Piscopia", +          "display": "Piscopia", +          "stream": "divocr2r", +          "preview": true, +          "stereo": false, +          "sd_video": true, +          "hd_video": true, +          "slides": false, +          "dash": true, +          "audio": true +        } +      ], +      "required": ["display", "stream", "preview", "slides", "schedule"], +      "properties": { +        "display": { +          "type": "string", +          "title": "Anzeige-Name", +          "description": "", +          "default": "", +          "examples": ["Piscopia"] +        }, +        "display_short": { +          "type": "string" +        }, +        "wide": { +          "type": "boolean", +          "title": "16:9", +          "description": "", +          "default": true +        }, +        "preview": { +          "type": "boolean", +          "title": "Stream-Vorschaubildchen auf der Übersichtsseite anzeigen", +          "description": "", +          "default": true +        }, +        "translation": { +          "type": "array", +          "title": "Übersetzungstonspur aktivieren", +          "description": "Betrifft video sd / hd, slides, audio", +          "items": { +            "$ref": "#/definitions/TranslationConfig" +          } +        }, +        "stereo": { +          "type": "boolean", +          "title": "Stereo", +          "description": "", +          "default": false +        }, +        "dash": { +          "type": "boolean", +          "title": "DASH", +          "description": "", +          "default": true +        }, +        "hd_video": { +          "type": "boolean", +          "title": "HD", +          "description": "Wenn dieses Flag deaktiviert wird kein HD-Video (1920×1080) angeboten. Wird auch SD-Video und DASH deaktivert, wird für diesen Raum überhaupt kein Video angeboten. In diesem Fall wird Slides, Audio und zuletzt Musik als Default-Stream angenommen – sofern aktiviert.", +          "default": true +        }, +        "sd_video": { +          "type": "boolean", +          "title": "SD", +          "description": "", +          "default": true +        }, +        "slides": { +          "type": "boolean", +          "title": "Slide-Only-Stream", +          "description": "Getrennter Stream für Vortragsfolien verfügbar", +          "default": false +        }, +        "audio": { +          "type": "boolean", +          "title": "Audio-Only-Stream", +          "description": "", +          "default": false +        }, +        "music": { +          "type": "boolean", +          "title": "Musik-Stream", +          "description": "", +          "default": false +        }, +        "schedule": { +          "type": "boolean", +          "title": "Fahrplan-Ansicht auf der Raum-Seite aktivieren", +          "description": "Wenn diese Option deaktivert wird der Raum nicht im Fahrplan gesucht und auch auf der Startseite findet keine Darstellung statt. Ebenso können alle Fahrplan-Funktionialitäten durch auskommentieren des globalen Flags deaktiviert werden.", +          "default": true +        }, +        "schedule_name": { +          "type": "string", +          "title": "Name des Raums im Fahrplan", +          "description": "Wenn dieses Feld ignoriert wird der Raum-Display-Name verwendet", +          "examples": ["Piscopia"] +        }, +        "feedback": { +          "type": "boolean", +          "title": "Feedback anzeigen", +          "description": "Wenn diese Option deaktivert taucht der Raum auch im globalen Feedback-Formular nicht auf. Hängt vom Feedback-Flag in den globalen Optionen ab.", +          "default": true +        }, +        "subtitles": { +          "type": "boolean", +          "title": "Subtitles-Player aktivieren", +          "description": "Subtitles-Button und die damit verbundenen Funktionen. Hängt vom Subtitles-Flag in den globalen Optionen ab.", +          "default": false +        }, +        "subtitles_room_id": { +          "type": "integer", +          "title": "ID des Raumes im L2S2-System", +          "description": "", +          "examples": [1] +        }, +        "embed": { +          "type": "boolean", +          "title": "Embed-Form aktivieren", +          "description": "Ist dieses Option aktiviert, wird ein Embed-Tab unter dem Video angezeigt. Darüber kann der Player als iframe eingebunden werden. Wenn diese Option deaktivert ist, wird kein Embed-Tab angeboten und die URL zum Einbetten existiert nicht. Ebenso können alle Embedding-Funktionialitäten durch deaktiveren des globalen EMBED-Blocks deaktiviert werden.", +          "default": true +        }, +        "chat": { +          "type": ["boolean", "object"], +          "title": "Chat-Tab aktivieren/konfigurieren", +          "description": "Ist diese Option aktiviert, wird ein Chat-Tab mit den jeweiligen Links angezeigt.", +          "default": false, +          "$ref": "#/definitions/ChatConfig" +        } +      } +    }, +    "TranslationConfig": { +      "type": "object", +      "additionalProperties": false, +      "required": ["endpoint", "label"], +      "properties": { +        "endpoint": { +          "type": "string" +        }, +        "label": { +          "type": "string" +        } +      } +    }, +    "ChatConfig": { +      "type": "object", +      "additionalProperties": false, +      "properties": { +        "irc": { + +        }, +        "twitter": { + +        }, +        "mastodon":{ + +        }, +        "matrix": { + +        } +      } +    }, +    "IrcConfig": { +      "title": "IRC", +      "type": "object", +      "additionalProperties": false, +      "properties": { +        "display": { +          "type": "string" +        }, +        "url": { +          "type": "string", +          "format": "uri" +        } +      }, +      "required": ["display", "url"] +    }, +    "TwitterConfig": { +      "title": "Twitter", +      "type": "object", +      "additionalProperties": false, +      "properties": { +        "display": { +          "type": "string" +        }, +        "text": { +          "type": "string" +        } +      }, +      "required": ["display", "text"] +    }, +    "Page": { +      "type": "object", +      "title": "Konfiguration der Stream-Übersicht auf der Startseite", +      "description": "", +      "default": {}, +      "required": ["sections"], +      "properties": { +        "sections": { +          "type": "array", +          "title": "Abschnitte und darunter aufgeführte Räume", +          "description": "Es können beliebig neue Gruppen und Räume hinzugefügt werden", +          "default": [], +          "examples": [ +            [ +              { +                "title": "Live", +                "rooms": [ +                  { +                    "slug": "halla" +                  }, +                  { +                    "slug": "hallb" +                  }, +                  { +                    "slug": "hallc" +                  }, +                  { +                    "slug": "halld" +                  }, +                  { +                    "slug": "halle" +                  } +                ] +              }, +              { +                "title": "Assemblies Live", +                "rooms": [ +                  { +                    "slug": "chaoswest" +                  }, +                  { +                    "slug": "wikipakawg" +                  }, +                  { +                    "slug": "oio" +                  }, +                  { +                    "slug": "sz" +                  }, +                  { +                    "slug": "cdc" +                  } +                ] +              } +            ] +          ], +          "items": { +            "type": "object", +            "title": "Abschnitt", +            "description": "", +            "default": {}, +            "required": ["title", "items"], +            "properties": { +              "title": { +                "type": "string", +                "title": "Titel der Gruppe", +                "description": "", +                "default": "Live", +                "examples": ["Live", "Audio"] +              }, +              "items": { +                "type": "array", +                "title": "Räume / Channels", +                "description": "", +                "items": { +                  "type": "object", +                  "required": ["slug"], +                  "additionalProperties": true, +                  "properties": { +                    "slug": { +                      "type": "string" +                    } +                  } +                } +              } +            } +          } +        } +      } +    } +  } +} | 
