Uygunluk
Uygunluk uçları, sepet kalemleriniz için alıcıya hangi sigorta tiplerini sunabileceğinizi döner. Hangi sigortanın sunulacağı kalemlerdeki sigorta alanlarından, hesabınızdaki sigorta ayarlarından ve sağlayıcı bağlantılarınızdan çözülür. Bu uçlar salt okumadır: teklif oluşturmaz, sağlayıcıya istek göndermez.
| Uç | Ne zaman |
|---|---|
POST /api/v1/insurance/products | Ödemeyi oluşturmadan önce. Ödemede göndereceğiniz kalemleri gövdede gönderirsiniz. |
GET /api/v1/insurance/products | Ödemeyi oluşturduktan sonra. Ödemenin kimliğini gönderirsiniz; ödeme oluşturulurken gönderdiğiniz kalemler kullanılır. |
GET /api/v1/insurance/products (ödeme kimliği olmadan) | Sepet kalemi olmadan satılan tipler için: Sepet kalemi olmadan. |
Primi ödemenizin sepetine eklediğiniz akışta teklifi ve siparişi ödemeden önce alırsınız. Bu yüzden bu akışta POST ucunu kullanın; bkz. Prim ve Ödeme.
Kimlik doğrulama ve imzalama: Akışlar › Kimlik doğrulama.
Ödemeden önce: POST /api/v1/insurance/products
| Alan | Tip | Zorunlu | Açıklama |
|---|---|---|---|
currency | string | Evet | Ödemenin para birimi, ISO 4217 (TRY). |
context.items | dizi | Evet | Ödemede göndereceğiniz sepet kalemleri; 1-100 öge. Biçim, ödeme isteğinin basketItems[] biçimiyle aynıdır: Sepet Kalemleri. |
context.items[].insuranceContext | nesne | Hayır | Kalemin kişisel olmayan bilgileri (sefer, model, tarihler gibi). Yanıttaki prefill bunlardan doldurulur: Sepet Kalemleri › Sigorta bağlamı. |
context.items[].insuranceData | nesne | Hayır | Teklif ve poliçe için bildiğiniz kişisel bilgiler (sigortalı, rezervasyon kodu, IMEI, plaka gibi). Saklanmaz; yanıttaki providedFields ve quoteReady bununla hesaplanır: Sepet Kalemleri › Sigorta ön verisi. |
insuranceType | string | Hayır | Yalnız bu sigorta tipi. Örnek: TICKET_CANCELLATION. |
- Sigorta sunmak istediğiniz kalemlerde sigorta alanları bulunmalıdır. En az
insuranceCategorygereklidir: Sepet Kalemleri › Sigorta alanları. - Kalemlerden biri sigorta alanı taşıyorsa kalem
id'leri tekil olmalıdır. - Sigorta birim başınadır: sigorta alanı taşıyan kalemde her birimi ayrı kalem olarak gönderin.
- Kalemlerde
insuranceDatagönderebilirsiniz; saklanmaz, yalnızca bu yanıtın ön doldurma alanlarını hesaplamak için kullanılır: Ön veri ve otomatik teklif.
İki biletli bir sepet. Birinci bilet sefer bilgisini ve yolcunun bilgisini de taşır; ikincisi yalnızca sigorta alanlarını. Değerler örnektir; açılı parantez içindeki değerlerin yerine alıcınızın bilgilerini yazın:
{
"currency": "TRY",
"context": {
"items": [
{
"id": "ticket-1",
"name": "İzmir-Ankara tren bileti",
"price": 50000,
"category1": "bilet",
"itemType": "VIRTUAL",
"insuranceCategory": "TICKET",
"insuranceTypes": ["TICKET_CANCELLATION"],
"insuranceContext": {
"transportMode": "TRAIN",
"departureAt": "2025-12-23T12:50:00+03:00",
"originCity": "İzmir",
"destinationCity": "Ankara",
"carrier": "Örnek Taşıyıcı"
},
"insuranceData": {
"insured": [
{ "identityType": "TCKN", "identityNumber": "<kimlik numarası>", "birthDate": "<YYYY-MM-DD>" }
],
"tickets": { "priceAmount": 50000 }
}
},
{
"id": "ticket-2",
"name": "İzmir-Ankara tren bileti",
"price": 50000,
"category1": "bilet",
"itemType": "VIRTUAL",
"insuranceCategory": "TICKET",
"insuranceTypes": ["TICKET_CANCELLATION"]
}
]
}
}source lunixi-sign.sh
BODY='{"currency":"TRY","context":{"items":[...]}}'
lunixi_sign POST "/api/v1/insurance/products" "$BODY"
curl -X POST "https://api-gateway.lunixi.com/api/v1/insurance/products" \
-H "Content-Type: application/json" \
-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"BODY içindeki [...] yerine kalemlerinizi boşluksuz JSON olarak yazın.
Ödemeden sonra: GET /api/v1/insurance/products
| Sorgu parametresi | Tip | Zorunlu | Açıklama |
|---|---|---|---|
paymentIntentId | string (UUID) | Hayır | Lunixi ödeme kimliği. Gönderilmezse sepet kalemi olmadan satılan tipler döner: Sepet kalemi olmadan. |
currency | string | Evet | Ödemenin para birimi, ISO 4217. |
insuranceType | string | Hayır | Yalnız bu sigorta tipi. |
- Kalemler, ödeme
POST /api/v1/payments/intentsile oluşturulurken gönderdiğiniz kalemlerdir. Sonradan gönderdiğiniz bir değer kalemlerin yerine geçmez. - Kalemlerin
insuranceData'sı ödeme oluşturulduktan 24 saat sonra silinir; sonrasında yanıttaprovidedFieldsgörünmez. currencyödemenin para birimiyle aynı olmalıdır; değilse istek422 insurance.validation.invalid(reason: currency_mismatch) döner.- Ödeme sigorta alanlı kalemlerle oluşturulmadıysa liste boş döner.
source lunixi-sign.sh
REQ_PATH="/api/v1/insurance/products?paymentIntentId=<ödeme kimliği>¤cy=TRY"
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"Sepet kalemi olmadan: GET /api/v1/insurance/products
paymentIntentId göndermezseniz yanıt, sepet kalemi olmadan satılan sigorta tiplerini döner. Bu tipler yalnızca API yolunda satılır; akış: Sepet Kalemi Olmadan Satış.
- Yanıtta yalnızca sepet kalemi olmadan satılan tipler bulunur;
basketItemIdsboş dizidir. - Kalemlerle ya da ödeme kimliğiyle sorguladığınızda yalnızca sepet kalemi olmadan satılan tipler listelenmez.
- Teklif vermeyen talep tipleri bu listede yer almaz: Talep.
source lunixi-sign.sh
REQ_PATH="/api/v1/insurance/products?currency=TRY"
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"Yanıt
Uçların hepsi aynı yanıtı döner: data.products, sunulan sigorta tiplerinin listesidir. Liste, hesabınızdaki tip sırasına göre sıralanır.
| Alan | Tip | Açıklama |
|---|---|---|
insuranceType | string | Sigorta tipi kodu. Teklif isteğinde bu kodu gönderirsiniz. |
typeObject | string | Tipin teklif isteğindeki nesnesinin adı. Örnek: TICKET_CANCELLATION için tickets. |
schemaVersion | integer | Tipin geçerli şema sürümü. |
basketItemIds | string[] | Bu tipin sunulduğu sepet kalemlerinin id'leri. |
title | nesne | Tipin adı; dil koduna göre metin (tr-TR, en-US). |
description | nesne | Tipin açıklaması; dil koduna göre metin. Açıklama yoksa boş nesnedir. |
fields | dizi | Tipin şemasındaki alanlar: alan adı, biçimi ve hangi aşamada zorunlu olduğu (requiredAt: QUOTE ya da POLICY). |
prefill | nesne | Kalemlerin insuranceContext'inden doldurulan kişisel olmayan alanlar, teklif isteğinin biçiminde. insuranceData'da da verilen alan burada yer almaz. Yoksa boş nesnedir. Bkz. Ön veri ve otomatik teklif. |
providedFields | dizi | Kalemlerin insuranceData'sıyla gelen alanlar. Her öge path (alan yolu, ör. insured[0].birthDate) ve masked (değerin maskeli hâli) taşır. Yoksa boş dizidir. |
quoteReady | boolean | Kalemlerdeki bilgiler teklif için yeterliyse true: teklifi ek alan göndermeden alabilirsiniz. Bağlam ve ön veri yoksa false. |
insuranceDataIssues | dizi | Kullanılamayan ön veri. Her öge basketItemId, field ve reason taşır; değer yazılmaz. Sorun yoksa boş dizidir. |
fields, teklif isteğinizde hangi alanları göndermeniz gerektiğini gösterir. Alanların açıklaması ve kuralları: Sigorta Tipleri ve Şemalar.
Ön veri ve otomatik teklif
prefill, providedFields, quoteReady ve insuranceDataIssues, sepet kalemlerinin insuranceContext ve insuranceData alanlarından hesaplanır: Sepet Kalemleri › Sigorta ön verisi.
GETucunda kalemler ödeme oluşturulurken gönderdiğiniz kalemlerdir.POSTucunda gövdedekicontext.items[].insuranceDatakullanılır ve saklanmaz.providedFieldskişisel değeri hiçbir zaman açık döndürmez: kişisel değerler***olur;identityType, tutar ve tarih gibi kişisel olmayan değerler olduğu gibi döner.quoteReady: true, bağlam ve ön verinin teklif aşamasının zorunlu alanlarını ve açık ürünlerinizden en az birinin teklif kurallarını karşıladığını gösterir. Teklifi yalnızcainsuranceType,currencyve sepet kaynağıyla alabilirsiniz: Teklif › Ön veriyle teklif. Sağlayıcının teklif vereceğini garanti etmez.prefillveprovidedFields'taki tip nesnesi, bağlam ya da ön veri taşıyan kalemlerden kurulur. Bu alanları taşımayan kalem bu nesnelerde yer almaz.- Bir alan hem
prefill'de hemprovidedFields'ta görünmez; ön veri bağlamın önündedir.
insuranceContext ve insuranceData taşıyan tek biletli bir sepet için yanıt. Örnekte title, description ve fields gösterilmemiştir:
{
"data": {
"products": [
{
"insuranceType": "TICKET_CANCELLATION",
"typeObject": "tickets",
"schemaVersion": 1,
"basketItemIds": ["ticket-1"],
"prefill": {
"tickets": [
{
"basketItemId": "ticket-1",
"transportMode": "BUS",
"carrier": "Örnek Taşıyıcı",
"departureAt": "2025-12-23T12:50:00+03:00",
"originCity": "Ankara",
"destinationCity": "İstanbul"
}
]
},
"providedFields": [
{ "path": "tickets[0].priceAmount", "masked": 50000 },
{ "path": "insured[0].identityType", "masked": "PASSPORT" },
{ "path": "insured[0].identityNumber", "masked": "***" },
{ "path": "insured[0].birthDate", "masked": "***" }
],
"quoteReady": true,
"insuranceDataIssues": []
}
]
}
}Kullanılamayan ön veri
Kalemin ön verisi tipin şemasına uymazsa ödeme durmaz; o kalemin ön verisi kullanılmaz ve sebep insuranceDataIssues'ta döner:
{
"insuranceDataIssues": [
{ "basketItemId": "phone-1", "field": "device.imei", "reason": "invalid_imei" }
]
}reason | Sebep |
|---|---|
unknown_field | Alan, kalemin sigorta tiplerinin hiçbirinin şemasında yok. |
not_applicable | Alan bu durumda geçerli değil; ör. transportMode: BUS olan bilette havalimanı kodu. |
no_matching_schema | Ön veri kalemin sigorta tiplerinin hiçbirine uymuyor; ör. aynı kalemde hem device hem vehicle nesnesi. field değeri insuranceData'dır. |
unavailable | Ön veri şu anda okunamadı. Alanlar alıcıdan istenir; teklif isteğinde bu alanları gönderebilirsiniz. |
| Diğer sebepler | Değer tipin biçimine uymuyor (ör. invalid_imei, invalid_checksum, invalid_format). Sebepler insurance.validation.invalid ile aynıdır. |
Ön veriyi düzeltip yeni ödemeyle gönderin ya da eksik alanları teklif isteğinde gönderin. Tanımadığınız bir sebebi o alanın geçersiz olduğu şeklinde ele alın.
Ürüne göre zorunlu alanlar
Tipin şeması, o tipi sunan bütün ürünlerin alanlarını kapsar. fields dizisi, bağlantılarınızdaki açık ürünlerin kurallarını da gösterir:
| Alan | Tip | Açıklama |
|---|---|---|
requiredAt | string | Alanın tipin şemasında ya da açık ürünlerinizin hepsinde zorunlu olduğu aşama: QUOTE ya da POLICY. Alan isteğe bağlıysa bulunmaz. |
requiredBy | dizi | Alanı daha erken bir aşamada ya da yalnızca bazı ürünlerinizin istediğini gösterir. Her öge underwriterCode (sigorta şirketinin Lunixi kodu; şirket bildirilmemişse null) ve stage (QUOTE ya da POLICY) taşır. Böyle bir ürün yoksa bulunmaz. |
requiredBy ögesindeki alanı o aşamada göndermezseniz yalnızca o ürünün seçeneği teklifte elenir: Teklif › Elenen seçenekler. Bütün seçenekleri almak için bu alanları da gönderin.
Boş liste
data.products boş bir dizi ise bu sepet için sigorta sunulmaz. Boş liste bir hata değildir ve ödemenizi etkilemez; ödemeyi sigortasız alabilirsiniz.
Liste şu durumlarda boş döner:
- Sigorta ya da API yolu hesabınızda açık değildir.
- Kalemlerde sigorta alanı yoktur, kalem
insuranceEligible: falsetaşır ya da istenen tip kalemin türüne uymaz. - Tip hesabınızda açık değildir ya da kalem tipin uygunluk koşullarını karşılamaz.
- Tipin açık olduğu kullanılabilir bir sağlayıcı bağlantınız yoktur.
- Sepet kalemi olmadan sorguladınız ve hesabınızda sepet kalemi olmadan satılan açık bir tip yoktur.
Kontrol listesi: Test Ortamı › Sigorta sunulmuyorsa.
Hatalar
| HTTP | code | Ne yapmalı |
|---|---|---|
400 | VALIDATION_ERROR | currency, paymentIntentId, insuranceType ya da kalem biçimini düzeltin; details.errors hatalı alanı gösterir. |
422 | insurance.validation.invalid | Kalemler kurallara uymuyor; details.errors[] ihlalleri listeler. |
Ortak kodlar: Akışlar › Yanıt ve hatalar.
İlgili
- Teklif: sunulan tip için teklif alma
- Sepet Kalemi Olmadan Satış: kalemsiz uygunluk ve teklif
- Sepet Kalemleri: sigorta alanları
- Sigorta Tipleri ve Şemalar: tip alanları