Ana içeriğe geç

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.
Webhook Entity Yapısı

Her webhook bir URL, secret (opsiyonel) ve dinlenecek event listesi içerir.

Header'lar

Webhook isteklerinde aşağıdaki header'lar gönderilir:

HeaderAçıklama
x-webhook-eventTetiklenen event'in ismidir
x-webhook-idAcente panelindeki oluşturulan webhook'un tekil numarasıdır
x-webhook-deliveryTekil gönderim numarasıdır
x-webhook-signatureBu header eğer secret alanı doluysa gönderilir. Belirtilen secret ile payload SHA-256 ile şifrelenir

Event Özeti

📋 Teklif Primi (Proposal Premium) Olayları

EventTanımlayıcıTipAçıklama
ProposalPremiumReceivedproposal_premium.receivedAsyncTeklif prim hesaplaması alındığında ve başarıyla işlendiğinde tetiklenir
ProposalPremiumPurchasingproposal_premium.purchasingSyncTeklif prim satın alma süreci başlatıldığında tetiklenir (sadece dahili kullanım)
ProposalPremiumPurchasedproposal_premium.purchasedAsyncTeklif prim satın alımı başarıyla tamamlandığında tetiklenir
ProposalPremiumPurchaseFailedproposal_premium.purchase_failedAsyncTeklif prim satın alma girişimi başarısız olduğunda tetiklenir

📄 Poliçe (Policy) Olayları

EventTanımlayıcıTipAçıklama
PolicyCreatedpolicy.createdAsyncYeni bir sigorta poliçesi oluşturulup düzenlendiğinde tetiklenir
PolicyUpdatedpolicy.updatedAsyncMevcut bir sigorta poliçesi güncellendiğinde veya değiştirildiğinde tetiklenir

👤 Müşteri (Customer) Olayları

EventTanımlayıcıTipAçıklama
CustomerCreatedcustomer.createdAsyncYeni bir müşteri oluşturulduğunda tetiklenir
CustomerUpdatedcustomer.updatedAsyncMevcut bir müşteri güncellendiğinde tetiklenir
CustomerKvkkConsentGivencustomer.kvkk_consent_givenAsyncMüşteri KVKK açık rıza onayı verdiğinde tetiklenir
CustomerKvkkConsentRevokedcustomer.kvkk_consent_revokedAsyncMüşteri KVKK açık rıza onayını geri çektiğinde tetiklenir
CustomerEtkConsentGivencustomer.etk_consent_givenAsyncMüşteri ETK (Ticari Elektronik İleti) onayı verdiğinde tetiklenir
CustomerEtkConsentRevokedcustomer.etk_consent_revokedAsyncMüşteri ETK onayını geri çektiğinde tetiklenir

🚗 Araç (Vehicle) Olayları

EventTanımlayıcıTipAçıklama
VehicleCreatedvehicle.createdAsyncBir müşteriye yeni araç kaydı oluşturulduğunda tetiklenir
VehicleUpdatedvehicle.updatedAsyncMevcut bir araç kaydı güncellendiğinde tetiklenir

🏠 Gayrimenkul (Property) Olayları

EventTanımlayıcıTipAçıklama
PropertyCreatedproperty.createdAsyncBir müşteriye yeni gayrimenkul kaydı oluşturulduğunda tetiklenir
PropertyUpdatedproperty.updatedAsyncMevcut bir gayrimenkul kaydı güncellendiğinde tetiklenir

📁 Talep (Case) Olayları

EventTanımlayıcıTipAçıklama
CaseCreatedcase.createdAsyncYeni bir talep (satış fırsatı, zeyilname, iptal veya şikayet) oluşturulduğunda tetiklenir
CaseStateChangedcase.state_changedAsyncBir talebin durumu (ana durum veya alt durum) değiştiğinde tetiklenir
JSON Polimorfizm

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ı

AlanTipZorunluAçıklama
$eventstringEvent tanımlayıcısı (proposal_premium.received)
proposalIdstringTeklif ID'si
productIdintÜrün ID'si
proposalProductIdstringTeklif Ürün ID'si
productBranchProductBranchÜrün dalı (enum)
premiumsPremiumModel[]Prim detayları listesi
insuredCustomerCustomerModelSigortalı müşteri bilgileri
tempProposalDocumentUrlstring?Geçici teklif doküman URL'i
tempPreInfoDocumentUrlstring?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.

Dahili Kullanım

Bu event sadece dahili kullanım içindir ve harici webhook'lara gönderilmez.

