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