Fiziksel POS
API Referansı
Katalog

Katalog

Bu uçları kim çağırır?Dış API (s2s)
Taban yol
/api/v1/physical-pos
Kimlik
Her istekte Ed25519 istek imzası — X-Key-Id, X-Date, X-Nonce, X-Signature; gövdeli isteklerde ayrıca Digest. Zaman penceresi ±5 dk, nonce tek kullanımlık. Bearer jetonu ya da panel oturumu bu uçlarda kabul edilmez.
Yetki
Anahtarınız Fiziksel POS ürününü (PHYSICAL_POS) ve bu sayfadaki uçların kapsamını taşımalıdır: physical_pos:view. Ürünü olmayan anahtar 403 PRODUCT_NOT_ENABLED, kapsamı olmayan anahtar 403 API_INSUFFICIENT_SCOPE alır. Bkz. Kimlik Doğrulama ve Kapsamlar.
Çapraz yüzey
Bu uçlar s2s yüzeyindedir; kendi sunucunuzdan imzalı istekle çağırırsınız. Aynı kayıtların panelde ekranları var, ama panel uçları API anahtarıyla çağrılamaz; bu uçlar da panel oturumuyla çağrılamaz.

Katalog, platformda tanımlı POS üreticilerini, cihaz modellerini ve fiziksel POS'ta kullanılabilen bankaları listeler. Katalog bütün işletmeler için ortaktır; yalnız okunur ve ortamdan bağımsızdır (test ve canlı anahtar aynı listeyi görür).

Katalog uçları sayfalanmaz: data bütün listeyi içeren bir dizidir. → Ortak Kurallar › Yanıt zarfı

Üreticiler

GET /api/v1/physical-pos/catalog/vendors

Sorgu parametresi almaz; tanımsız parametre 400 VALIDATION_ERROR döner. Liste, devre dışı üreticiler dahil bütün üreticileri code sırasıyla döner.

source lunixi-sign.sh
REQ_PATH="/api/v1/physical-pos/catalog/vendors"
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"

lunixi-sign.sh: Kimlik Doğrulama › İmza yardımcısı.

{
  "status": "success",
  "code": "SUCCESS",
  "data": [
    {
      "code": "PAVO",
      "displayName": "Pavo",
      "status": "ACTIVE",
      "fallbackImage": {
        "assetId": "00000000-0000-4000-8000-000000000a01",
        "url": "https://img.lunixi.com/00000000-0000-4000-8000-000000000a01"
      }
    },
    {
      "code": "PLUSPAY",
      "displayName": "PlusPay",
      "status": "ACTIVE",
      "fallbackImage": null
    }
  ],
  "statusCode": 200,
  "requestId": "00000000-0000-0000-0000-000000000000"
}
AlanTipAçıklama
codestringÜretici kodu. Terminal oluştururken vendorCode alanına bu değeri yazarsınız.
displayNamestringÜreticinin görünen adı.
statusstringACTIVE ya da DISABLED. Devre dışı üretici yeni terminalde kullanılamaz.
fallbackImageobject | nullÜreticinin yedek görseli: modelin kendi görseli yoksa gösterilir. → Görsel nesnesi

Cihaz modelleri

GET /api/v1/physical-pos/catalog/device-models

Sorgu parametresiTipAçıklama
vendorCodestringYalnız bu üreticinin modelleri. Büyük/küçük harf fark etmez. Biçimi doğru ama katalogda olmayan kod boş liste döner; biçim dışı kod 400 physical_pos.input.filter_invalid.
deviceTypestringPHYSICAL ya da SOFTPOS.
statusstringACTIVE ya da DEPRECATED. Gönderilmezse iki durum da döner.

deviceType ya da status küme dışındaysa (büyük/küçük harf duyarlı) istek 400 physical_pos.input.filter_invalid alır; details.field süzgecin adını verir.

