API · v1 · stabil
CODEMETA OSDeveloper Center
Konsole öffnen
Tutorial

Audit-Historie eines Tickets exportieren

Lesedauer · 7 Min.Aktualisiert · 2026-05-01

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.

  1. Voraussetzungen. Sie sind angemeldet (cookies.txt vorhanden), kennen Mandant und Ticket-ID, und Ihr Account hat Lesepermission auf das Ticket.

  2. 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.txt

    Antwort:

    {
      "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
      }
    }
  3. Cursor-Pagination durchlaufen. Solange hasMore true ist, holen Sie die nächste Seite mit cursor=<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')
    done
  4. Patches 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.

Verwandt

Suche