For universities and schools

Das Dateiformat

Die vollständige, normative Beschreibung der .studynow-Dateien: Studiengangsrahmen, Lehrveranstaltungen, Semester- und Schulvorlage.
This document is available in German only – it is written for schools and universities in Germany.

Format studynow · Version 3 · Stand 2026-09-23

Diese Spezifikation ist normativ. Die Schlüsselwörter MUSS, DARF NICHT, SOLL und KANN sind im Sinne von RFC 2119 zu lesen. Eine Einführung für Ersteller steht in README.md.


1 Datei

  • Eine Datei ist ein JSON-Dokument (RFC 8259) in UTF-8.
  • Die Dateiendung MUSS .studynow lauten.
  • Der Inhaltstyp SOLL application/vnd.studynow+json sein; application/json ist zulässig.
  • Eine Datei beschreibt genau ein Profil (Abschnitt 3).

2 Kopf

Jede Datei beginnt mit denselben drei Feldern.

FeldTypPflichtBedeutung
formatTextjaMUSS exakt studynow sein
versionGanzzahljaFormatversion. Diese Spezifikation beschreibt 3; 1 und 2 bleiben gültig
profilTextjastudiengangsrahmen, lehrveranstaltungen, semestervorlage oder schulvorlage

Eine App MUSS eine Datei mit einer ihr unbekannten version ablehnen, statt sie teilweise zu lesen.

Version 2 ist rein ergänzend. Jede Datei der Version 1 ist eine gültige Datei der Version 2; alle in Version 2 hinzugekommenen Felder sind freiwillig. Wer eine Datei schreibt, die ohne die neuen Felder auskommt, SOLL weiter "version": 1 angeben — dann lesen auch ältere Apps sie. Neu sind: Lehrende und Räume je Veranstaltung, die Terminarten seminar, labor und muendlichePruefung, das Merkmal zaehltAlsPruefung, die Uhrzeit an Fristen, die Farbe der Veranstaltung, der Serienbezug am Einzeltermin und das Profil semestervorlage. Unbekannte Felder an beliebiger Stelle MUSS eine App ignorieren; Ersteller DÜRFEN NICHT darauf bauen, dass sie ausgewertet werden.

Version 3 ist ebenfalls ergänzend. Neu ist allein das Profil schulvorlage (Abschnitt 6b). Die Hochschulprofile sind unverändert; wer eines davon schreibt, SOLL weiter "version": 2 bzw. 1 angeben. Eine Datei mit "profil": "schulvorlage" MUSS "version": 3 tragen.

3 Profile

ProfilErstellt vonInhaltStatus
studiengangsrahmenStudienbüro, FakultätSemesterzeit, Vorlesungszeit, vorlesungsfreie Zeiten, semesterweite Termine und Fristen (auch An- und Abmeldefristen)normativ
lehrveranstaltungenStudienbüro, LehrplanungLehrveranstaltungen mit Terminen und Fristennormativ
semestervorlagejede Person, die ein Semester eingepflegt hatein ganzes Semester: Kopf, Veranstaltungen, Termine, Fristennormativ, seit Version 2
schulvorlageLehrkraft, Schulverwaltungeine Klasse bzw. ein Oberstufen-Kursangebot für ein Halbjahr: Stundenzeiten, A/B-Wochen, Ferien, Termine, Fächer, Wochenplannormativ, seit Version 3

Granularität ist ein Studiengang je Datei — nicht eine Datei je Hochschule.

4 Wertformen

FormSchreibweiseBeispiel
DatumJJJJ-MM-TT, ein existierender Kalendertag2026-11-16
UhrzeitHH:MM, 24 Stunden09:00
Kennungnicht leerer Textpruefung-an
Textnicht leerer Text; nur aus Leerzeichen gilt als fehlendWeihnachtspause

Zeitangaben sind Ortszeit der Hochschule. Ein Zeitraum aus beginn und ende schließt beide Tage ein; beginn DARF NICHT nach ende liegen.

Kennungen

Jedes Element einer Liste und das Semester tragen eine id.

  • Eine id MUSS innerhalb ihrer Liste eindeutig sein.
  • Eine id MUSS über alle Fassungen der Datei stabil bleiben. Sie verbindet ein Element beim Neuladen mit sich selbst (Abschnitt 7). Eine geänderte id bedeutet: altes Element entfällt, neues kommt hinzu.

