Toplu parola sıfırlama işi oluşturun
POST /v1/jobs/password-resets · izin user-credentials:write
Tek bir eşzamansız işle birçok kullanıcının yeni bir parola seçmesini zorunlu kılar; örneğin olası bir sızıntıdan sonra veya kullanıcıları zayıf içe aktarılmış karma biçimlerinden uzaklaştırmak için. Yanıt işi hemen döndürür; kullanıcılar arka planda işaretlenir. İşi Toplu parola sıfırlama işini alın ile takip edin. Tek bir kullanıcı için Parola sıfırlamaya zorlayın bölümünü kullanın.
Kullanıcıları iki yoldan biriyle seçin (ikisi birden değil):
user_ids: en fazla 100.000 kullanıcı kimliği; tekrarlanan kimlikler bir kez sayılır. Bu ortamın kullanıcısı olmayan kimlikler ve parolası olmayan kullanıcılarnot_foundolarak sayılır.hash_algos: parolası bu algoritmalardan biriyle saklanan ve işin oluşturulmasından önce son kez değiştirilmiş her kullanıcı (örneğin["md5", "phpass"]). İş oluşturulduktan sonra belirlenen bir parola seçilmez.
connection_id filtresi henüz kullanılamıyor; bunu gönderen istek 422 validation_failed (/connection_id konumunda not_supported) ile reddedilir.
mode değerini seçin:
on_login: seçilen her kullanıcı, bir sonraki başarılı parola girişinden sonra yeni bir parola belirlemelidir.lazy_then_bulk_reset: aynısı, son tarihe kadar geçerlidir; son tarihdeadline_daysile belirlenir (1–365, varsayılan 30). Son tarihte, parolasını henüz değiştirmemiş seçili her kullanıcının parola karması silinir ve doğrulanmış birincil e-posta adresine parola sıfırlama e-postası gönderilir (doğrulanmış e-posta adresi olmayan kullanıcılar yine de kendileri sıfırlama isteyebilir).deadline_daysyalnızca bu modda kabul edilir.
Idempotency-Key zorunludur. Aynı kimlik bilgisi, anahtar ve istek aynı işi döndürür (Idempotent-Replayed: true ile); aynı anahtarın farklı bir isteğle kullanılması 422 idempotency_key_reuse ile reddedilir. Bir ortamda tamamlanmamış en fazla 20 iş bulunabilir; tembel bir iş son tarihine kadar açık kalır. İş oluşturma, yönetim denetim günlüğüne (password_reset_job.created) yazılır ve password_reset.scheduled olayını yayınlar.
İstek
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
mode |
dize | evet | on_login veya lazy_then_bulk_reset. |
user_ids |
dize[] | birinden | 1–100.000 kullanıcı kimliği (usr_…). |
hash_algos |
dize[] | birinden | Saklanan karma algoritmaları: argon2id, argon2i, bcrypt, scrypt, firebase_scrypt, pbkdf2_sha1, pbkdf2_sha256, pbkdf2_sha512, django_pbkdf2_sha256, django_bcrypt_sha256, phpass, ldap_ssha, ldap_ssha256, sha512_crypt, hmac_sha256, salted_sha256, salted_sha512, md5. |
deadline_days |
tam sayı | hayır | Yalnızca lazy_then_bulk_reset: 1–365, varsayılan 30. |
Yanıt
İşle birlikte 202 Accepted.
{
"id": "job_01h455vb4pex5vsknk084sn02q",
"mode": "lazy_then_bulk_reset",
"filter": "hash_algo",
"hash_algos": ["md5", "phpass"],
"status": "marking",
"deadline_at": "2026-02-14T09:30:00Z",
"total": 0,
"marked": 0,
"not_found": 0,
"passwords_deleted": 0,
"emailed": 0,
"created_at": "2026-01-15T09:30:00Z"
}
Hatalar
Her hata, kararlı bir code içeren bir application/problem+json gövdesidir.
| HTTP | code |
Ne zaman |
|---|---|---|
| 400 | malformed_request, unknown_field |
Idempotency-Key başlığı eksik veya hatalıysa, gövde geçerli JSON değilse ya da bilinmeyen bir alan içeriyorsa. |
| 401 | unauthenticated |
API anahtarı eksik, geçersiz veya iptal edilmiş. |
| 403 | insufficient_permissions |
Anahtarın user-credentials:write izni yok. |
| 409 | conflict |
Ortamda zaten tamamlanmamış 20 iş var. |
| 413 | payload_too_large |
Gövde 4 MiB'tan büyük. |
| 422 | validation_failed |
Bir alan eksik veya geçersiz; errors[].pointer bunu belirtir. |
| 422 | idempotency_key_reuse |
Idempotency-Key farklı bir istekle kullanılmış. |
| 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 -X POST https://api.eu.keenauth.com/v1/jobs/password-resets \
-H "Authorization: Bearer $KEENAUTH_SECRET_KEY" \
-H "Idempotency-Key: $(uuidgen)" \
-H "Content-Type: application/json" \
-d '{"mode": "lazy_then_bulk_reset", "hash_algos": ["md5", "phpass"], "deadline_days": 30}'
CLI: keenauth jobs password-resets create --mode lazy_then_bulk_reset --hash-algos md5,phpass --deadline-days 30 --yes