SCIM provisioning simülasyonu

POST /v1/directories/{directory_id}:simulate · izin directories:write · yalnızca geliştirme ve staging ortamları

Dizinin gerçek SCIM uç noktasına karşı tek bir SCIM simülatör senaryosu çalıştırır. Yalnızca bu çalıştırma için KeenAuth gerçek bir SCIM belirteci üretir, bunu kullanır ve ardından iptal eder. Belirteç denetimleri, hız sınırları, toplu deprovision devre kesicisi ve provisioning günlüğü, kimlik sağlayıcınız için olduğu gibi çalışır. Kullanıcılar, 5 grupta yer alan example.test alan adındaki 25 kişiden oluşan sabit ve kurgusal bir kümedir. Gerçek kişisel veri içermezler.

Simülatör bir geliştirme aracıdır ve dizini değiştirir. Yazdığı kullanıcılar ve gruplar, provision edilen diğer kayıtlar gibi dizinde kalır. Test için oluşturduğunuz bir dizin kullanın.

Senaryo Ne yapar
seed 25 kullanıcıyı ve 5 grubu üyelikleriyle birlikte oluşturur. Bunların zaten bulunduğu bir dizinde ilk kullanıcı SCIM 409 alır ve çalıştırma failed olur.
bulk_deactivate Kullanıcıların %60'ı için (25 içinden 15'i) active=false gönderir. Devre kesici yalnızca dizinin mass_deprovision_guard.absolute_min değeri 15 veya daha düşükse devreye girer. Varsayılan değer olan 25 ile devreye girmez.
group_churn Bir kullanıcıyı bir gruptan başka bir gruba taşır.
attribute_update Her kullanıcının görünen adını ve soyadını değiştirir.
conflict_email Mevcut bir userName ile kullanıcı oluşturur ve SCIM 409 uniqueness yanıtı bekler.

Dizin boşsa seed dışındaki her senaryo önce seed çalıştırır.

Simülasyon belirteci hiçbir yerde listelenmez ve 2 geçerli belirteç sayısına dahil edilmez. Bu belirteci kullanmak, kimlik sağlayıcınızın belirteç rotasyonunu başlatmaz. Dizin başına aynı anda yalnızca bir çalıştırma devam edebilir. Çalıştırma directory.simulation_started ve directory.simulation_finished olarak denetlenir.

İstek

Alan Tür Zorunlu Açıklama
directory_id path evet SCIM dizin kimliği (dir_…).
scenario body, string evet seed, bulk_deactivate, group_churn, attribute_update veya conflict_email.
Idempotency-Key header hayır Yeniden denenen istek için ilk yanıtı tekrar oynatır; senaryo yeniden çalışmaz.
{"scenario": "bulk_deactivate"}

Yanıt

200 OK ile çalıştırmanın sonucu döner. SCIM hata yanıtı isteği başarısız kılmaz. Çalıştırmayı failed yapar, failure alanını doldurur ve sayıları hataya kadar başarılı olanlar olarak bırakır. Sonuç yalnızca sayıları ve durumları içerir: kullanıcı, SCIM kimliği veya belirteç bulunmaz.

{
  "directory_id": "dir_01j9xm2n4p6q8r0s2t4v6w8y0z",
  "scenario": "bulk_deactivate",
  "status": "completed",
  "users_created": 0,
  "groups_created": 0,
  "users_updated": 0,
  "groups_updated": 0,
  "users_deactivated": 15,
  "conflicts": 0,
  "circuit_breaker_tripped": true,
  "deprovision_hold": {"id": "0191e9b2-6f3a-7c4d-8e5f-0a1b2c3d4e5f", "pending_count": 6},
  "failure": null,
  "started_at": "2026-10-28T09:31:00.123456Z",
  "completed_at": "2026-10-28T09:31:01.654321Z"
}
Alan Açıklama
status completed, ya da uç nokta bir SCIM hatası döndürdüğünde, çalıştırma çok uzun sürdüğünde veya bir yanıt senaryonun beklediği gibi olmadığında failed.
users_updated Deaktivasyonlar dışındaki kullanıcı PATCH istekleri.
users_deactivated Uç nokta tarafından kabul edilen active=false PATCH istekleri; tutulanlar dahil.
conflicts Beklenen 409 uniqueness yanıtları (conflict_email).
circuit_breaker_tripped Çalıştırma sırasında bir toplu deprovision bekletmesi açıldı.
deprovision_hold Çalıştırmadan sonra dizinde açık olan bekletme veya null. Onaylamak ya da reddetmek için deprovision-holds uç noktalarını kullanın.
failure completed ise null. Aksi halde reason (scim_error, timeout veya unexpected_response) ve scim_error için ayrıca scim_status (HTTP durumu) ile scim_type (SCIM scimType değeri veya null).

Hatalar

HTTP code Ne zaman
400 unknown_field Gövde, scenario dışında bir alan içeriyor.
403 test_feature_not_in_production Ortam bir üretim ortamı.
404 not_found Dizin bu ortamda mevcut değil.
409 conflict Bu dizin için başka bir çalıştırma devam ediyor ya da dizin devre dışı bırakılmış veya silinmek üzere.
422 validation_failed scenario eksik veya bilinmiyor (/scenario).
422 idempotency_key_reuse Idempotency-Key, farklı bir istek için kullanıldı.
401 unauthenticated Kimlik bilgisi eksik, geçersiz veya iptal edilmiş.
403 insufficient_permissions Kimlik bilgisi gerekli izne sahip değil.
429 rate_limited Hız sınırı aşıldı; Retry-After süresinden sonra yeniden deneyin.
503 service_unavailable Dizin senkronizasyonu veya simülatör geçici olarak kullanılamıyor ya da bu dağıtımda yapılandırılmamış; Retry-After süresinden sonra yeniden deneyin.

Örnek

curl -X POST "https://api.eu.keenauth.com/v1/directories/dir_01j9xm2n4p6q8r0s2t4v6w8y0z:simulate" \
  -H "Authorization: Bearer $KEENAUTH_SECRET_KEY" \
  -H "Content-Type: application/json" \
  -d '{"scenario": "seed"}'
keenauth directories simulate dir_01j9xm2n4p6q8r0s2t4v6w8y0z --scenario bulk_deactivate