Dizini güncelle
PATCH /v1/directories/{directory_id} · izin directories:write
Dizinin adını ve provizyon ayarlarını JSON birleştirme yamasıyla (RFC 7396, Content-Type: application/merge-patch+json) günceller. If-Match zorunludur; güncel değer GET /v1/directories/{directory_id} yanıtının ETag başlığındadır. Hiçbir alan null kabul etmez. Değişiklik içermeyen yama yazma yapmaz ve sürümü korur. Yazma, değişen her ayarın eski ve yeni değeriyle directory.updated olarak denetlenir.
provisioning_mode, dizinde silinmemiş kullanıcı kaydı varken değişmez (409 conflict); bunun yerine dizini silip yeniden oluşturun.attribute_allowlistbütünüyle değişir. Listeden çıkarılan öznitelik dizinin kullanıcı kayıtlarından aynı işlemde silinir.mass_deprovision_guardkısmen yamalanabilir; vermediğiniz alt alanlar korunur.
İstek
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
directory_id |
path | evet | SCIM dizini kimliği (dir_…). |
If-Match |
header | evet | Dizinin güncel ETag değeri. |
name |
string | hayır | 1–64 karakter; denetim karakteri yok, başta ve sonda boşluk yok. |
provisioning_mode |
string | hayır | user_store (ortam kullanıcısı, org üyeliği ve grup rolleri de yazılır) ya da mirror (yalnız dizin kayıtları tutulur). |
attribute_allowlist |
array | hayır | Saklanan isteğe bağlı SCIM öznitelikleri, tekrarsız: title, usertype, phonenumbers ve kurumsal uzantının employeenumber, department, division, costcenter, organization, manager öznitelikleri (tam urn:ietf:params:scim:schemas:extension:enterprise:2.0:user: adlarıyla). |
unverified_domain_action |
string | hayır | E-posta alan adı doğrulanmamış kullanıcı: invite (davetli üyelik) ya da mirror_only (yalnız dizin kaydı). |
delete_action |
string | hayır | SCIM DELETE /Users: remove_membership ya da delete_user (dizinin yönettiği kullanıcıyı siler). |
on_delete_memberships |
string | hayır | Dizin silinince bu dizinden gelen üyeliklere ne olacağı: keep, suspend ya da remove. |
mass_deprovision_guard |
object | hayır | enabled (boolean), percent (5–50) ve absolute_min (10–1000): 5 dakika içinde iki eşiği de aşan pasifleştirmeler onaya bekletilir. |
send_welcome_email |
boolean | hayır | Yeni dizin kullanıcısına hesap etkinleştirme e-postası gönderilip gönderilmeyeceği. |
Yanıt
200 OK, dizin ve yeni ETag değeriyle.
{
"id": "dir_01j9xm2n4p6q8r0s2t4v6w8y0z",
"organization_id": "org_01j9xk3m7q8r2s4t6v8w0y2z4a",
"type": "scim",
"name": "Okta EU",
"state": "active",
"base_url": "https://acme.eu.keenauth.app/scim/v2/dir_01j9xm2n4p6q8r0s2t4v6w8y0z",
"created_at": "2026-10-19T09:31:00.123456Z",
"last_request_at": null,
"provisioning_mode": "user_store",
"attribute_allowlist": ["title", "urn:ietf:params:scim:schemas:extension:enterprise:2.0:user:department"],
"unverified_domain_action": "invite",
"delete_action": "remove_membership",
"on_delete_memberships": "keep",
"mass_deprovision_guard": {"enabled": true, "percent": 20, "absolute_min": 25},
"send_welcome_email": false
}
Hatalar
| HTTP | code | Ne zaman |
|---|---|---|
| 400 | malformed_request |
Gövde bir JSON nesnesi değil. |
| 400 | unknown_field |
Yamada yazılamayan bir alan var (örneğin state). |
| 404 | not_found |
Dizin bu ortamda yok. |
| 409 | conflict |
Dizinde kullanıcı kaydı varken provisioning_mode değişiyor ya da dizin siliniyor. |
| 412 | precondition_failed |
If-Match güncel sürümle eşleşmiyor. |
| 415 | unsupported_media_type |
Content-Type application/merge-patch+json değil. |
| 422 | validation_failed |
Bir alan null ya da geçersiz; hata alanı adlandırır (örneğin /mass_deprovision_guard/percent invalid). |
| 428 | precondition_required |
If-Match yok. |
| 401 | unauthenticated |
Kimlik bilgisi yok, geçersiz ya da iptal edilmiş. |
| 403 | insufficient_permissions |
Kimlik bilgisinde gerekli izin yok. |
| 429 | rate_limited |
Hız sınırı aşıldı; Retry-After süresinden sonra yeniden deneyin. |
| 503 | service_unavailable |
Dizin eşitleme geçici olarak kullanılamıyor ya da bu kurulumda yapılandırılmamış; Retry-After süresinden sonra yeniden deneyin. |
Örnek
curl -i -X PATCH "https://api.eu.keenauth.com/v1/directories/dir_01j9xm2n4p6q8r0s2t4v6w8y0z" \
-H "Authorization: Bearer $KEENAUTH_SECRET_KEY" \
-H 'If-Match: "3"' \
-H "Content-Type: application/merge-patch+json" \
-d '{"name":"Okta EU","mass_deprovision_guard":{"percent":20}}'