Skip to navigation

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.

NotificationTypeTipKapsam
100PremiumPrim ve prim revize aşamaları
101PolicyPoliçe aşamaları
102EndorsementZeyil aşamaları
103MessageMesaj aşaması
104ApprovementDoküman onay aşamaları
105InfoBilgi bekleme aşamaları
106Removedİstek geri çekme aşamaları
107JobChangedİşin durum, atama ve teklif numarası değişiklikleri
108PolicyRequestCancelledTeklifin 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.

EndpointHTTP MethodAdres
LoginPOST{baseUrl}/auth/login
NotificationPOST{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öntemBildirilecek bilgiNotification isteğinde gönderilen header
LoginUserName ve PasswordAuthorization: Bearer {token} — token, Login endpoint’inden alınır
API KeyAPI Key değerix-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

curl -X POST "{baseUrl}/auth/login" \
-H "Content-Type: application/json" \
-d '{
"UserName": "insurgateway",
"Password": "********"
}'
AlanTipAçıklama
UserNamestringSigorta şirketinin InsurGateway için tanımladığı kullanıcı adı.
PasswordstringKullanıcının şifresi.

Cevap

{
"Token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
"ExpiresIn": 3600
}
AlanTipAçıklama
TokenstringNotification isteklerinde Authorization: Bearer {Token} olarak gönderilecek değer. Zorunludur.
ExpiresInintToken’ı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 takvimine göre yeniden denenir.


Notification

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.

AlanTipAçıklama
ReferenceNostringBildirimin InsurGateway referans numarası. Yeniden gönderimlerde değişmez; tekilleştirme ve InsurGateway ile yazışmalarda bu numara kullanılır.
NotificationTypeintPayload modelini belirten tip kodu: 100–108.
EventTypestringJobCreated, 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.
JobIdintİşin InsurGateway üzerindeki Id’si. İşi tanımlamak için bu alan kullanılmalıdır.
StageintOlay anındaki aşama kodu.
StageNamestringAşamanın görünen adı (bilgi amaçlı; iş kuralı Stage üzerinden kurulmalıdır).
IsBatchboolAşamanın toplu (batch) işlem grubuna ait olup olmadığı.
InsuranceCompanyIdintSigorta şirketinin InsurGateway üzerindeki Id’si.
ProductIdintİşin ürün Id’si.
ProductBranchIdintİşin branş Id’si.
OccurredAtstring(ISO 8601)Aksiyonun oluştuğu an. Saat dilimi eki taşımaz.
Payloadstring (JSON)NotificationType değerine göre değişen modelin serialize edilmiş hali. Bkz. 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

