
# Verzeichnis-Provisionierungsprotokolle auflisten

`GET /v1/directories/{directory_id}/provisioning-logs` · Berechtigung `directories:read`

Listet das Provisionierungsprotokoll eines SCIM-Verzeichnisses auf, die neuesten zuerst. Jede authentifizierte SCIM-Anfrage, die der Identitätsanbieter gesendet hat, ist ein Datensatz: Methode, Pfadvorlage (die echte ID steht nie im Pfad), Ressourcentyp und ID, eine Zusammenfassung der Operation ohne Werte, ignorierte Attributnamen, HTTP-Status, `scim_type`, Dauer, das Präfix der Client-Adresse (IPv4 /24, IPv6 /48), die Client-Klasse und ob die Massen-Deprovisionierungssperre die Anfrage gestoppt hat. Anfrage- und Antwortkörper, Attributwerte, die vollständige IP-Adresse, der User-Agent und der Token-Wert werden nie gespeichert und nie zurückgegeben.

Datensätze werden für den Protokollaufbewahrungszeitraum Ihres Tarifs aufbewahrt (Free 7 Tage, Startup 14, Business 30, Enterprise 90). Die Reihenfolge ist immer die neueste zuerst; es gibt keinen Parameter `order`. Datensätze eines gelöschten Verzeichnisses bleiben mit `GET /v1/logs?type=scim.request` lesbar.

## Anfrage

| Feld | Typ | Pflicht | Beschreibung |
|---|---|---|---|
| `directory_id` | Pfad | ja | SCIM-Verzeichnis-ID (`dir_…`). |
| `limit` | Abfrage | nein | 1–100, Standard 20. |
| `after` | Abfrage | nein | Der Cursor aus `list_metadata.after` (ältere Datensätze). |
| `before` | Abfrage | nein | Der Cursor aus `list_metadata.before` (neuere Datensätze). |
| `from` | Abfrage | nein | Untere Grenze, einschließlich (RFC 3339). |
| `to` | Abfrage | nein | Obere Grenze, ausschließlich (RFC 3339). |

Es gibt keinen Anfragetext.

## Antwort

`200 OK` mit einer Seite von Datensätzen.

```json
{
  "data": [
    {
      "id": "evt_01j9xp4q6r8s0t2v4w6x8y0z2b",
      "occurred_at": "2026-10-20T12:00:00Z",
      "outcome": "success",
      "organization_id": "org_01j9xk1m3n5p7q9r1s3t5v7w9x",
      "token_id": "dst_01j9xn2p4q6r8s0t2v4w6x8y0z",
      "method": "PATCH",
      "path_template": "PATCH /Users/{id}",
      "resource_type": "User",
      "resource_id": "dsu_01j9xq5r7s9t1v3w5x7y9z1a3c",
      "operation_summary": ["replace:active"],
      "ignored_attributes": [],
      "status": 200,
      "scim_type": null,
      "duration_ms": 12,
      "client_ip_prefix": "203.0.113.0/24",
      "client_class": "okta",
      "held": false,
      "request_id": "0192f5e0-0000-7000-8000-000000000001",
      "trace_id": "4bf92f3577b34da6a3ce929d0e0e4736"
    }
  ],
  "list_metadata": {
    "before": null,
    "after": null
  }
}
```

## Fehler

| HTTP | Code | Wann |
|---|---|---|
| 400 | `invalid_cursor` | Der Cursor ist fehlerhaft oder gehört zu einer anderen Anfrage. |
| 400 | `range_outside_retention` | `from` liegt vor dem Aufbewahrungszeitraum Ihres Tarifs. |
| 404 | `not_found` | Das Verzeichnis existiert in dieser Umgebung nicht. |
| 422 | `validation_failed` | `limit` liegt außerhalb des gültigen Bereichs, `from` oder `to` ist kein RFC 3339, `to` liegt nicht nach `from`, oder `order` wurde angegeben (`unsupported`). |
| 401 | `unauthenticated` | Die Anmeldedaten fehlen, sind ungültig oder wurden widerrufen. |
| 403 | `insufficient_permissions` | Den Anmeldedaten fehlt die erforderliche Berechtigung. |
| 429 | `rate_limited` | Das Ratenlimit wurde überschritten; wiederholen Sie die Anfrage nach der Zeit aus `Retry-After`. |
| 503 | `service_unavailable` | Die Verzeichnissynchronisierung oder Protokollsuche ist vorübergehend nicht verfügbar oder in dieser Bereitstellung nicht konfiguriert; wiederholen Sie die Anfrage nach der Zeit aus `Retry-After`. |

## Beispiel

```bash
curl -i "https://api.eu.keenauth.com/v1/directories/dir_01j9xm2n4p6q8r0s2t4v6w8y0z/provisioning-logs?limit=20" \
  -H "Authorization: Bearer $KEENAUTH_SECRET_KEY"
```

```bash
keenauth directories provisioning-logs list dir_01j9xm2n4p6q8r0s2t4v6w8y0z --from 2026-10-01T00:00:00Z
```

## Personenbezogene Daten

Dieser Endpunkt enthält personenbezogene Daten: Verzeichnis-(SCIM-)Benutzer. [Personenbezogene Daten in den KeenAuth-APIs](/docs/policies/personal-data) beschreibt, was gespeichert wird, wie lange es aufbewahrt wird und wie es gelöscht wird. Senden Sie in keinem Feld besondere Kategorien personenbezogener Daten (Gesundheit, biometrische Daten, Religion, politische Meinungen, sexuelle Orientierung).
