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:

  1. İsteği "dry_run": true ile gönderin. Hiçbir şey yazılmaz; yanıttaki matched_count, isteğin sileceği kullanıcı sayısıdır.
  2. Aynı seçimi "confirm_count" bu sayıya eşit olarak gönderin. Arada eşleşen kullanıcı sayısı değiştiyse istek 409 confirmation_mismatch ile 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.