Alan Referansı

AlanTipZorunluAçıklama
$eventstringEvent tanımlayıcısı (proposal_premium.purchasing)
proposalIdstringTeklif ID'si
productIdintÜrün ID'si
installmentNumberintTaksit sayısı
paymentTypePaymentOptionÖ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ı

AlanTipZorunluAçıklama
$eventstringEvent tanımlayıcısı (proposal_premium.purchased)
proposalIdstringTeklif ID'si
policyIdstringOluşturulan poliçe ID'si
productIdintÜrün ID'si
installmentNumberintTaksit sayısı
paymentTypePaymentOptionÖdeme tipi (enum)
policyStartDateDateOnlyPoliçe başlangıç tarihi (YYYY-MM-DD)
policyEndDateDateOnlyPoliç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ı

AlanTipZorunluAçıklama
$eventstringEvent tanımlayıcısı (proposal_premium.purchase_failed)
proposalIdstringTeklif ID'si
productIdintÜrün ID'si
installmentNumberintTaksit sayısı
paymentTypePaymentOptionÖdeme tipi (enum)
failureReasonstring?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ı

AlanTipZorunluAçıklama
$eventstringEvent tanımlayıcısı (policy.created)
policyIdstringPoliçe ID'si
proposalIdstring?Teklif ID'si
productIdint?Ürün ID'si
installmentNumberint?Taksit sayısı
paymentTypePaymentOptionÖdeme tipi (enum)
insuranceCompanyInsuranceCompanyModelSigorta şirketi bilgileri
startDateDateOnlyPoliçe başlangıç tarihi (YYYY-MM-DD)
endDateDateOnlyPoliçe bitiş tarihi (YYYY-MM-DD)
renewalNumberbyteYenileme numarası
productBranchProductBranchÜrün dalı (enum)
insurerCustomerIdGuidSigorta ettiren müşteri ID'si
insuredCustomerIdGuidSigortalı müşteri ID'si
insurerIdentityNumberstring?🔒 Sigorta ettiren TC/VKN
insuredIdentityNumberstring?🔒 Sigortalı TC/VKN
insuredCustomerEmailstring?🔒 Sigortalı email
insurerCustomerEmailstring?🔒 Sigorta ettiren email
fromPolicyTransferboolPoliçe transferi mi?
netPremiumdecimal?Net prim tutarı
grossPremiumdecimal?Brüt prim tutarı
channelChannelSatış kanalı (enum)
insuranceCompanyPolicyNostringSigorta ş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ı

AlanTipZorunluAçıklama
$eventstringEvent tanımlayıcısı (policy.updated)
policyIdstringPoliçe ID'si
installmentNumberint?Taksit sayısı
paymentTypePaymentOptionÖdeme tipi (enum)
endorsementNumberbyteZeyilname numarası
isCancelboolİptal işlemi mi?
netPremiumdecimalNet prim tutarı
grossPremiumdecimalBrüt prim tutarı
insurerIdentityNumberstring?🔒 Sigorta ettiren TC/VKN
insuredIdentityNumberstring?🔒 Sigortalı TC/VKN
insuranceCompanyPolicyNostringSigorta ş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ı

AlanTipZorunluAçıklama
$eventstringEvent tanımlayıcısı (customer.created)
customerIdGuidMüşteri ID'si
customerTypeCustomerTypeMüşteri tipi (enum)
identityNumberstring?🔒 TC Kimlik / Yabancı kimlik numarası
firstNamestring?Ad (bireysel/yabancı müşteriler için)
lastNamestring?Soyad (bireysel/yabancı müşteriler için)
companyTitlestring?Şirket unvanı (tüzel müşteriler için)
taxNumberstring?🔒 Vergi numarası (tüzel müşteriler için)
birthDateDateOnly?Doğum tarihi (YYYY-MM-DD)
genderGender?Cinsiyet (enum)
maritalStatusMaritalStatus?Medeni durum (enum)
provincestring?İl
districtstring?İlçe
emailstring?🔒 E-posta adresi
phoneNumberstring?🔒 Telefon numarası
createdAtDateTimeOluşturulma tarihi (ISO 8601)
branchstring?Şube bilgisi
creationChannelChannelOluş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ı