source lunixi-sign.sh
REQ_PATH="/api/v1/physical-pos/catalog/device-models?vendorCode=PAVO&status=ACTIVE"
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"
{
  "status": "success",
  "code": "SUCCESS",
  "data": [
    {
      "id": "00000000-0000-4000-8000-000000000b01",
      "vendorCode": "PAVO",
      "modelCode": "EXAMPLE-M1",
      "displayName": "Örnek Model M1",
      "deviceType": "PHYSICAL",
      "formFactor": "COUNTERTOP",
      "fiscalCapable": true,
      "status": "ACTIVE",
      "image": {
        "assetId": "00000000-0000-4000-8000-000000000a02",
        "url": "https://img.lunixi.com/00000000-0000-4000-8000-000000000a02"
      },
      "vendorFallbackImage": {
        "assetId": "00000000-0000-4000-8000-000000000a01",
        "url": "https://img.lunixi.com/00000000-0000-4000-8000-000000000a01"
      }
    }
  ],
  "statusCode": 200,
  "requestId": "00000000-0000-0000-0000-000000000000"
}
AlanTipAçıklama
idstring (UUID)Modelin kimliği.
vendorCodestringModelin üreticisinin kodu.
modelCodestringÜretici içinde modelin kodu.
displayNamestringModelin görünen adı.
deviceTypestringPHYSICAL: ayrı POS donanımı. SOFTPOS: kart kabul eden mobil cihaz.
formFactorstringCOUNTERTOP (masaüstü), PORTABLE (taşınabilir), MOBILE (mobil), UNATTENDED (gözetimsiz, ör. kiosk), PINPAD.
fiscalCapablebooleanModel mali (ödeme kaydedici) cihaz olarak kullanılabiliyorsa true.
statusstringACTIVE ya da DEPRECATED. DEPRECATED model katalogda kalır, yeni kurulumlarda tercih edilmemelidir.
imageobject | nullModelin kendi görseli. → Görsel nesnesi
vendorFallbackImageobject | nullÜreticinin yedek görseli (üretici listesindeki fallbackImage ile aynı).

Bankalar

GET /api/v1/physical-pos/catalog/acquirers

Sorgu parametresi almaz; tanımsız parametre 400 VALIDATION_ERROR döner. Liste yalnız etkin bankaları acquirerCode sırasıyla döner.

source lunixi-sign.sh
REQ_PATH="/api/v1/physical-pos/catalog/acquirers"
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"
{
  "status": "success",
  "code": "SUCCESS",
  "data": [
    { "acquirerCode": "0000", "providerCode": "EXAMPLEBANK", "displayName": "Örnek Bank" }
  ],
  "statusCode": 200,
  "requestId": "00000000-0000-0000-0000-000000000000"
}
AlanTipAçıklama
acquirerCodestringBankanın dört haneli banka kodu. Terminalin banka satırlarında acquirerCode alanı bu değeri taşır.
providerCodestringLunixi'nin bu bankayı tanıdığı sağlayıcı kodu.
displayNamestringBankanın görünen adı.

Banka satırı eklerken bankayı acquirerCode ile değil, POS üreticisinin bankaya verdiği kodla (vendorAcquirerRef) bildirirsiniz; Lunixi bu kodu katalogdaki bankayla eşler. → Banka Satırları

Görsel nesnesi

Görseller her zaman { assetId, url } nesnesi olarak döner; görsel yoksa alan null'dır.

AlanTipAçıklama
assetIdstring (UUID)Görselin kimliği. Görsel değiştirildiğinde yeni bir kimlik alır; önbellek anahtarı olarak kullanabilirsiniz.
urlstringGörselin herkese açık https adresi. Adresi olduğu gibi kullanın; kendiniz üretmeyin.

Görseller PNG, JPEG ya da WebP biçimindedir. Bir modeli gösterirken şu sırayı izlemenizi öneririz: image → vendorFallbackImage → kendi genel görseliniz (cihaz tipi ve form faktörüne göre).

Hatalar

HTTPcodeNe zaman
400VALIDATION_ERRORTanımsız sorgu parametresi.
400physical_pos.input.filter_invalidvendorCode, deviceType ya da status süzgeci geçersiz.
400physical_pos.input.environment_invalidSorguda environment gönderildi.
403PRODUCT_NOT_ENABLED / API_INSUFFICIENT_SCOPEAnahtarda ürün ya da physical_pos:view yok.

Bütün kodlar: Hata Kodları.