# HTTP-API Alle Endpunkte werden von `app.py` bereitgestellt. HTML-Seiten geben `text/html` zurück; Daten-Endpunkte geben JSON zurück. ## PWA / System | Methode | Pfad | Beschreibung | |---|---|---| | GET | `/` | Upload-Seite | | GET | `/manifest.webmanifest` | PWA-Manifest | | GET | `/icon.svg` | App-Icon | | GET | `/sw.js` | Service Worker | | GET | `/healthz` | Statuscheck (JSON): API_BASE, OLLAMA_BASE_URL, Modell, DB-Pfad | ## Einstellungen | Methode | Pfad | Beschreibung | |---|---|---| | GET | `/settings` | Einstellungsseite | | POST | `/settings` | Einstellungen speichern | | GET | `/settings/models` | Verfügbare Ollama-Modelle laden (JSON) | ### `GET /settings/models` Response ```json { "ok": true, "models": ["llama3.2:3b", "qwen3.5:9b", ...] } { "ok": false, "error": "...", "models": [] } ``` ## Projekte | Methode | Pfad | Beschreibung | |---|---|---| | POST | `/projects` | Projekt anlegen (Form: `name`) | | POST | `/projects/update` | Projekt umbenennen (Form: `id`, `name`) | | POST | `/projects/{id}/delete` | Projekt löschen (Dokumente → Default) | | POST | `/projects/create-api` | Projekt anlegen, gibt JSON zurück (für JS-Upload-Flow) | ## Upload | Methode | Pfad | Beschreibung | |---|---|---| | POST | `/upload` | Audio-/Videodatei hochladen (Form: `project_id`, `file`); legt Upload-Job an | ## Library / Dokumente | Methode | Pfad | Beschreibung | |---|---|---| | GET | `/library` | Dokumentenliste (Query: `project_id`, `q_title`, `q_content`) | | GET | `/document/{id}` | Dokument anzeigen | | GET | `/document/{id}/download.md` | Dokument als Markdown herunterladen | | POST | `/document/{id}/edit` | Inhalt bearbeiten (Form: `content_md`) | | POST | `/document/{id}/rename` | Umbenennen (Form: `title`) | | POST | `/document/{id}/move` | Projekt wechseln (Form: `project_id`) | | POST | `/document/{id}/delete` | Dokument löschen | | POST | `/documents/bulk-move` | Mehrere Dokumente verschieben (Form: `ids[]`, `project_id`) | | POST | `/documents/bulk-delete` | Mehrere Dokumente löschen (Form: `ids[]`) | ## Prompts & Projekte | Methode | Pfad | Beschreibung | |---|---|---| | GET | `/prompts` | Prompts- und Projektverwaltung | | GET | `/prompts/{id}/preview` | Prompt-Vorschau (JSON: `{html}`) | | POST | `/prompts/add` | Prompt anlegen (Form: `name`, `prompt`) | | POST | `/prompts/update` | Prompt speichern inkl. KI-Einstellungen (siehe unten) | | POST | `/prompts/{id}/delete` | Prompt löschen | ### `POST /prompts/update` Felder | Feld | Typ | Beschreibung | |---|---|---| | `id` | int | Prompt-ID | | `name` | str | Name | | `prompt` | str | Prompttext | | `llm_use_default` | int | 1 = globale KI-Einstellungen, 0 = promptspezifisch | | `llm_model` | str? | Modellname | | `llm_think` | str? | `"true"` / `"false"` | | `llm_num_ctx` | str? | Kontextgröße oder `"auto"` | | `llm_num_predict` | str? | Max. Tokens | | `llm_repeat_penalty` | str? | | | `llm_repeat_last_n` | str? | | ## Hintergrundjobs | Methode | Pfad | Beschreibung | |---|---|---| | GET | `/jobs` | Job-Übersicht (HTML) | | GET | `/jobs/data` | Job-Liste als JSON (Query: `limit=200`) | | GET | `/jobs/{id}/debug-data` | Detail-Daten eines Jobs (JSON) | | POST | `/jobs/{id}/cancel` | Job abbrechen (JSON-Response) | | POST | `/jobs/{id}/cancel-form` | Job abbrechen (Redirect) | | POST | `/jobs/{id}/delete` | Job löschen (JSON-Response) | | POST | `/jobs/{id}/delete-form` | Job löschen (Redirect) | ## Prompt ausführen | Methode | Pfad | Beschreibung | |---|---|---| | GET | `/run` | Formular: Prompt auf Dokument(e) anwenden | | POST | `/run` | Analyse-Job(s) starten | | POST | `/run/project` | Analyse-Job für alle Transkripte eines Projekts starten |