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

# ProductChange Notification

Bir acentenin ürün listesini etkileyen değişiklikleri duyuran bildirim tipidir. İki tür olayı taşır: acentenin **yetkili olduğu bir ürünün tanımının değişmesi** ve acenteye **ürün yetkisi verilmesi / yetkisinin kaldırılması**.

Bildirim, etkilenen ürünlerin değişiklik sonrasındaki güncel hâlini taşır; platformun ayrıca `GET /api/Products/MyProducts` ucunu çağırmasına gerek kalmaz. Hangi alanın değiştiği ayrıca bildirilmez — gövdedeki güncel hâl kendi kaydınızla karşılaştırılarak uygulanır.

Tek bir bildirim birden fazla ürün taşıyabilir. Bir acenteye aynı anda birkaç ürün tanımlandığında bunlar tek bir `added` bildiriminde birleşir ve ürünler `Values` dizisinde yer alır. Tekil bir değişiklikte dizi tek elemanlıdır.

Ürünün oluşturulması bildirim üretmez; o anda acentenin ürüne yetkisi yoktur. Ürün acenteye tanımlandığında `added` bildirimi gönderilir.

> Header ve zarf (envelope) yapısı için: [Platform Entegrasyon Gereksinimleri](../platform-entegrasyon-gereksinimleri). Bu bildirim tipi cevap ve retry davranışını ayrıca tanımlar: başarı yalnızca HTTP durum koduna bakılarak belirlenir ve retry yalnızca transport hatalarında yapılır.

---

## Endpoint

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

---

## Bildirim Ne Zaman Gönderilir?

| Tetikleyici                          | `ChangeType` | Kime gider                      | `Values`                       |
| ------------------------------------ | ------------ | ------------------------------- | ------------------------------ |
| Acenteye ürün yetkisi verildi        | `added`      | Yetki verilen acente            | Yetki verilen tüm ürünler      |
| Yetkili olunan ürünün tanımı değişti | `updated`    | Ürüne yetkisi bulunan acenteler | Değişen tek ürün               |
| Acentenin ürün yetkisi kaldırıldı    | `deleted`    | Yetkisi kaldırılan acente       | Yetkisi kaldırılan tüm ürünler |

`updated` bildirimi yalnızca **acente ürün ucunun döndürdüğü alanlardan** biri değiştiğinde gönderilir: ürün adı, ürün branşı, kategori, sigorta şirketi, aktiflik durumu, `Has3D`, `ThreeDPaymentType`, `HasCreditCard`, `HasCash`, `ShouldCardHolderBeInsured`, `MinimumOfferDayCount` ve `OfferValidityDayCount`. Bunların dışındaki bir alanın değişmesi (ör. sigorta şirketi ürün kodu) bildirim üretmez.

`Is3DRequired` bu listede ayrıca yer almaz; türetilmiş bir alandır ve yalnızca `Has3D` veya `HasCreditCard` değiştiğinde değişir — her iki alan da izlendiği için bu durumda zaten bildirim gönderilir.

Yetki toplu verildiğinde veya kaldırıldığında **acente başına tek bildirim** gönderilir; etkilenen tüm ürünler o acentenin bildiriminin `Values` dizisinde yer alır. Birden fazla acente etkileniyorsa her biri kendi bildirimini alır.

---

## Kimlere Gönderilir?

Bildirimin gitmesi için **iki koşulun birlikte** sağlanması gerekir:

1. Acente, InsurGateway tarafında ürün değişikliği bildirimlerine açık olmalıdır.
2. Acentenin değişikliğe konu olan ürüne yetkisi bulunmalıdır — `added` ve `deleted` durumlarında yetkiyi veren/kaldıran işlemin kendisi bu koşulu sağlar.

Bildirim almak istiyorsanız InsurGateway ekibiyle iletişime geçerek acentenizin tanımlanmasını talep edin. Tanımlı acente yoksa bu bildirim tipi kapalıdır.

---

## Ö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_20260814094512345a1b2c_0_0",
    "SubReferanceNo": "a1b2c3d4-e5f6-7890abcdef1234567890",
    "RequestKeyValueSet": null,
    "RequestObject": {
      "NotificationType": 14,
      "Payload": "[{\"ChangeType\":\"updated\",\"Values\":[{\"Id\":1001,\"Name\":\"Örnek Kasko\",\"BranchId\":1,\"BranchName\":\"Kasko\",\"Category\":\"Markalı\",\"InsuranceCompanyId\":7,\"Status\":true,\"Has3D\":true,\"ThreeDPaymentType\":1,\"HasCreditCard\":true,\"Is3DRequired\":false,\"HasCash\":true,\"ShouldCardHolderBeInsured\":false,\"MinimumOfferDayCount\":3,\"OfferValidityDayCount\":15}]}]"
    }
  }'
```

> `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. Kök eleman bir **dizidir**.

```json
[
  {
    "ChangeType": "added",
    "Values": [
      {
        "Id": 1001,
        "Name": "Örnek Kasko",
        "BranchId": 1,
        "BranchName": "Kasko",
        "Category": "Markalı",
        "InsuranceCompanyId": 7,
        "Status": true,
        "Has3D": true,
        "ThreeDPaymentType": 1,
        "HasCreditCard": true,
        "Is3DRequired": false,
        "HasCash": true,
        "ShouldCardHolderBeInsured": false,
        "MinimumOfferDayCount": 3,
        "OfferValidityDayCount": 15
      },
      {
        "Id": 2002,
```