一括パスワードリセットジョブを作成する

POST /v1/jobs/password-resets · 権限 user-credentials:write

漏えいの疑いがあるときや、弱いインポート済みハッシュ形式からユーザーを移行するときなどに、1 つの非同期ジョブで多数のユーザーに新しいパスワードの設定を強制します。レスポンスはジョブをすぐに返し、ユーザーのフラグ付けはバックグラウンドで行われます。ジョブの進行は 一括パスワードリセットジョブを取得する で確認してください。単一のユーザーには ユーザーにパスワードのリセットを強制する を使用してください。

ユーザーは次の 2 つの方法のいずれかで選択します(両方は指定できません):

connection_id フィルターはまだ利用できません。これを送信したリクエストは 422 validation_failed(/connection_id に not_supported)で拒否されます。

mode を選択します:

Idempotency-Key は必須です。同じ認証情報、キー、リクエストであれば、同じジョブが返されます(Idempotent-Replayed: true 付き)。同じキーで異なるリクエストを送ると、422 idempotency_key_reuse で拒否されます。環境で未完了のジョブは最大 20 件です。lazy ジョブは期限まで未完了のままです。ジョブの作成は管理の監査ログ(password_reset_job.created)に記録され、password_reset.scheduled イベントを発行します。

リクエスト

フィールド 型 必須 説明
mode 文字列 はい on_login または lazy_then_bulk_reset。
user_ids 文字列の配列 どちらか一方 1〜100,000 件のユーザー ID(usr_…)。
hash_algos 文字列の配列 どちらか一方 保存されているハッシュアルゴリズム: 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 整数 いいえ lazy_then_bulk_reset のみ: 1〜365、既定値は 30。

レスポンス

ジョブを含む 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"
}

エラー

すべてのエラーは、安定した code を含む application/problem+json ボディです。

HTTP code 発生条件
400 malformed_request, unknown_field Idempotency-Key ヘッダーがないか形式が不正、ボディが有効な JSON ではない、または未知のフィールドがあります。
401 unauthenticated API キーがないか、無効か、失効しています。
403 insufficient_permissions キーに user-credentials:write 権限がありません。
409 conflict この環境にはすでに 20 件の未完了ジョブがあります。
413 payload_too_large ボディが 4 MiB を超えています。
422 validation_failed フィールドがないか無効です。errors[].pointer が該当するフィールドを示します。
422 idempotency_key_reuse Idempotency-Key が別のリクエストで使用されています。
429 rate_limited レート制限を超えました。Retry-After に従ってください。
503 service_unavailable 依存先のサービスが一時的に利用できません。後で再試行してください。

例

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