
# Recupera un log

`GET /v1/logs/{log_id}` · autorizzazione `logs:read`

Restituisce un singolo record di log, incluso `details`.

## Richiesta

| Parametro | In | Obbligatorio | Descrizione |
|---|---|---|---|
| `log_id` | path | sì | Id del record di log, con prefisso `evt_`. |

## Risposta

`200 OK` con il record. I campi vuoti sono `null`.

`ip`, `ip_asn`, `user_agent` e `user_agent_family` sono presenti solo quando la chiave ha l'autorizzazione `audit-events:read_ip`, e `identifier_hint` solo quando ha `users:read_pii`. Senza l'autorizzazione il campo viene omesso del tutto (nessun valore mascherato). `ip_country` viene sempre restituito.

```json
{
  "id": "evt_01j9xk3m7q8r2s4t6v8w0y2z4a",
  "occurred_at": "2026-10-01T08:15:42.120Z",
  "type": "authentication.password.failed",
  "outcome": "failure",
  "reason_code": "invalid_credentials",
  "user_id": "usr_0a1b2c3d4e5f6g7h8j9k0m1n2p",
  "org_id": null,
  "application_id": "app_01j9xk3m7q8r2s4t6v8w0y2z4b",
  "connection_id": "conn_01j9xk3m7q8r2s4t6v8w0y2z4c",
  "directory_id": null,
  "session_id": null,
  "identifier_hint": "a***@e***.com",
  "ip": "203.0.113.7",
  "ip_country": "DE",
  "ip_asn": 64500,
  "user_agent": "Mozilla/5.0 (X11; Linux x86_64)",
  "user_agent_family": "Firefox",
  "risk": null,
  "auth_context": null,
  "act_chain": null,
  "details": {"attempt": 3},
  "request_id": "0192a6c1-7d3e-7a10-9b2c-3d4e5f607182",
  "correlation_id": null,
  "trace_id": "4bf92f3577b34da6a3ce929d0e0e4736"
}
```

## Errori

Ogni errore è un corpo `application/problem+json` con un `code` stabile.

| HTTP | `code` | Quando |
|---|---|---|
| 401 | `unauthenticated` | La chiave API manca, non è valida o è stata revocata. |
| 403 | `insufficient_permissions` | La chiave non ha l'autorizzazione `logs:read`. |
| 404 | `not_found` | Il record non esiste, appartiene a un altro ambiente o è fuori dalla finestra di conservazione. |
| 429 | `rate_limited` | È stato superato il rate limit; rispetta `Retry-After`. |
| 503 | `service_unavailable` | Una dipendenza non è temporaneamente disponibile; riprova più tardi. |

## Esempio

```bash
curl https://api.eu.keenauth.com/v1/logs/log_01j9xk3m7q8r2s4t6v8w0y2z4a \
  -H "Authorization: Bearer $KEENAUTH_SECRET_KEY"
```

## Dati personali

Questo endpoint contiene dati personali: log dell'ambiente. [Dati personali nelle API di KeenAuth](/docs/policies/personal-data) descrive cosa viene memorizzato, per quanto tempo viene conservato e come viene cancellato. Non inviare categorie particolari di dati personali (salute, dati biometrici, religione, opinioni politiche, orientamento sessuale) in nessun campo.
