Talep
Bazı sigorta tipleri teklif vermez; bu tiplerde alıcının bilgilerini talep olarak, sağlayıcı bağlantınız üzerinden sağlayıcınıza iletirsiniz. Talebi POST /api/v1/insurance/leads ile açarsınız; sonucunu talep ucundan ve webhook ile izlersiniz.
- Talep bir iletimdir. Lunixi talebi sağlayıcınıza iletir ve iletimin sonucunu gösterir. Talepte teklif, prim, tahsilat, poliçe ve belge yoktur; sonraki adım (alıcıyla iletişim, teklif) sağlayıcıdadır ve talepte yer almaz.
- Talep yalnızca API yolundadır. Checkout Form'da ve ödeme linkinde talep yoktur.
- Talep ödemeye bağlanmaz. Talepte tutar, para birimi, sepet kalemi ve ödeme yoktur.
Kimlik doğrulama ve imzalama: Akışlar › Kimlik doğrulama.
Talep tipleri
| Tip | Talep | Şema |
|---|---|---|
MOTOR_THIRD_PARTY_LIABILITY | Zorunlu trafik sigortası | Talep şeması sürüm 1 |
MOTOR_COMPREHENSIVE | Kasko | Talep şeması sürüm 1 |
CARGO_TRANSIT | Karayolu yük taşıma (nakliyat) sigortası | Talep şeması sürüm 1 |
Talep açabilmeniz için:
- Tip hesabınızda açık olmalı ve sigortayı API yolunda kullanıyor olmalısınız.
- Bağlantılarınızda bu tip için talep alan, açık bir sağlayıcı ürünü bulunmalıdır.
Koşullardan biri karşılanmazsa istek 412 insurance.type.not_available döner. Yalnızca talep alan tipler (CARGO_TRANSIT) teklif vermediği için uygunluk listesinde yer almaz ve teklif istekleri 412 insurance.type.not_available alır.
MOTOR_THIRD_PARTY_LIABILITY ve MOTOR_COMPREHENSIVE teklif de verir: Sigorta Tipleri › MOTOR_THIRD_PARTY_LIABILITY, MOTOR_COMPREHENSIVE. Talep ve teklif bağlantılarınızdaki ayrı ürünlerle çalışır: talep için talep alan, teklif için teklif veren bir ürün gerekir.
Akış
Alıcının bilgilerini toplayın
Tipin talep şemasındaki alanları alıcınızdan alın: Sigorta Tipleri › Talep şemaları.
Talebi açın
POST /api/v1/insurance/leads ucunu tip ve alanlarla çağırın. Lunixi talebi doğrular, kaydeder ve aynı istekte sağlayıcınıza iletir.
Sonucu işleyin
Yanıttaki status değerine göre devam edin: Sonuçlar. Sağlayıcı talebi aldığında insurance.lead.submitted webhook'u gönderilir.
Talep açma: POST /api/v1/insurance/leads
Idempotency-Key zorunludur. Bkz. Tekrar ve Idempotency-Key.
| Alan | Tip | Zorunlu | Açıklama |
|---|---|---|---|
insuranceType | string | Evet | Talep tipi, ör. CARGO_TRANSIT. |
schemaVersion | integer | Hayır | Talep şemasının sürümü. Gönderilmezse tipin güncel talep şeması kullanılır. |
policyholder | nesne | Tipe göre | Talep sahibi. |
| Tip nesnesi | nesne | Tipe göre | vehicle, shipment gibi; tipin talep şemasındaki adla. |
company | nesne | Tipe göre | Yalnızca CARGO_TRANSIT: firmanın vergi kimliği. |
note | string | Hayır | Talep notu. Metin, en fazla 1000 karakter. |
- Alanlar ve zorunlulukları tipin talep şemasındadır: Talep şemaları. Şemada olmayan bir alan reddedilir.
- Bütün alan ihlalleri tek bir
422 insurance.validation.invalidyanıtında döner; ihlal varsa talep açılmaz ve sağlayıcıya istek gitmez. - Biçimler: Veri Biçimleri.
MOTOR_COMPREHENSIVE için bir talep isteği. Değerler örnektir; açılı parantez içindeki değerlerin yerine alıcınızın bilgilerini yazın:
{
"insuranceType": "MOTOR_COMPREHENSIVE",
"policyholder": {
"identityType": "TCKN",
"identityNumber": "<kimlik numarası>",
"birthDate": "<YYYY-MM-DD>",
"email": "<e-posta>",
"phone": "<E.164 telefon>"
},
"vehicle": {
"plate": "<plaka>",
"registrationDocument": {
"serial": "<seri kodu>",
"number": "<ruhsat numarası>"
}
},
"note": "<talep notu>"
}source lunixi-sign.sh
BODY='<talep isteği, boşluksuz JSON>'
lunixi_sign POST "/api/v1/insurance/leads" "$BODY"
curl -X POST "https://api-gateway.lunixi.com/api/v1/insurance/leads" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: insurance-lead-1001" \
-H "X-Key-Id: $LUNIXI_KEY_ID" \
-H "X-Date: $DATE" \
-H "X-Nonce: $NONCE" \
-H "Digest: $DIGEST" \
-H "X-Signature: $SIGNATURE" \
--data-raw "$BODY"CARGO_TRANSIT talebinin alanları ve örneği: Sigorta Tipleri › CARGO_TRANSIT.
Yanıt
İstek tamamlandığında 201 ve data içinde talep nesnesini döner. Sağlayıcı talebi aldıysa status SUBMITTED, sonuç bilinmiyorsa UNKNOWN olur.
Sonuçlar
| Sonuç | Yanıt | Talepte | Ne yapmalı |
|---|---|---|---|
| Sağlayıcı talebi aldı | 201 | status: SUBMITTED | Talep iletildi. insurance.lead.submitted gönderilir. |
| Sonuç bilinmiyor | 201 | status: UNKNOWN | İstek sağlayıcıya ulaştı ama sonucu bilinmiyor. Talep yeniden gönderilmez ve sonuç sonradan kesinleşmez. Gerekirse alıcınızla teyit edin; yeni talep açmanız gerekiyorsa yeni bir Idempotency-Key kullanın. |
| Sağlayıcı talebi reddetti | 422 insurance.lead.rejected | status: FAILED, errorCode: insurance.lead.rejected | Sağlayıcı talebi kabul etmedi; aynı istekle tekrar denemek sonucu değiştirmez. Bilgileri düzeltip yeni bir Idempotency-Key ile yeni talep açabilirsiniz. |
| Bağlantınızdaki ürün bir değeri kabul etmiyor | 422 insurance.validation.invalid (reason: not_supported_by_provider) | status: FAILED, errorCode: insurance.validation.invalid | İstek sağlayıcıya gönderilmedi. Örneğin ürün yalnızca Türkiye cep telefonu kabul ediyorsa başka bir numara bu sonucu alır. Değeri düzeltip yeni bir Idempotency-Key ile yeniden gönderin. |
| Sağlayıcıya ulaşılamadı | 503 insurance.provider.unavailable | status: FAILED, errorCode: insurance.provider.unavailable | Talep sağlayıcıya iletilmedi. Bir süre sonra yeni bir Idempotency-Key ile yeniden gönderin. |
details.leadId hata yanıtında talebin kimliğini taşır; talebi okuma ucundan görebilirsiniz. İşlem beklenmedik bir hatayla yarıda kalırsa yanıt 500 insurance.internal.integrity olur ve talep UNKNOWN görünür.
Tekrar ve Idempotency-Key
- Talep sağlayıcıya aynı istekte iletilir. İstek 45 saniyeye kadar sürebilir; istemcinizin zaman aşımını buna göre ayarlayın.
- Zaman aşımı ya da
5xxsonrasında yanıtı alamadıysanız isteği aynıIdempotency-Keyve aynı gövdeyle tekrarlayın. Talep ilk denemede açıldıysa yeni talep açılmaz; mevcut talep güncel durumuyla döner ve sağlayıcıya yeniden gönderilmez. - Aynı anahtar, talebin durumu ne olursa olsun aynı talebi döner.
FAILEDya daUNKNOWNbir talebi yeniden göndermek için yeni bir anahtar üretin.UNKNOWNbir talebi yeniden göndermek sağlayıcıda ikinci bir talep açabilir. - Aynı anahtarı farklı bir istekle (başka tip, sürüm ya da gövde) kullanırsanız
409 insurance.idempotency.conflictdöner.
Talep nesnesi
| Alan | Tip | Açıklama |
|---|---|---|
leadId | string | Talebin kimliği (insl_…). |
insuranceType | string | Talep tipi, ör. CARGO_TRANSIT. |
schemaVersion | integer | Talebin doğrulandığı talep şemasının sürümü. |
status | string | Talebin durumu; bkz. Durumlar. |
errorCode | string ya da null | Talep FAILED ise sebebin Lunixi kodu. |
requestMasked | nesne | Talep gövdesinin maskeli görüntüsü. Kişisel veriler ve not *** olarak görünür. |
submittedAt | string ya da null | Sağlayıcının talebi aldığı an. SUBMITTED olana kadar null. |
createdAt | string | Oluşturulma zamanı, ISO 8601. |
updatedAt | string | Son değişiklik zamanı, ISO 8601. |
Talepte sağlayıcının adı, kodu, ham mesajı ve talep referansı bulunmaz.
Durumlar
status | Anlamı |
|---|---|
PENDING | Talep açıldı, sağlayıcıya iletiliyor. Bu değeri yalnızca istek sürerken okuduğunuz ya da aynı Idempotency-Key ile tekrarladığınız isteklerde görürsünüz. 5 dakikadan eski PENDING talep UNKNOWN olarak görünür. |
SUBMITTED | Sağlayıcı talebi aldı. |
UNKNOWN | İstek sağlayıcıya ulaştı ama sonucu bilinmiyor. Talep yeniden gönderilmez. |
FAILED | Sağlayıcı talebi reddetti ya da istek sağlayıcıya ulaşmadı. Sebep errorCode alanındadır. |
SUBMITTED ve FAILED kesin durumlardır; değişmez. Sağlayıcının talep sonrası adımları (alıcıyla iletişim, teklif ya da poliçe) talebin durumuna yansımaz.
Listeleme: GET /api/v1/insurance/leads
Taleplerinizi en yeniden eskiye, cursor tabanlı sayfalar hâlinde döner.
| Sorgu parametresi | Tip | Açıklama |
|---|---|---|
limit | integer | Sayfa başına kayıt, 1-100. Varsayılan 25. |
cursor | string | Önceki yanıttaki pageInfo.nextCursor. İlk sayfada gönderilmez. |
insuranceType | string | Yalnız bu tipin talepleri. |
status | string | Yalnız bu durumdaki talepler: PENDING, SUBMITTED, UNKNOWN ya da FAILED. |
Yanıtta talepler data.items dizisindedir; sayfalama bilgisi pageInfo alanındadır. Bozuk bir cursor 422 insurance.validation.invalid (field: cursor) döner.
source lunixi-sign.sh
REQ_PATH="/api/v1/insurance/leads?limit=25&insuranceType=CARGO_TRANSIT"
lunixi_sign GET "$REQ_PATH"
curl "https://api-gateway.lunixi.com$REQ_PATH" \
-H "X-Key-Id: $LUNIXI_KEY_ID" \
-H "X-Date: $DATE" \
-H "X-Nonce: $NONCE" \
-H "X-Signature: $SIGNATURE"Okuma: GET /api/v1/insurance/leads/{leadId}
Tek bir talebi döner. Yanıtta data talep nesnesidir. Webhook alamadığınız bir sonucu doğrulamak için bu ucu kullanın.
Hatalar
| HTTP | code | Ne yapmalı |
|---|---|---|
400 | VALIDATION_ERROR | Biçimi düzeltin. Idempotency-Key eksikse ya da tanımlanmamış bir kök alan gönderildiyse de bu hata döner. |
404 | insurance.lead.not_found | Talep bulunamadı ya da başka bir hesaba ait. |
409 | insurance.idempotency.conflict | Aynı Idempotency-Key farklı bir istekle kullanıldı; yeni talep için yeni anahtar üretin. |
412 | insurance.type.not_available | Tip talep tipi değil, hesabınızda açık değil ya da bağlantılarınızda bu tip için talep alan bir ürün yok. |
422 | insurance.validation.invalid | details.errors[] alanlarını düzeltin. Bilinmeyen bir schemaVersion field: schemaVersion, reason: unsupported_schema_version ile döner. |
422 | insurance.lead.rejected | Sağlayıcı talebi kabul etmedi; talep FAILED olur. |
503 | insurance.provider.unavailable | Sağlayıcıya ulaşılamadı; talep açıldıysa FAILED olur. Bir süre sonra yeni bir Idempotency-Key ile yeniden gönderin. |
Ortak kodlar: Akışlar › Yanıt ve hatalar. Kodların ayrıntısı: Hata Kodları › Talep.
İlgili
- Sigorta Tipleri ve Şemalar: talep şemaları
- Webhook Olayları:
insurance.lead.submitted - Hata Kodları: talebin kodları