Training API
Compliance-Schulungssystem (CP-TRAIN) — Module, Zuweisungen, Quiz, Zertifikate, KI-Generierung
Uebersicht
Das Training-Modul bietet ein vollstaendiges Compliance-Schulungssystem mit:
- Modulverwaltung mit Regulierungsbereichen (DSGVO, NIS2, ISO 27001, AI Act, GeschGehG, HinSchG)
- Compliance Training Matrix (CTM) — rollenbasierte Zuweisung
- KI-gestuetzte Content- und Quiz-Generierung
- Audio/Video-Schulungsinhalte via TTS
- Quiz-Engine mit Bestehens-Schwelle
- Eskalationsstufen (7/14/30/45 Tage)
- PDF-Zertifikate nach Schulungsabschluss
- Training Blocks — automatische Modul-Erstellung aus Canonical Controls
Basis-URL
/sdk/v1/training. Authentifizierung via X-Tenant-ID und X-User-ID Header.1. Module
Schulungsmodule sind die zentrale Einheit des Training-Systems.
/sdk/v1/training/modulesAlle Module auflisten (mit optionalen Filtern)
| Parameter | Type | Required | Description |
|---|---|---|---|
regulation_area | string | No | Filter: dsgvo, nis2, iso27001, ai_act, geschgehg, hinschg |
frequency_type | string | No | Filter: onboarding, annual, event_trigger, micro |
search | string | No | Volltextsuche in Titel und Beschreibung |
/sdk/v1/training/modules/:idEinzelnes Modul mit Content und Quiz-Fragen laden
/sdk/v1/training/modulesNeues Schulungsmodul erstellen
| Parameter | Type | Required | Description |
|---|---|---|---|
module_code | string | Yes | Eindeutiger Modulcode (z.B. CP-TRAIN-001) |
title | string | Yes | Titel des Moduls |
description | string | No | Beschreibung |
regulation_area | string | Yes | Regulierungsbereich |
frequency_type | string | Yes | Schulungsfrequenz |
duration_minutes | integer | No | Dauer in Minuten (Standard: 30) |
pass_threshold | integer | No | Quiz-Bestehensgrenze in Prozent (Standard: 70) |
/sdk/v1/training/modules/:idModul aktualisieren
/sdk/v1/training/modules/:idModul loeschen
// POST /sdk/v1/training/modules — Beispiel
{
"module_code": "CP-DSGVO-001",
"title": "DSGVO Grundlagen fuer Mitarbeiter",
"description": "Einfuehrung in die Datenschutz-Grundverordnung",
"regulation_area": "dsgvo",
"frequency_type": "annual",
"duration_minutes": 30,
"pass_threshold": 70
}2. Compliance Training Matrix (CTM)
Die CTM ordnet Rollen zu Schulungsmodulen zu. 10 vordefinierte Rollen (R1–R10).
/sdk/v1/training/matrixVollstaendige Training-Matrix abrufen (alle Rollen → Module)
/sdk/v1/training/matrix/:roleModule fuer eine bestimmte Rolle abrufen
/sdk/v1/training/matrixMatrix-Eintrag setzen (Rolle → Modul)
| Parameter | Type | Required | Description |
|---|---|---|---|
role_code | string | Yes | Rollencode (R1–R10) |
module_id | uuid | Yes | Modul-UUID |
is_mandatory | boolean | No | Pflichtschulung (Standard: false) |
priority | integer | No | Prioritaet (1 = hoechste) |
/sdk/v1/training/matrix/:role/:moduleIdMatrix-Eintrag entfernen
Rollen
3. Zuweisungen
Zuweisungen verbinden Mitarbeiter mit Schulungsmodulen und tracken den Fortschritt.
/sdk/v1/training/assignments/computeZuweisungen fuer einen Benutzer berechnen (basierend auf Rollen + CTM)
| Parameter | Type | Required | Description |
|---|---|---|---|
user_id | uuid | Yes | Benutzer-UUID |
user_name | string | Yes | Name des Benutzers |
user_email | string | Yes | |
roles | string[] | Yes | Rollencodes des Benutzers |
trigger | string | No | Ausloeser: onboarding, annual, event, manual |
/sdk/v1/training/assignmentsZuweisungen auflisten
| Parameter | Type | Required | Description |
|---|---|---|---|
user_id | uuid | No | Filter nach Benutzer |
module_id | uuid | No | Filter nach Modul |
role | string | No | Filter nach Rolle |
status | string | No | Filter: pending, in_progress, completed, overdue, expired |
limit | integer | No | Pagination (Standard: 50) |
offset | integer | No | Pagination Offset |
/sdk/v1/training/assignments/:idEinzelne Zuweisung laden
/sdk/v1/training/assignments/:idZuweisung aktualisieren (z.B. Deadline aendern)
/sdk/v1/training/assignments/:id/startSchulung starten (Status → in_progress)
/sdk/v1/training/assignments/:id/progressFortschritt aktualisieren (0–100%)
/sdk/v1/training/assignments/:id/completeSchulung abschliessen (Status → completed)
// POST /sdk/v1/training/assignments/compute — Response
{
"assignments": [
{
"id": "550e8400-e29b-41d4-a716-446655440000",
"module_id": "...",
"user_id": "...",
"status": "pending",
"progress_percent": 0,
"deadline": "2026-04-15T00:00:00Z",
"escalation_level": 0
}
],
"created": 5
}4. Quiz-Engine
Multiple-Choice-Quiz mit automatischer Bewertung und Bestehensgrenze.
/sdk/v1/training/quiz/:moduleIdQuiz-Fragen fuer ein Modul abrufen
/sdk/v1/training/quiz/:moduleId/submitQuiz-Antworten einreichen
| Parameter | Type | Required | Description |
|---|---|---|---|
assignment_id | uuid | Yes | Zuweisungs-UUID |
answers | QuizAnswer[] | Yes | Array von {question_id, selected_index} |
duration_seconds | integer | No | Bearbeitungsdauer in Sekunden |
/sdk/v1/training/quiz/attempts/:assignmentIdQuiz-Versuche fuer eine Zuweisung anzeigen
// POST /sdk/v1/training/quiz/:moduleId/submit — Response
{
"attempt_id": "...",
"score": 80.0,
"passed": true,
"correct_count": 4,
"total_count": 5,
"threshold": 70
}5. KI-Content-Generierung
LLM-basierte Erstellung von Schulungsinhalten und Quiz-Fragen.
/sdk/v1/training/content/generateSchulungsinhalt fuer ein Modul generieren (Markdown)
| Parameter | Type | Required | Description |
|---|---|---|---|
module_id | uuid | Yes | Modul-UUID |
language | string | No | Sprache: de (Standard) oder en |
/sdk/v1/training/content/generate-quizQuiz-Fragen fuer ein Modul generieren
| Parameter | Type | Required | Description |
|---|---|---|---|
module_id | uuid | Yes | Modul-UUID |
count | integer | No | Anzahl Fragen (Standard: 5) |
/sdk/v1/training/content/:moduleIdVeroeffentlichten Content eines Moduls abrufen
/sdk/v1/training/content/:contentId/publishContent veroeffentlichen (Freigabe)
/sdk/v1/training/content/generate-allContent fuer alle Module ohne Content generieren (Bulk)
/sdk/v1/training/content/generate-all-quizQuiz fuer alle Module ohne Fragen generieren (Bulk)
LLM-Kosten
6. Media (Audio/Video)
TTS-basierte Audio- und Videogenerierung fuer Schulungsmodule.
/sdk/v1/training/content/:moduleId/generate-audioAudio-Datei aus Schulungsinhalt generieren (Piper TTS)
/sdk/v1/training/content/:moduleId/generate-videoPraesentationsvideo generieren (TTS + Folien)
/sdk/v1/training/content/:moduleId/preview-scriptVideo-Script als JSON-Vorschau generieren
/sdk/v1/training/media/module/:moduleIdAlle Medien eines Moduls auflisten
/sdk/v1/training/media/:mediaId/urlMetadaten (Bucket, Object Key) fuer eine Media-Datei
/sdk/v1/training/media/:mediaId/publishMedia veroeffentlichen/zurueckziehen
/sdk/v1/training/media/:mediaId/streamMedia streamen (307-Redirect zu Presigned URL)
Streaming
/stream-Endpoint liefert einen 307 Temporary Redirect zu einer zeitlich begrenzten Presigned URL (MinIO/S3). Browser und Audio/Video-Player folgen dem Redirect automatisch.// POST /sdk/v1/training/content/:moduleId/preview-script — Response
{
"title": "DSGVO Grundlagen",
"sections": [
{
"heading": "Was ist die DSGVO?",
"text": "Die DSGVO regelt den Umgang mit personenbezogenen Daten.",
"bullet_points": [
"Gilt seit 25. Mai 2018",
"EU-weit verbindlich",
"Hohe Bussgelder bei Verstoessen"
]
}
]
}7. Deadlines & Eskalation
Automatisches Eskalationssystem mit 4 Stufen.
/sdk/v1/training/deadlinesAnstehende Deadlines auflisten
| Parameter | Type | Required | Description |
|---|---|---|---|
limit | integer | No | Maximale Anzahl (Standard: 50) |
/sdk/v1/training/deadlines/overdueUeberfaellige Zuweisungen auflisten
/sdk/v1/training/escalation/checkEskalationspruefung ausfuehren
// POST /sdk/v1/training/escalation/check — Response
{
"results": [
{
"assignment_id": "...",
"user_name": "Max Mustermann",
"module_title": "DSGVO Grundlagen",
"previous_level": 1,
"new_level": 2,
"days_overdue": 15,
"escalation_label": "Benachrichtigung Teamleitung"
}
],
"total_checked": 42,
"escalated": 3
}| Parameter | Type | Required | Description |
|---|---|---|---|
Stufe 1 (7 Tage) | - | No | Erinnerung an Mitarbeiter |
Stufe 2 (14 Tage) | - | No | Benachrichtigung Teamleitung |
Stufe 3 (30 Tage) | - | No | Benachrichtigung Management |
Stufe 4 (45 Tage) | - | No | Benachrichtigung Compliance Officer |
8. Zertifikate
PDF-Zertifikate nach erfolgreichem Schulungsabschluss.
/sdk/v1/training/certificates/generate/:assignmentIdZertifikat fuer eine abgeschlossene Zuweisung generieren
/sdk/v1/training/certificatesAlle Zertifikate des Tenants auflisten
/sdk/v1/training/certificates/:id/pdfZertifikat als PDF herunterladen
/sdk/v1/training/certificates/:id/verifyZertifikat verifizieren (z.B. fuer Audit)
Voraussetzungen
completed hat UND das Quiz bestanden wurde (quiz_passed = true).// POST /sdk/v1/training/certificates/generate/:assignmentId — Response
{
"certificate_id": "a1b2c3d4-...",
"assignment": {
"id": "...",
"status": "completed",
"quiz_passed": true,
"certificate_id": "a1b2c3d4-...",
"module_title": "DSGVO Grundlagen"
}
}
// GET /sdk/v1/training/certificates/:id/verify — Response
{
"valid": true,
"assignment": { ... }
}9. Audit & Statistiken
Compliance-konformes Audit-Logging aller Schulungsaktivitaeten.
/sdk/v1/training/audit-logAudit-Log abrufen
| Parameter | Type | Required | Description |
|---|---|---|---|
action | string | No | Filter: assigned, started, completed, quiz_submitted, escalated, certificate_issued, content_generated |
entity_type | string | No | Filter: assignment, module, quiz, certificate |
limit | integer | No | Pagination (Standard: 50) |
offset | integer | No | Pagination Offset |
/sdk/v1/training/statsAggregierte Schulungsstatistiken
// GET /sdk/v1/training/stats — Response
{
"total_modules": 28,
"total_assignments": 156,
"completion_rate": 72.5,
"overdue_count": 8,
"pending_count": 23,
"in_progress_count": 14,
"completed_count": 111,
"avg_quiz_score": 81.3,
"avg_completion_days": 4.2,
"upcoming_deadlines": 12
}10. Training Blocks (Controls → Module)
Training Blocks automatisieren die Erstellung von Schulungsmodulen aus Canonical Controls. Ein Block definiert Filter (Domain, Kategorie, Severity, Zielgruppe) und generiert automatisch Module, Content und CTM-Eintraege.
/sdk/v1/training/blocksAlle Block-Konfigurationen auflisten
/sdk/v1/training/blocksNeue Block-Konfiguration erstellen
| Parameter | Type | Required | Description |
|---|---|---|---|
name | string | Yes | Name des Blocks |
description | string | No | Beschreibung |
domain_filter | string | No | Domain-Filter (z.B. AUTH, CRYP, NET) |
category_filter | string | No | Kategorie-Filter (z.B. authentication, encryption) |
severity_filter | string | No | Severity-Filter (high, critical) |
target_audience_filter | string | No | Zielgruppe: enterprise, authority, provider, all |
regulation_area | string | Yes | Regulierungsbereich |
module_code_prefix | string | Yes | Prefix fuer generierte Modulcodes |
frequency_type | string | No | Schulungsfrequenz |
duration_minutes | integer | No | Dauer pro Modul |
pass_threshold | integer | No | Quiz-Bestehensgrenze |
max_controls_per_module | integer | No | Max. Controls pro Modul (Standard: 10) |
/sdk/v1/training/blocks/:idBlock-Konfiguration laden
/sdk/v1/training/blocks/:idBlock-Konfiguration aktualisieren
/sdk/v1/training/blocks/:idBlock-Konfiguration loeschen
/sdk/v1/training/blocks/:id/previewVorschau: Welche Controls und Module wuerden generiert?
/sdk/v1/training/blocks/:id/generateModule aus Block generieren (Content + CTM)
| Parameter | Type | Required | Description |
|---|---|---|---|
language | string | No | Sprache: de (Standard) oder en |
auto_matrix | boolean | No | Automatisch CTM-Eintraege erstellen (Standard: true) |
/sdk/v1/training/blocks/:id/controlsVerlinkte Controls eines Blocks anzeigen
// POST /sdk/v1/training/blocks/:id/generate — Response
{
"modules_created": 3,
"controls_linked": 24,
"matrix_entries_created": 15,
"content_generated": 3,
"errors": []
}11. Canonical Controls
Referenz-Datenbank mit standardisierten Sicherheitskontrollen.
/sdk/v1/training/canonical/controlsCanonical Controls auflisten (mit Filtern)
| Parameter | Type | Required | Description |
|---|---|---|---|
domain | string | No | Domain-Filter (z.B. AUTH, CRYP) |
category | string | No | Kategorie-Filter |
severity | string | No | Severity-Filter |
target_audience | string | No | Zielgruppen-Filter |
/sdk/v1/training/canonical/metaAggregierte Metadaten (Domains, Kategorien, Audiences mit Counts)
// GET /sdk/v1/training/canonical/meta — Response
{
"domains": [
{ "domain": "AUTH", "count": 12 },
{ "domain": "CRYP", "count": 8 }
],
"categories": [
{ "category": "authentication", "count": 12 },
{ "category": "encryption", "count": 8 }
],
"audiences": [
{ "audience": "enterprise", "count": 45 },
{ "audience": "all", "count": 30 }
],
"total": 102
}Typischer Workflow
- Module erstellen — via POST /modules oder Training Blocks
- Content generieren — POST /content/generate (LLM)
- Content freigeben — POST /content/:id/publish
- Quiz generieren — POST /content/generate-quiz
- Audio/Video — POST /content/:id/generate-audio, generate-video
- CTM konfigurieren — POST /matrix (Rolle → Modul)
- Zuweisungen berechnen — POST /assignments/compute
- Mitarbeiter absolviert — start → progress → Quiz → complete
- Zertifikat — POST /certificates/generate/:assignmentId
- Audit — GET /audit-log + GET /stats