Uptimeify Docs

Audit-Log auflisten

Gibt das Audit-Log deiner Organisation zurück: wer wann was getan hat, filterbar nach Zeitraum, Bereich und Ergebnis.

GET /api/organization/audit

Gibt die protokollierten Aktionen deiner Organisation zurück, neueste zuerst. Ohne since umfasst die Liste die letzten 30 Tage. Einträge bleiben 12 Monate gespeichert; ältere innerhalb dieser Frist über since oder den Export.

Zugriff

Nur Organisations-Admins, per Sitzung oder organisationsweitem API-Token, dessen Aussteller Admin ist. Andere Rollen erhalten 403 forbidden. Agent-Tokens (verbundene Apps) werden für diesen Pfad abgewiesen. Die Organisation ergibt sich aus Sitzung oder Token; das Log einer anderen Organisation ist nicht lesbar.

Query-Parameter

ParameterStandardBeschreibung
since30 Tage vor jetztUnix-Zeit in Millisekunden, Untergrenze inklusiv. Ein früherer Wert liest weiter zurück.
untilkeinerUnix-Zeit in Millisekunden, Obergrenze inklusiv: ein Eintrag genau zu until ist enthalten.
limit1001 bis 500.
offset00 bis 50000.
sortBytsts, actor, status, summary oder durationMs.
sortOrderdescasc oder desc.
qkeinerTextfilter ohne Rücksicht auf Groß/Klein über Bereich, Zusammenfassung und E-Mail oder Nutzer-ID des Handelnden.
areakeinerGenauer Bereich, z. B. websites.
successkeinertrue oder false. Einträge ohne Ergebnis fallen dann heraus.
envelopekeineritems antwortet { items, total, page, perPage }.

total zählt die Einträge nach allen Filtern.

Beispiel (cURL)

BASE_URL="https://uptimeify.io"
TOKEN="<dein-api-token>"

curl -X GET "$BASE_URL/api/organization/audit?since=1759276800000&limit=50&envelope=items" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Accept: application/json"

Antwort (Response)

{
  "items": [
    {
      "id": "4f1c2a9e-8b7d-4c3e-9f20-6a5b4c3d2e1f",
      "ts": 1761126000000,
      "organizationId": 1,
      "area": "websites",
      "summary": "Websites updated",
      "actor": { "email": "admin@deine-agentur.de", "userId": "u_123" },
      "success": true,
      "durationMs": 42,
      "type": "websites.update",
      "method": "PATCH",
      "route": "/api/websites/[id]",
      "statusCode": 200,
      "resourceType": "websites",
      "resourceId": "17",
      "changes": [{ "field": "name", "from": "Shop", "to": "Shop (live)" }]
    }
  ],
  "total": 1,
  "page": 1,
  "perPage": 50
}
FeldBeschreibung
tsUnix-Zeit in Millisekunden.
summaryKurzbeschreibung auf Englisch.
routeRouten-Vorlage, nie der rohe Pfad.
actorWer gehandelt hat, oder null.
ipAddress, userAgentNur bei Anfragen über eine verbundene App (MCP-Agent) erfasst.
agentGesetzt, wenn eine verbundene App im Namen des Handelnden gehandelt hat.
auth{ method, reason }, nur bei Anmelde-Ereignissen (type beginnt mit auth.). method: password, password_mfa oder sso bei einer Anmeldung; one, others oder all bei auth.sessions.revoked; sonst null. reason: Fehlercode einer fehlgeschlagenen Anmeldung (z. B. INVALID_EMAIL_OR_PASSWORD), sonst null.
changesWas zu was wurde, wo die Aktion es festhält. Geheime Werte werden nicht protokolliert (redacted: true).

Listenform: Mit envelope=items kommt die Liste als { items, total, page, perPage } (perPage ist limit, page ist floor(offset / limit) + 1). Ohne den Parameter antwortet der Endpunkt noch in der bisherigen Form { "events": [...], "pagination": { "limit", "offset", "total" } }; sie ist veraltet, ab dem 18.01.2027 ist { items, ... } der Standard.

Anmelde-Ereignisse

Neben Anfragen protokolliert das Log diese type-Werte: auth.login.succeeded, auth.login.failed (nur bei bekanntem Konto; actor ist null), auth.logout, auth.password_reset.requested, auth.password_reset.completed, auth.password.changed, auth.sessions.revoked und app_link.redeemed (Anmeldung in der App per QR-Code). Der Typ audit.export hält jeden Export des Audit-Logs mit Zeitraum und Zeilenzahl fest. Anmelde-Ereignisse tragen nie ipAddress oder userAgent; gespeichert werden nur Konto, Zeit, Methode und Grund-Code.

Häufige Fehler

  • 400 invalidRequestBody, wenn ein Query-Parameter außerhalb des Bereichs liegt oder falsch geformt ist
  • 400 userMustBelongToOrg, wenn sich aus Sitzung oder Token keine Organisation ableiten lässt
  • 401 unauthorized, wenn du nicht angemeldet bist
  • 403 forbidden, wenn du kein Organisations-Admin bist

Auf dieser Seite