5 Profil studiengangsrahmen

5.1 Oberste Ebene

FeldTypPflichtBedeutung
studiengangTextjaAnzeigename, z. B. Informatik B.Sc.
herausgeberTextneinWer die Datei pflegt; nur zur Anzeige
semesterObjektja5.2
vorlesungsfreiListenein5.3 — fehlt sie, ist sie leer
phasenListenein5.4 — veraltet, stattdessen fristen
termineListenein5.5
fristenListenein5.6

studiengang zusammen mit semester.id identifiziert eine Datei. Eine App MUSS eine zweite Datei mit gleichem Paar als neue Fassung derselben Datei behandeln, nicht als weiteres Semester.

5.2 semester

FeldTypPflichtRegel
idKennungjastabil, z. B. wise-2026-27
nameTextjaSOLL den Studiengang in Klammern tragen
beginn, endeDatumjaSemesterzeit
vorlesungszeitObjektjamit beginn, ende (Datum); MUSS innerhalb der Semesterzeit liegen

Die Vorlesungszeit ist die Referenz für alle Terminserien: Serien laufen während der Vorlesungszeit, nicht während der Semesterzeit.

5.3 vorlesungsfrei[]

FeldTypPflichtRegel
idKennungja
bezeichnungTextja
beginn, endeDatumjaMUSS innerhalb der Semesterzeit liegen

Vorlesungsfreie Zeiten schneiden Termine aus Serien heraus.

5.4 phasen[] — An- und Abmeldephasen (veraltet)

Seit App-Version 6.10.1 sind An- und Abmeldephasen Semesterfristen (5.6): art anmeldung oder abmeldung, das Ende der Phase als abgabe, ihr Beginn als start. Neue Dateien SOLLEN fristen verwenden. Eine App MUSS phasen weiter lesen und legt je Phase eine Semesterfrist an – bei beides zwei, die Abmeldung mit der Kennung <id>-abmeldung. Die Bezeichnung ist bezeichnung oder, wenn sie fehlt, die Art im Plural („Prüfungen“, „Studienleistungen“ …).

FeldTypPflichtRegel
idKennungja
artWertjapruefung · studienleistung · lehrveranstaltung · seminar · proseminar · projektgruppe · sonstiges
bezeichnungTextbei sonstigesfreie Benennung
richtungWertjaanmelden · abmelden · beides
beginn, endeDatumjaDARF außerhalb der Semesterzeit liegen

Mehrere Phasen derselben Art sind zulässig.

5.5 termine[] — semesterweite Termine

Für Hochschulweites mit Ort und Uhrzeit: Begrüßung, Informationsveranstaltung.

FeldTypPflichtRegel
idKennungja
artWertjavorlesung · uebung · zentraluebung · tutorium · seminar · praktikum · labor · klausur · muendlichePruefung · seminarvortrag · praesentation · block · sonstiges
bezeichnungTextbei sonstiges
datumDatumja
beginn, endeUhrzeitjabeginn DARF NICHT nach ende liegen
raumTextneinseit Version 2
lehrpersonTextneinseit Version 2
zaehltAlsPruefungWahrheitswertneinseit Version 2; klausur und muendlichePruefung zählen ohnehin

praktikum und labor sind seit Version 2 getrennt. Der Wert praktikumLabor steht für die frühere zusammengefasste Art; er DARF gelesen, SOLL aber nicht mehr geschrieben werden.

5.6 fristen[] — semesterweite Fristen

Für Hochschulweites mit Abgabezeitpunkt: Rückmeldung, BAföG-Nachweis, Prüfungsan- und -abmeldung.

FeldTypPflichtRegel
idKennungja
artWertjauebungsblatt · seminararbeit · ausarbeitung · abschlussarbeit · anmeldung · abmeldung (seit App-Version 6.10.1) · sonstiges
bezeichnungTextja
abgabeDatumjader eigentliche Fristzeitpunkt; bei einer An- oder Abmeldung das Ende der Phase
uhrzeitUhrzeitneinseit Version 2; ohne sie gilt die Frist bis zum Ende des Tages
startDatumneinab wann die Frist bearbeitbar ist; DARF NICHT nach abgabe liegen. Bei einer An- oder Abmeldung der Beginn der Phase: Die App zeigt sie erst drei Tage davor unter den anstehenden Fristen und im Kalender als Band vom Beginn bis zum Ende

