Alle Endpoints werden via
api.php?action=<action>aufgerufen.
- Methode: POST
- Parameter:
username,password - Beschreibung: Authentifiziert Benutzer (lokal oder LDAP). Setzt Session und regeneriert die Session-ID nach erfolgreichem Login.
- Rückgabe: User-Objekt (id, username, name, role, source)
- Methode: POST
- Parameter: –
- Beschreibung: Selbstregistrierung deaktiviert – gibt immer Fehler zurück.
- Rückgabe: Fehlermeldung
- Methode: POST
- Parameter: –
- Beschreibung: Leert Session-Daten, entfernt das Session-Cookie und zerstört die aktuelle Session.
- Rückgabe: Erfolgsbestätigung
- Methode: GET
- Parameter: –
- Beschreibung: Gibt aktuelle Session-Daten inkl. ungelesener Benachrichtigungen zurück.
- Rückgabe: User-Objekt mit
unreadNotifications-Zähler
- Methode: POST
- Parameter:
currentPassword,newPassword - Beschreibung: Ändert Passwort des eingeloggten Users. Schlägt bei LDAP-Usern fehl.
- Rückgabe: Erfolgsmeldung
- Methode: GET
- Parameter: –
- Berechtigung: Admin
- Beschreibung: Listet alle Benutzer (ohne Passwörter).
- Rückgabe: Array von User-Objekten
- Methode: POST
- Parameter:
name,username,password - Optional:
role(Standard: 'user'),email - Berechtigung: Admin
- Beschreibung: Erstellt neuen lokalen Benutzer.
- Rückgabe: Neues User-Objekt
- Methode: POST
- Parameter:
id,email - Berechtigung: Admin
- Beschreibung: Setzt E-Mail-Adresse eines Benutzers.
- Rückgabe: Erfolgsmeldung
- Methode: POST
- Parameter:
id - Berechtigung: Admin
- Beschreibung: Löscht Benutzer (kann sich nicht selbst löschen).
- Rückgabe: Erfolgsmeldung
- Methode: POST
- Parameter:
id,role('admin' oder 'user') - Berechtigung: Admin
- Beschreibung: Ändert Benutzerrolle. Verhindert Degradierung des letzten Admins.
- Rückgabe: Erfolgsmeldung
- Methode: GET
- Parameter: –
- Beschreibung: Gibt vereinfachte Benutzerliste (id, name, username) zurück – für Mitglieder-Auswahl.
- Rückgabe: Array von
{id, name, username}
- Methode: GET
- Parameter: –
- Beschreibung: Gibt Projekte des Users zurück (Admin sieht alle, User sieht eigene + Mitglied-Projekte). Soft-Deletes älter als 30 Tage werden bereinigt.
- Rückgabe: Array von Projekt-Objekten
- Methode: POST
- Parameter:
name - Optional:
desc,color - Beschreibung: Erstellt neues Projekt. Ersteller wird automatisch als Mitglied hinzugefügt.
- Rückgabe: Neues Projekt-Objekt
- Methode: POST
- Parameter:
id - Optional:
name,desc,color - Beschreibung: Aktualisiert Projekt-Metadaten.
- Rückgabe: Erfolgsmeldung
- Methode: POST
- Parameter:
id - Beschreibung: Soft-Delete des Projekts (markiert mit
deletedAt). Nur Projekt-Owner oder Admin. - Rückgabe: Erfolgsmeldung
- Methode: GET
- Parameter: –
- Beschreibung: Listet soft-gelöschte Projekte mit verbleibenden Tagen bis zur endgültigen Löschung (30-Tage-Fenster).
- Rückgabe: Array von gelöschten Projekten mit
daysLeft-Feld
- Methode: POST
- Parameter:
id - Beschreibung: Stellt soft-gelöschtes Projekt wieder her. Nur Owner oder Admin.
- Rückgabe: Erfolgsmeldung
- Methode: POST
- Parameter:
id - Berechtigung: Admin
- Beschreibung: Löscht Projekt dauerhaft aus dem System.
- Rückgabe: Erfolgsmeldung
- Methode: POST
- Parameter:
projectId,userId - Optional:
role(Standard: 'editor', Optionen: 'editor', 'viewer') - Beschreibung: Fügt Benutzer zum Projekt hinzu. Nur Owner oder Admin. Sendet Benachrichtigung.
- Rückgabe: Erfolgsmeldung
- Methode: POST
- Parameter:
projectId,userId - Beschreibung: Entfernt Benutzer aus Projekt. Nur Owner oder Admin. Owner kann nicht entfernt werden.
- Rückgabe: Erfolgsmeldung
- Methode: POST
- Parameter:
projectId,userId,role('editor' oder 'viewer') - Beschreibung: Ändert Mitglieder-Rolle. Nur Owner oder Admin. Owner-Rolle kann nicht geändert werden.
- Rückgabe: Erfolgsmeldung
- Methode: POST
- Parameter:
projectId,text - Optional:
category(Standard: 'Other'),priority(Standard: 'medium'),note,dueDate - Beschreibung: Erstellt neue Aufgabe im Projekt.
- Rückgabe: Erfolgsmeldung
- Methode: POST
- Parameter:
projectId,todoId,updates(Objekt mit zu ändernden Feldern) - Beschreibung: Aktualisiert Todo-Felder. Setzt automatisch
closedBy/closedAtbei Erledigung, löscht bei Wiedereröffnung. - Rückgabe: Erfolgsmeldung
- Methode: POST
- Parameter:
projectId,todoId - Beschreibung: Löscht Todo und zugehörige Anhang-Dateien.
- Rückgabe: Erfolgsmeldung
- Methode: POST
- Parameter:
projectId,todoIds(Array von IDs in neuer Reihenfolge) - Beschreibung: Sortiert Todos innerhalb eines Projekts neu.
- Rückgabe: Erfolgsmeldung
- Methode: POST (multipart/form-data)
- Parameter:
projectId(POST),todoId(POST),file(FILE) - Max. Größe: 10 MB
- Beschreibung: Lädt Dateianhang zu einem Todo hoch. Erstellt Verzeichnisstruktur. Bereinigt Dateiname.
- Rückgabe: Erfolgsmeldung
- Methode: POST
- Parameter:
projectId,todoId,attachmentId - Beschreibung: Entfernt Anhang-Datei und Metadaten.
- Rückgabe: Erfolgsmeldung
- Methode: GET
- Parameter:
projectId,todoId,attachmentId - Beschreibung: Gibt Anhang-Datei zum Download zurück mit passenden Headern.
- Rückgabe: Dateiinhalt (binär)
- Methode: GET
- Parameter: –
- Beschreibung: Gibt ungelesene Benachrichtigungen des aktuellen Users zurück.
- Rückgabe: Array von ungelesenen Benachrichtigungen
- Methode: POST
- Parameter: –
- Optional:
ids(Array von Notification-IDs, leer = alle des Users) - Beschreibung: Markiert Benachrichtigungen als gelesen.
- Rückgabe: Erfolgsmeldung
- Methode: GET
- Parameter: –
- Beschreibung: Gibt Benutzer-Einstellungen zurück (theme, darkMode, lang).
- Rückgabe: Preferences-Objekt
- Methode: POST
- Parameter:
preferences(Objekt mit theme/darkMode/lang) - Beschreibung: Speichert Benutzer-Einstellungen. Erlaubte Keys: theme, darkMode, lang.
- Rückgabe: Erfolgsmeldung
- Methode: GET
- Parameter: –
- Beschreibung: Exportiert alle Benutzer (ohne Passwörter) und Projekte als JSON.
- Rückgabe:
{users, projects, exportedAt}
- Methode: POST
- Parameter:
users,projects - Beschreibung: Importiert Benutzer- und Projektdaten. Hasht automatisch Klartext-Passwörter.
- Rückgabe: Erfolgsmeldung
- Methode: GET
- Parameter: –
- Beschreibung: Gibt aktuelle App-Version aus version.json zurück.
- Rückgabe:
{version, date, repo}
- Methode: GET
- Parameter: –
- Beschreibung: Vergleicht lokale Version mit Remote-Version auf GitHub.
- Rückgabe:
{update_available (bool), local, remote, remote_date}
- Methode: POST
- Parameter: –
- Beschreibung: Führt ein
git pull --ff-onlyaus. Bricht ab, wenn lokale Änderungen im Arbeitsbaum vorhanden sind. Triggert danach Datenmigrationen. - Rückgabe:
{message, version, output}
- Methode: GET
- Parameter: –
- Berechtigung: Admin
- Beschreibung: Gibt LDAP-Konfiguration zurück (bind_password maskiert als '********').
- Rückgabe: LDAP-Config-Objekt
- Methode: POST
- Parameter:
enabled,server,port,use_tls,base_dn,bind_user_dn,bind_password,search_filter,user_ou,username_attribute,display_name_attribute,email_attribute - Berechtigung: Admin
- Beschreibung: Speichert LDAP-Konfiguration. Behält bestehendes Passwort bei '********'.
- Rückgabe: Erfolgsmeldung
- Methode: POST
- Parameter: – (nutzt gespeicherte Config)
- Berechtigung: Admin
- Beschreibung: Testet LDAP-Verbindung und zählt verfügbare Benutzer.
- Rückgabe:
{user_count}mit Erfolgsmeldung
- Methode: POST
- Parameter: – (nutzt gespeicherte Config)
- Berechtigung: Admin
- Beschreibung: Importiert/synchronisiert Benutzer aus LDAP. Erstellt neue, aktualisiert bestehende, überspringt lokale mit Konflikten.
- Rückgabe:
{imported, updated, skipped}Zähler
- Methode: GET
- Parameter: –
- Berechtigung: Admin
- Beschreibung: Gibt SMTP-Konfiguration zurück (Passwort maskiert als '********').
- Rückgabe: SMTP-Config-Objekt
- Methode: POST
- Parameter:
enabled,host,port,encryption,username,password,from_email,from_name - Berechtigung: Admin
- Beschreibung: Speichert SMTP-Konfiguration. Behält bestehendes Passwort bei '********'.
- Rückgabe: Erfolgsmeldung
- Methode: POST
- Parameter:
email - Berechtigung: Admin
- Beschreibung: Sendet Test-E-Mail über die gespeicherte SMTP-Konfiguration.
- Rückgabe: Erfolgsmeldung
- Methode: POST
- Parameter:
identifier(Username oder E-Mail) - Berechtigung: Public (keine Anmeldung nötig)
- Beschreibung: Generiert Reset-Token und sendet E-Mail mit Reset-Link. Anti-Enumeration: immer gleiche Antwort. Nur lokale User. Token 1h gültig, SHA-256 gehashed gespeichert.
- Rückgabe: Immer Erfolgsmeldung (verhindert User-Enumeration)
- Methode: POST
- Parameter:
token,password - Berechtigung: Public (keine Anmeldung nötig)
- Beschreibung: Validiert Token (hash_equals gegen Timing-Attacks), setzt neues Passwort, löscht Token.
- Rückgabe: Erfolgsmeldung oder Fehlermeldung bei ungültigem/abgelaufenem Token
- Methode: GET
- Parameter: –
- Optional:
count(Standard: 20) - Beschreibung: Gibt letzte Aktivitätsprotokoll-Einträge zurück (max. 200 gespeichert).
- Rückgabe: Array von Aktivitäts-Einträgen
| Funktion | Beschreibung |
|---|---|
msg($key) |
Gibt lokalisierte Nachricht zurück (de/en) |
loadUsers() / saveUsers() |
Lädt/Speichert users.json |
loadProjects() / saveProjects() |
Lädt/Speichert projects.json |
loadActivity() / saveActivity() |
Lädt/Speichert Aktivitätsprotokoll |
loadNotifications() / saveNotifications() |
Lädt/Speichert Benachrichtigungen |
loadLdapConfig() / saveLdapConfig() |
Lädt/Speichert LDAP-Konfiguration |
loadSmtpConfig() / saveSmtpConfig() |
Lädt/Speichert SMTP-Konfiguration |
loadPasswordResets() / savePasswordResets() |
Lädt/Speichert Password-Reset-Tokens |
cleanExpiredResets() |
Entfernt abgelaufene Reset-Tokens |
sendSmtpEmail($to, $subject, $body) |
Sendet HTML-E-Mail via SMTP-Socket (STARTTLS, SSL, AUTH LOGIN) |
addNotification() |
Erstellt neuen Benachrichtigungs-Eintrag |
logActivity() |
Protokolliert Aktion im Aktivitätslog |
response() |
Sendet JSON-Antwort und beendet |
requireAdmin() |
Erzwingt Admin-Berechtigung |
runPendingMigrations() |
Führt Datenmigrationen aus |
Migrationen laufen automatisch beim Start wenn die Version veraltet ist:
| Version | Migration |
|---|---|
| v1 | Members-Array zu Projekten hinzufügen |
| v2 | addedAt-Feld für Mitglieder sicherstellen |
| v3 | role-Feld für Benutzer sicherstellen |
| v4 | preferences-Objekt für Benutzer sicherstellen |
| v5 | attachments-Array zu Todos hinzufügen |
| v6 | source-Feld (local/ldap) zu Benutzern hinzufügen |
| v7 | email-Feld zu Benutzern hinzufügen |