AlanTipZorunluAçıklama
$eventstringEvent tanımlayıcısı (customer.updated)
customerIdGuidMüşteri ID'si
customerTypeCustomerTypeMüşteri tipi (enum)
identityNumberstring?🔒 TC Kimlik / Yabancı kimlik numarası
firstNamestring?Ad
lastNamestring?Soyad
companyTitlestring?Şirket unvanı
taxNumberstring?🔒 Vergi numarası
birthDateDateOnly?Doğum tarihi (YYYY-MM-DD)
genderGender?Cinsiyet (enum)
maritalStatusMaritalStatus?Medeni durum (enum)
provincestring?İl
districtstring?İlçe
emailstring?🔒 E-posta adresi
phoneNumberstring?🔒 Telefon numarası
updatedAtDateTimeGüncellenme tarihi (ISO 8601)
updatedByUserReference?Güncellemeyi yapan kullanıcı
branchstring?Şube bilgisi

Örnek Payload

{
"$event": "customer.updated",
"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": "Beşiktaş",
"email": "ahmet.yeni@example.com",
"phoneNumber": "5321234567",
"updatedAt": "2026-03-10T16:45:00Z",
"updatedBy": {
"id": "d4e5f6a7-b8c9-0123-def4-567890abcdef",
"name": "Operatör Adı",
"email": "operator@acente.com",
"userType": "AGENT"
},
"branch": null
}

Müşteri KVKK (Kişisel Verilerin Korunması Kanunu) kapsamında açık rıza onayı verdiğinde tetiklenir.

Alan Referansı

AlanTipZorunluAçıklama
$eventstringEvent tanımlayıcısı (customer.kvkk_consent_given)
customerIdGuidMüşteri ID'si
customerTypeCustomerTypeMüşteri tipi (enum)
channelConsentChannelOnayın alındığı kanal (enum)
givenAtDateTimeOffsetOnay verilme tarihi (ISO 8601)

Örnek Payload

{
"$event": "customer.kvkk_consent_given",
"customerId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"customerType": "INDIVIDUAL",
"channel": "WEB",
"givenAt": "2026-03-10T14:30:00+03:00"
}

Müşteri KVKK açık rıza onayını geri çektiğinde tetiklenir.

Alan Referansı

AlanTipZorunluAçıklama
$eventstringEvent tanımlayıcısı (customer.kvkk_consent_revoked)
customerIdGuidMüşteri ID'si
customerTypeCustomerTypeMüşteri tipi (enum)
channelConsentChannelGeri çekme kanalı (enum)
revokedAtDateTimeOffsetGeri çekme tarihi (ISO 8601)

Örnek Payload

{
"$event": "customer.kvkk_consent_revoked",
"customerId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"customerType": "INDIVIDUAL",
"channel": "MANUAL",
"revokedAt": "2026-03-10T16:00:00+03:00"
}

Müşteri ETK (Ticari Elektronik İleti) onayı verdiğinde tetiklenir.

Alan Referansı

AlanTipZorunluAçıklama
$eventstringEvent tanımlayıcısı (customer.etk_consent_given)
customerIdGuidMüşteri ID'si
customerTypeCustomerTypeMüşteri tipi (enum)
channelConsentChannelOnayın alındığı kanal (enum)
givenAtDateTimeOffsetOnay verilme tarihi (ISO 8601)

Örnek Payload

{
"$event": "customer.etk_consent_given",
"customerId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"customerType": "INDIVIDUAL",
"channel": "WEB",
"givenAt": "2026-03-10T14:30:00+03:00"
}

Müşteri ETK onayını geri çektiğinde tetiklenir.

Alan Referansı

AlanTipZorunluAçıklama
$eventstringEvent tanımlayıcısı (customer.etk_consent_revoked)
customerIdGuidMüşteri ID'si
customerTypeCustomerTypeMüşteri tipi (enum)
channelConsentChannelGeri çekme kanalı (enum)
revokedAtDateTimeOffsetGeri çekme tarihi (ISO 8601)

Örnek Payload

{
"$event": "customer.etk_consent_revoked",
"customerId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"customerType": "INDIVIDUAL",
"channel": "MANUAL",
"revokedAt": "2026-03-10T16:00:00+03:00"
}

vehicle.created async

Bir müşteriye yeni araç kaydı oluşturulduğunda tetiklenir.

Alan Referansı

AlanTipZorunluAçıklama
$eventstringEvent tanımlayıcısı (vehicle.created)
customerIdGuidAraç sahibi müşteri ID'si
vehicleIdGuidAraç ID'si
platestring?🔒 Plaka numarası
brandNamestring?Marka adı
modelNamestring?Model adı
modelYearint?Model yılı
utilizationStyleVehicleUtilizationStyle?Kullanım tarzı (enum)
fuelVehicleFuel?Yakıt tipi (enum)
chassisstring?🔒 Şasi numarası
enginestring?🔒 Motor numarası
registrationDateDateOnly?Tescil tarihi (YYYY-MM-DD)
createdAtDateTimeOluşturulma tarihi (ISO 8601)

