Kategorien
Endpunkte zum Auflisten, Erstellen und Löschen von Kategorien in Paperarchive. Kategorien gehören einem Nutzer; die Space-Zuordnung läuft über category_spaces.
https://api.paperarchive.io/v1/categoriescategories:readListet deine Kategorien auf, die mit mindestens einem zugänglichen Space verknüpft sind (legacy categories.space_id oder category_spaces). Jedes Objekt enthält membership_space_ids.
Code examples
curl -X GET "https://api.paperarchive.io/v1/categories" \
-H "Authorization: Bearer pa_live_abc123def456" https://api.paperarchive.io/v1/categoriescategories:writeNeue Kategorie anlegen und einem Space zuordnen. Fehlt space_id, wird der Standard-Space des Kontos genutzt (falls vorhanden). Paperarchive prüft den Namen vorher gegen deine bestehenden Kategorien: Gibt es eine Hauptkategorie mit gleichem Namen (ohne Rücksicht auf Groß-/Kleinschreibung und Leerzeichen am Rand), kommt sie mit Status 200 zurück, statt eine Dublette anzulegen. Gibt es ähnliche Kategorien (andere Schreibweise wie "&" und "und", Einzahl/Mehrzahl, Synonyme wie "Kfz"/"Auto" oder ineinander steckende Namen), antwortet die API mit 409, Fehler "similar_exists" und den Kandidaten; mit force: true legst du die Kategorie trotzdem an. Eine neue Kategorie liefert 201.
Request body
| Name | Type | Required | Description |
|---|---|---|---|
name | string | required | Kategoriename. |
space_id | uuid | optional | Ziel-Space für die erste Zuordnung. Weglassen = Standard-Space. |
color | string | optional | Hex-Farbcode (z.B. "#ef4444"). |
icon | string | optional | Icon-Name. |
force | boolean | optional | Kategorie auch dann anlegen, wenn ähnliche Kategorien existieren (überspringt die Antwort 409 similar_exists). Ein exakt gleicher Name liefert weiterhin die bestehende Kategorie. |
Code examples
curl -X POST "https://api.paperarchive.io/v1/categories" \
-H "Authorization: Bearer pa_live_abc123def456" \
-H "Content-Type: application/json" \
-d '{"name": "Receipts", "space_id": "space-uuid-1", "color": "#f59e0b"}' https://api.paperarchive.io/v1/categories/:idcategories:writeEine Kategorie, die du angelegt hast, in den Papierkorb verschieben (Soft-Delete). Nur möglich, wenn die Kategorie mit mindestens einem Space verknüpft ist, den dein API-Schlüssel abdeckt (category_spaces oder legacy space_id). Nur wer die Kategorie angelegt hat, kann sie löschen; in der App lässt sie sich 30 Tage lang wiederherstellen, ihre Dokumente behalten die Zuordnung.
Path parameters
| Name | Type | Required | Description |
|---|---|---|---|
id | uuid | required | Die zu löschende Kategorie-ID. |
Code examples
curl -X DELETE "https://api.paperarchive.io/v1/categories/cat-uuid-1" \
-H "Authorization: Bearer pa_live_abc123def456"Smoke-Test-Checkliste (Kategorien-API)
Nutze einen Test-API-Schlüssel mit categories:read und categories:write (und spaces:read, damit du Space-UUIDs ermitteln kannst). Führe die Schritte gegen Staging oder lokale API aus.
- GET /v1/categories - Erwartung:
200,success: true,dataals Array. Jedes Objekt hatmembership_space_ids(Array, bei Legacy-Zeilen vor Backfill ggf. leer). - POST mit space_id -
POST /v1/categoriesmit Body{"name":"API Smoke Cat","space_id":"<uuid>"}. Erwartung:201, in der Antwort enthältmembership_space_idsdiesen Space. - POST ohne space_id - Nur
{"name":"API Smoke Cat Default"}. Erwartung:201, wenn ein Standard-Space existiert, sonst400mit verständlicher Fehlermeldung. - GET erneut - Neue Kategorie erscheint;
membership_space_idsentspricht dem genutzten (oder Standard-)Space. - POST mit demselben Namen - Erwartung:
200und dieselbeid(keine Dublette). - POST mit ähnlichem Namen - z.B. die Mehrzahl des Namens. Erwartung:
409miterror: "similar_exists"undcandidates; mit"force": trueErwartung201. - DELETE -
DELETE /v1/categories/<id>mit der neuen ID. Erwartung:200,success: true. GET wiederholen: Kategorie weg (sie liegt im Papierkorb). - Eingeschränkter API-Schlüssel - Schlüssel nur für einen Space: POST mit
space_idaußerhalb des Schlüssels - Erwartung:403.