> 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.

# ParameterChange Notification

InsurGateway'de bir parametre değeri kaydına (`ParameterValue`) ait bir değer **eklendiğinde**, **güncellendiğinde** veya **silindiğinde**, platformun kendi parametre havuzunu güncel tutabilmesi için gönderilen bildirim tipidir. Bildirim, değişen kaydın bilgisini taşır; platformun değişiklik sonrası ayrıca bir "parametre çekme" çağrısı yapmasına gerek kalmaz.

Yalnızca **tekil** ekle/güncelle/sil işlemleri bildirim üretir. Toplu (bulk) parametre aktarımı/senkronizasyonu bildirim **üretmez**.

> Header ve zarf (envelope) yapısı için: [Platform Entegrasyon Gereksinimleri](../Platform%20Entegrasyon%20Gereksinimleri.md). Bu bildirim tipinde **cevap ve retry davranışı** aşağıda ayrıca tanımlanmıştır: başarı yalnızca HTTP durum koduna göre belirlenir ve transport hatası dışında retry yapılmaz.

---

## 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\":\"added\",\"Value\":{\"ParameterId\":100,\"ParameterValue\":\"001\",\"ParameterName\":\"AUDI\",\"Status\":true,\"Crossed\":false}}"
    }
  }'
```

> `ReferanceNo` opak bir idempotency anahtarıdır; format `{AgentId}_{zamanDamgası+benzersiz}_0_0` şeklindedir ve aynı bildirimin retry'larında **değişmez**.

---

## Parse Edilmiş Payload

`RequestObject.Payload` alanı serialize edilmiş bir JSON string'tir; ikinci bir parse sonrasında aşağıdaki yapıya ulaşılır:

```json
{
  "ChangeType": "added",
  "Value": {
    "ParameterId": 100,
    "ParameterValue": "001",
    "ParameterName": "AUDI",
    "Status": true,
    "Crossed": false
  }
}
```

| Alan         | Tip    | Açıklama                                                                                                                  |
| ------------ | ------ | ------------------------------------------------------------------------------------------------------------------------- |
| `ChangeType` | string | Olayın türü. Olası değerler: `added`, `updated`, `deleted`. Ekleme/güncelleme/silme bilgisini taşıyan **tek** alan budur. |
| `Value`      | object | Değişen parametre değeri kaydının bilgisi (silme dahil her durumda dolu gelir).                                           |

`Value`**&#x20;alanları:**

| Alan             | Tip    | Açıklama                                                                                                                                                            |
| ---------------- | ------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `ParameterId`    | int    | Değerin bağlı olduğu parametrenin Id'si.                                                                                                                            |
| `ParameterValue` | string | Parametre değerinin **kodu** (`ParameterValue.Value`). Örn. `"001"`.                                                                                                |
| `ParameterName`  | string | Değişen parametre değerinin **kendi adı** (`ParameterValue` kaydının adı). Örn. `"AUDI"`.                                                                           |
| `Status`         | bool   | Kaydın kendi aktiflik durumu (`ParameterValue.Status`). Olay türü ile doğrudan ilgisi yoktur; entity'den olduğu gibi taşınır. `deleted` durumunda anlamlı değildir. |
| `Crossed`        | bool   | Kaydın `Crossed` alanı (`ParameterValue.Crossed`).                                                                                                                  |

> `ChangeType="deleted"` olduğunda `Value`, silinen kaydın son hâliyle gönderilir. Bir kaydın eşsiz kimliği `(ParameterId, ParameterValue)` ikilisidir; platform tarafında havuz bu ikili üzerinden güncellenmelidir.

---

## Beklenen Cevap

Platform, bildirimi aldığında **HTTP 2xx** dönmelidir. InsurGateway başarıyı **yalnızca HTTP durum koduna** göre belirler; cevap gövdesi değerlendirilmez (gövde boş olabilir).

**Başarı:**

```http
HTTP/1.1 200 OK
```

**Hata:**

`2xx` dışı herhangi bir HTTP kodu (örn. `500`) hata kabul edilir.

```http
HTTP/1.1 500 Internal Server Error
```

> Bildirim `ReferanceNo` üzerinden **idempotent** işlenmelidir; aynı `ReferanceNo` ile yeniden gelen bir bildirim tekrar uygulanmamalıdır.

---

## Retry

InsurGateway, bildirimi **yalnızca platforma ulaşamadığında** (bağlantı hatası / timeout — yani HTTP cevabı hiç alınamadığında) yeniden gönderir. Platformdan dönen `2xx`**&#x20;dışı bir HTTP cevabı retry üretmez**; hata loglanır ve bildirim düşülür. Dolayısıyla bildirimin tekrar denenmesini istiyorsanız cevap dönmeyin (timeout) — `2xx` dışı bir HTTP kodu düşmeye yol açar.

| Parametre                       | Değer                                               |
| ------------------------------- | --------------------------------------------------- |
| Retry koşulu                    | Yalnızca transport hatası (HTTP cevabı alınamaması) |
| `2xx` dışı HTTP cevabı          | Retry YOK — loglanır ve düşülür                     |
| Maksimum retry (orijinal hariç) | **5**                                               |
| Toplam maksimum deneme          | **6**                                               |
| Bekleme süreleri                | 3 sn → 10 sn → 1 dk → 1 saat (≥4. retry)            |