6 Profil lehrveranstaltungen

Alle Lehrveranstaltungen, die ein Studiengang in einem Semester anbietet. Die Studierenden wählen daraus aus, was sie belegen; eine App DARF NICHT ungefragt alle anlegen.

6.1 Oberste Ebene

FeldTypPflichtBedeutung
studiengangTextjawie im Studiengangsrahmen
herausgeberTextneinnur zur Anzeige
semesterKennungjadie semester.id aus dem Studiengangsrahmen, z. B. wise-2026-27
veranstaltungenListeja6.2 — MUSS mindestens einen Eintrag haben

studiengang und semester verbinden die Liste mit einem importierten Studiengangsrahmen. Gibt es keinen passenden, SOLL die App das Zielsemester erfragen, statt die Liste abzulehnen.

6.2 veranstaltungen[]

FeldTypPflichtRegel
idKennungjaeindeutig in der Liste; die Veranstaltungsnummer eignet sich
titelTextja
veranstaltungsnummerTextneinModul- oder LV-Nummer
kurzformTextnein
eigenschaftenObjektnein6.3
serienListenein6.4
termineListenein6.5
fristenListenein6.6
fristserienListenein6.7

Termine SOLLEN als Einzeltermine geliefert werden. Wo das Campussystem nur Regeln kennt, sind Serien zulässig; beides DARF in einer Veranstaltung gemischt vorkommen. Raum und Dozent sind nicht Teil des Formats — sie pflegen die Studierenden selbst.

6.2a Lehrende, Räume und Farbe (seit Version 2)

Alle drei stehen an der Veranstaltung und sind freiwillig.

FeldTypRegel
lehrende[]Liste{ "name": Text (Pflicht), "rolle": Text }
raeume[]Liste{ "bezeichnung": Text (Pflicht), "art": Wert }
farbeTextName einer Farbe der App, z. B. tomate – oder seit App-Version 6.10.2 ein Hex-Wert wie #7a4bd1

art eines Raums: vorlesungsraum · uebungsraum · labor · pruefungsraum · sonstiges.

Eine unbekannte farbe DARF die App durch eine eigene ersetzen; sie MUSS die Datei deswegen nicht ablehnen. Einen Hex-Wert übernimmt die App als eigene Farbe; die Töne für hellen und dunklen Hintergrund leitet sie selbst ab. Die Namen der festen Farben: tomate · tuerkis · mandarine · indigo · gras · fuchsie · himmel · senf · pflaume · stein.

6.3 eigenschaften

Alle Felder sind Wahrheitswerte (true/false) und optional.

FeldBedeutung
uebungsgruppenEs gibt Übungen oder Tutorien
praktikumEs gibt ein Praktikum oder Labor
regelmaessigeAufgabenEs gibt Abgaben, etwa Übungsblätter
pruefungEs gibt eine Prüfung

Eine App SOLL eine Eigenschaft auch dann setzen, wenn sie aus dem Inhalt folgt (eine Serie der Art uebung, zentraluebung oder tutorium bedeutet Übungsgruppen). Die ausdrückliche Angabe ist für das Gegenteil da: "pruefung": true ohne Klausurtermin sagt „der Termin steht noch aus", und die App erinnert daran.

6.4 serien[] — Terminserien

FeldTypPflichtRegel
idKennungjaeindeutig in der Veranstaltung
artWertjavorlesung · uebung · zentraluebung · tutorium · seminar · praktikum · labor · sonstiges
bezeichnungTextbei sonstigessonst Zusatz, z. B. Dienstags
turnusWertjawoechentlich · vierzehntaegig
wochentagWertsiehe untenmo · di · mi · do · fr · sa · so
vonDatumsiehe unten
bisDatumneinletzter möglicher Termin
beginn, endeUhrzeitjabeginn DARF NICHT nach ende liegen
raum, lehrpersonTextneinseit Version 2; Vorbelegung für die Termine der Serie
anwesenheitspflichtWahrheitswertneingilt für alle Termine der Serie

Eine Serie MUSS wochentag oder von angeben. Die App rechnet sie beim Import in Einzeltermine um:

  • mit wochentag: erster Termin ist der erste solche Wochentag ab von, ohne von ab Beginn der Vorlesungszeit;
  • ohne wochentag: von ist der erste Termin, sein Wochentag gilt.
  • Letzter möglicher Termin ist bis, ohne bis das Ende der Vorlesungszeit.
  • Termine in vorlesungsfreien Zeiten entfallen; der Rhythmus läuft dabei weiter.