Örnek Payload

{
"$event": "vehicle.created",
"customerId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"vehicleId": "c3d4e5f6-a7b8-9012-cdef-345678901234",
"plate": "34ABC123",
"brandName": "Toyota",
"modelName": "Corolla",
"modelYear": 2024,
"utilizationStyle": "PRIVATE_CAR",
"fuel": "HYBRID",
"chassis": "JTDKN3DU5A0123456",
"engine": "1NZ-FXE",
"registrationDate": "2024-06-15",
"createdAt": "2026-03-10T14:30:00Z"
}

vehicle.updated async

Mevcut bir araç kaydı güncellendiğinde tetiklenir.

Alan Referansı

AlanTipZorunluAçıklama
$eventstringEvent tanımlayıcısı (vehicle.updated)
customerIdGuidAraç sahibi müşteri ID'si
vehicleIdGuidAraç ID'si
platestring?🔒 Plaka numarası
brandNamestring?Marka adı
modelNamestring?Model adı
modelYearint?Model yılı
utilizationStyleVehicleUtilizationStyle?Kullanım tarzı (enum)
fuelVehicleFuel?Yakıt tipi (enum)
chassisstring?🔒 Şasi numarası
enginestring?🔒 Motor numarası
registrationDateDateOnly?Tescil tarihi (YYYY-MM-DD)
updatedAtDateTimeGüncellenme tarihi (ISO 8601)
updatedByUserReference?Güncellemeyi yapan kullanıcı

Örnek Payload

{
"$event": "vehicle.updated",
"customerId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"vehicleId": "c3d4e5f6-a7b8-9012-cdef-345678901234",
"plate": "34ABC123",
"brandName": "Toyota",
"modelName": "Corolla",
"modelYear": 2024,
"utilizationStyle": "PRIVATE_CAR",
"fuel": "HYBRID",
"chassis": "JTDKN3DU5A0123456",
"engine": "1NZ-FXE",
"registrationDate": "2024-06-15",
"updatedAt": "2026-03-10T16:45:00Z",
"updatedBy": {
"id": "d4e5f6a7-b8c9-0123-def4-567890abcdef",
"name": "Operatör Adı",
"email": "operator@acente.com",
"userType": "AGENT"
}
}

property.created async

Bir müşteriye yeni gayrimenkul kaydı oluşturulduğunda tetiklenir.

Alan Referansı

AlanTipZorunluAçıklama
$eventstringEvent tanımlayıcısı (property.created)
customerIdGuidGayrimenkul sahibi müşteri ID'si
propertyIdGuidGayrimenkul ID'si
propertyNumberlong?Bina/bağımsız bölüm numarası
addressstring?🔒 Adres
squareMeterint?Metrekare
constructionYearint?İnşaat yılı
utilizationStylePropertyUtilizationStyle?Kullanım tarzı (enum)
ownershipTypePropertyOwnershipType?Mülkiyet tipi (enum)
createdAtDateTimeOluşturulma tarihi (ISO 8601)

Örnek Payload

{
"$event": "property.created",
"customerId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"propertyId": "e5f6a7b8-c9d0-1234-ef56-789012345678",
"propertyNumber": 12345678,
"address": "Kadıköy Mah. Bağdat Cad. No:123 Daire:5",
"squareMeter": 120,
"constructionYear": 2015,
"utilizationStyle": "HOUSE",
"ownershipType": "PROPRIETOR",
"createdAt": "2026-03-10T14:30:00Z"
}

property.updated async

Mevcut bir gayrimenkul kaydı güncellendiğinde tetiklenir.

Alan Referansı

AlanTipZorunluAçıklama
$eventstringEvent tanımlayıcısı (property.updated)
customerIdGuidGayrimenkul sahibi müşteri ID'si
propertyIdGuidGayrimenkul ID'si
propertyNumberlong?Bina/bağımsız bölüm numarası
addressstring?🔒 Adres
squareMeterint?Metrekare
constructionYearint?İnşaat yılı
utilizationStylePropertyUtilizationStyle?Kullanım tarzı (enum)
ownershipTypePropertyOwnershipType?Mülkiyet tipi (enum)
updatedAtDateTimeGüncellenme tarihi (ISO 8601)
updatedByUserReference?Güncellemeyi yapan kullanıcı

