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

# Insurance Company Job Notification

InsurGateway, bir işe (job) yeni aksiyon eklendiğinde bu bildirimler ile **sigorta şirketine** haber verir. Sigorta şirketi, iş değişikliklerini polling ile takip etmek yerine kendi ucunda oluşturur/günceller.

Bildirimi tetikleyen olay, **işe yeni bir aksiyon eklenmesidir.** Her aksiyon, işin o anki aşamasını (`Stage`) taşır ve tek bir bildirim üretir. İşin kendi bilgilerinin değişmesi (`107`) ve poliçe isteğinin başka şirkette poliçeleşme nedeniyle geçersiz kalması (`108`) ayrı bildirimlerle iletilir; bu iki tip kendi sayfalarında anlatılmıştır.

40'tan fazla aşama **7 bildirim tipine** gruplanmıştır ve her tipin kendi `Payload` modeli vardır. Gövde iki bölümden oluşur: her tipte gönderilen **sabit alanlar** en üst seviyede yer alır, tipe göre **değişen model** ise `Payload` alanında, JSON olarak serialize edilmiş string halinde gönderilir. Gövdedeki `NotificationType` alanı, `Payload` alanının hangi modeli taşıdığını belirtir; böylece aşama başına ayrı model yerine **tip başına tek model** parse edilir.

