B1 Mall Ciro API Dokümantasyonu

AVM / B1 Mall POS ciro entegrasyonu için REST API. Nebim Integrator üzerinden fatura listesini okur; yanıt B1 Mall formundaki satış (transaction) şemasına uyarlanır. Tüm uçlar HTTP Basic Auth ile korunur.

Base: /api/v1 JSON Basic Auth Local: http://localhost:5204

Yetkilendirme

Her istekte Authorization: Basic header’ı zorunludur. Kullanıcı adı ve şifre sunucu appsettings.json → MallApi bölümünden okunur.

Header
Authorization: Basic base64(username:password)
Accept: application/json
Örnek (yerel): kullanıcı b1mall. Header değeri Basic + Base64(b1mall:********). Kimlik yoksa veya hatalıysa API 401 döner.

curl örneği

bash
curl -u 'b1mall:********' \
  'http://localhost:5204/api/v1/sales?startDate=2026-03-01&endDate=2026-03-01&page=1&pageSize=100'

Hata formatı

Hata gövdesi genelde tek alanlıdır:

Örnek 400 / 401
{
  "error": "startDate and endDate are required (yyyy-MM-dd)."
}
HTTPAnlam
400Eksik/geçersiz query (tarih zorunlu, endDate ≥ startDate)
401Basic Auth yok veya hatalı
500Nebim / sunucu hatası

Sayfalama

Liste yanıtı tarih aralığındaki tüm kayıtları sayfalar:

MallSalesResponse
{
  "startDate": "2026-03-01",
  "endDate": "2026-03-01",
  "page": 1,
  "pageSize": 500,
  "totalCount": 42,
  "transactions": [ /* kayıtlar */ ]
}

page ≥ 1. pageSize varsayılan 500, en fazla 1000.

Satış

B1 Mall POS entegrasyon formundaki ciro çekimi. Kaynak: Nebim SP nebimtowafeq_faturalist (StartDate / EndDate / DescriptionFilter=HEPSI).

GET /api/v1/sales

Verilen tarih aralığındaki satış / iade fişlerini listeler. Her fatura bir transaction satırına dönüşür.

Query parametreleri

ParametreTipAçıklama
startDate date zorunlu Başlangıç tarihi · yyyy-MM-dd
endDate date zorunlu Bitiş tarihi · yyyy-MM-dd · startDate’ten küçük olamaz
page int opsiyonel Sayfa numarası · varsayılan 1
pageSize int opsiyonel Sayfa boyutu · varsayılan 500 · max 1000

Örnek istek

HTTP
GET /api/v1/sales?startDate=2026-03-01&endDate=2026-03-01&page=1&pageSize=100
Authorization: Basic YjFtYWxsOioqKioqKioq
Accept: application/json

Örnek yanıt · 200

JSON
{
  "startDate": "2026-03-01",
  "endDate": "2026-03-01",
  "page": 1,
  "pageSize": 100,
  "totalCount": 2,
  "transactions": [
    {
      "transactionId": "INV-2026-000141",
      "createdAt": "2026-03-01T14:22:11",
      "invoiceDateTime": "2026-03-01T14:22:11",
      "receiptNo": "INV-2026-000141",
      "turnover": 1250.50,
      "currencyCode": "AED",
      "itemCount": 2,
      "discountTotal": 50.00,
      "isReturn": false,
      "items": [
        {
          "sku": "SKU-100",
          "name": "Ürün A · Siyah · M",
          "barcode": "8690001112223",
          "quantity": 2,
          "unitPrice": 500.00,
          "discount": 50.00,
          "amount": 950.00,
          "vatAmount": 45.24,
          "vatRate": 5
        },
        {
          "sku": "SKU-200",
          "name": "Ürün B",
          "barcode": null,
          "quantity": 1,
          "unitPrice": 300.50,
          "discount": 0,
          "amount": 300.50,
          "vatAmount": 14.31,
          "vatRate": 5
        }
      ]
    }
  ]
}

Yanıt alanları · transaction

AlanTipAçıklama
transactionIdstringFatura / fiş numarası (benzersiz işlem kimliği)
createdAtdatetimeKayıt zamanı
invoiceDateTimedatetimeFatura / satış zamanı
receiptNostringFiş numarası
turnoverdecimalCiro tutarı (iade negatif olabilir)
currencyCodestringPara birimi · yoksa MallApi:DefaultCurrency (AED)
itemCountintÜrün satırı adedi
discountTotaldecimalToplam iskonto
isReturnbooltrue ise iade fişi
itemsarrayÜrün kalemleri (aşağıda)

Yanıt alanları · items[]

AlanTipAçıklama
skustringÜrün kodu (Nebim ItemCode)
namestringÜrün adı (+ renk / beden)
barcodestring?Barkod (varsa)
quantitydecimalMiktar
unitPricedecimalBirim fiyat
discountdecimalSatır + fiş iskontosu
amountdecimalNet tutar
vatAmountdecimalKDV tutarı
vatRatedecimalKDV oranı (%)
Tarih aralığı gün bazlıdır. AVM tarafı genelde tek gün veya kısa aralık çeker; büyük aralıklarda page / pageSize kullanın.