Örnek Payload

{
"$event": "property.updated",
"customerId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"propertyId": "e5f6a7b8-c9d0-1234-ef56-789012345678",
"propertyNumber": 12345678,
"address": "Kadıköy Mah. Bağdat Cad. No:123 Daire:5",
"squareMeter": 120,
"constructionYear": 2015,
"utilizationStyle": "HOUSE",
"ownershipType": "TENANT",
"updatedAt": "2026-03-10T16:45:00Z",
"updatedBy": {
"id": "d4e5f6a7-b8c9-0123-def4-567890abcdef",
"name": "Operatör Adı",
"email": "operator@acente.com",
"userType": "AGENT"
}
}

case.created async

Yeni bir talep oluşturulduğunda tetiklenir. Satış fırsatı, zeyilname, iptal ve şikayet tipleri için geçerlidir.

Alan Referansı

AlanTipZorunluAçıklama
$eventstringEvent tanımlayıcısı (case.created)
caseIdstringTalep ID'si
caseRefstringTalep referans numarası
caseTypeCaseTypeTalep tipi (enum)
customerIdGuidMüşteri ID'si
productBranchProductBranch?Ürün dalı (enum)

Örnek Payload

{
"$event": "case.created",
"caseId": "67cf1a2b3c4d5e6f7a8b9c0d",
"caseRef": "SF-2026-001234",
"caseType": "SALE_OPPORTUNITY",
"customerId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"productBranch": "KASKO"
}

case.state_changed async

Bir talebin ana durumu veya alt durumu değiştiğinde tetiklenir.

Alan Referansı

AlanTipZorunluAçıklama
$eventstringEvent tanımlayıcısı (case.state_changed)
caseIdstringTalep ID'si
caseRefstringTalep referans numarası
customerIdGuidMüşteri ID'si
newMainStateCaseMainStateYeni ana durum (enum)
newSubStateCaseSubStateYeni alt durum (enum)

Örnek Payload

{
"$event": "case.state_changed",
"caseId": "67cf1a2b3c4d5e6f7a8b9c0d",
"caseRef": "SF-2026-001234",
"customerId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"newMainState": "IN_PROGRESS",
"newSubState": "IN_PROGRESS_UNDER_ANALYSIS"
}

Model Referansları

PremiumModel

Prim detaylarını içeren model.

AlanTipZorunluAçıklama
installmentNumberintTaksit numarası
netPremiumdecimalNet prim tutarı
grossPremiumdecimalBrüt prim tutarı
commissiondecimalKomisyon tutarı
exchangeRatedecimalDöviz kuru
currencyCurrencyPara birimi (enum)
insuranceCompanyProposalNumberstring?Sigorta şirketi teklif numarası

CustomerModel (Polimorfik)

Müşteri bilgilerini içeren polimorfik model. $type alanına göre 3 farklı tip olabilir.

IndividualCustomerModel ($type: "individual")

Bireysel müşteri modeli.

AlanTipZorunluAçıklama
$typestring"individual" sabit değer
identityNumberstring🔒 TC Kimlik numarası
birthDateDateOnlyDoğum tarihi (YYYY-MM-DD)
fullNamestring🔒 Ad soyad
phoneNumberCustomerPhoneNumber?🔒 Telefon numarası
emailCustomerEmail?🔒 E-posta adresi
cityInsuranceParameter?İl bilgisi
districtInsuranceParameter?İlçe bilgisi

ForeignCustomerModel ($type: "foreign")

Yabancı uyruklu müşteri modeli.

AlanTipZorunluAçıklama
$typestring"foreign" sabit değer
identityNumberstring🔒 Yabancı kimlik numarası
birthDateDateOnlyDoğum tarihi (YYYY-MM-DD)
fullNamestring🔒 Ad soyad
phoneNumberCustomerPhoneNumber?🔒 Telefon numarası
emailCustomerEmail?🔒 E-posta adresi
cityInsuranceParameter?İl bilgisi
districtInsuranceParameter?İlçe bilgisi

CompanyCustomerModel ($type: "company")

Tüzel müşteri (şirket) modeli.

AlanTipZorunluAçıklama
$typestring"company" sabit değer
titlestring🔒 Şirket unvanı
taxNumberstring🔒 Vergi numarası
phoneNumberCustomerPhoneNumber?🔒 Telefon numarası
emailCustomerEmail?🔒 E-posta adresi
cityInsuranceParameter?İl bilgisi
districtInsuranceParameter?İlçe bilgisi

