Add protected soft deletion for research runs

This commit is contained in:
faligam
2026-09-07 12:34:41 +02:00
parent 2c532bc9bb
commit f921e978a0
8 changed files with 445 additions and 37 deletions

23
API.md
View File

@@ -359,17 +359,34 @@ Identisch zu `GET /v1/research/{id}` — gleicher Response.
### DELETE /v1/research/{id}
**Beschreibung:** Löscht einen Research-Run (nur wenn nicht completed).
**Beschreibung:** Verschiebt einen Research-Run (auch einen abgeschlossenen) als
Soft Delete in den Papierkorb. Der Run ist anschließend in normalen Listen und
Abrufen nicht mehr sichtbar. Bei aktivem Löschschutz muss das Passwort im Body
übergeben werden; Administratoren benötigen es nicht.
**Response (200 OK):**
```json
{
"status": "deleted",
"status": "hidden",
"research_id": "uuid-..."
}
```
**Error (400):** Completed runs sind immutable.
### PUT /v1/research/{id}/deletion-protection
Setzt einen Löschschutz mit einem Passwort von mindestens acht Zeichen. Das
Passwort wird ausschließlich als scrypt-Hash gespeichert und nie ausgegeben.
Bei einer Änderung eines bestehenden Schutzes ist `current_password` nötig.
### GET /v1/admin/research/deleted
Administrator-Endpunkt für den Papierkorb. Die Administratorrolle wird lokal
mit `nsct-api-key grant-admin <username>` vergeben.
### DELETE /v1/admin/research/{id}
Endgültiges Löschen eines bereits ausgeblendeten Eintrags. Sowohl Soft Delete
als auch Purge werden in `research_deletion_audit` protokolliert.
---