Einfacher Medienupload (EMU)

Einfacher Medienupload ist ein Microservice, der das Hochladen von Lerninhalten in das LMS imc Learning Suite vereinfacht. Er kapselt die komplexen LMS-Endpunkte (Upload, Metatag-Befüllung, Lerninhalte-Templates, SCORM-/WBT-Erzeugung) hinter einer schlanken REST-API.

Konfiguration

Um den Einfachen Medienupload nutzen zu können, ist es notwendig, die Typen zur Erstellung der verschiedenen Lerninhalte wie folgt zu konfigurieren:

  • Rufen Sie die Funktion Mandanten auf.

  • Markieren Sie den Mandant, der für den Medienupload verwendet werden soll.

  • Klicken Sie in der Symbolleiste auf das Zahnrad-Icon Einstellungen.

  • Wählen Sie im Dropdown-Menü die Option Einfacher Medienupload aus.

  • Definieren Sie im Konfigurationsbildschirm die Lerninhaltetypen, die pro Service verwendet werden sollen, um Lerninhalte aus hochgeladenen Dateien zu erstellen.

Authentifizierung und Autorisierung

Jeder Request muss ein gültiges JSON Web Token (JWT) mitbringen – entweder als Authorization: Bearer <token> Header oder als Cookie (Standardname imcAuthToken). Der Cookie-Wert darf optional mit Bearer beginnen. Bei dem Token muss es sich um ein Bearer-Token mit Grant-Typ password handeln. Nähere Informationen zur Anforderung eines solchen Tokens finden Sie unter Anfordern eines Zugriffstokens für die Nutzung der REST-API.

Neben einer erfolgreichen Authentifizierung muss der Nutzer, für den das Token erstellt wurde, im LMS auch Zugriff auf die entsprechenden Channel-Menüpunkte haben (bzw. Superuser sein). Menü-/Navigations-Berechtigungen werden im LMS über die übliche Rollen-/Rechteverwaltung gesteuert. Fehlt der Zugriff gibt der Service die Fehlermeldung 403 Forbidden zurück.

Sprache

Fast alle Endpunkte erwarten den HTTP-Header Accept-Language. Er bestimmt, in welcher Sprache das Lerninhalte-Template und die Metatags vom LMS geladen werden. Fehlt der Header bei den Endpunkten, die ihn als Pflichtparameter führen, antwortet der Service mit der Fehlermeldung 400 Bad Request.

service-Parameter

Viele Endpunkte besitzen einen optionalen Query-Parameter service. Er steuert, welche Einfacher Medienupload-Einstellungen (Template-/Typ-IDs) pro Mandant (Client) geladen werden. Gültige Werte sind in der nachfolgenden Tabelle aufgeschlüsselt:

Wert

Default bei

channels

/file, /link

ecc

/event, /activity, /ms-teams

imcExpress

intern für alle SCORM-/WBT-Calls (nicht überschreibbar)

Fehlermeldungen

Alle Fehler des LMS werden durchgereicht und übersetzt. Die nachfolgende Tabelle zeigt alle Mappings:

LMS-Status

Service-Antwort

400

400 Bad Request

401

401 Unauthorized

403

403 Forbidden

404

404 Not Found

406

406 Not Acceptable (z. B. Virenfund)

sonstige

500 Internal Server Error

Media-Erstellung mittels EMU

Alle API-Endpunkte befinden sich unter dem Basispfad /easy-media-upload/api/mediaupload.

Eine Postman-Collection mit allen API-Calls finden Sie hier: Easy Media Upload.json

Bevor ein Lerninhalt erstellt werden kann, muss einer der folgenden vier API Punkte angesprochen werden (siehe Schritt 1), um ein Template für die Lerninhalte-Erstellung (siehe Schritt 2) zu erhalten. Lediglich der Upload und die Erstellung eines SCORM-WBT funktioniert für sich basierend auf der ZIP-Datei (siehe Standalone).

Schritt 1: Erhalt eines Templates