CustomerPhoneNumber

Telefon numarası detaylarını içeren model.

AlanTipZorunluAçıklama
numberstringTam telefon numarası
countryCodeintÜlke kodu (örn: 90)
areaCodestringAlan kodu (örn: 543)
numberWithoutAreaCodestringAlan kodu hariç numara

CustomerEmail

E-posta adresini içeren model.

AlanTipZorunluAçıklama
valuestringE-posta adresi

InsuranceParameter

Sigorta parametresi modeli (il, ilçe vb. için kullanılır).

AlanTipZorunluAçıklama
valuestringParametre değeri/kodu
textstringParametre açıklaması

InsuranceCompanyModel

Sigorta şirketi bilgilerini içeren model.

AlanTipZorunluAçıklama
idintSigorta şirketi ID'si
namestringSigorta şirketi adı
logostring?Logo URL'i
enabledboolAktif mi?
supportedPaymentOptionsPaymentOption[]Desteklenen ödeme seçenekleri

UserReference

Güncelleme yapan kullanıcıyı temsil eden hafif referans modeli. customer.updated, vehicle.updated ve property.updated event'lerinde kullanılır.

AlanTipZorunluAçıklama
idGuidKullanıcı ID'si
namestringKullanıcı görünen adı
emailstring?Kullanıcı e-posta adresi
userTypeUserType?Kullanıcı tipi (ADMIN_PANEL, AGENT, CUSTOMER)

Enum Değerleri

PaymentOption

Ödeme seçenekleri.

DeğerJSON DeğeriAçıklama
UnknownUNKNOWNBilinmeyen
SyncCreditCardSYNC_CREDIT_CARDSenkron kredi kartı ödemesi
SyncOpenAccountSYNC_OPEN_ACCOUNTSenkron açık hesap ödemesi
Async3DSecureASYNC_3D_SECUREAsenkron 3D Secure ödemesi
AsyncInsuranceCompanyRedirectASYNC_INSURANCE_COMPANY_REDIRECTSigorta şirketi yönlendirmeli ödeme
AsyncThirdParty3DSecureASYNC_THIRD_PARTY_3D_SECUREÜçüncü parti 3D Secure ödemesi

Currency

Para birimi.

DeğerJSON DeğeriAçıklama
UnknownUNKNOWNBilinmeyen
TurkishLiraTURKISH_LIRATürk Lirası (TRY)
UnitedStatesDollarUNITED_STATES_DOLLARAmerikan Doları (USD)
EuroEUROEuro (EUR)

ProductBranch

Ürün dalları.

DeğerJSON DeğeriAçıklama
KaskoKASKOKasko sigortası
TrafikTRAFIKZorunlu trafik sigortası
DaskDASKDASK (Zorunlu deprem sigortası)
KonutKONUTKonut sigortası
TssTSSTamamlayıcı sağlık sigortası
ImmIMMİhtiyari mali mesuliyet
YesilKartYESIL_KARTYeşil kart sigortası
SaglikSAGLIKSağlık sigortası
SeyahatSEYAHATSeyahat sigortası
FerdiFERDIFerdi kaza sigortası
IsyeriISYERIİşyeri sigortası

Channel

Satış kanalları.

DeğerJSON DeğeriAçıklama
UnknownUNKNOWNBilinmeyen
ManualMANUALManuel giriş
WebsiteWEBSITEWeb sitesi
GoogleAdsGOOGLE_ADSGoogle Ads
CallCenterCALL_CENTERÇağrı merkezi
MobileAppMOBILE_APPMobil uygulama
ApiAPIAPI entegrasyonu
PartnerPARTNERİş ortağı

CustomerType

Müşteri tipleri.

DeğerJSON DeğeriAçıklama
IndividualINDIVIDUALBireysel müşteri
CompanyCOMPANYTüzel müşteri (şirket)
ForeignFOREIGNYabancı uyruklu müşteri

Gender

Cinsiyet.

DeğerJSON DeğeriAçıklama
UnknownUNKNOWNBilinmeyen
MaleMALEErkek
FemaleFEMALEKadın
OtherOTHERDiğer

MaritalStatus

Medeni durum.

DeğerJSON DeğeriAçıklama
UnknownUNKNOWNBilinmeyen
SingleSINGLEBekar
MarriedMARRIEDEvli

ConsentChannel

Onay kanalları. KVKK ve ETK onay event'lerinde kullanılır.

