Audit-Historie eines Tickets exportieren
Jede Mutation an einer Entity hinterlässt einen RFC-6902-JSON-Patch im Audit-Trail. Dieses Tutorial zeigt, wie Sie ihn pro Entity vollständig auslesen.
Hintergrund
Pro Entity gibt es eine Timeline-Route. Mit ?filter=history bekommen Sie
ausschließlich die Audit-Einträge (sonst werden auch Kommentare,
Status-Änderungen etc. zurückgegeben).
Die Route ist GET /api/v1/<resource>/<id>/timeline. Mehr im Konzept
Audit-Historie.
Voraussetzungen. Sie sind angemeldet (
cookies.txtvorhanden), kennen Mandant und Ticket-ID, und Ihr Account hat Lesepermission auf das Ticket.Erste Seite holen.
curl "https://os.codemeta.de/api/v1/tickets/$TICKET_ID/timeline?filter=history&limit=50" \ -H "X-Tenant-Id: $TENANT" \ -b cookies.txtAntwort:
{ "data": [ { "id": "01938442-…", "operation": "update", "patch": [ { "op": "replace", "path": "/priority", "value": "high" } ], "actor": "0193…", "at": "2026-04-30T14:08:11.092Z" } ], "meta": { "nextCursor": "0193e2a0-…", "hasMore": true, "limit": 50 } }Cursor-Pagination durchlaufen. Solange
hasMoretrue ist, holen Sie die nächste Seite mitcursor=<nextCursor>:NEXT="0193e2a0-…" while [ -n "$NEXT" ]; do RES=$(curl -s "https://os.codemeta.de/api/v1/tickets/$TICKET_ID/timeline?filter=history&limit=50&cursor=$NEXT" \ -H "X-Tenant-Id: $TENANT" \ -b cookies.txt) echo "$RES" | jq '.data[]' NEXT=$(echo "$RES" | jq -r '.meta.nextCursor // empty') donePatches lokal anwenden (optional). Wenn Sie den Zustand der Entity zu einem bestimmten Zeitpunkt rekonstruieren wollen, holen Sie zusätzlich den aktuellen Stand und arbeiten Sie sich rückwärts durch die Patches.
Die meisten JSON-Patch-Implementierungen können einen Patch invertieren, sofern der Vor-Zustand bekannt ist. In der Praxis ist es einfacher, mit einem leeren Initialzustand zu starten und alle
create/update-Patches in chronologisch aufsteigender Reihenfolge anzuwenden.