Die Endpunkte /event und /activity liefern für den jeweiligen Lernobjekt-Typ ein leeres Template zurück. Der Endpunkt /file hingegen lädt eine ausgewählte Datei in das LMS-Temp-Verzeichnis und liefert dann ein vorbefülltes Template zurück. Der Endpunkt /link liefert ebenfalls ein mit Metadaten vorbefülltes Template zurück (via OpenGraph).

1.1 POST /file – Datei hochladen

Lädt eine beliebige Datei in das LMS-Temp-Verzeichnis hoch und liefert ein vorbefülltes Template zurück.

Methode/Pfad

POST /file

Consumes

multipart/form-data

Erfolg

201 Created

Parameter

  • file (Multipart-Part, Pflicht) – die hochzuladende Datei

  • Accept-Language (Header, Pflicht) – Plattformsprache

  • service (Query, optional, Default channels)

1.2 POST /link – Link hochladen

Erzeugt aus einer URL ein Link-Media-Template. OpenGraph-Metadaten (Titel, Beschreibung, Vorschaubild) werden automatisch ermittelt.

Methode/Pfad

POST /link

Consumes

application/json

Erfolg

201 Created

Body-Beispiel:

{ "link": "https://example.com/page" }

Parameter

  • Accept-Language (Header, Pflicht) - Plattformsprache

  • service (Query, optional, Default channels)

1.3 GET /event – Event-Media-Template abrufen

Liefert ein leeres Template für Lerninhaltetyp Event.

Methode/Pfad

GET /event

Erfolg

200 OK

Parameter

  • Accept-Language (Header, Pflicht) – Plattformsprache

  • service (Query, optional, Default ecc)

1.4 GET /activity – Activity-Media-Template abrufen

Analog zu /event gestaltet, aber für den Lerninhaltetyp Activity.

Methode/Pfad

GET /activity

Erfolg

200 OK

Parameter

  • Accept-Language (Header, Pflicht) – Plattformsprache

  • service (Query, optional, Default ecc)

Schritt 2: Endpunkte zur Lerninhalte-Erstellung

Um einen Lerninhalt aus den in Schritt 1 erhaltenen Templates zu erstellen, können Informationen im Template ergänzt und mittels POST oder PUT /media final im System angelegt werden. Dabei werden Dateien aus dem LMS-Temp-Verzeichnis in die jeweiligen Zielordner verschoben, Metatags werden aufbereitet und Pflichtmetatags geprüft. Ist alles in Ordnung, wird das Lerninhalte-Objekt im LMS angelegt und die neue ID zurückgegeben.

2.1 POST /media - Lerninhalte final anlegen

Speichert ein zuvor (über /file, /link, etc.) vorbereitetes und ausgefülltes RestMedia endgültig im LMS.

Methode/Pfad

POST /media

Erfolg

201 Created

Rückgabe

Objekt mit der neuen Lerninhalt-ID

Body

RestMedia (vollständig befülltes Template)

Parameter

isCourseSpecific (Query, optional, Default false)

2.2 PUT /media – Lerninhalte aktualisieren

Aktualisiert einen bestehenden Lerninhalt. Die id muss im Body enthalten sein.

Methode/Pfad

PUT /media

Erfolg

200 OK

Rückgabe

Objekt mit der Lerninhalt-ID

Ähnliche Aufbereitung wie bei POST /media, inkl. Verschieben von Temp-Dateien und Pflicht-Metatag-Prüfung.

Standalone: SCORM WBT Upload über EMU

POST /scorm/create/{scormVersion} – SCORM-Paket hochladen & publizieren

Lädt ein SCORM-ZIP hoch, erzeugt einen SCORM-WBT-Lerninhalt und publiziert ihn.

Methode/Pfad

POST /scorm/create/{scormVersion}

Consumes

multipart/form-data

Erfolg

201 Created

Rückgabe

Objekt mit der Lerninhalt-ID

Parameter

  • scormVersion (Pfad, Pflicht) – z. B. 1.3 (imc Express unterstützt nur SCORM 1.3.)

  • file (Multipart, Pflicht) – das SCORM-ZIP