DeğerJSON DeğeriAçıklama
ManualMANUALManuel giriş
WebWEBWeb sitesi
ChatbotCHATBOTChatbot
SMSSMSSMS
EmailEMAILE-posta
ExternalEXTERNALHarici sistem

VehicleFuel

Araç yakıt tipleri.

DeğerJSON DeğeriAçıklama
GasolineGASOLINEBenzin
DieselDIESELDizel
LpgLPGLPG
ElectricELECTRICElektrik
LpgGasolineLPG_GASOLINELPG + Benzin
HybridHYBRIDHibrit

VehicleUtilizationStyle

Araç kullanım tarzları. Sık kullanılan değerler aşağıda listelenmiştir.

DeğerJSON DeğeriAçıklama
UnknownUNKNOWNBilinmeyen
PrivateCarPRIVATE_CARHususi otomobil
TaxiTAXITaksi
MotorcycleMOTORCYCLEMotosiklet
TruckTRUCKKamyon
PickupTruckPICKUP_TRUCKKamyonet (açık kasa)
ClosedBedPickupCLOSED_BED_PICKUPKamyonet (kapalı kasa)
RentalCarRENTAL_CARKiralık araç
JeepJEEPJeep
JeepSUVJEEP_SUVJeep SUV
MinibusSharedTaxiMINIBUS_SHARED_TAXIMinibüs / Dolmuş
MediumBusMEDIUM_BUSOrta boy otobüs
LargeBusLARGE_BUSBüyük otobüs
TractorTRACTORTraktör
TrailerTRAILERRömork
TankerTANKERTanker
ConstructionMachineryCONSTRUCTION_MACHINERYİş makinesi
AmbulanceAMBULANCEAmbulans
HearseHEARSECenaze aracı
Tam Liste

Yukarıdaki tablo sık kullanılan değerleri içerir. Toplam 60'ın üzerinde kullanım tarzı mevcuttur. Tam liste için API referansını inceleyiniz.

PropertyUtilizationStyle

Gayrimenkul kullanım tarzları.

DeğerJSON DeğeriAçıklama
UnknownUNKNOWNBilinmeyen
HouseHOUSEKonut
BusinessBUSINESSİşyeri
OtherOTHERDiğer

PropertyOwnershipType

Gayrimenkul mülkiyet tipleri.

DeğerJSON DeğeriAçıklama
UnknownUNKNOWNBilinmeyen
ProprietorPROPRIETORMülk sahibi
TenantTENANTKiracı

CaseType

Talep tipleri.

DeğerJSON DeğeriAçıklama
SaleOpportunitySALE_OPPORTUNITYSatış fırsatı
EndorsementENDORSEMENTZeyilname
CancelCANCELİptal
ComplaintCOMPLAINTŞikayet

CaseMainState

Talep ana durumları.

DeğerJSON DeğeriAçıklama
FailFAILBaşarısız
OpenOPENAçık
InProgressIN_PROGRESSSüreçte
SuccessSUCCESSBaşarılı

CaseSubState

Talep alt durumları. Ana duruma göre gruplandırılmıştır.

Fail (Başarısız) Durumları:

JSON DeğeriAçıklama
FAIL_NO_RESPONSEYanıt alınamadı
FAIL_INVALID_CASEGeçersiz talep
FAIL_CUSTOMER_WITHDRAWNMüşteri çekildi
FAIL_PAYMENT_ERRORÖdeme hatası
FAIL_DECLINED_CARD_INFORMATIONKart bilgisi reddedildi
FAIL_FOREIGN_USERYabancı kullanıcı kısıtlaması
FAIL_TAKEN_ELSEWHERERakipten alındı (satış fırsatı)
FAIL_PRICE_TOO_HIGHFiyat çok yüksek (satış fırsatı)
FAIL_ASSET_ACQUISITIONVarlık edinilmedi (satış fırsatı)
FAIL_ASSET_SOLDVarlık satıldı (satış fırsatı)
FAIL_UNRESOLVEDÇözülemedi (şikayet)
FAIL_REFERRED_TO_LEGALHukuka sevk edildi (şikayet)
FAIL_CUSTOMER_UNSATISFIEDMüşteri memnun kalmadı (şikayet)
FAIL_MISSING_DOCUMENTSEksik belge (zeyilname/iptal)
FAIL_INSURER_DENIEDSigortacı reddetti (zeyilname/iptal)
FAIL_CONDITIONS_NOT_METKoşullar karşılanmadı (zeyilname/iptal)