Für mehrere Termine pro Woche werden mehrere Serien angegeben.

6.5 termine[] — Einzeltermine

Wie 5.5, zusätzlich mit dem optionalen Wahrheitswert anwesenheitspflicht. Einzeltermine werden auch in vorlesungsfreien Zeiten angelegt — eine Klausur liegt dort in der Regel.

Seit Version 2 zusätzlich:

FeldTypPflichtRegel
serieKennungneinVerweis auf eine serien[].id derselben Veranstaltung
ausgefallenWahrheitswertneinder Termin findet nicht statt

serie MUSS auf eine Serie derselben Veranstaltung zeigen; ein Verweis ins Leere MUSS die Datei ungültig machen. Nennt eine Datei zu einer Serie mindestens einen Termin, MUSS die App genau diese Termine anlegen und das aus der Regel errechnete Raster verwerfen. So überleben Verschiebungen, Ersatztermine und Ausfälle den Weg durch eine Datei. Nennt sie keine, gilt allein die Regel aus 6.4.

6.6 fristen[] — Einzelfristen

Wie 5.6.

6.7 fristserien[]

FeldTypPflichtRegel
idKennungja
artWertjawie 5.6
bezeichnungTextjawird fortlaufend nummeriert: Übungsblatt 1, Übungsblatt 2 …
turnusWertjawoechentlich · vierzehntaegig
erste, letzteDatumjaerste und letzte Abgabe
uhrzeitUhrzeitneinseit App-Version 6.8.3; gilt für alle Fristen der Serie, ohne sie bis zum Ende des Tages

Fristen entfallen nicht in vorlesungsfreien Zeiten.

6.8 Erneutes Öffnen

Eine Liste DARF mehrmals geöffnet werden. Veranstaltungen, die mit derselben id schon im Semester stehen, MUSS die App als vorhanden kennzeichnen und DARF sie NICHT ein zweites Mal anlegen. Änderungen der Datei an bereits importierten Veranstaltungen übernimmt die App in dieser Version nicht; die Regeln aus Abschnitt 7 gelten nur für den Studiengangsrahmen.

6a Profil semestervorlage (seit Version 2)

