Kullanıcının günlüklerini listele
GET /v1/users/{user_id}/logs · izin logs:read
Bir kullanıcının günlük kayıtlarını imleç sayfalamasıyla, en yeniden en eskiye doğru listeler. Bu, panodaki kullanıcı etkinlik görünümünün arkasındaki verilerdir. Günlükleri listele ile aynı kuralları izler, ancak yalnızca from, to, type ve org_id filtrelerini kabul eder; diğer filtreler yok sayılır.
Kuruluş kapsamı
Bir kuruluş yöneticisi için üye tanılama görünümü oluşturmak üzere org_id geçirin. Bu durumda anahtarın ayrıca organizations:read iznine ihtiyacı vardır. Kullanıcı o kuruluşun üyesi değilse (invited, active veya suspended üyeliği yoksa), istek 404 not_found ile başarısız olur; bu, bilinmeyen bir kullanıcı için verilen yanıtın aynısıdır. Kullanıcı üyeyse, yalnızca bu kuruluş bağlamında gerçekleşen kayıtlar döndürülür: org_id değeri o kuruluş olan kayıtlar. Kullanıcının kuruluş dışındaki veya başka bir kuruluş bağlamındaki oturum açmaları hiçbir zaman döndürülmez. org_id olmadan görünüm, ortamdaki kullanıcının tüm kayıtlarını kapsar.
İstek
| Parametre | Konum | Zorunlu | Açıklama |
|---|---|---|---|
user_id |
path | evet | Kullanıcı kimliği, usr_ öneki ile. |
limit |
query | hayır | Sayfa boyutu, 1 ile 100 arası. Varsayılan 20. |
after |
query | hayır | list_metadata.after değerinden alınan şeffaf olmayan imleç (daha eski kayıtlar). before ile birlikte kullanılamaz. |
before |
query | hayır | list_metadata.before değerinden alınan şeffaf olmayan imleç (daha yeni kayıtlar). after ile birlikte kullanılamaz. |
from |
query | hayır | RFC 3339 zamanı; bu zamanda veya sonrasındaki kayıtlar. Saklama süresi içinde olmalıdır. |
to |
query | hayır | RFC 3339 zamanı; bu zamandan önceki kayıtlar. from değerinden sonra olmalıdır. |
type |
query | hayır | authentication. veya session.created gibi günlük türü öneki. Parametreyi en fazla 20 değer için tekrarlayın; bunlardan herhangi biriyle eşleşen kayıt döndürülür. |
org_id |
query | hayır | Kuruluş kimliği, org_ öneki ile. Görünümü o kuruluşun kayıtlarıyla sınırlar; bkz. Kuruluş kapsamı. organizations:read gerektirir. |
Kayıtlar her zaman occurred_at alanına göre, en yeniden en eskiye sıralanır; order parametresi yoktur (order=desc kabul edilir, başka herhangi bir değer validation_failed ile başarısız olur). İmleç yalnızca üretildiği filtrelerle geçerlidir.
Yanıt
200 OK. data sayfadaki kayıtları içerir; list_metadata.after daha eski kayıtlara, list_metadata.before daha yeni kayıtlara işaret eder (yoksa null). Toplam sayı döndürülmez. Boş alanlar null olur.
ip, ip_asn, user_agent ve user_agent_family yalnızca anahtarda audit-events:read_ip izni varsa bulunur; identifier_hint yalnızca users:read_pii izni varsa. İzin yoksa alan tamamen atlanır (maskelenmiş bir değer de yoktur). ip_country her zaman döndürülür.
{
"data": [
{
"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"
}
],
"list_metadata": {
"before": null,
"after": "<opaque cursor>"
}
}
Hatalar
Her hata, kararlı bir code içeren bir application/problem+json gövdesidir.
| HTTP | code |
Ne zaman |
|---|---|---|
| 400 | invalid_cursor |
İmleç hatalı biçimli ya da bu istek için üretilmemiş. |
| 400 | invalid_filter |
Günlük hizmeti bir filtreyi ya da imleci reddetti. |
| 400 | range_outside_retention |
from, planınızın saklama süresinden daha eski. |
| 422 | validation_failed |
Bir sorgu parametresi geçersiz (limit aralık dışında, hatalı zaman damgası, to değeri from değerinden sonra değil, 20'den fazla type değeri, hatalı biçimli org_id, tekrarlanan parametre). |
| 401 | unauthenticated |
API anahtarı eksik, geçersiz veya iptal edilmiş. |
| 403 | insufficient_permissions |
Anahtarda logs:read izni yok ya da org_id ayarlıysa anahtarda organizations:read izni yok. required_permissions isteğin gerektirdiklerini listeler. |
| 404 | not_found |
Kullanıcı kimliği hatalı biçimli ya da org_id ayarlı ve kullanıcı o kuruluşun üyesi değil. |
| 429 | rate_limited |
Hız sınırı aşıldı; Retry-After değerine uyun. |
| 503 | service_unavailable |
Bir bağımlılık geçici olarak kullanılamıyor; daha sonra yeniden deneyin. |
Örnek
curl "https://api.eu.keenauth.com/v1/users/usr_0a1b2c3d4e5f6g7h8j9k0m1n2p/logs?limit=50" \
-H "Authorization: Bearer $KEENAUTH_SECRET_KEY"
Yalnızca bir kuruluşun kayıtları:
keenauth users logs list usr_0a1b2c3d4e5f6g7h8j9k0m1n2p --org-id org_01j9xk3m7q8r2s4t6v8w0y2z4d --type authentication.
Kişisel veriler
Bu uç nokta kişisel veri içerir: ortam günlükleri. KeenAuth API'lerinde kişisel veriler sayfası neyin saklandığını, ne kadar süre tutulduğunu ve nasıl silindiğini açıklar. Hiçbir alanda özel nitelikli kişisel verileri (sağlık, biyometrik veriler, din, siyasi görüşler, cinsel yönelim) göndermeyin.