
# Kuruluş varsayılanlarını güncelleme

`PATCH /v1/organization-defaults` · izin `organizations:write`

Ortamın kuruluş varsayılanlarını JSON birleştirme yaması (`application/merge-patch+json`, RFC 7396) ile günceller. `If-Match` zorunludur: eksikse `428`, güncel olmayan bir sürüm gönderilirse `412` döner. Yalnızca değiştirdiğiniz alanları gönderin. Hiçbir değeri değiştirmeyen bir yama hiçbir şey yazmaz ve sürümü korur.

## İstek

| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
| `If-Match` | başlık | evet | Varsayılanların son okunduğu andaki `ETag` değeri. Eksikse: `428`; güncel değilse: `412`. |
| `org_admin_role_id` | metin | hayır | Kuruluş yöneticilerinin aldığı ortam rolü (`rol_…`). Kuruluş yönetim sistemi izinlerine sahip olmalıdır (`422 permission_reserved`) ve hiçbir kuruluş etkin bir yöneticisiz kalmamalıdır (`409 last_org_admin`). `null` olamaz. |
| `default_member_role_id` | metin | hayır | Yeni kuruluş üyelerinin aldığı ortam rolü (`rol_…`). `null` olamaz. |
| `max_memberships_per_user` | tam sayı | hayır | Bir kullanıcının üyesi olabileceği kuruluş sayısı, 1-1000 (varsayılan 200). `null` olamaz. |
| `invitation_ttl_days` | tam sayı | hayır | Bir davetin geçerli kaldığı gün sayısı, 1-30 (varsayılan 7). `null` olamaz. |
| `org_self_service_deletion_grace_days` | tam sayı | hayır | Hizmet içi kuruluş silme işleminin çalışmadan önce beklediği gün sayısı, 0-30 (varsayılan 14). `null` olamaz. |
| `on_org_delete_members` | metin | hayır | `detach` (varsayılan): üyeler yalnızca üyeliklerini kaybeder. `delete_exclusive_provisioned`: bu kuruluşa JIT veya SCIM ile gelen ve başka hiçbir kuruluşa ait olmayan kullanıcılar silinmek üzere sıraya alınır. `null` olamaz. |
| `org_custom_roles_enabled` | mantıksal değer | hayır | Kuruluş yöneticilerinin kendi rollerini tanımlamasına izin verir (varsayılan `false`). Kuruluş rollerini yazmak için hâlâ `org_custom_roles` plan özelliği gerekir. `null` olamaz. |
| `org_self_delete_enabled` | mantıksal değer | hayır | Kuruluş yöneticilerinin kendi kuruluşlarını silmesine izin verir (varsayılan `false`). `null` olamaz. |

## Davranış

- Rol alanları bu ortamdaki bir rolün adını içermelidir; kuruluş rolü veya bilinmeyen bir rol `422 validation_failed` hatası ile `unknown_role` kodunu döndürür.
- `on_org_delete_members` değişikliği, değişiklikten sonra silinen kuruluşlar için geçerli olur.
- Doğrulama hataları, alanın JSON işaretçisini taşır; örneğin `/invitation_ttl_days` alanı `out_of_range` koduyla döner.
- Değişiklik, yönetim denetim günlüğüne `organization_defaults.updated` olarak, değişen alanların değerleri değil adları yazılarak kaydedilir.

## Yanıt

`200 OK` ile güncellenmiş varsayılanlar ve yeni `ETag` döner.

```json
{
  "org_admin_role_id": "rol_01j9xs0a2b4c6d8e0f2g4h6j8k",
  "default_member_role_id": "rol_01j9xs0a2b4c6d8e0f2g4h6j8m",
  "max_memberships_per_user": 200,
  "invitation_ttl_days": 9,
  "org_self_service_deletion_grace_days": 14,
  "on_org_delete_members": "delete_exclusive_provisioned",
  "org_custom_roles_enabled": false,
  "org_self_delete_enabled": false,
  "updated_at": "2026-11-03T10:00:00.123456Z",
  "version": 2
}
```

## Hatalar

| HTTP | code | Ne zaman |
|---|---|---|
| 400 | `unknown_field` | Yama, bilinmeyen veya salt okunur bir alan içeriyor ya da bir JSON nesnesi değil (`malformed_request`). |
| 403 | `insufficient_permissions` | Kimlik bilgisi gerekli izne sahip değil. |
| 409 | `last_org_admin` | Yeni yönetici rolü bir kuruluşu etkin yöneticisiz bırakır. |
| 412 | `precondition_failed` | `If-Match` değeri mevcut sürümle eşleşmiyor. |
| 415 | `unsupported_media_type` | İçerik türü `application/merge-patch+json` değil. |
| 422 | `validation_failed` | Bir değer geçersiz (işaretçi alanı belirtir) ya da bir alan `null` olarak ayarlanmış (`code: invalid`). |
| 428 | `precondition_required` | `If-Match` eksik. |

## Örnek

```bash
curl -i -X PATCH "https://api.eu.keenauth.com/v1/organization-defaults" \
  -H "Authorization: Bearer $KEENAUTH_SECRET_KEY" \
  -H "Content-Type: application/merge-patch+json" \
  -H 'If-Match: "1"' \
  -d '{"on_org_delete_members":"delete_exclusive_provisioned","invitation_ttl_days":9}'
```

```bash
keenauth organization-defaults update --if-match '"1"' \
  --on-org-delete-members delete_exclusive_provisioned --invitation-ttl-days 9
```
