
# Kuruluşu güncelleme

`PATCH /fapi/v1/organizations/{org_id}` · ortamın giriş yap ana makinesinden çağrılır

Bir kuruluşun adını, slug değerini veya marka rengini değiştirir (JSON birleştirme yaması, RFC 7396). Meta veriler, harici kimlik ve üyelik sınırı burada değiştirilemez. Kimliği doğrulanmış kullanıcının `__Host-idp_session` çerezi gerekir; çerez eksikse, süresi dolmuşsa veya iptal edilmişse `401 unauthenticated` döner. Farklı bir kaynaktaki birinci taraf bir uygulama bunun yerine Front API erişim belirtecini gönderebilir (DPoP kanıtıyla birlikte `Authorization: DPoP <token>`; bkz. [Front API erişim belirteci](/docs/api/fapi/front-api-token)). Kullanıcı, kuruluşun aktif bir üyesi olmalı ve `idp_org:update` iznine sahip olmalıdır. Üye olmayan bir kullanıcı `404 not_found` alır; izni olmayan bir üye `403 insufficient_permissions` alır.

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

## İstek

Başlıklar:

| Başlık | Zorunlu | Açıklama |
| --- | --- | --- |
| `Idp-Client` | evet | SDK tanımlayıcısı. |
| `Origin` | evet, çerezle birlikte | Tam olarak `https://<sign-in host>` olmalıdır. |
| `Content-Type` | evet | `application/json` veya `application/merge-patch+json`. |
| `If-Match` | hayır | Kuruluşun son okunduğu `"<version>"` değeri; o zamandan beri değiştiyse `412 precondition_failed` döner ve hiçbir şey değişmez. |

`org_id`: kuruluş tanımlayıcısı (`org_…`).

Gövde (en az bir alan):

| Alan | Zorunlu | Açıklama |
| --- | --- | --- |
| `name` | hayır | Yeni görünen ad; `null` olamaz. |
| `slug` | hayır | Yeni slug; `null` olamaz. Eski slug 90 gün boyunca ayrılmış kalır ve bir slug 30 günde bir kez değiştirilebilir. |
| `brand_color` | hayır | `#RRGGBB`; `null` gönderildiğinde temizlenir. |

## Yanıt

Yeni bir `ETag` ile `200 OK`; gövde kuruluştur (bkz. [Kuruluşu alma](./get)).

## Hatalar

| Durum | Kod | Ne zaman |
| --- | --- | --- |
| 400 | `unknown_field` | Gövdede `name`, `slug` ve `brand_color` dışında bir alan var. |
| 401 | `unauthenticated` | Geçerli bir oturum çerezi yok. |
| 403 | `origin_not_allowed` | `Origin` eksik veya yanlış. |
| 403 | `insufficient_permissions` | Kullanıcının kuruluşta `idp_org:update` izni yok. |
| 404 | `not_found` | Bu kullanıcı için böyle bir kuruluş yok; bilinmeyen, hatalı biçimli veya başka bir tanımlayıcı aynı yanıtı verir. |
| 409 | `slug_taken` | Başka bir kuruluş bu slug'ı kullanıyor. |
| 409 | `slug_reserved` | Slug, başka bir kuruluşun 90 günlük ayrılmasında. |
| 409 | `slug_change_rate_limited` | Slug son 30 günde zaten değiştirilmiş. |
| 409 | `organization_disabled` | Kuruluş devre dışı. |
| 409 | `organization_pending_deletion` | Kuruluş silinmek üzere planlanmış. |
| 412 | `precondition_failed` | `If-Match` geçerli sürümü belirtmiyor veya istek işlenirken kuruluş değişti. |
| 422 | `validation_failed` | Bir alan geçersiz ya da izin verilmeyen yerde `null`, veya yama boş (`empty_patch`). |
| 503 | `service_unavailable` | Geçici olarak kullanılamıyor; `Retry-After` süresinden sonra yeniden deneyin. |

## Örnek

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

Yanıt, [Kuruluşu alma](./get) ile aynı yapıdadır; `"version": 5` değeriyle.
