Müşteri Talepleri
Müşteri taleplerini çekme, kabul ve itiraz; süre, kanıt ve sonuç kuralları.
Her satır API referansındaki tam tanıma gider — alanlar, yanıt kodları ve deneme konsolu orada.
Akış
Müşteri teslimattan sonra eksik, yanlış ya da hasarlı ürün, geç teslim ya da soğuk yemek bildirdiğinde bir talep açılır ve işletmeden yanıt beklenir. Yanıt penceresi varsayılan olarak talep açıldığından itibaren 15 dk sürer; platform bu süreyi değiştirebilir ve bağlayıcı son an her talebin deadline alanıdır. Yanıt süresi işletmenin performansına işlenir. Kabul edilen talep iadeyle kapanır. İtiraz edilen ya da deadline geçene kadar yanıtlanmayan talep platform incelemesine geçer. Geç teslim (late) ve soğuk yemek (cold_food) talepleri bunun istisnasıdır: itiraz edildiğinde talep kapanır ve iade yapılmaz. cold_food yalnız restoranda gelir.
talep açılır ──▶ işletme yanıtı bekler ──accept──▶ kapanır (iade)
│
├──contest──▶ platform incelemesi ──▶ kapanır
├──deadline geçer──▶ platform incelemesi (platform karara bağlar)
└──contest (late, cold_food)──▶ kapanır (iade yok)Talepleri çekme
{
"items": [
{
"id": "cm_ornek_talep",
"orderId": "cm_ornek_siparis",
"orderRef": "AB12CD34",
"type": "missing_item",
"amount": 50,
"items": [{ "id": "cm_ornek_kalem", "name": "Örnek Ürün", "quantity": 1, "amount": 50 }],
"evidencePhotoCount": 0,
"deadline": "2026-01-31T16:00:00.000Z",
"deadlineMinutes": 42,
"createdAt": "2026-01-31T15:00:00.000Z",
"acceptRemedies": ["refund"],
"contestReasons": ["not_my_fault", "product_correct", "other"]
}
],
"nextCursor": null
}Yalnız yanıt bekleyen talepler döner. Liste sayfasızdır (tam liste) ve en yakın son tarihli talep başta gelir; nextCursor her zaman null olur. deadlineMinutes son ana kalan dakikadır, geçmişse 0.
| Alan | Tip | Açıklama |
|---|---|---|
type | enum | cancel · missing_item · wrong_item · damaged · other · not_delivered · late · cold_food. cold_food: yemek soğuk geldi; ürün seçilerek açılır. late: geç teslim; ürün seçilmeden açılır. Küme bu sürüm için kapalıdır; tanımadığınız türü yok saymadan güvenli varsayılanla ele alın. |
amount | number | Talep edilen toplam tutar. late talebinde siparişin ürün bedelidir ve kabulde iade edilebilecek üst sınırdır. |
items[] | array | Kalem düzeyi iddia: id (kalem bazında yanıtın girdisi), name, quantity, amount. Çarşı'da ayrıca clientReferenceId, sku, barcode. |
evidencePhotoCount | integer | Müşterinin yüklediği kanıt fotoğrafı sayısı. Fotoğraflar bu yüzeyden verilmez; işletme panelinden görülür. |
Kabul ve itiraz
curl -X POST "https://api.supergelsin.com/api/partner/v1/disputes/cm_ornek_talep/respond" \
-H "Authorization: Basic $(printf '%s:%s' "$API_KEY" "$API_SECRET" | base64)" \
-H "X-Integrator: Ornek POS" \
-H "X-Operator: kasiyer_01" \
-H "Content-Type: application/json" \
-d '{ "action": "accept", "remedy": "refund" }'curl -X POST "https://api.supergelsin.com/api/partner/v1/disputes/cm_ornek_talep/respond" \
-H "Authorization: Basic $(printf '%s:%s' "$API_KEY" "$API_SECRET" | base64)" \
-H "X-Integrator: Ornek POS" \
-H "X-Operator: kasiyer_01" \
-H "Content-Type: application/json" \
-d '{ "action": "accept", "remedy": "refund", "acceptedAmount": 120.5 }'curl -X POST "https://api.supergelsin.com/api/partner/v1/disputes/cm_ornek_talep/respond" \
-H "Authorization: Basic $(printf '%s:%s' "$API_KEY" "$API_SECRET" | base64)" \
-H "X-Integrator: Ornek POS" \
-H "X-Operator: kasiyer_01" \
-H "Content-Type: application/json" \
-d '{ "action": "contest", "contestReason": "product_correct" }'Bütün talebe action ile ya da kalem bazında items ile yanıt verilir; ikisi birlikte ya da hiçbiri gönderilemez (400 invalid_body). Kabul iade başlatır. İade tutarının üst sınırı ve hesabı platformda yapılır; sınır aşılırsa 409 refund_cap_exceeded döner. Yanıt süresi dolmuş ya da zaten yanıtlanmış talep 409 dispute_closed döner. İşlem denetim kaydında X-Integrator ve X-Operator değerleriyle görünür.
| Alan | Tip | Açıklama |
|---|---|---|
action | enum | accept · contest |
remedy | enum | Yalnız refund: tutar müşteriye iade edilir. Kabulde başka bir değer 400 döner. Gönderilmeyen ya da null olan değer refund sayılır; itirazda bu alan yok sayılır. |
acceptedAmount | number | Geç teslim talebinde bütün talep kabul edilirken iade edilecek tutar: 0'dan büyük, talep tutarından büyük olmayan sayı. Gönderilmezse talep tutarının tamamı iade edilir. null ya da dizge 400 döner. |
contestReason | enum | not_my_fault · product_correct · other. action: contest iken zorunludur; eksikse 400 döner. |
| Alan | Tip | Açıklama |
|---|---|---|
stage | string | Talebin yanıt sonrası aşaması. |
mode | string | Yanıtın türü (ör. kısmi kabulde partial). |
refundedAmount | number | Hemen iade edilen tutar. |
refundPath | enum | İadenin hangi yoldan yapıldığı: online ya da door (payment.channel sözlüğüyle aynı). |
Kalem bazında yanıt
Talep birden çok kalem içeriyorsa her kalemi ayrı yanıtlayabilirsiniz (en çok 200 kalem). items verildiğinde karar kalemlerden türetilir: hepsi kabul edildiyse talep kabul edilir, hiçbiri kabul edilmediyse itiraz edilir, karışıksa partial olur; kabul edilen kalemlerin tutarı hemen iade edilir, kalanı platform incelemesine gider. cold_food talebinde kalan platform incelemesine gitmez; talep kapanır. Kararda geçmeyen kalem itiraz sayılır; sessiz kabul yoktur. Kalem bazında yanıtla birlikte acceptedAmount gönderilirse 400 döner.
curl -X POST "https://api.supergelsin.com/api/partner/v1/disputes/cm_ornek_talep/respond" \
-H "Authorization: Basic $(printf '%s:%s' "$API_KEY" "$API_SECRET" | base64)" \
-H "X-Integrator: Ornek POS" \
-H "X-Operator: kasiyer_01" \
-H "Content-Type: application/json" \
-d '{ "items": [ { "id": "cm_ornek_kalem_1", "action": "accept" }, { "id": "cm_ornek_kalem_2", "action": "contest" } ], "contestReason": "product_correct" }'