
# 組織のデフォルト設定を更新

`PATCH /v1/organization-defaults` · 権限 `organizations:write`

環境の組織のデフォルト設定を、JSON マージパッチ（`application/merge-patch+json`、RFC 7396）で更新します。`If-Match` は必須です。指定がない場合は `428`、古いバージョンの場合は `412` を返します。変更するフィールドのみを送信してください。変更がないパッチでは書き込みは行われず、バージョンも維持されます。

## リクエスト

| Field | Type | Required | Description |
|---|---|---|---|
| `If-Match` | header | yes | 最後に読み取ったデフォルト設定の `ETag`。指定がない場合は `428`、古い場合は `412`。 |
| `org_admin_role_id` | string | no | 組織の管理者に付与される環境ロール（`rol_…`）。組織管理のシステム権限を持つ必要があり（`422 permission_reserved`）、有効な管理者がいなくなる組織があってはなりません（`409 last_org_admin`）。`null` にすることはできません。 |
| `default_member_role_id` | string | no | 新しい組織メンバーに付与される環境ロール（`rol_…`）。`null` にすることはできません。 |
| `max_memberships_per_user` | integer | no | 1 人のユーザーが所属できる組織数、1〜1000（デフォルトは 200）。`null` にすることはできません。 |
| `invitation_ttl_days` | integer | no | 招待が有効な日数、1〜30（デフォルトは 7）。`null` にすることはできません。 |
| `org_self_service_deletion_grace_days` | integer | no | セルフサービスによる組織削除が実行されるまでの待機日数、0〜30（デフォルトは 14）。`null` にすることはできません。 |
| `on_org_delete_members` | string | no | `detach`（デフォルト）：メンバーは所属関係のみを失います。`delete_exclusive_provisioned`：JIT または SCIM でこの組織に参加し、他の組織に所属していないユーザーは削除対象としてキューに入ります。`null` にすることはできません。 |
| `org_custom_roles_enabled` | boolean | no | 組織の管理者が独自のロールを定義できるようにします（デフォルトは `false`）。組織ロールの書き込みには引き続き `org_custom_roles` プラン機能が必要です。`null` にすることはできません。 |
| `org_self_delete_enabled` | boolean | no | 組織の管理者が自分の組織を削除できるようにします（デフォルトは `false`）。`null` にすることはできません。 |

## 動作

- ロールのフィールドには、この環境のロールを指定する必要があります。組織ロールや存在しないロールを指定すると、`unknown_role` を伴う `422 validation_failed` が返されます。
- `on_org_delete_members` の変更は、変更後に削除された組織に適用されます。
- バリデーションエラーには、フィールドの JSON ポインタが含まれます。例：コード `out_of_range` を伴う `/invitation_ttl_days`。
- 変更は管理監査ログに `organization_defaults.updated` として記録されます。記録されるのは変更されたフィールド名のみで、値は記録されません。

## レスポンス

更新されたデフォルト設定と新しい `ETag` を含む `200 OK` を返します。

```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
}
```

## エラー

| HTTP | code | When |
|---|---|---|
| 400 | `unknown_field` | パッチに不明なフィールドまたは読み取り専用のフィールドが含まれているか、JSON オブジェクトではありません（`malformed_request`）。 |
| 403 | `insufficient_permissions` | 認証情報に必要な権限がありません。 |
| 409 | `last_org_admin` | 新しい管理者ロールによって、有効な管理者がいなくなる組織が生じます。 |
| 412 | `precondition_failed` | `If-Match` が現在のバージョンと一致しません。 |
| 415 | `unsupported_media_type` | コンテンツタイプが `application/merge-patch+json` ではありません。 |
| 422 | `validation_failed` | 値が無効です（ポインタがフィールドを示します）、またはフィールドが `null` に設定されています（`code: invalid`）。 |
| 428 | `precondition_required` | `If-Match` が指定されていません。 |

## 例

```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
```
