Platform-API Referenz
Alle Endpunkte unter /api/platform/v1/. Erfordern JWT-Authentifizierung.
Bootstrap
GET /bootstrap
Liefert die initiale Konfiguration für den aktuellen Tenant.
Response:
{
"user": { "matrixUserId": "@user:school.prilog.team" },
"context": { "schoolId": "...", "orgId": "...", "roles": ["admin"] },
"modules": [
{ "key": "chat", "version": "1.0.0", "enabled": true },
{ "key": "project", "version": "1.0.0", "enabled": true, "moduleId": "prilog-project", "apiPrefix": "/api/platform/v1" }
],
"featureFlags": { "project": true },
"branding": { "tenantName": "Musterschule" },
"apiVersion": "v1"
}Modul-Lifecycle
GET /modules/registry
Alle registrierten Module mit Installations-Status des anfragenden Tenants.
GET /modules/installed
Installierte Module dieses Tenants (Status != deleted).
GET /modules/installed/:moduleId
Detail einer Modul-Installation.
POST /modules/install
Modul installieren. Erfordert manageModules-Capability.
Body:
{
"moduleId": "prilog-calendar",
"approvedPermissions": ["spaces:read", "events:subscribe"]
}POST /modules/installed/:moduleId/activate
Modul aktivieren (Migrations, Event-Handler, Feature-Flag, Billing).
POST /modules/installed/:moduleId/deactivate
Modul deaktivieren (30-Tage Daten-Retention).
DELETE /modules/installed/:moduleId
Modul deinstallieren. Wenn aktiv, wird zuerst deaktiviert.
Store
GET /store/modules
Modul-Katalog durchsuchen.
Query-Parameter:
category— Filtern nach Store-Kategoriesearch— Volltextsuche (Name, ID)limit— Max. Ergebnisse (Standard: 50)offset— Pagination
Response:
{
"modules": [
{
"moduleId": "prilog-calendar",
"name": "Kalender",
"version": "1.0.0",
"type": "B",
"description": "...",
"category": "organization",
"author": { "name": "Prilog GmbH", "email": "info@prilog.chat" },
"billing": { "model": "subscription", "monthlyPrice": 4.90, "currency": "EUR" },
"rating": { "average": 4.2, "count": 15 },
"installations": 42,
"installed": null
}
],
"total": 1
}GET /store/modules/:moduleId
Detail-Seite eines Moduls (inkl. letzte 20 Bewertungen).
GET /store/categories
Liste aller Store-Kategorien: communication, organization, analytics, integration, security, other.
POST /store/modules/:moduleId/ratings
Bewertung abgeben (1-5 Sterne). Modul muss installiert sein.
Body:
{
"rating": 4,
"comment": "Funktioniert gut, UI könnte besser sein."
}Einreichung (Entwickler)
POST /store/developer/submit
Modul einreichen. Erfordert X-Developer-Id Header.
Body:
{
"manifest": { "id": "prilog-...", "...": "..." },
"artifactPath": "s3://..."
}GET /store/developer/submissions
Eigene Einreichungen auflisten.
GET /store/developer/submissions/:id
Detail einer Einreichung (inkl. Scan-/Test-/Review-Ergebnisse).
Review (Admin)
GET /store/admin/reviews
Offene Reviews auflisten.
POST /store/admin/reviews/:id
Einreichung genehmigen oder ablehnen.
Body:
{
"action": "approve",
"notes": "Sieht gut aus. Bitte CHANGELOG ergänzen für v1.0."
}Admin-Health
GET /admin/modules/health
Gesundheitsübersicht aller aktiven Module.
Response:
{
"modules": [
{
"moduleId": "prilog-project",
"name": "Projekt-Modul",
"version": "1.0.0",
"activeInstallations": 3,
"performance": {
"p95Ms": 45,
"p99Ms": 120,
"errorRate": 0.002,
"violations": [],
"healthy": true
}
}
]
}GET /admin/modules/health/:moduleId
Einzelnes Modul — Detail mit Performance-Daten.
GET /admin/modules/audit/:tenantId
Audit-Log eines Tenants. Optional ?moduleId=... und ?limit=....