
# 組織を更新

`PATCH /fapi/v1/organizations/{org_id}` · 環境のサインインホストから呼び出します

組織の名前、スラッグ、またはブランドカラーを変更します(JSON マージパッチ、RFC 7396)。メタデータ、外部 ID、メンバー数の上限はここでは変更できません。認証済みユーザーの `__Host-idp_session` Cookie が必要です。Cookie が存在しない、期限切れ、または取り消されている場合は、`401 unauthenticated` を返します。別のオリジンにある自社アプリは、代わりにフロント API アクセストークン(DPoP 証明付きの `Authorization: DPoP <token>`。[フロント API アクセストークン](/docs/api/fapi/front-api-token)を参照)を送信することもできます。ユーザーは、`idp_org:update` 権限を持つ組織のアクティブなメンバーである必要があります。メンバーでないユーザーには `404 not_found` を返し、権限のないメンバーには `403 insufficient_permissions` を返します。

`@keenauth/js` を使用する場合: `await keenauth.organizations.update(orgId, { name: "Acme Inc" }, { expectedVersion: 4 })`。

## リクエスト

ヘッダー:

| ヘッダー | 必須 | 説明 |
| --- | --- | --- |
| `Idp-Client` | はい | SDK 識別子。 |
| `Origin` | はい(Cookie を使用する場合) | `https://<sign-in host>` と完全に一致する必要があります。 |
| `Content-Type` | はい | `application/json` または `application/merge-patch+json`。 |
| `If-Match` | いいえ | 最後に読み取った組織の `"<version>"`。その後組織が変更されている場合は、`412 precondition_failed` を返し、何も変更されません。 |

`org_id`: 組織の識別子(`org_…`)。

本文(少なくとも 1 つのフィールド):

| フィールド | 必須 | 説明 |
| --- | --- | --- |
| `name` | いいえ | 新しい表示名。`null` にはできません。 |
| `slug` | いいえ | 新しいスラッグ。`null` にはできません。旧スラッグは 90 日間予約されたままになり、スラッグは 30 日に 1 回だけ変更できます。 |
| `brand_color` | いいえ | `#RRGGBB`。`null` を指定するとクリアされます。 |

## レスポンス

`200 OK` と新しい `ETag` を返します。本文は組織です([組織を取得](./get)を参照)。

## エラー

| ステータス | コード | 発生条件 |
| --- | --- | --- |
| 400 | `unknown_field` | 本文に `name`、`slug`、`brand_color` 以外のフィールドが含まれています。 |
| 401 | `unauthenticated` | 有効なセッション Cookie がありません。 |
| 403 | `origin_not_allowed` | `Origin` がないか、不正です。 |
| 403 | `insufficient_permissions` | ユーザーに、その組織での `idp_org:update` 権限がありません。 |
| 404 | `not_found` | このユーザーに対して該当する組織がありません。存在しない、形式が不正、または他の組織の識別子も同じ応答になります。 |
| 409 | `slug_taken` | 別の組織がそのスラッグを使用しています。 |
| 409 | `slug_reserved` | そのスラッグは、別の組織の 90 日間の予約中です。 |
| 409 | `slug_change_rate_limited` | スラッグは過去 30 日以内にすでに変更されています。 |
| 409 | `organization_disabled` | 組織は無効になっています。 |
| 409 | `organization_pending_deletion` | 組織は削除が予定されています。 |
| 412 | `precondition_failed` | `If-Match` が現在のバージョンを指定していないか、リクエストの処理中に組織が変更されました。 |
| 422 | `validation_failed` | フィールドが無効か、許可されていない箇所に `null` が指定されているか、パッチが空です(`empty_patch`)。 |
| 503 | `service_unavailable` | 一時的に利用できません。`Retry-After` の後に再試行してください。 |

## 例

```bash
curl -X PATCH https://example.keenauth.app/fapi/v1/organizations/org_01jbz6x8kq3m2n4p5r6s7t8v9a \
  -H "Idp-Client: my-app/1.0.0 (node/22.0.0)" \
  -H "Origin: https://example.keenauth.app" \
  -H "Content-Type: application/merge-patch+json" \
  -H 'If-Match: "4"' \
  -b cookies.txt \
  -d '{"name": "Acme Inc", "brand_color": null}'
```

レスポンスの形式は [組織を取得](./get) と同じで、`"version": 5` となります。
