Kimlik ayarlarını güncelle
PATCH /v1/identity-settings · izin identity-settings:write
Ortamın kullanıcı adı ayarlarını JSON birleştirme yamasıyla (application/merge-patch+json, RFC 7396) günceller. If-Match zorunludur: yoksa 428, eski sürümse 412 döner. Ayar hiç yazılmadıysa sürüm "0"'dır ve ilk yazma satırı açar. Hiçbir şeyi değiştirmeyen yama yazma yapmaz ve sürümü korur.
İstek
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
If-Match |
başlık | evet | Ayarların son okunan ETag değeri (hiç yazılmadıysa "0"). Yoksa 428, eskiyse 412. |
username_identifier |
string | hayır | required, optional ya da off. null olamaz. |
username_min_length |
integer | hayır | 3-64, username_max_length değerinden büyük olamaz. null olamaz. |
username_max_length |
integer | hayır | 3-64, username_min_length değerinden küçük olamaz. null olamaz. |
reserved_usernames |
string[] | null | hayır | En çok 1000 ad; listenin tamamının yerini alır (RFC 7396 dizileri birleştirmez). null ya da [] temizler. Her giriş normalleştirilir, tekrarlar atılır ve liste sıralı saklanır. |
verification_policy |
string | hayır | before_sign_in (varsayılan) ya da after_sign_in. after_sign_in doğrulanmamış hesap temizliğini durdurur. null olamaz. |
unverified_account_ttl_days |
integer | hayır | 1-30 (varsayılan 7): before_sign_in ortamında doğrulanmamış kaydın silinmeden önce tutulduğu gün sayısı. null olamaz. |
Kullanıcı adı ayarları yalnız sonraki yazmalara uygulanır; var olan kullanıcılar bu ayarlarla asla değiştirilmez. Doğrulama ayarları var olan kayıtlara da etki eder (aşağıda).
Zorlama kuralları
off(varsayılan): kullanıcı adı yazan istek (POST /v1/users,PATCH /v1/users/{id})422veidentifier_type_disabledkoduyla (işaretçi/username) reddedilir. Var olan kullanıcı adını temizlemek serbesttir; kullanıcı adına dokunmayan kullanıcı yaması yeniden denetlenmez. Giriş, hesapları kullanıcı adıyla çözmez.optional: kullanıcı adı verilebilir.required: yönetim API'siyle kullanıcı adı olmadan kullanıcı oluşturmak422(required) ile reddedilir ve yönetim yaması onu temizleyemez. Kayıt formunda kullanıcı adı istemek barındırılan girişin işidir; sosyal ve anlık (JIT) oluşturma kullanıcı adı istemez.- Uzunluk:
username_min_length'ten kısa ya dausername_max_length'ten uzun kullanıcı adı422(invalid) ile reddedilir. - Ayrılmış adlar: normalleştirilmiş hâli
reserved_usernamesiçinde olan kullanıcı adı422veusername_reservedkoduyla reddedilir. Geçersiz liste girişi422ve/reserved_usernames/<i>işaretçisiyle reddedilir. - Ayar değişince var olan kullanıcılar değiştirilmez; kurallar yalnız sonraki yazmalara uygulanır.
Doğrulanmamış hesap temizliği
verification_policy ve unverified_account_ttl_days, hiç doğrulanmamış kayıtların otomatik temizliğini yönetir. Temizlik yalnız e-posta adresi (ya da telefon numarası) zorunlu tanımlayıcıyken çalışır; e-posta için varsayılan budur.
before_sign_in(varsayılan): kayıtla oluşturulan kullanıcı, zorunlu tanımlayıcısını doğrulamadan token alamaz. Kayıttanunverified_account_ttl_daysgün (1-30, varsayılan 7) sonra hâlâ doğrulanmış e-posta adresi ya da telefon numarası olmayan, hiç token almamış ve sosyal ya da kurumsal (SAML/OIDC) kimliği bulunmayan kayıt kullanıcısı kalıcı olarak silinir. Temizlik düzenli aralıklarla (varsayılan olarak saatte bir) çalışır.after_sign_in: kullanıcı doğrulamadan token alır (email_verified: false); temizlik çalışmaz ve hiçbir kullanıcı silinmez.- Asla silinmeyenler: yönetim API'si, içe aktarma, SCIM, davet ya da anlık (JIT) federasyonla oluşturulan kullanıcılar, engellenmiş kullanıcılar ve silinmesi zaten başlamış kullanıcılar. Yalnız temizliğin ortamda başlamasından sonra oluşturulan kayıtlar aday olur.
- Silme geri alınamaz: kullanıcı sert silinir, nedeni
unverified_expiredolan bir mezar taşı kaydı tutulur veuser.deletedolayı yayımlanır. - Politika ya da süre değişikliği bir sonraki koşuda geçerli olur.
unverified_account_ttl_daysküçültülürse daha eski doğrulanmamış kayıtlar hemen aday olur;after_sign_in'denbefore_sign_in'e dönülürse süresi dolmuş doğrulanmamış kayıtlar bir sonraki koşuda silinir.
Yanıt
200 OK; güncel ayarlar ve yeni ETag.
{
"username_identifier": "optional",
"username_min_length": 3,
"username_max_length": 32,
"reserved_usernames": ["admin", "root", "support"],
"verification_policy": "before_sign_in",
"unverified_account_ttl_days": 7,
"updated_at": "2026-10-05T09:30:00.123456Z"
}
Hatalar
| HTTP | code | Ne zaman |
|---|---|---|
| 400 | unknown_field |
Yamada bilinmeyen ya da salt okunur alan var ya da yama bir JSON nesnesi değil (malformed_request). |
| 412 | precondition_failed |
If-Match güncel sürümle eşleşmiyor. |
| 415 | unsupported_media_type |
İçerik türü application/merge-patch+json değil. |
| 422 | validation_failed |
Bir değer geçersiz, min değeri max değerinden büyük ya da null olamayan bir alan null yapıldı (code: invalid). |
| 428 | precondition_required |
If-Match başlığı yok. |
| 401 | unauthenticated |
Kimlik bilgisi yok, geçersiz ya da iptal edilmiş. |
| 403 | insufficient_permissions |
Kimlik bilgisinde gerekli izin yok. |
| 429 | rate_limited |
Hız sınırı aşıldı; Retry-After süresinden sonra yeniden deneyin. |
| 503 | service_unavailable |
Bir bağımlılık geçici olarak kullanılamıyor; Retry-After süresinden sonra yeniden deneyin. |
Örnek
curl -X PATCH https://api.eu.keenauth.com/v1/identity-settings \
-H "Authorization: Bearer $KEENAUTH_SECRET_KEY" \
-H "Content-Type: application/merge-patch+json" \
-H 'If-Match: "0"' \
-d '{"username_identifier":"optional","username_max_length":32,"reserved_usernames":["admin","root","support"]}'