Kullanıcıyı güncelle
PATCH /v1/users/{user_id} · izin users:write
Kullanıcıyı bir JSON birleştirme yamasıyla (Content-Type: application/merge-patch+json) günceller. Yalnızca gönderdiğiniz alanlar değişir. Metin alanları null veya boş bir dizeyle temizlenir; email_verified ve phone_verified temizlenemez; address bütün olarak değiştirilir; user_metadata ve app_metadata anahtar anahtar birleştirilir ve null değeri o anahtarı siler; user_metadata veya app_metadata alanının kendisi null olarak gönderilirse tümü silinir ve {} kalır. Durum burada değiştirilemez; engelleme ve engeli kaldırma işlemlerini kullanın. Silinmeyi bekleyen bir kullanıcı güncellenemez. If-Match isteğe bağlıdır: gönderildiğinde kullanıcının mevcut ETag değeriyle eşleşmelidir.
İstek
| Parametre | Konum | Zorunlu | Açıklama |
|---|---|---|---|
user_id |
yol | evet | Kullanıcı kimliği, usr_ öneki ile. |
If-Match |
üstbilgi | hayır | Önceki bir okumadan gelen ETag. |
Gövde, Kullanıcı oluştur ile aynı alanları kabul eder; hepsi isteğe bağlıdır, ayrıca aşağıdaki yaş alanları da. Bilinmeyen alanlar unknown_field ile reddedilir.
Yaş ve veli onayı
Kendi yaş doğrulama veya veli onayı süreciniz tamamlandığında, sonucunu bu alanlarla kullanıcıya kaydedin. Bunlar her kullanıcı nesnesinde de döndürülür; null değeri, kullanıcının değerlendirilmediği anlamına gelir.
| Alan | Değerler | Notlar |
|---|---|---|
age_group |
adult, minor, unknown |
Temizlenemez; yaş bilinmiyorsa unknown gönderin. |
parental_consent_status |
not_required, pending, granted, denied, revoked |
null değeri temizler. not_required dışındaki her değer yalnızca kullanıcının age_group değeri minor ise kabul edilir. |
age_assurance_level |
self_declared, birthdate_declared, third_party_verified |
null değeri temizler. Sürecinizin yaşı ne kadar güçlü doğruladığını gösterir. |
age_group veya parental_consent_status değişikliği bir user.updated olayı yayımlar. Bu alanlar için ya da metinde doğum tarihini veya kimlik belgesi numarasını kullanmayın; yalnızca sonucu gönderin.
Yanıt
200 OK. Gövde kullanıcı nesnesidir. ETag üstbilgisi kullanıcı sürümünü taşır.
Anahtarda users:read_pii izni yoksa kişisel veriler maskelenir: email değeri a***@e***.com olur, phone_number yalnızca son 2 rakamını tutar (+**********67), name, given_name, family_name, middle_name ve nickname baş harflere dönüşür (A. L.), username yalnızca ilk karakterini tutar (a***), birthdate ****-**-** olur ve address {"redacted": true} olur. user_metadata ve app_metadata maskelenmez.
{
"id": "usr_0a1b2c3d4e5f6g7h8j9k0m1n2p",
"kind": "regular",
"status": "active",
"external_id": null,
"username": null,
"name": "Ada Lovelace",
"email": "ada@example.com",
"email_verified": true,
"phone_number": null,
"phone_verified": false,
"age_group": "adult",
"parental_consent_status": null,
"age_assurance_level": "self_declared",
"user_metadata": {},
"app_metadata": {},
"created_via": "admin_api",
"created_at": "2026-01-15T09:30:00Z",
"updated_at": "2026-01-15T09:30:00Z",
"last_sign_in_at": null,
"deletion_requested_at": null,
"deletion_due_at": null
}
Hatalar
Her hata, kararlı bir code içeren bir application/problem+json gövdesidir.
| HTTP | code |
Ne zaman |
|---|---|---|
| 400 | malformed_request, unknown_field |
Yama bir JSON nesnesi değil ya da bir alan şemada yok; veya If-Match hatalı biçimde. |
| 409 | conflict |
Değer zaten kullanılıyor ya da kullanıcı silinmeyi bekliyor (errors[].code değeri user_pending_deletion). |
| 412 | precondition_failed |
If-Match mevcut sürümle eşleşmiyor. |
| 415 | unsupported_media_type |
Content-Type application/merge-patch+json değil. |
| 422 | validation_failed |
Bir değer geçersiz ya da yanlış türde; errors[].pointer alanı belirtir. |
| 404 | not_found |
Kullanıcı bu ortamda yok (ya da kimlik biçimi hatalı). |
| 401 | unauthenticated |
API anahtarı eksik, geçersiz veya iptal edilmiş. |
| 403 | insufficient_permissions |
Anahtarda users:write izni yok. |
| 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 tekrar deneyin. |
Örnek
curl -X PATCH https://api.eu.keenauth.com/v1/users/usr_0a1b2c3d4e5f6g7h8j9k0m1n2p \
-H "Authorization: Bearer $KEENAUTH_SECRET_KEY" \
-H "Content-Type: application/merge-patch+json" \
-d '{"name": "Ada King", "app_metadata": {"tier": "gold"}}'
Bir küçük için onaylanmış veli onayını kaydedin:
curl -X PATCH https://api.eu.keenauth.com/v1/users/usr_0a1b2c3d4e5f6g7h8j9k0m1n2p \
-H "Authorization: Bearer $KEENAUTH_SECRET_KEY" \
-H "Content-Type: application/merge-patch+json" \
-d '{"age_group": "minor", "parental_consent_status": "granted", "age_assurance_level": "third_party_verified"}'
Kişisel veriler
Bu uç nokta kişisel veri içerir: son kullanıcı profili. KeenAuth API'lerinde kişisel veriler hangi verilerin 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.