Ana içeriğe geç

POST /api/stream-log — Stream Log (SSE)

📋 Genel Bilgi

Terminal'deki işlem durumunu gerçek zamanlı olarak takip etmek için Server-Sent Events (SSE) akışı başlatır. waitingsuccess durum geçişi izlenir.

Base URL: {{url}}/api/stream-log Method: POST Content-Type: application/json


🔐 Headers

HeaderValue
AuthorizationBearer {{masked_jwt_10}}
Content-Typeapplication/json

📥 Request Body

{
"store_code": "mobildev-mq",
"terminal_code": "TERM-001"
}

Parametreler

AlanTipZorunluAçıklamaÖrnek
store_codestringMağaza kodu"mobildev-mq"
terminal_codestringTerminal kodu"TERM-001"

🔄 Akış Diyagramı (Stream Log — SSE ile Gerçek Zamanlı Takip)

Adım Açıklamaları:

AdımTarafİşlemAçıklama
1Kasiyer → APIPOST /api/stream-log ile SSE dinlemeyi başlatırMağaza ve terminal bilgisi gönderilir. API SSE bağlantısı kurar.
2API → KasiyerSSE stream bağlantısı kurulurResponse plain/text, chunked transfer ile gelir. Her satır ayrı JSON event'tir.
3Terminal → Kasiyer"İşlem bekleniyor" gösterilirKasiyer, müşterinin QR kodunu okutmasını bekler.
4Müşteri → TerminalQR kodu okuturMüşteri mobil/web uygulamasından ürettiği auth code'u (QR veya PIN) kasiyere gösterir.
5Terminal → APIDoğrulama başlatılırQR/PIN doğrulama işlemi tetiklenir.
6Müşteri → Passkey EkranıPasskey onay verirMüşteri telefonda passkey ile doğrulama yapar.
7Passkey → APIDoğrulama başarılı olurOnay verildiğinde doğrulama tamamlanır ve stream'e success event'i gönderilir.
8API → KasiyerSSE stream'den success event gelirwaitingsuccess durum geçişi gerçekleşir, müşteri bilgileri (data alanı) döner.
9Terminal → KasiyerSonuç gösterilirMüşteri adı, telefon numarası, EK/KVKK onay durumu gibi bilgiler ekranda gösterilir. İşlem devam eder.

SSE Event Akışı:

DurumAçıklamaSıklık
waitingTerminal işlem bekliyor — müşteri henüz doğrulama yapmadıHer ~3 saniye
successİşlem tamamlandı, müşteri bilgileri döndüTek seferlik (stream sonlanır)

✅ Response — 200 OK (SSE Stream)

Response plain/text formatında chunked transfer ile gelir. Her satır ayrı bir JSON event'tir:

{"status":"waiting","terminalId":1,"timestamp":1785062098294}
{"status":"waiting","terminalId":1,"timestamp":1785062101326}
{"status":"waiting","terminalId":1,"timestamp":1785062104326}
{"status":"waiting","terminalId":1,"timestamp":1785062107327}
{"status":"success","timestamp":1785062110370,"data":{"token":"23166568","success":true,"msisdn":"{{customer_msisdn}}","ip":"{{customer_ip}}","deviceInfo":{"requestId":null,"timestamp":"2026-07-26T10:35:09.358Z","ip":"{{customer_ip}}","deviceContext":{"deviceName":"Desktop Computer","deviceVendor":"","deviceModel":"","deviceType":"desktop","osName":"Windows","osVersion":"10","browserName":"Chrome","browserVersion":"150.0.0.0","cpuArchitecture":"amd64"},"ipContext":{"country":"Türkiye","countryCode":"TR","city":"Küçükçekmece","region":"Istanbul","regionCode":"34","latitude":{{customer_latitude}},"longitude":{{customer_longitude}},"timezone":"Europe/Istanbul","postalCode":"{{customer_postal_code}}","accuracyRadius":500}},"ivt":{"etk":{"sms":1,"call":1,"email":1,"share":1},"kvkk":{"process":1,"share":1,"international":1},"loyalty":-1,"firstName":"{{customer_firstName}}","lastName":"{{customer_lastName}}","email":"{{customer_email}}"}}}

SSE Event Akışı

DurumAçıklama
waitingTerminal işlem bekliyor (her ~3 saniyede bir)
successİşlem tamamlandı, müşteri bilgileri döndü

❌ Error Responses

{
"Response": {
"code": 3011,
"description": "store_code cannot be empty"
},
"Success": false
}
Gerçek HTTPDönen HTTPcodeEnumdescriptionNe Zaman Oluşur
4014009999Status_9999_UnAccessClientHatalı Kullanıcı Adı / Parolaİstek yapan kullanıcı giriş yapmamış (_c.isLogin() false)
4004003011LogStreamStoreCodeEmptystore_code cannot be emptystore_code alanı boş gönderildi
4004003012LogStreamTerminalCodeEmptyterminal_code cannot be emptyterminal_code alanı boş gönderildi
4044003013LogStreamTerminalCodeNotFoundterminal_code not foundstore_code + terminal_code kombinasyonuna karşılık gelen bir terminal bulunamadı

Örnek — Giriş Yapılmamış

{
"Response": {
"code": 9999,
"description": "Hatalı Kullanıcı Adı / Parola"
},
"Success": false
}

Örnek — store_code Boş

{
"Response": {
"code": 3011,
"description": "store_code cannot be empty"
},
"Success": false
}

Örnek — terminal_code Boş

{
"Response": {
"code": 3012,
"description": "terminal_code cannot be empty"
},
"Success": false
}

Örnek — Terminal Bulunamadı

{
"Response": {
"code": 3013,
"description": "terminal_code not found"
},
"Success": false
}

📝 Notlar

  • SSE stream ~10-15 saniye devam eder (kod: TIMEOUT_SECONDS = 60, yani gerçekte 60 saniye — dokümanın önceki hâlindeki "10-15 saniye" ifadesi kod ile uyuşmuyor, düzeltildi).
  • Her waiting event'i ~3 saniye arayla gönderilir.
  • success event'inde tam doğrulama response'u (data alanı) bulunur.
  • Response header'larda Cache-Control: no-cache, X-Accel-Buffering: no, Transfer-Encoding: chunked bulunur.