| `NotificationType` | Tip                                                                                                         | Kapsam                                                                     |
| ------------------ | ----------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------- |
| `100`              | [Premium](#100--premium)                                                                                    | Prim ve prim revize aşamaları                                              |
| `101`              | [Policy](#101--policy)                                                                                      | Poliçe aşamaları                                                           |
| `102`              | [Endorsement](#102--endorsement)                                                                            | Zeyil aşamaları                                                            |
| `103`              | [Message](#103--message)                                                                                    | Mesaj aşaması                                                              |
| `104`              | [Approvement](#104--approvement)                                                                            | Doküman onay aşamaları                                                     |
| `105`              | [Info](#105--info)                                                                                          | Bilgi bekleme aşamaları                                                    |
| `106`              | [Removed](#106--removed)                                                                                    | İstek geri çekme aşamaları                                                 |
| `107`              | [JobChanged](/service-integrations/insurance-company-job-changed-notification)                              | İşin durum, atama ve teklif numarası değişiklikleri                        |
| `108`              | [PolicyRequestCancelled](/service-integrations/insurance-company-job-policy-request-cancelled-notification) | Teklifin başka şirkette poliçeleşmesiyle poliçe isteğinin geçersiz kalması |

---

## Endpointler

Sigorta şirketi InsurGateway'e yalnızca **base URL** bildirir. Path'ler sabittir ve tüm sigorta şirketleri için aynıdır; InsurGateway bunları base URL'in sonuna ekler.

| Endpoint                      | HTTP Method | Adres                    |
| ----------------------------- | ----------- | ------------------------ |
| [Login](#login)               | `POST`      | `{baseUrl}/auth/login`   |
| [Notification](#notification) | `POST`      | `{baseUrl}/notification` |

Tüm isteklerde `Content-Type: application/json` gönderilir. 7 bildirim tipinin tamamı aynı `/notification` adresine atılır; tip, gövdedeki `NotificationType` alanından anlaşılır.

---

## Kimlik Doğrulama

Sigorta şirketi aşağıdaki iki yöntemden birini seçer ve gerekli bilgileri InsurGateway'e bildirir:

| Yöntem  | Bildirilecek bilgi   | Notification isteğinde gönderilen header                                       |
| ------- | -------------------- | ------------------------------------------------------------------------------ |
| Login   | UserName ve Password | `Authorization: Bearer {token}` — token, [Login](#login) endpoint'inden alınır |
| API Key | API Key değeri       | `x-api-key: {apiKey}` — Login endpoint'i çağrılmaz                             |

---

## Login

Yalnızca **Login** yöntemini seçen sigorta şirketleri bu endpoint'i sunar. InsurGateway, bildirim göndermeden önce bu endpoint'ten token alır ve token'ı geçerlilik süresi boyunca saklayıp sonraki bildirimlerde yeniden kullanır; her bildirim için ayrı login isteği atılmaz.

**İstek**

```bash
curl -X POST "{baseUrl}/auth/login" \
  -H "Content-Type: application/json" \
  -d '{
    "UserName": "insurgateway",
    "Password": "********"
  }'
```

| Alan       | Tip    | Açıklama                                                        |
| ---------- | ------ | --------------------------------------------------------------- |
| `UserName` | string | Sigorta şirketinin InsurGateway için tanımladığı kullanıcı adı. |
| `Password` | string | Kullanıcının şifresi.                                           |

**Cevap**

```json
{
  "Token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
  "ExpiresIn": 3600
}
```

| Alan        | Tip    | Açıklama                                                                                             |
| ----------- | ------ | ---------------------------------------------------------------------------------------------------- |
| `Token`     | string | Notification isteklerinde `Authorization: Bearer {Token}` olarak gönderilecek değer. Zorunludur.     |
| `ExpiresIn` | int    | Token'ın geçerlilik süresi, **saniye** cinsinden. Gönderilmezse veya `0` ise 30 dakika kabul edilir. |

Başarılı cevap `2xx` durum koduyla dönmelidir. `2xx` dışındaki bir durum kodu veya `Token` alanı boş bir cevap, login'in başarısız olduğu anlamına gelir; bu durumda bildirim gönderilmez ve [Retry](#retry) takvimine göre yeniden denenir.

---

## Notification

```bash
curl -X POST "{baseUrl}/notification" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..." \
  -d '{
    "ReferenceNo": "GW-REF-0001",
    "NotificationType": 100,
    "EventType": "StageChanged",
    "JobId": 42,
    "Stage": 3,
    "StageName": "Prim Verildi",
    "IsBatch": false,
    "InsuranceCompanyId": 12,
    "ProductId": 118,
    "ProductBranchId": 3,
    "OccurredAt": "2026-08-10T14:30:00",
    "Payload": "{\"Premiums\":[{\"InsuranceCompanyProposalNumber\":\"TKF-2026-0001\",\"GrossPremium\":12500.0,\"NetPremium\":11000.0,\"Commission\":1500.0,\"CurrencyTypeId\":1,\"ExchangeRate\":1.0,\"InstallmentNumber\":3,\"PaymentOptionType\":\"K\",\"EqualInstallments\":true,\"InstallmentExplanation\":null,\"Installments\":[{\"ICSubProductCode\":null,\"Commision\":500.0,\"InstallmentNo\":1,\"PaymentAmount\":4166.67,\"PaymentDate\":\"2026-09-01T00:00:00\"}]}],\"BatchItems\":[],\"RejectReason\":null,\"RequestDetails\":null}"
  }'
```

Referans numarası ve sabit alanlar üstte, tipe göre değişen içerik `Payload` alanındadır. `Payload`, **JSON olarak serialize edilmiş bir string** gönderilir: önce `NotificationType` değeri okunur, ardından `Payload` string'i o tipe karşılık gelen modele deserialize edilir.

---

## Ortak Alanlar

Aşağıdaki alanlar 7 tipin tamamında, gövdenin en üst seviyesinde yer alır.

| Alan                 | Tip              | Açıklama                                                                                                                                                                                                           |
| -------------------- | ---------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `ReferenceNo`        | string           | Bildirimin InsurGateway referans numarası. Yeniden gönderimlerde **değişmez**; tekilleştirme ve InsurGateway ile yazışmalarda bu numara kullanılır.                                                                |
| `NotificationType`   | int              | `Payload` modelini belirten tip kodu: `100`–`108`.                                                                                                                                                                 |
| `EventType`          | string           | `JobCreated`, `StageChanged` veya `JobUpdated`. İşi açan talepte `JobCreated`, sonraki aşamalarda `StageChanged`, `107` ve `108` tiplerinde `JobUpdated` gönderilir. `103` Message her zaman `StageChanged` gelir. |
| `JobId`              | int              | İşin InsurGateway üzerindeki Id'si. İşi tanımlamak için bu alan kullanılmalıdır.                                                                                                                                   |
| `Stage`              | int              | Olay anındaki aşama kodu.                                                                                                                                                                                          |
| `StageName`          | string           | Aşamanın görünen adı (bilgi amaçlı; iş kuralı `Stage` üzerinden kurulmalıdır).                                                                                                                                     |
| `IsBatch`            | bool             | Aşamanın toplu (batch) işlem grubuna ait olup olmadığı.                                                                                                                                                            |
| `InsuranceCompanyId` | int              | Sigorta şirketinin InsurGateway üzerindeki Id'si.                                                                                                                                                                  |
| `ProductId`          | int              | İşin ürün Id'si.                                                                                                                                                                                                   |
| `ProductBranchId`    | int              | İşin branş Id'si.                                                                                                                                                                                                  |
| `OccurredAt`         | string(ISO 8601) | Aksiyonun oluştuğu an. Saat dilimi eki taşımaz.                                                                                                                                                                    |
| `Payload`            | string (JSON)    | `NotificationType` değerine göre değişen modelin serialize edilmiş hali. Bkz. [Payload Modelleri](#payload-modelleri).                                                                                             |

> **`EventType` ne işe yarar:** `JobCreated`, işin ilk kez oluşturulması gerektiğini bildirir. `StageChanged` ise mevcut bir işin güncellenmesidir. Kayıtlı olmayan bir iş için `StageChanged` gelirse (örneğin ilk bildirim teslim edilememişse) iş yine de `JobId` ile oluşturulabilmelidir.

---

## Stage → NotificationType Eşleştirmesi

| `NotificationType` | Aşamalar (kod)                                                                                                                                                                                                                                                                                                                                   |
| ------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `100` Premium      | `PremiumRequested(1)`, `PremiumRequestRejected(2)`, `PremiumOffered(3)`, `PremiumReviseRequested(4)`, `PremiumRevised(5)`, `PremiumReviseRejected(6)`, `BatchPremiumRequested(19)`, `BatchPremiumRequestRejected(20)`, `BatchPremiumOffered(21)`, `BatchPremiumReviseRequested(22)`, `BatchPremiumRevised(23)`, `BatchPremiumReviseRejected(24)` |
| `101` Policy       | `PolicyRequested(7)`, `PolicyRejected(8)`, `PolicyMade(9)`, `BatchPolicyRequested(25)`, `BatchPolicyRejected(28)`, `BatchPolicyMade(29)`                                                                                                                                                                                                         |
| `102` Endorsement  | `EndorsementRequested(10)`, `EndorsementRejected(11)`, `EndorsementMade(12)`, `BatchEndorsementRequested(30)`, `BatchEndorsementRejected(31)`, `BatchEndorsementMade(32)`                                                                                                                                                                        |
| `103` Message      | `Message(0)`                                                                                                                                                                                                                                                                                                                                     |
| `104` Approvement  | `WaitingApprovement(13)`, `Approved(14)`, `ApprovementRejected(15)`, `BatchWaitingApprovement(33)`                                                                                                                                                                                                                                               |
| `105` Info         | `WaitingForInformationFromCompany(16)`, `WaitingForInformationFromAgent(17)`, `WaitingForInfoCancel(18)`                                                                                                                                                                                                                                         |
| `106` Removed      | `RequestRemoved(-1)`, `PremiumRequestRemoved(34)`, `PremiumReviseRequestRemoved(35)`, `PolicyRequestRemoved(36)`, `EndorsementRequestRemoved(37)`                                                                                                                                                                                                |

Bu tabloda yer almayan bir aşama için bildirim **gönderilmez**.

---

## Payload Modelleri

Aşağıdaki alanlar gövdenin en üst seviyesinde değil, `Payload` string'i deserialize edildiğinde elde edilen modelde yer alır. Hangi modelin geldiğini [ortak alanlardaki](#ortak-alanlar) `NotificationType` belirler.

### `100` — Premium

Prim ve prim revize aşamaları.

| Alan                                         | Tip                      | Açıklama                                                                                                                                                                           |
| -------------------------------------------- | ------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `Premiums`                                   | object\[]                | Verilen prim seçenekleri; her taksit seçeneği ayrı bir elemandır. Yalnızca tekil işin `PremiumOffered` ve `PremiumRevised` aşamalarında dolar, diğer aşamalarda boş dizi gelir.    |
| `Premiums[].InsuranceCompanyProposalNumber`  | string \| null           | Sigorta şirketinin teklif numarası.                                                                                                                                                |
| `Premiums[].GrossPremium`                    | decimal \| null          | Brüt prim.                                                                                                                                                                         |
| `Premiums[].NetPremium`                      | decimal \| null          | Net prim.                                                                                                                                                                          |
| `Premiums[].Commission`                      | decimal \| null          | Komisyon.                                                                                                                                                                          |
| `Premiums[].CurrencyTypeId`                  | short \| null            | Para birimi Id.                                                                                                                                                                    |
| `Premiums[].ExchangeRate`                    | decimal \| null          | Kur.                                                                                                                                                                               |
| `Premiums[].InstallmentNumber`               | int                      | Taksit sayısı.                                                                                                                                                                     |
| `Premiums[].PaymentOptionType`               | string \| null           | Ödeme tipi: `A` (hesaptan), `K` (kredi kartı), `T` (tümü).                                                                                                                         |
| `Premiums[].EqualInstallments`               | bool                     | Taksitlerin eşit olup olmadığı.                                                                                                                                                    |
| `Premiums[].InstallmentExplanation`          | string \| null           | Taksit açıklaması.                                                                                                                                                                 |
| `Premiums[].Installments`                    | object\[]                | Taksit detayları. Boş olabilir.                                                                                                                                                    |
| `Premiums[].Installments[].ICSubProductCode` | string \| null           | Şirket alt ürün kodu.                                                                                                                                                              |
| `Premiums[].Installments[].Commision`        | decimal                  | Taksit komisyonu.                                                                                                                                                                  |
| `Premiums[].Installments[].InstallmentNo`    | int                      | Taksit sırası.                                                                                                                                                                     |
| `Premiums[].Installments[].PaymentAmount`    | decimal                  | Ödeme tutarı.                                                                                                                                                                      |
| `Premiums[].Installments[].PaymentDate`      | string(ISO 8601)         | Ödeme tarihi.                                                                                                                                                                      |
| `BatchItems`                                 | object\[]                | Toplu işin satırları. Yalnızca `BatchPremiumOffered` ve `BatchPremiumRevised` aşamalarında dolar, diğer aşamalarda boş dizi gelir. Bkz. [Ortak Alt Modeller](#ortak-alt-modeller). |
| `RejectReason`                               | object \| null           | Yalnızca reddedilme aşamalarında dolar. Bkz. [Ortak Alt Modeller](#ortak-alt-modeller).                                                                                            |
| `RequestDetails`                             | object \| string \| null | Aksiyonun istek detayları. JSON ise nesne, değilse düz metin olarak geçirilir.                                                                                                     |

### `101` — Policy

Poliçe aşamaları.

| Alan                  | Tip                      | Açıklama                                                                                                    |
| --------------------- | ------------------------ | ----------------------------------------------------------------------------------------------------------- |
| `PolicyId`            | string \| null           | Poliçe numarası.                                                                                            |
| `RenewalNo`           | string \| null           | Yenileme numarası.                                                                                          |
| `EndorsmentNo`        | string \| null           | Zeyil numarası.                                                                                             |
| `PolicyStartDate`     | string(ISO 8601) \| null | Poliçe başlangıç tarihi.                                                                                    |
| `PolicyEndDate`       | string(ISO 8601) \| null | Poliçe bitiş tarihi.                                                                                        |
| `ProcessingDate`      | string(ISO 8601) \| null | Tanzim tarihi.                                                                                              |
| `GrossPremium`        | decimal \| null          | Brüt prim.                                                                                                  |
| `NetPremium`          | decimal \| null          | Net prim.                                                                                                   |
| `Commission`          | decimal \| null          | Komisyon.                                                                                                   |
| `ExchangeRate`        | decimal \| null          | Kur.                                                                                                        |
| `CurrencyTypeId`      | short \| null            | Para birimi Id.                                                                                             |
| `InstallmentNumber`   | short \| null            | Taksit sayısı.                                                                                              |
| `FirstPaymentPercent` | short                    | İlk ödeme yüzdesi.                                                                                          |
| `PaymentOptionType`   | string \| null           | Ödeme tipi.                                                                                                 |
| `ProducedChannel`     | string \| null           | Poliçenin üretildiği kanal (enum adı).                                                                      |
| `BatchItems`          | object\[]                | Toplu işte kesilen poliçeler. Yalnızca `BatchPolicyMade` aşamasında dolar, diğer aşamalarda boş dizi gelir. |
| `RejectReason`        | object \| null           | Yalnızca `PolicyRejected` / `BatchPolicyRejected` aşamalarında dolar.                                       |
| `RequestDetails`      | object \| string \| null | Aksiyonun istek detayları.                                                                                  |

> Poliçe alanları yalnızca `PolicyMade` aşamasında dolar ve ana poliçeyi taşır; diğer aşamalarda `null` gelir. Toplu poliçede (`BatchPolicyMade`) poliçe alanları `null` gelir, kesilen poliçeler `BatchItems` içindedir.

### `102` — Endorsement

Zeyil aşamaları.

| Alan                | Tip                      | Açıklama                                                                                                        |
| ------------------- | ------------------------ | --------------------------------------------------------------------------------------------------------------- |
| `PolicyId`          | string \| null           | Poliçe numarası.                                                                                                |
| `EndorsmentNo`      | string \| null           | Zeyil numarası.                                                                                                 |
| `EndorsementType`   | int \| null              | Zeyil tipi.                                                                                                     |
| `PolicyStartDate`   | string(ISO 8601) \| null | Poliçe başlangıç tarihi.                                                                                        |
| `PolicyEndDate`     | string(ISO 8601) \| null | Poliçe bitiş tarihi.                                                                                            |
| `ProcessingDate`    | string(ISO 8601) \| null | Tanzim tarihi.                                                                                                  |
| `GrossPremium`      | decimal \| null          | Brüt prim.                                                                                                      |
| `NetPremium`        | decimal \| null          | Net prim.                                                                                                       |
| `Commission`        | decimal \| null          | Komisyon.                                                                                                       |
| `ExchangeRate`      | decimal \| null          | Kur.                                                                                                            |
| `CurrencyTypeId`    | short \| null            | Para birimi Id.                                                                                                 |
| `InstallmentNumber` | short \| null            | Taksit sayısı.                                                                                                  |
| `PaymentOptionType` | string \| null           | Ödeme tipi.                                                                                                     |
| `BatchItems`        | object\[]                | Toplu işte yapılan zeyiller. Yalnızca `BatchEndorsementMade` aşamasında dolar, diğer aşamalarda boş dizi gelir. |
| `RejectReason`      | object \| null           | Yalnızca `EndorsementRejected` / `BatchEndorsementRejected` aşamalarında dolar.                                 |
| `RequestDetails`    | object \| string \| null | Aksiyonun istek detayları.                                                                                      |

> Zeyil alanları yalnızca `EndorsementMade` aşamasında dolar ve yapılan zeyili taşır; diğer aşamalarda `null` gelir. Toplu zeyilde (`BatchEndorsementMade`) zeyil alanları `null` gelir, yapılan zeyiller `BatchItems` içindedir.

### `103` — Message

Mesaj aşaması. Bildirim, mesaj karşı tarafa iletildikten sonra gönderilir.

| Alan          | Tip            | Açıklama                                                  |
| ------------- | -------------- | --------------------------------------------------------- |
| `FromUserId`  | string \| null | Mesajı gönderen kullanıcı Id.                             |
| `Message`     | string \| null | Mesaj metni.                                              |
| `Attachments` | object\[]      | **Şu sürümde her zaman boş dizidir.** Bkz. aşağıdaki not. |

### `104` — Approvement

Doküman onay aşamaları.

| Alan                | Tip            | Açıklama                                                                                                                                      |
| ------------------- | -------------- | --------------------------------------------------------------------------------------------------------------------------------------------- |
| `ApprovementStatus` | string         | Aşamadan türetilir: `Waiting` (`WaitingApprovement`, `BatchWaitingApprovement`), `Approved` (`Approved`), `Rejected` (`ApprovementRejected`). |
| `FromUserId`        | string \| null | Aksiyonu oluşturan kullanıcı Id.                                                                                                              |
| `Attachments`       | object\[]      | **Şu sürümde her zaman boş dizidir.** Bkz. aşağıdaki not.                                                                                     |
| `RejectReason`      | object \| null | Yalnızca `ApprovementRejected` aşamasında dolar.                                                                                              |

> **`Attachments`:** Şu sürümde dizi her zaman boş gönderilir. Alan, ileride doküman bilgisi eklendiğinde modelin değişmemesi için şemada yer alır.

### `105` — Info

Bilgi bekleme aşamaları.

| Alan            | Tip                      | Açıklama                                                                                                                                                   |
| --------------- | ------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `InfoDirection` | string                   | Aşamadan türetilir: `FromCompany` (`WaitingForInformationFromCompany`), `FromAgent` (`WaitingForInformationFromAgent`), `Cancel` (`WaitingForInfoCancel`). |
| `FromUserId`    | string \| null           | Aksiyonu oluşturan kullanıcı Id.                                                                                                                           |
| `Details`       | object \| string \| null | Aksiyonun istek detayları.                                                                                                                                 |

### `106` — Removed

İstek geri çekme aşamaları.

| Alan             | Tip                      | Açıklama                                                                                                                           |
| ---------------- | ------------------------ | ---------------------------------------------------------------------------------------------------------------------------------- |
| `RemovedRequest` | string                   | Aşamadan türetilir: `Generic` (`RequestRemoved`), `PremiumRequest`, `PremiumReviseRequest`, `PolicyRequest`, `EndorsementRequest`. |
| `FromUserId`     | string \| null           | Aksiyonu oluşturan kullanıcı Id.                                                                                                   |
| `Details`        | object \| string \| null | Aksiyonun istek detayları.                                                                                                         |

---

## Ortak Alt Modeller

**`RejectReason`** — reddedilme aşamalarında dolar, diğer aşamalarda `null` gelir.

| Alan             | Tip            | Açıklama                                                                                                                |
| ---------------- | -------------- | ----------------------------------------------------------------------------------------------------------------------- |
| `Description`    | string \| null | Red sebebi açıklaması.                                                                                                  |
| `ReasonCategory` | string         | Red sebebi kategorisi (enum adı): `TecnicalError`, `Proposal`, `Policy`, `Endorsement`, `Approvement`, `PremiumRevise`. |

**`BatchItem`** — `100` Premium, `101` Policy ve `102` Endorsement tiplerindeki `BatchItems` dizisinin eleman şeması.

| Alan                                | Tip            | Açıklama                                                   |
| ----------------------------------- | -------------- | ---------------------------------------------------------- |
| `InsuranceCompanyProposalNumber`    | string \| null | Sigorta şirketinin teklif numarası.                        |
| `InsuranceCompanyPolicyNumber`      | string \| null | Poliçe numarası. Prim satırlarında boş gelebilir.          |
| `InsuranceCompanyEndorsementNumber` | string \| null | Zeyil numarası. Yalnızca zeyil satırlarında dolar.         |
| `RenewalNumber`                     | int            | Yenileme numarası.                                         |
| `GrossPremium`                      | decimal        | Brüt prim.                                                 |
| `NetPremium`                        | decimal        | Net prim.                                                  |
| `Commission`                        | decimal        | Komisyon.                                                  |
| `CurrencyTypeId`                    | int            | Para birimi Id.                                            |
| `PaymentOptionType`                 | string         | Ödeme tipi: `A` (hesaptan), `K` (kredi kartı), `T` (tümü). |

**`Attachment`** — `103` Message ve `104` Approvement tiplerindeki `Attachments` dizisinin eleman şeması. Şu sürümde dizi her zaman boş gelir.

| Alan                 | Tip            | Açıklama        |
| -------------------- | -------------- | --------------- |
| `Title`              | string \| null | Dosya adı.      |
| `Extension`          | string \| null | Dosya uzantısı. |
| `PlatformDocumentId` | string \| null | Doküman Id'si.  |

---

## Parse Edilmiş Gövde Örnekleri

> Aşağıdaki örneklerde `Payload`, okunabilirlik için **parse edilmiş (nesne) haliyle** gösterilmiştir. Gerçek gövdede `Payload` bu nesnenin serialize edilmiş string halidir; gerçek biçim için yukarıdaki [Notification](#notification) bölümündeki örnek isteğe bakın.
>
> Ayrıca okunabilirlik için değeri `null` olan bazı alanlar çıkarılmıştır. Gerçek gövdede **modelin tüm alanları yer alır**; değeri olmayanlar `null` olarak gönderilir, atlanmaz.

**`101` Policy — poliçe gerçekleşti:**

```json
{
  "ReferenceNo": "GW-REF-0002",
  "NotificationType": 101,
  "EventType": "StageChanged",
  "JobId": 42,
  "Stage": 9,
  "StageName": "Poliçe Gerçekleşti",
  "IsBatch": false,
  "InsuranceCompanyId": 12,
  "ProductId": 118,
  "ProductBranchId": 3,
  "OccurredAt": "2026-08-10T16:05:00",
  "Payload": {
    "PolicyId": "POL-2026-0042",
    "RenewalNo": "0",
    "EndorsmentNo": "0",
    "PolicyStartDate": "2026-08-11T00:00:00",
    "PolicyEndDate": "2027-08-11T00:00:00",
    "ProcessingDate": "2026-08-10T00:00:00",
    "GrossPremium": 12500.00,
    "NetPremium": 11000.00,
    "Commission": 1500.00,
    "CurrencyTypeId": 1,
    "InstallmentNumber": 3,
    "FirstPaymentPercent": 0,
    "PaymentOptionType": "K",
    "ProducedChannel": "Offline",
    "BatchItems": [],
    "RejectReason": null,
    "RequestDetails": null
  }
}
```

**`100` Premium — prim reddedildi:**

```json
{
  "ReferenceNo": "GW-REF-0003",
  "NotificationType": 100,
  "EventType": "StageChanged",
  "JobId": 43,
  "Stage": 2,
  "StageName": "Prim Reddedildi",
  "IsBatch": false,
  "InsuranceCompanyId": 12,
  "ProductId": 118,
  "ProductBranchId": 3,
  "OccurredAt": "2026-08-10T15:12:00",
  "Payload": {
    "Premiums": [],
    "BatchItems": [],
    "RejectReason": {
      "Description": "Risk kabul edilmedi",
      "ReasonCategory": "Proposal"
    },
    "RequestDetails": null
  }
}
```

**`105` Info — kurum dışı bilgi bekleniyor:**

```json
{
  "ReferenceNo": "GW-REF-0004",
  "NotificationType": 105,
  "EventType": "StageChanged",
  "JobId": 44,
  "Stage": 17,
  "StageName": "Kurum Dışı Bilgi Bekleniyor",
  "IsBatch": false,
  "InsuranceCompanyId": 12,
  "ProductId": 118,
  "ProductBranchId": 3,
  "OccurredAt": "2026-08-10T17:40:00",
  "Payload": {
    "InfoDirection": "FromAgent",
    "FromUserId": "3f2a9c14-8b71-4e02-9d55-6c1e77a3b912",
    "Details": { "Aciklama": "Ruhsat fotokopisi bekleniyor" }
  }
}
```

> Örneklerdeki `ReferenceNo` değerleri temsilidir; gerçek değer InsurGateway tarafından üretilir ve opak bir string olarak ele alınmalıdır.

---

## Beklenen Cevap

**Başarı:** `2xx` aralığında herhangi bir HTTP durum kodu yeterlidir. Cevap gövdesi değerlendirilmez; belirli bir cevap şeması beklenmez.

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

**Hata (retry tetikler):** `2xx` dışındaki her durum kodu başarısız sayılır ve yeniden gönderim zincirini başlatır. Bağlantı hatası, zaman aşımı gibi ulaşım katmanı sorunları da aynı şekilde ele alınır.

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

---

## Retry

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

Retry'lar tükendiğinde bildirim düşer ve tekrar gönderilmez. Her deneme aynı gövdeyle, dolayısıyla aynı `ReferenceNo` ile gönderilir.

---

## Dikkat Edilmesi Gerekenler

**Sıralama garantisi yoktur.** Aynı işe ait bildirimler kronolojik sırayla teslim edilmeyebilir: bir bildirim retry zincirindeyken sonraki aşamanın bildirimi önce ulaşabilir. İşin durumu belirlenirken `OccurredAt` alanı kullanılmalı ve daha eski bir olay daha yeni bir olayın üzerine yazılmamalıdır.

**Aynı bildirim birden çok kez ulaşabilir.** Yeniden gönderim, istek alınmış ama cevap InsurGateway'e ulaşmamışsa da tetiklenir. İşleme idempotent olmalıdır; tekilleştirme anahtarı `ReferenceNo` alanıdır.

**Sorun bildirirken `ReferenceNo` iletilmelidir.** InsurGateway her gönderim denemesini bu numarayla kayıt altına alır; bir bildirimle ilgili inceleme bu numara üzerinden yapılır.

**Bilinmeyen alanlar ve tipler yok sayılmalıdır.** Şemaya ileride yeni alan, `NotificationType` aralığına yeni tip eklenebilir; parse işlemi bilinmeyen alanlarda hata vermemeli, tanınmayan `NotificationType` değerinde `2xx` dönüp bildirimi atlamalıdır.

**Aşama kodu esas alınmalıdır.** `StageName` görünen addır ve değişebilir; iş kuralları `Stage` kodu üzerinden kurulmalıdır.