Open (Açık) Durumları:

JSON DeğeriAçıklama
OPEN_INITIALYeni oluşturuldu
OPEN_COLLECTING_INFORMATIONBilgi toplanıyor
OPEN_DELAYEDGecikmiş
OPEN_WAITINGDış yanıt bekleniyor

InProgress (Süreçte) Durumları:

JSON DeğeriAçıklama
IN_PROGRESS_UNDER_ANALYSISAnaliz altında
IN_PROGRESS_PROPOSAL_PREPAREDTeklif hazırlandı
IN_PROGRESS_AWAITING_APPROVALOnay bekleniyor
IN_PROGRESS_TO_BE_RECONTACTEDYeniden iletişime geçilecek

Success (Başarılı) Durumları:

JSON DeğeriAçıklama
SUCCESS_COMPLETEDBaşarıyla tamamlandı

🔒 Veri Güvenliği

Maskelenmiş Alanlar

Tablolarda 🔒 simgesiyle işaretlenmiş alanlar (TC kimlik, email, telefon, vergi numarası, plaka, şasi, motor numarası, adres vb.) hassas kişisel veri içerir. Bu alanlar:

  • Loglarda maskelenerek gösterilir
  • KVKK ve GDPR uyumluluğu kapsamında korunur
  • Güvenli bir şekilde iletilir ancak loglama sistemlerinde tam değerleri gösterilmez

Signature Validasyonu

Webhook'larınızın güvenliğini sağlamak için, gelen isteklerin gerçekten InsurUp tarafından gönderildiğini doğrulamak amacıyla imza doğrulaması yapmanız önemlidir.

İmza, x-webhook-signature header'ında gönderilir ve payload'ın secret ile SHA-256 algoritması kullanılarak şifrelenmesiyle oluşturulur.

Python

import hmac
import hashlib

def validate_signature(secret, payload, signature):
computed_signature = hmac.new(secret.encode(), payload.encode(), hashlib.sha256).hexdigest()
return hmac.compare_digest(computed_signature, signature)

JavaScript

const crypto = require('crypto');

function validateSignature(secret, payload, signature) {
const computedSignature = crypto
.createHmac('sha256', secret)
.update(payload, 'utf8')
.digest('hex');
return crypto.timingSafeEqual(Buffer.from(computedSignature, 'hex'), Buffer.from(signature, 'hex'));
}

C#

bool ValidateSignature(string secret, string payload, string signature)
{
using var hmac = new HMACSHA256(Encoding.UTF8.GetBytes(secret));

var computedHash = hmac.ComputeHash(Encoding.UTF8.GetBytes(payload));
var computedSignature = BitConverter.ToString(computedHash).Replace("-", "").ToLower();

return computedSignature == signature.ToLower();
}

PHP

function validate_signature($secret, $payload, $signature) {
$computed_signature = hash_hmac('sha256', $payload, $secret);
return hash_equals($computed_signature, $signature);
}

Java

import javax.crypto.Mac;
import javax.crypto.spec.SecretKeySpec;
import java.util.Base64;

public class SignatureValidator {
public static boolean validateSignature(String secret, String payload, String signature) throws Exception {
Mac sha256_HMAC = Mac.getInstance("HmacSHA256");
SecretKeySpec secret_key = new SecretKeySpec(secret.getBytes(), "HmacSHA256");
sha256_HMAC.init(secret_key);

byte[] hash = sha256_HMAC.doFinal(payload.getBytes());
StringBuilder hexString = new StringBuilder();
for (byte b : hash) {
String hex = Integer.toHexString(0xff & b);
if (hex.length() == 1) hexString.append('0');
hexString.append(hex);
}
return hexString.toString().equals(signature.toLowerCase());
}
}

Hata Yönetimi ve Yeniden Deneme

Webhook endpoint'iniz başarılı bir yanıt (HTTP 2xx) döndürmezse, InsurUp sistemi otomatik olarak yeniden deneme yapar:

  • Maksimum deneme sayısı: 3
  • Deneme aralığı: Üstel geri çekilme (exponential backoff)
  • Timeout: Her istek için 30 saniye
En İyi Uygulamalar
  1. Webhook endpoint'iniz her zaman hızlı yanıt vermelidir (< 5 saniye)
  2. Uzun süren işlemleri asenkron olarak kuyruğa alın
  3. İdempotent işlem yapın - aynı webhook birden fazla kez gelebilir
  4. x-webhook-delivery header'ını kullanarak tekrarlayan istekleri tespit edin