Ein ganzes Semester zum Weitergeben: Wer es einmal eingepflegt hat, gibt die Struktur an andere weiter, statt dass jede Person sie abtippt. Eine Vorlage entsteht typischerweise in der App selbst („Semester als Vorlage teilen"), nicht im Studienbüro.

6a.1 Aufbau

FeldTypPflichtRegel
studiengangTextneinanders als in 5.1 freiwillig
herausgeberTextnein
zeitzoneTextneinIANA-Name, z. B. Europe/Berlin
semesterObjektjawie 5.2
vorlesungsfrei[]Listeneinwie 5.3
phasen[]Listeneinwie 5.4 — veraltet; die App schreibt An- und Abmeldungen als fristen
termine[]Listeneinwie 5.5 – semesterweit, ohne Veranstaltung
fristen[]Listeneinwie 5.6 – semesterweit
veranstaltungen[]Listejawie 6.2 bis 6.7

semester.id ist die Kennung der Vorlage. Sie MUSS über alle Fassungen derselben Vorlage gleich bleiben und DARF NICHT für eine andere Vorlage wiederverwendet werden: Daran erkennt eine App, dass jemand dieselbe Vorlage ein zweites Mal öffnet.

6a.2 Was nicht hineingehört

Eine Vorlage ist keine Sicherung. Sie DARF NICHT enthalten: Teilnahme, Bewertungen, Erledigungsstände und -zeitpunkte, Erfolge, persönliche Notizen, individuelle Erinnerungen oder Geräteeinstellungen. Wer eine Datei weitergibt, gibt Struktur weiter, nicht sein Studium.

6a.3 Import

  • Ein Import legt immer ein neues Semester an. Eine App DARF NICHT still überschreiben oder mit einem laufenden Semester zusammenführen.
  • Ist schon ein Semester mit derselben Vorlagenkennung vorhanden — auch das, aus dem die Datei stammt —, MUSS die App vor der Dublette warnen und Abbrechen sowie bewusstes Anlegen einer Kopie anbieten.
  • Die Prüfung nach Abschnitt 8 läuft vor jeder Änderung. Eine ungültige Datei MUSS den Bestand unverändert lassen; gespeichert wird vollständig oder gar nicht.
  • Abschnitt 7 (Neuladen) gilt für dieses Profil nicht: Eine Vorlage ist ein Ausgangspunkt, keine Quelle, die weiter gepflegt wird.

6b Profil schulvorlage (seit Version 3)

Eine Klasse (Klassen 5–10) oder ein Kursangebot der Oberstufe für ein Halbjahr. Eine Lehrkraft richtet die Klasse in der App ein und teilt sie („Schulplan als Vorlage teilen“); die Lernenden wählen beim Öffnen aus, was für sie gilt. Ein maschinenlesbares Schema steht in schulvorlage.schema.json, Beispiele in beispiele/schulvorlage-7b.studynow und beispiele/schulvorlage-q11.studynow.

6b.1 Aufbau

FeldTypPflichtRegel
vorlage.idKennungjaKennung der Vorlage, über alle Fassungen gleich (wie 6a)
vorlage.herausgeberTextneinetwa die Klassenleitung
schulformTextjaklasse oder oberstufe
halbjahrObjektja6b.2
zeitzoneTextneinIANA-Name
zeitrasterObjektja6b.3
abWochenObjektnein6b.4
ferien[]Listeneinid, bezeichnung, beginn, ende – im Halbjahr
termine[]Listeneinganztägig: id, bezeichnung, beginn, ende (freiwillig, sonst eintägig), unterrichtsfrei (Wahrheitswert)
faecher[]Listeja, nicht leer6b.5
unterricht[]Listenein6b.6

6b.2 halbjahr

name (Text), schuljahr (Text, etwa 2026/27), nummer (1 oder 2), beginn und ende (Datum), dazu freiwillig klasse (etwa 7b), jahrgang (Zahl) und phase (etwa Q1.1). Bezeichnungen wie „Q1.1“ sind Beschriftungen; ihre Daten gelten, wie sie in der Datei stehen.

6b.3 zeitraster

stunden[]: je Stunde nr (ganze Zahl ab 1), beginn, ende (Uhrzeit; ende nach beginn). Freiwillig abweichungen: ein Objekt mit Wochentagen "1" (Montag) bis "7" als Schlüssel und je einer eigenen Stundenliste – etwa ein kürzerer Freitag.

6b.4 abWochen

anker (Datum), ankerWoche (A oder B), ferienZaehlen (Wahrheitswert) und wochen: ein Objekt mit dem Montag jeder Woche als Schlüssel und A oder B als Wert. Maßgeblich ist diese Liste, nicht eine Regel – eine App DARF den Rhythmus nicht neu berechnen.

Seit App-Version 6.10.2 DARF art angegeben sein: ab (Standard) oder kw für gerade und ungerade Kalenderwochen. Bei kw ist A jede ungerade, B jede gerade Kalenderwoche; die Liste wochen MUSS trotzdem stehen und dem entsprechen. Die App beschriftet die Wochen dann mit „ungerade“ und „gerade“.

6b.5 faecher[]

id, name, freiwillig kurzform, farbe, kurscode, niveau (etwa gA, eA, GK, LK), wahlgruppe, lehrkraft, raum. Fächer mit derselben wahlgruppe sind Alternativen: Beim Import wählt die Person höchstens eines davon. lehrkraft DARF NUR enthalten sein, wenn die Lehrkraft der Weitergabe zugestimmt hat.

6b.6 unterricht[]

id, fach (Verweis auf faecher[].id), wochentag (1–7), stunde (Verweis auf eine Stunde des Rasters an diesem Wochentag), freiwillig woche (A oder B; erfordert abWochen) und raum.

6b.7 Was nicht hineingehört

Wie 6a.2, und ausdrücklich: keine Aufgaben, keine Rückblicke, keine Erledigt-Stände, keine Erinnerungseinstellungen, keine Namen von Lernenden, keine Zugangsdaten oder Abo-Adressen.

6b.8 Import

  • Ein Import legt immer ein neues Halbjahr an, nur mit den gewählten Fächern. In der Klasse sind die Fächer ohne Wahlgruppe vorgewählt, aus jeder Wahlgruppe wählt die Person eines oder keines. In der Oberstufe ist nichts vorgewählt.
  • Bei gleicher Vorlagenkennung MUSS die App vor der Dublette warnen.
  • Eine ungültige Datei ändert nichts; gespeichert wird vollständig oder gar nicht. Neuladen (Abschnitt 7) gilt nicht.

6c Kalenderdateien und Tabellen

Neben .studynow nimmt die App im Schulbereich zwei verbreitete Formate an. Sie sind nicht Teil dieses Formats, folgen aber denselben Regeln: Vorschau vor jeder Änderung, alles oder nichts, und was in einer Datei fehlt, wird nicht gelöscht.

Kalenderdatei (ICS, RFC 5545). Übernommen werden VEVENT mit SUMMARY, DTSTART, DTEND/DURATION, LOCATION, STATUS, Wiederholungen (RRULE, RDATE, EXDATE) und Ausnahmen (RECURRENCE-ID) – nur im Zeitraum des Halbjahres. Die Identität eines Termins ist UID plus ursprüngliches Vorkommen; eine verlegte Stunde bleibt derselbe Termin. DTEND ist exklusiv. STATUS:CANCELLED ist ein Ausfall. Teilnehmer, Alarme und Anhänge werden nicht übernommen.

Tabelle (CSV). UTF-8, Semikolon oder Komma, erste Zeile mit Spaltennamen. Zwei Modi, ausdrücklich gewählt:

ModusPflichtspaltenFreiwillig
Datierte Terminedatum, beginn, ende, titelid, fach, kurs, klasse, raum, lehrkraft, status (ausfall für einen Ausfall)
Wochenplanwochentag, beginn, ende, titel, gueltigVon, gueltigBisdieselben, dazu wochenart (A, B, alle)

Datum als 2026-09-24 oder 24.09.2026; mehrdeutige Angaben wie 03/04/26 werden abgelehnt, nicht geraten. Ohne id-Spalte ist nur eine einmalige Übernahme möglich. Beispiele: beispiele/stundenplan-datiert.csv, beispiele/stundenplan-wochenplan.csv, beispiele/stundenplan.ics.

Erneuter Import. Mit stabilen Kennungen gleicht die App ab: Was nur die Quelle ändert, wird übernommen; was nur die Person geändert hat, bleibt; wo beide Verschiedenes sagen, fragt die App mit beiden Werten.

7 Neuladen

Diese Regeln richten sich an Implementierer; sie erklären Erstellern, warum Kennungen stabil bleiben müssen.

Abschnitt 7 gilt für das Profil studiengangsrahmen.

Eine App SOLL die zuletzt importierte Datei unverändert als Original aufbewahren. Beim Neuladen vergleicht sie je Feld drei Stände: Original, lokalen Stand und neue Datei.

Quelle gegenüber OriginalLokal geändertErgebnis
unverändertneinWert bleibt
unverändertjalokaler Wert bleibt, ohne Rückfrage
geändertneinneuer Wert wird übernommen
geändertjaRückfrage mit beiden Werten

Stimmen lokaler Wert und neuer Wert überein, entfällt die Rückfrage.

Für Elemente gilt entsprechend:

FallErgebnis
neu in der Dateiwird angelegt
aus der Datei entfernt, lokal unverändertentfällt
aus der Datei entfernt, lokal geändertRückfrage
lokal gelöscht, in der Datei unverändertbleibt gelöscht, ohne Rückfrage
lokal gelöscht, in der Datei geändertRückfrage

Nach dem Neuladen wird die neue Datei zum Original.

8 Fehler

Eine App MUSS eine ungültige Datei vollständig ablehnen und DARF dabei keine Daten anlegen oder ändern. Sie SOLL alle Verstöße auf einmal melden, jeweils mit der Stelle in der Datei (etwa phasen[2].beginn).

9 Übergabe an die App

WegFormNeuladen möglich
Linkstudynow://import?url=<URL der Datei, prozentkodiert>ja
Datei.studynow über „Öffnen mit"nein — die Datei kennt ihre Quelle nicht
In der AppEinstellungen → Semester importieren: Link oder Dateinur mit Link

Der Server MUSS die Datei über HTTPS ohne Anmeldung ausliefern. Für die Browser-Fassung der App MUSS er Access-Control-Allow-Origin setzen.