Skip to content

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:

json
{
  "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:

json
{
  "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-Kategorie
  • search — Volltextsuche (Name, ID)
  • limit — Max. Ergebnisse (Standard: 50)
  • offset — Pagination

Response:

json
{
  "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:

json
{
  "rating": 4,
  "comment": "Funktioniert gut, UI könnte besser sein."
}

Einreichung (Entwickler)

POST /store/developer/submit

Modul einreichen. Erfordert X-Developer-Id Header.

Body:

json
{
  "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:

json
{
  "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:

json
{
  "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=....