NotificationTypeAşamalar (kod)
100 PremiumPremiumRequested(1), PremiumRequestRejected(2), PremiumOffered(3), PremiumReviseRequested(4), PremiumRevised(5), PremiumReviseRejected(6), BatchPremiumRequested(19), BatchPremiumRequestRejected(20), BatchPremiumOffered(21), BatchPremiumReviseRequested(22), BatchPremiumRevised(23), BatchPremiumReviseRejected(24)
101 PolicyPolicyRequested(7), PolicyRejected(8), PolicyMade(9), BatchPolicyRequested(25), BatchPolicyRejected(28), BatchPolicyMade(29)
102 EndorsementEndorsementRequested(10), EndorsementRejected(11), EndorsementMade(12), BatchEndorsementRequested(30), BatchEndorsementRejected(31), BatchEndorsementMade(32)
103 MessageMessage(0)
104 ApprovementWaitingApprovement(13), Approved(14), ApprovementRejected(15), BatchWaitingApprovement(33)
105 InfoWaitingForInformationFromCompany(16), WaitingForInformationFromAgent(17), WaitingForInfoCancel(18)
106 RemovedRequestRemoved(-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 NotificationType belirler.

100 — Premium

Prim ve prim revize aşamaları.

AlanTipAçıklama
Premiumsobject[]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[].InsuranceCompanyProposalNumberstring | nullSigorta şirketinin teklif numarası.
Premiums[].GrossPremiumdecimal | nullBrüt prim.
Premiums[].NetPremiumdecimal | nullNet prim.
Premiums[].Commissiondecimal | nullKomisyon.
Premiums[].CurrencyTypeIdshort | nullPara birimi Id.
Premiums[].ExchangeRatedecimal | nullKur.
Premiums[].InstallmentNumberintTaksit sayısı.
Premiums[].PaymentOptionTypestring | nullÖdeme tipi: A (hesaptan), K (kredi kartı), T (tümü).
Premiums[].EqualInstallmentsboolTaksitlerin eşit olup olmadığı.
Premiums[].InstallmentExplanationstring | nullTaksit açıklaması.
Premiums[].Installmentsobject[]Taksit detayları. Boş olabilir.
Premiums[].Installments[].ICSubProductCodestring | nullŞirket alt ürün kodu.
Premiums[].Installments[].CommisiondecimalTaksit komisyonu.
Premiums[].Installments[].InstallmentNointTaksit sırası.
Premiums[].Installments[].PaymentAmountdecimalÖdeme tutarı.
Premiums[].Installments[].PaymentDatestring(ISO 8601)Ödeme tarihi.
BatchItemsobject[]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.
RejectReasonobject | nullYalnızca reddedilme aşamalarında dolar. Bkz. Ortak Alt Modeller.
RequestDetailsobject | string | nullAksiyonun istek detayları. JSON ise nesne, değilse düz metin olarak geçirilir.

101 — Policy

Poliçe aşamaları.

AlanTipAçıklama
PolicyIdstring | nullPoliçe numarası.
RenewalNostring | nullYenileme numarası.
EndorsmentNostring | nullZeyil numarası.
PolicyStartDatestring(ISO 8601) | nullPoliçe başlangıç tarihi.
PolicyEndDatestring(ISO 8601) | nullPoliçe bitiş tarihi.
ProcessingDatestring(ISO 8601) | nullTanzim tarihi.
GrossPremiumdecimal | nullBrüt prim.
NetPremiumdecimal | nullNet prim.
Commissiondecimal | nullKomisyon.
ExchangeRatedecimal | nullKur.
CurrencyTypeIdshort | nullPara birimi Id.
InstallmentNumbershort | nullTaksit sayısı.
FirstPaymentPercentshortİlk ödeme yüzdesi.
PaymentOptionTypestring | nullÖdeme tipi.
ProducedChannelstring | nullPoliçenin üretildiği kanal (enum adı).
BatchItemsobject[]Toplu işte kesilen poliçeler. Yalnızca BatchPolicyMade aşamasında dolar, diğer aşamalarda boş dizi gelir.
RejectReasonobject | nullYalnızca PolicyRejected / BatchPolicyRejected aşamalarında dolar.
RequestDetailsobject | string | nullAksiyonun 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ı.

AlanTipAçıklama
PolicyIdstring | nullPoliçe numarası.
EndorsmentNostring | nullZeyil numarası.
EndorsementTypeint | nullZeyil tipi.
PolicyStartDatestring(ISO 8601) | nullPoliçe başlangıç tarihi.
PolicyEndDatestring(ISO 8601) | nullPoliçe bitiş tarihi.
ProcessingDatestring(ISO 8601) | nullTanzim tarihi.
GrossPremiumdecimal | nullBrüt prim.
NetPremiumdecimal | nullNet prim.
Commissiondecimal | nullKomisyon.
ExchangeRatedecimal | nullKur.
CurrencyTypeIdshort | nullPara birimi Id.
InstallmentNumbershort | nullTaksit sayısı.
PaymentOptionTypestring | nullÖdeme tipi.
BatchItemsobject[]Toplu işte yapılan zeyiller. Yalnızca BatchEndorsementMade aşamasında dolar, diğer aşamalarda boş dizi gelir.
RejectReasonobject | nullYalnızca EndorsementRejected / BatchEndorsementRejected aşamalarında dolar.
RequestDetailsobject | string | nullAksiyonun 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.

AlanTipAçıklama
FromUserIdstring | nullMesajı gönderen kullanıcı Id.
Messagestring | nullMesaj metni.
Attachmentsobject[]Şu sürümde her zaman boş dizidir. Bkz. aşağıdaki not.

104 — Approvement

Doküman onay aşamaları.

AlanTipAçıklama
ApprovementStatusstringAşamadan türetilir: Waiting (WaitingApprovement, BatchWaitingApprovement), Approved (Approved), Rejected (ApprovementRejected).
FromUserIdstring | nullAksiyonu oluşturan kullanıcı Id.
Attachmentsobject[]Şu sürümde her zaman boş dizidir. Bkz. aşağıdaki not.
RejectReasonobject | nullYalnı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ı.

AlanTipAçıklama
InfoDirectionstringAşamadan türetilir: FromCompany (WaitingForInformationFromCompany), FromAgent (WaitingForInformationFromAgent), Cancel (WaitingForInfoCancel).
FromUserIdstring | nullAksiyonu oluşturan kullanıcı Id.
Detailsobject | string | nullAksiyonun istek detayları.

106 — Removed

İstek geri çekme aşamaları.

AlanTipAçıklama
RemovedRequeststringAşamadan türetilir: Generic (RequestRemoved), PremiumRequest, PremiumReviseRequest, PolicyRequest, EndorsementRequest.
FromUserIdstring | nullAksiyonu oluşturan kullanıcı Id.
Detailsobject | string | nullAksiyonun istek detayları.

Ortak Alt Modeller

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

AlanTipAçıklama
Descriptionstring | nullRed sebebi açıklaması.
ReasonCategorystringRed sebebi kategorisi (enum adı): TecnicalError, Proposal, Policy, Endorsement, Approvement, PremiumRevise.

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

AlanTipAçıklama
InsuranceCompanyProposalNumberstring | nullSigorta şirketinin teklif numarası.
InsuranceCompanyPolicyNumberstring | nullPoliçe numarası. Prim satırlarında boş gelebilir.
InsuranceCompanyEndorsementNumberstring | nullZeyil numarası. Yalnızca zeyil satırlarında dolar.
RenewalNumberintYenileme numarası.
GrossPremiumdecimalBrüt prim.
NetPremiumdecimalNet prim.
CommissiondecimalKomisyon.
CurrencyTypeIdintPara birimi Id.
PaymentOptionTypestringÖ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.

AlanTipAçıklama
Titlestring | nullDosya adı.
Extensionstring | nullDosya uzantısı.
PlatformDocumentIdstring | nullDokü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 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:

{
"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:

{
"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:

{
"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/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/1.1 500 Internal Server Error

Retry

ParametreDeğer
Maksimum retry (orijinal hariç)10
Toplam maksimum deneme11
Bekleme süreleri3 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.