Webhook API Entegrasyonu
Webhook'lar, bir olay meydana geldiğinde veya gelirken belirtilen URL'e otomatik HTTP POST isteği göndermek için kullanılır. InsurUp platformunda 18 adet webhook aktivitesi tanımlanmış durumda olup iki çeşit event tipi bulunmaktadır:
- Async: Event'ler bir olay gerçekleştiğinde atılır ve belirtilen API'ın sonucunu yapılan işleme etki etmez. Harici sistemlere açıktır.
- Sync: Event'ler bir olay gerçekleşmeden önce atılır ve belirtilen API'ın sonucuna göre yapılan işleme etki edebilir. Dahili kullanım içindir. Ödeme validasyonu güzel bir örnektir.
Her webhook bir URL, secret (opsiyonel) ve dinlenecek event listesi içerir.
Header'lar
Webhook isteklerinde aşağıdaki header'lar gönderilir:
| Header | Açıklama |
|---|---|
x-webhook-event | Tetiklenen event'in ismidir |
x-webhook-id | Acente panelindeki oluşturulan webhook'un tekil numarasıdır |
x-webhook-delivery | Tekil gönderim numarasıdır |
x-webhook-signature | Bu header eğer secret alanı doluysa gönderilir. Belirtilen secret ile payload SHA-256 ile şifrelenir |
Event Özeti
📋 Teklif Primi (Proposal Premium) Olayları
| Event | Tanımlayıcı | Tip | Açıklama |
|---|---|---|---|
| ProposalPremiumReceived | proposal_premium.received | Async | Teklif prim hesaplaması alındığında ve başarıyla işlendiğinde tetiklenir |
| ProposalPremiumPurchasing | proposal_premium.purchasing | Sync | Teklif prim satın alma süreci başlatıldığında tetiklenir (sadece dahili kullanım) |
| ProposalPremiumPurchased | proposal_premium.purchased | Async | Teklif prim satın alımı başarıyla tamamlandığında tetiklenir |
| ProposalPremiumPurchaseFailed | proposal_premium.purchase_failed | Async | Teklif prim satın alma girişimi başarısız olduğunda tetiklenir |
📄 Poliçe (Policy) Olayları
| Event | Tanımlayıcı | Tip | Açıklama |
|---|---|---|---|
| PolicyCreated | policy.created | Async | Yeni bir sigorta poliçesi oluşturulup düzenlendiğinde tetiklenir |
| PolicyUpdated | policy.updated | Async | Mevcut bir sigorta poliçesi güncellendiğinde veya değiştirildiğinde tetiklenir |
👤 Müşteri (Customer) Olayları
| Event | Tanımlayıcı | Tip | Açıklama |
|---|---|---|---|
| CustomerCreated | customer.created | Async | Yeni bir müşteri oluşturulduğunda tetiklenir |
| CustomerUpdated | customer.updated | Async | Mevcut bir müşteri güncellendiğinde tetiklenir |
| CustomerKvkkConsentGiven | customer.kvkk_consent_given | Async | Müşteri KVKK açık rıza onayı verdiğinde tetiklenir |
| CustomerKvkkConsentRevoked | customer.kvkk_consent_revoked | Async | Müşteri KVKK açık rıza onayını geri çektiğinde tetiklenir |
| CustomerEtkConsentGiven | customer.etk_consent_given | Async | Müşteri ETK (Ticari Elektronik İleti) onayı verdiğinde tetiklenir |
| CustomerEtkConsentRevoked | customer.etk_consent_revoked | Async | Müşteri ETK onayını geri çektiğinde tetiklenir |
🚗 Araç (Vehicle) Olayları
| Event | Tanımlayıcı | Tip | Açıklama |
|---|---|---|---|
| VehicleCreated | vehicle.created | Async | Bir müşteriye yeni araç kaydı oluşturulduğunda tetiklenir |
| VehicleUpdated | vehicle.updated | Async | Mevcut bir araç kaydı güncellendiğinde tetiklenir |
🏠 Gayrimenkul (Property) Olayları
| Event | Tanımlayıcı | Tip | Açıklama |
|---|---|---|---|
| PropertyCreated | property.created | Async | Bir müşteriye yeni gayrimenkul kaydı oluşturulduğunda tetiklenir |
| PropertyUpdated | property.updated | Async | Mevcut bir gayrimenkul kaydı güncellendiğinde tetiklenir |
📁 Talep (Case) Olayları
| Event | Tanımlayıcı | Tip | Açıklama |
|---|---|---|---|
| CaseCreated | case.created | Async | Yeni bir talep (satış fırsatı, zeyilname, iptal veya şikayet) oluşturulduğunda tetiklenir |
| CaseStateChanged | case.state_changed | Async | Bir talebin durumu (ana durum veya alt durum) değiştiğinde tetiklenir |
Her event $event discriminator'ı ile JSON'da ayırt edilir. Örnek: "$event": "proposal_premium.received"
Event Detayları ve Payload Formatları
proposal_premium.received async
Bir teklif primi InsurUp'a iletildiği zaman tetiklenir.
Alan Referansı
| Alan | Tip | Zorunlu | Açıklama |
|---|---|---|---|
$event | string | ✅ | Event tanımlayıcısı (proposal_premium.received) |
proposalId | string | ✅ | Teklif ID'si |
productId | int | ✅ | Ürün ID'si |
proposalProductId | string | ✅ | Teklif Ürün ID'si |
productBranch | ProductBranch | ✅ | Ürün dalı (enum) |
premiums | PremiumModel[] | ✅ | Prim detayları listesi |
insuredCustomer | CustomerModel | ✅ | Sigortalı müşteri bilgileri |
tempProposalDocumentUrl | string? | ❌ | Geçici teklif doküman URL'i |
tempPreInfoDocumentUrl | string? | ❌ | Geçici ön bilgi doküman URL'i |
Örnek Payload
{
"$event": "proposal_premium.received",
"proposalId": "673afd15f11de64fe1f2bjdb",
"productId": 40235,
"proposalProductId": "67452b1a022dec6666bf06d8",
"productBranch": "KASKO",
"premiums": [
{
"installmentNumber": 1,
"netPremium": 1243,
"grossPremium": 1243,
"commission": 0,
"exchangeRate": 1,
"currency": "TURKISH_LIRA",
"insuranceCompanyProposalNumber": "142534209"
},
{
"installmentNumber": 2,
"netPremium": 1243,
"grossPremium": 1243,
"commission": 0,
"exchangeRate": 1,
"currency": "TURKISH_LIRA",
"insuranceCompanyProposalNumber": "142534209"
}
],
"insuredCustomer": {
"$type": "individual",
"identityNumber": "12345678910",
"birthDate": "1994-01-01",
"fullName": "Müşteri ismi",
"phoneNumber": {
"number": "5432222222",
"countryCode": 90,
"areaCode": "543",
"numberWithoutAreaCode": "2222222"
},
"email": {
"value": "customer@insurup.com"
},
"city": {
"value": "34",
"text": "İSTANBUL"
},
"district": {
"value": "1823",
"text": "KÜÇÜKÇEKMECE"
}
},
"tempProposalDocumentUrl": null,
"tempPreInfoDocumentUrl": null
}
Örnek Tüzel Müşteri (Company) Payload
{
"$event": "proposal_premium.received",
"proposalId": "673afd15f11de64fe1f2bjdb",
"productId": 40235,
"proposalProductId": "67452b1a022dec6666bf06d8",
"productBranch": "KASKO",
"premiums": [...],
"insuredCustomer": {
"$type": "company",
"title": "Şirket İsmi A.Ş.",
"taxNumber": "6130782524",
"phoneNumber": {
"number": "5432222222",
"countryCode": 90,
"areaCode": "543",
"numberWithoutAreaCode": "2222222"
},
"email": {
"value": "info@sirket.com"
},
"city": {
"value": "34",
"text": "İSTANBUL"
},
"district": {
"value": "1823",
"text": "KÜÇÜKÇEKMECE"
}
},
"tempProposalDocumentUrl": null,
"tempPreInfoDocumentUrl": null
}
proposal_premium.purchasing sync
Bir teklif primini satın alınmadan önce tetiklenir. Bu event'i satın alma validasyonu olarak kullanabilirsiniz.
Bu event sadece dahili kullanım içindir ve harici webhook'lara gönderilmez.
Alan Referansı
| Alan | Tip | Zorunlu | Açıklama |
|---|---|---|---|
$event | string | ✅ | Event tanımlayıcısı (proposal_premium.purchasing) |
proposalId | string | ✅ | Teklif ID'si |
productId | int | ✅ | Ürün ID'si |
installmentNumber | int | ✅ | Taksit sayısı |
paymentType | PaymentOption | ✅ | Ödeme tipi (enum) |
Örnek Payload
{
"$event": "proposal_premium.purchasing",
"proposalId": "673afd15f11de64fe1f2bjdb",
"productId": 40235,
"installmentNumber": 1,
"paymentType": "SYNC_CREDIT_CARD"
}
proposal_premium.purchased async
Bir teklif primini satın alma isteği başarılı olunca tetiklenir.
Alan Referansı
| Alan | Tip | Zorunlu | Açıklama |
|---|---|---|---|
$event | string | ✅ | Event tanımlayıcısı (proposal_premium.purchased) |
proposalId | string | ✅ | Teklif ID'si |
policyId | string | ✅ | Oluşturulan poliçe ID'si |
productId | int | ✅ | Ürün ID'si |
installmentNumber | int | ✅ | Taksit sayısı |
paymentType | PaymentOption | ✅ | Ödeme tipi (enum) |
policyStartDate | DateOnly | ✅ | Poliçe başlangıç tarihi (YYYY-MM-DD) |
policyEndDate | DateOnly | ✅ | Poliçe bitiş tarihi (YYYY-MM-DD) |
Örnek Payload
{
"$event": "proposal_premium.purchased",
"proposalId": "673afd15f11de64fe1f2bjdb",
"policyId": "673b4cb4524a0a5187ddbeae",
"productId": 40235,
"installmentNumber": 1,
"paymentType": "SYNC_CREDIT_CARD",
"policyStartDate": "2024-11-20",
"policyEndDate": "2025-11-20"
}
proposal_premium.purchase_failed async
Bir teklif primini satın alma isteği başarısız olunca tetiklenir.
Alan Referansı
| Alan | Tip | Zorunlu | Açıklama |
|---|---|---|---|
$event | string | ✅ | Event tanımlayıcısı (proposal_premium.purchase_failed) |
proposalId | string | ✅ | Teklif ID'si |
productId | int | ✅ | Ürün ID'si |
installmentNumber | int | ✅ | Taksit sayısı |
paymentType | PaymentOption | ✅ | Ödeme tipi (enum) |
failureReason | string? | ❌ | Başarısızlık nedeni |
Örnek Payload
{
"$event": "proposal_premium.purchase_failed",
"proposalId": "673afd15f11de64fe1f2bjdb",
"productId": 40235,
"installmentNumber": 1,
"paymentType": "SYNC_CREDIT_CARD",
"failureReason": "X sigorta şirketi bilinmeyen bir nedenden dolayı poliçeleştirme isteğini reddetti"
}
policy.created async
Yeni bir sigorta poliçesi oluşturulduğunda tetiklenir. Dosya poliçe transfer, online poliçe transfer ve proje üzerinden poliçe oluşturma durumlarında çalışır.
Alan Referansı
| Alan | Tip | Zorunlu | Açıklama |
|---|---|---|---|
$event | string | ✅ | Event tanımlayıcısı (policy.created) |
policyId | string | ✅ | Poliçe ID'si |
proposalId | string? | ❌ | Teklif ID'si |
productId | int? | ❌ | Ürün ID'si |
installmentNumber | int? | ✅ | Taksit sayısı |
paymentType | PaymentOption | ✅ | Ödeme tipi (enum) |
insuranceCompany | InsuranceCompanyModel | ✅ | Sigorta şirketi bilgileri |
startDate | DateOnly | ✅ | Poliçe başlangıç tarihi (YYYY-MM-DD) |
endDate | DateOnly | ✅ | Poliçe bitiş tarihi (YYYY-MM-DD) |
renewalNumber | byte | ✅ | Yenileme numarası |
productBranch | ProductBranch | ❌ | Ürün dalı (enum) |
insurerCustomerId | Guid | ✅ | Sigorta ettiren müşteri ID'si |
insuredCustomerId | Guid | ✅ | Sigortalı müşteri ID'si |
insurerIdentityNumber | string? | ✅ | 🔒 Sigorta ettiren TC/VKN |
insuredIdentityNumber | string? | ✅ | 🔒 Sigortalı TC/VKN |
insuredCustomerEmail | string? | ✅ | 🔒 Sigortalı email |
insurerCustomerEmail | string? | ✅ | 🔒 Sigorta ettiren email |
fromPolicyTransfer | bool | ✅ | Poliçe transferi mi? |
netPremium | decimal? | ✅ | Net prim tutarı |
grossPremium | decimal? | ✅ | Brüt prim tutarı |
channel | Channel | ✅ | Satış kanalı (enum) |
insuranceCompanyPolicyNo | string | ✅ | Sigorta şirketi poliçe numarası |
Örnek Payload
{
"$event": "policy.created",
"policyId": "67c94017db57fa44cf64db94",
"proposalId": "67c93f2fdb57fa44cf64db6a",
"productId": 1595,
"installmentNumber": 1,
"paymentType": "SYNC_CREDIT_CARD",
"insuranceCompany": {
"id": 12,
"name": "Anadolu Sigorta",
"logo": "https://cdn.insurup.com/logos/anadolu.png",
"enabled": true,
"supportedPaymentOptions": ["SYNC_CREDIT_CARD", "SYNC_OPEN_ACCOUNT"]
},
"startDate": "2025-03-06",
"endDate": "2026-03-06",
"renewalNumber": 0,
"productBranch": "DASK",
"insurerCustomerId": "256e55a5-e1c5-483e-97df-4156d352fb63",
"insuredCustomerId": "256e55a5-e1c5-483e-97df-4156d352fb63",
"insurerIdentityNumber": "12345678910",
"insuredIdentityNumber": "12345678910",
"insuredCustomerEmail": "customer@insurup.com",
"insurerCustomerEmail": "customer@insurup.com",
"fromPolicyTransfer": false,
"netPremium": 1500.00,
"grossPremium": 1650.00,
"channel": "WEBSITE",
"insuranceCompanyPolicyNo": "POL-2025-123456"
}
policy.updated async
Mevcut bir sigorta poliçesi güncellendiğinde veya değiştirildiğinde tetiklenir. Zeyilname işlemleri ve iptal durumlarında çalışır.
Alan Referansı
| Alan | Tip | Zorunlu | Açıklama |
|---|---|---|---|
$event | string | ✅ | Event tanımlayıcısı (policy.updated) |
policyId | string | ✅ | Poliçe ID'si |
installmentNumber | int? | ✅ | Taksit sayısı |
paymentType | PaymentOption | ✅ | Ödeme tipi (enum) |
endorsementNumber | byte | ✅ | Zeyilname numarası |
isCancel | bool | ✅ | İptal işlemi mi? |
netPremium | decimal | ✅ | Net prim tutarı |
grossPremium | decimal | ✅ | Brüt prim tutarı |
insurerIdentityNumber | string? | ✅ | 🔒 Sigorta ettiren TC/VKN |
insuredIdentityNumber | string? | ✅ | 🔒 Sigortalı TC/VKN |
insuranceCompanyPolicyNo | string | ✅ | Sigorta şirketi poliçe numarası |
Örnek Payload
{
"$event": "policy.updated",
"policyId": "67c930b9db57fa44cf64daf6",
"installmentNumber": 1,
"paymentType": "SYNC_CREDIT_CARD",
"endorsementNumber": 1,
"isCancel": false,
"netPremium": 250.00,
"grossPremium": 275.00,
"insurerIdentityNumber": "12345678910",
"insuredIdentityNumber": "12345678910",
"insuranceCompanyPolicyNo": "POL-2025-123456"
}
Örnek İptal Payload'ı
{
"$event": "policy.updated",
"policyId": "67c930b9db57fa44cf64daf6",
"installmentNumber": 1,
"paymentType": "SYNC_CREDIT_CARD",
"endorsementNumber": 2,
"isCancel": true,
"netPremium": -1500.00,
"grossPremium": -1650.00,
"insurerIdentityNumber": "12345678910",
"insuredIdentityNumber": "12345678910",
"insuranceCompanyPolicyNo": "POL-2025-123456"
}
customer.created async
Yeni bir müşteri oluşturulduğunda tetiklenir. Bireysel, tüzel ve yabancı uyruklu müşteri tipleri için geçerlidir.
Alan Referansı
| Alan | Tip | Zorunlu | Açıklama |
|---|---|---|---|
$event | string | ✅ | Event tanımlayıcısı (customer.created) |
customerId | Guid | ✅ | Müşteri ID'si |
customerType | CustomerType | ✅ | Müşteri tipi (enum) |
identityNumber | string? | ❌ | 🔒 TC Kimlik / Yabancı kimlik numarası |
firstName | string? | ❌ | Ad (bireysel/yabancı müşteriler için) |
lastName | string? | ❌ | Soyad (bireysel/yabancı müşteriler için) |
companyTitle | string? | ❌ | Şirket unvanı (tüzel müşteriler için) |
taxNumber | string? | ❌ | 🔒 Vergi numarası (tüzel müşteriler için) |
birthDate | DateOnly? | ❌ | Doğum tarihi (YYYY-MM-DD) |
gender | Gender? | ❌ | Cinsiyet (enum) |
maritalStatus | MaritalStatus? | ❌ | Medeni durum (enum) |
province | string? | ❌ | İl |
district | string? | ❌ | İlçe |
email | string? | ❌ | 🔒 E-posta adresi |
phoneNumber | string? | ❌ | 🔒 Telefon numarası |
createdAt | DateTime | ✅ | Oluşturulma tarihi (ISO 8601) |
branch | string? | ❌ | Şube bilgisi |
creationChannel | Channel | ✅ | Oluşturulma kanalı (enum) |
Örnek Bireysel Müşteri Payload
{
"$event": "customer.created",
"customerId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"customerType": "INDIVIDUAL",
"identityNumber": "12345678910",
"firstName": "Ahmet",
"lastName": "Yılmaz",
"companyTitle": null,
"taxNumber": null,
"birthDate": "1990-05-15",
"gender": "MALE",
"maritalStatus": "MARRIED",
"province": "İstanbul",
"district": "Kadıköy",
"email": "ahmet@example.com",
"phoneNumber": "5321234567",
"createdAt": "2026-03-10T14:30:00Z",
"branch": null,
"creationChannel": "WEBSITE"
}
Örnek Tüzel Müşteri Payload
{
"$event": "customer.created",
"customerId": "b2c3d4e5-f6a7-8901-bcde-f12345678901",
"customerType": "COMPANY",
"identityNumber": null,
"firstName": null,
"lastName": null,
"companyTitle": "ABC Sigorta Ltd. Şti.",
"taxNumber": "6130782524",
"birthDate": null,
"gender": null,
"maritalStatus": null,
"province": "Ankara",
"district": "Çankaya",
"email": "info@abcsigorta.com",
"phoneNumber": "3121234567",
"createdAt": "2026-03-10T14:30:00Z",
"branch": null,
"creationChannel": "MANUAL"
}
customer.updated async
Mevcut bir müşteri güncellendiğinde tetiklenir.
Alan Referansı
| Alan | Tip | Zorunlu | Açıklama |
|---|---|---|---|
$event | string |