> ## Documentation Index
> Fetch the complete documentation index at: https://apidocs.noyax.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Kısmi güncelleme

> PUT ile PATCH arasındaki fark ve JSON Merge Patch kuralları.

Bir kaydın tek bir alanını değiştirmek için tüm gövdeyi göndermek zorunda değilsiniz. Her güncellenebilir kaynağın hem `PUT` hem `PATCH` endpoint'i vardır.

|                        | `PUT`                              | `PATCH`                        |
| ---------------------- | ---------------------------------- | ------------------------------ |
| Gönderilmeyen alan     | **Temizlenir**                     | **Değişmez**                   |
| `null` gönderilen alan | Temizlenir                         | Temizlenir                     |
| Kullanım               | Kaydın tamamını siz yönetiyorsanız | Tek tek alan değiştiriyorsanız |

`PATCH` gövdesi [JSON Merge Patch (RFC 7386)](https://datatracker.ietf.org/doc/html/rfc7386) kuralına göre kaydın mevcut haliyle birleştirilir, sonra **PUT ile aynı doğrulamalardan** geçer.

## Örnek

Bir ürünün yalnızca açıklamasını değiştirmek için:

```json PATCH /api/v1/products/{productId} theme={null}
{
  "Description": "Yeni açıklama"
}
```

Ürünün kodu, tanımı, birimi, KDV oranı ve diğer bütün alanları olduğu gibi kalır. Aynı isteği `PUT` ile gönderseydiniz gönderilmeyen alanların hepsi temizlenirdi.

Bir alanı temizlemek için `null` gönderin:

```json PATCH /api/v1/products/{productId} theme={null}
{
  "Gtip": null,
  "VatRateId": null
}
```

## Dikkat edilecekler

<Warning>
  Doğrulama, birleştirme **sonrasındaki** kayıt üzerinde çalışır. Zorunlu bir alanı `null` yaparsanız (`"Code": null` gibi) istek, o kaynağın zorunlu alan hatasıyla reddedilir.
</Warning>

* Alan adları büyük/küçük harfe duyarsız eşleştirilir; `description` ile `Description` aynı alandır.
* Bir alanın varsayılanı varsa (ör. ürün `ProductType` için `4`), o alana `null` göndermek alanı varsayılanına döndürür.
* Listeler birleştirilmez, olduğu gibi değiştirilir.
* Gövde bir JSON nesnesi değilse istek `0002` ile reddedilir.
* Kayıt okunup birleştirildikten sonra yazılır; aynı kaydı aynı anda değiştiren iki istekte son yazan kazanır.
