> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.insurgateway.com/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.insurgateway.com/_mcp/server.

# Parameter Change API

InsurGateway'de parametre değeri kayıtlarına (`ParameterValue`) ait değerler **eklendiğinde**, **güncellendiğinde** veya **silindiğinde**, platformun kendi parametre havuzunu güncel tutabilmesi için gönderilen bildirim tipidir.

Hem **tekil** ekle/güncelle/sil işlemleri, hem de **toplu** güncellemeler (ör. TSB araç birlik listesi: marka `91` / tip `92` / model yılı `93` ve araç bedeli) bu bildirimi üretir. Payload **her zaman aynı yapıdadır**: `ChangeType`'a göre gruplanmış bir **dizi**; her grup `Values` içinde o tipteki değişen değerleri taşır. Tekil değişiklikte dizi tek grup / tek değer, toplu değişiklikte birden çok değer içerir.

> Ortak kurallar (header, zarf) için: [Platform Entegrasyon Gereksinimleri](../platform-entegrasyon-gereksinimleri).

---

## Endpoint

| Alan               | Değer               |
| ------------------ | ------------------- |
| HTTP Method        | `POST`              |
| Path               | `/PushNotification` |
| `NotificationType` | `8`                 |

---

## Örnek İstek

```bash
curl -X POST "https://platform.ornek.com.tr/insurgw/PushNotification" \
  -H "Content-Type: application/json" \
  -H "x-api-key: 9f3c1e8a-2b4d-1234-5678-deadbeefcafe" \
  -d '{
    "ReferanceNo": "10025_20260609153012345a1b2c_0_0",
    "SubReferanceNo": "a1b2c3d4-e5f6-7890abcdef1234567890",
    "RequestKeyValueSet": null,
    "RequestObject": {
      "NotificationType": 8,
      "Payload": "[{\"ChangeType\":\"updated\",\"Values\":[{\"ParameterId\":92,\"ParameterValue\":\"1\",\"ParameterName\":\"Otomobil\",\"Status\":true,\"Crossed\":false,\"Dependents\":[{\"ParameterId\":91,\"ParameterValue\":\"34\"}],\"AdditionalDetails\":[]},{\"ParameterId\":93,\"ParameterValue\":\"34521-2020\",\"ParameterName\":\"2020\",\"Status\":true,\"Crossed\":false,\"Dependents\":[{\"ParameterId\":92,\"ParameterValue\":\"1\"}],\"AdditionalDetails\":[{\"KeyId\":22,\"KeyName\":\"Araç Bedeli\",\"KeyValue\":\"150000\"}]}]}]"
    }
  }'
```

---

## Parse Edilmiş Payload

`RequestObject.Payload` serialize edilmiş bir JSON string'tir; ikinci parse sonrası `ChangeType`'a göre gruplanmış bir diziye ulaşılır:

```json
[
  {
    "ChangeType": "updated",
    "Values": [
      {
        "ParameterId": 92,
        "ParameterValue": "1",
        "ParameterName": "Otomobil",
        "Status": true,
        "Crossed": false,
        "Dependents": [
          { "ParameterId": 91, "ParameterValue": "34" }
        ],
        "AdditionalDetails": []
      },
      {
        "ParameterId": 93,
        "ParameterValue": "34521-2020",
        "ParameterName": "2020",
        "Status": true,
        "Crossed": false,
        "Dependents": [
          { "ParameterId": 92, "ParameterValue": "1" }
        ],
        "AdditionalDetails": [
          { "KeyId": 22, "KeyName": "Araç Bedeli", "KeyValue": "150000" }
        ]
      }
    ]
  }
]
```

**Kök (dizi):**

| Alan            | Tip       | Açıklama                                                    |
| --------------- | --------- | ----------------------------------------------------------- |
| `[]`            | object\[] | `ChangeType`'a göre gruplanmış dizi. En az bir grup içerir. |
| `[].ChangeType` | string    | Olay türü: `added`, `updated` veya `deleted`.               |
| `[].Values`     | object\[] | O gruptaki değişen parametre değerleri.                     |

**`Values` öğesi:**

| Alan                           | Tip       | Açıklama                                                                                      |
| ------------------------------ | --------- | --------------------------------------------------------------------------------------------- |
| `ParameterId`                  | int       | Değerin bağlı olduğu parametrenin Id'si (91 marka, 92 tip, 93 model yılı).                    |
| `ParameterValue`               | string    | Parametre değerinin kodu.                                                                     |
| `ParameterName`                | string    | Değişen değerin kendi adı.                                                                    |
| `Status`                       | bool      | Kaydın aktiflik durumu. `deleted` durumunda anlamlı değildir.                                 |
| `Crossed`                      | bool      | Kaydın `Crossed` alanı.                                                                       |
| `Dependents`                   | object\[] | Değerin **tüm** bağımlılıkları (tek bağımlılık değişse bile tamamı gönderilir). Boş olabilir. |
| `Dependents[].ParameterId`     | int       | Bağımlı olunan parametrenin Id'si.                                                            |
| `Dependents[].ParameterValue`  | string    | Bağımlı olunan değerin kodu.                                                                  |
| `AdditionalDetails`            | object\[] | Değerin **tüm** ek key/value detayları (ör. araç bedeli). Boş olabilir.                       |
| `AdditionalDetails[].KeyId`    | int       | Detay key Id (22 = Araç Bedeli).                                                              |
| `AdditionalDetails[].KeyName`  | string    | Detay key adı.                                                                                |
| `AdditionalDetails[].KeyValue` | string    | Detay key değeri.                                                                             |

> `ChangeType="deleted"` olduğunda `Values`, silinen kaydın son hâliyle gönderilir. Eşsiz kimlik `(ParameterId, ParameterValue)` ikilisidir. Araç bedeli (`KeyId` 22) **model yılı (93)** değerinde bulunur; tip (92) yalnızca marka (91) bağımlılığı taşır.

---

## Beklenen Cevap

**Başarı:**

```http
HTTP/1.1 200 OK
Content-Type: application/json

{ "ResultStatus": { "Status": "Success", "Explanation": null }, "Result": null }
```

**Hata (retry tetikler):**

```http
HTTP/1.1 200 OK
Content-Type: application/json

{ "ResultStatus": { "Status": "Error", "Explanation": "Parametre değişikliği işlenemedi." }, "Result": null }
```

---

## Retry

| Parametre                       | Değer                                    |
| ------------------------------- | ---------------------------------------- |
| Maksimum retry (orijinal hariç) | **5**                                    |
| Toplam maksimum deneme          | **6**                                    |
| Bekleme süreleri                | 3 sn → 10 sn → 1 dk → 1 saat (≥4. retry) |