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.

İ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}}'