Toplu kullanıcı silme işi oluştur
POST /v1/jobs/user-deletions · izinler users:delete ve jobs:write
Tek bir asenkron işte 10.000'e kadar kullanıcıyı siler. Her kullanıcı DELETE /v1/users/{user_id} ile aynı silme yolundan geçer: kullanıcı pending_deletion olur ve kalıcı silme ardından yürür; silme kaydı isteğin toplu işten geldiğini not eder. Silme geri alınamaz; bu yüzden uç iki adımda çalışır:
- İsteği
"dry_run": trueile gönderin. Hiçbir şey yazılmaz; yanıttakimatched_count, isteğin sileceği kullanıcı sayısıdır. - Aynı seçimi
"confirm_count"bu sayıya eşit olarak gönderin. Arada eşleşen kullanıcı sayısı değiştiyse istek409 confirmation_mismatchile reddedilir ve iş oluşturulmaz; kuru çalıştırmayı yineleyin.
Kullanıcılar iki yoldan biriyle seçilir: user_ids (tekrarlanan kimlik bir kez sayılır; sonuçlar ilk görülme sırasını korur) ya da organization_id (iş oluşturulduğu andaki etkin ve askıdaki org üyeleri). Bir kullanıcıyla eşleşmeyen kimlikler işte kalır ve not_found olarak raporlanır.
Bir ortamda aynı anda tek bir toplu kullanıcı silme işi koşar; biri koşarken yeni iş 429 rate_limited ve Retry-After ile reddedilir. İş oluşturulduğunda ve tamamlandığında yönetim audit'ine yazılır; silinen her kullanıcının da kendi silme audit kaydı vardır. İşi Toplu kullanıcı silme işini getir ile izleyin, kullanıcı başına sonuçları Toplu kullanıcı silme sonuçlarını listele ile okuyun.
İstek
Başlıklar: Idempotency-Key (zorunlu, 16–64 karakter A-Z a-z 0-9 _ -). Aynı anahtar ve aynı gövdeyle yinelenen istek ilk işi döner; aynı anahtar başka gövdeyle 422 idempotency_key_reuse döner. Gövde en çok 512 KiB olabilir.
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
user_ids |
dizi (string) | ikisinden biri | usr_ önekli kullanıcı kimlikleri, 1–10.000. |
organization_id |
string | ikisinden biri | org_ önekli org kimliği; en çok 10.000 üye. |
dry_run |
boolean | hayır | true: yalnız kullanıcılar sayılır, hiçbir şey yazılmaz. Varsayılan false. |
confirm_count |
integer | dry_run değilse evet |
Kuru çalıştırmanın matched_count değeri (0–10.000). |
Yanıt
Kuru çalıştırma: 200 OK; {"dry_run": true, "matched_count": n}.
İş oluşturuldu: 202 Accepted; sayı ve iş.
{
"dry_run": false,
"matched_count": 2,
"job": {
"id": "job_01h455vb4pex5vsknk084sn02q",
"status": "running",
"filter": "user_ids",
"total": 3,
"succeeded": 0,
"not_found": 0,
"failed": 0,
"pending": 3,
"created_at": "2026-01-15T09:30:00Z"
}
}
Hatalar
Her hata kararlı bir code taşıyan application/problem+json gövdesidir.
| HTTP | code |
Ne zaman |
|---|---|---|
| 400 | malformed_request, unknown_field |
Idempotency-Key başlığı yok ya da geçersiz, veya gövde geçerli JSON değil ya da bilinmeyen alan taşıyor. |
| 401 | unauthenticated |
API anahtarı yok, geçersiz ya da iptal edilmiş. |
| 403 | insufficient_permissions |
Anahtarda users:delete ya da jobs:write yok. |
| 409 | confirmation_mismatch |
confirm_count eşleşen kullanıcıların güncel sayısı değil. |
| 409 | idempotency_in_progress |
Aynı Idempotency-Key ile gelen istek hâlâ işleniyor. |
| 413 | payload_too_large |
Gövde 512 KiB'tan büyük. |
| 422 | validation_failed |
user_ids ile organization_id'nin ikisi birden ya da hiçbiri, biçimsiz kimlik, 10.000'den fazla kullanıcı (too_many, too_many_users), üyesi olmayan org (no_users) ya da eksik confirm_count (required). |
| 422 | idempotency_key_reuse |
Idempotency-Key başka bir gövdeyle kullanılmış. |
| 429 | rate_limited |
Başka bir toplu kullanıcı silme işi koşuyor ya da hız sınırı aşıldı; Retry-After'a uyun. |
| 503 | service_unavailable |
Bir bağımlılık geçici olarak kullanılamıyor; sonra yeniden deneyin. |
Örnek
curl -X POST https://api.eu.keenauth.com/v1/jobs/user-deletions \
-H "Authorization: Bearer $KEENAUTH_SECRET_KEY" \
-H "Idempotency-Key: $(uuidgen)" \
-H "Content-Type: application/json" \
-d '{"organization_id": "org_01h455vb4pex5vsknk084sn02q", "dry_run": true}'
CLI: keenauth jobs user-deletions create --organization-id org_01h455vb4pex5vsknk084sn02q --dry-run --yes, ardından keenauth jobs user-deletions create --organization-id org_01h455vb4pex5vsknk084sn02q --confirm-count 42 --yes. Uzun kimlik listeleri dosyayla verilir: --data @users.json.