
# Eine Organisation aktualisieren

`PATCH /fapi/v1/organizations/{org_id}` · wird vom Anmeldehost der Umgebung aufgerufen

Ändert den Namen, den Slug oder die Markenfarbe einer Organisation (JSON Merge Patch, RFC 7396). Metadaten, die externe ID und das Mitgliederlimit können hier nicht geändert werden. Erfordert das Cookie `__Host-idp_session` des angemeldeten Benutzers; fehlt das Cookie, ist es abgelaufen oder widerrufen, wird `401 unauthenticated` zurückgegeben. Eine Erstanbieter-Anwendung auf einem anderen Ursprung kann stattdessen ihr Front-API-Zugriffstoken senden (`Authorization: DPoP <token>` mit einem DPoP-Proof; siehe [Front-API-Zugriffstoken](/docs/api/fapi/front-api-token)). Der Benutzer muss aktives Mitglied der Organisation sein und die Berechtigung `idp_org:update` besitzen. Ein Benutzer, der kein Mitglied ist, erhält `404 not_found`; ein Mitglied ohne die Berechtigung erhält `403 insufficient_permissions`.

Mit `@keenauth/js`: `await keenauth.organizations.update(orgId, { name: "Acme Inc" }, { expectedVersion: 4 })`.

## Anfrage

Header:

| Header | Pflicht | Beschreibung |
| --- | --- | --- |
| `Idp-Client` | ja | SDK-Kennung. |
| `Origin` | ja, mit dem Cookie | Muss genau `https://<Anmeldehost>` sein. |
| `Content-Type` | ja | `application/json` oder `application/merge-patch+json`. |
| `If-Match` | nein | `"<version>"` der Organisation, wie zuletzt gelesen; wurde sie seitdem geändert, wird `412 precondition_failed` zurückgegeben und nichts geändert. |

`org_id`: die Organisations-ID (`org_…`).

Body (mindestens ein Feld):

| Feld | Pflicht | Beschreibung |
| --- | --- | --- |
| `name` | nein | Neuer Anzeigename; darf nicht `null` sein. |
| `slug` | nein | Neuer Slug; darf nicht `null` sein. Der alte Slug bleibt 90 Tage reserviert, und ein Slug kann innerhalb von 30 Tagen einmal geändert werden. |
| `brand_color` | nein | `#RRGGBB`; `null` entfernt die Farbe. |

## Antwort

`200 OK` mit einem neuen `ETag`; der Body ist die Organisation (siehe [Eine Organisation abrufen](./get)).

## Fehler

| Status | Code | Wann |
| --- | --- | --- |
| 400 | `unknown_field` | Der Body enthält ein anderes Feld als `name`, `slug` und `brand_color`. |
| 401 | `unauthenticated` | Kein gültiges Sitzungs-Cookie. |
| 403 | `origin_not_allowed` | `Origin` fehlt oder ist falsch. |
| 403 | `insufficient_permissions` | Der Benutzer hat `idp_org:update` in der Organisation nicht. |
| 404 | `not_found` | Keine solche Organisation für diesen Benutzer; eine unbekannte, fehlerhafte oder fremde ID führt zur selben Antwort. |
| 409 | `slug_taken` | Eine andere Organisation verwendet den Slug. |
| 409 | `slug_reserved` | Der Slug ist in der 90-tägigen Reservierung einer anderen Organisation. |
| 409 | `slug_change_rate_limited` | Der Slug wurde in den letzten 30 Tagen bereits geändert. |
| 409 | `organization_disabled` | Die Organisation ist deaktiviert. |
| 409 | `organization_pending_deletion` | Die Organisation ist zur Löschung vorgesehen. |
| 412 | `precondition_failed` | `If-Match` nennt nicht die aktuelle Version, oder die Organisation wurde während der Verarbeitung der Anfrage geändert. |
| 422 | `validation_failed` | Ein Feld ist ungültig oder an einer Stelle `null`, wo das nicht erlaubt ist, oder der Patch ist leer (`empty_patch`). |
| 503 | `service_unavailable` | Vorübergehend nicht verfügbar; erneut versuchen nach `Retry-After`. |

## Beispiel

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

Die Antwort hat dieselbe Struktur wie [Eine Organisation abrufen](./get), mit `"version": 5`.
