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.
Yetkilendirme
Her istekte Authorization: Basic header’ı zorunludur.
Kullanıcı adı ve şifre sunucu appsettings.json → MallApi
bölümünden okunur.
Authorization: Basic base64(username:password) Accept: application/json
b1mall. Header değeri
Basic + Base64(b1mall:********).
Kimlik yoksa veya hatalıysa API 401 döner.
curl örneği
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:
{
"error": "startDate and endDate are required (yyyy-MM-dd)."
}
| HTTP | Anlam |
|---|---|
400 | Eksik/geçersiz query (tarih zorunlu, endDate ≥ startDate) |
401 | Basic Auth yok veya hatalı |
500 | Nebim / sunucu hatası |
Sayfalama
Liste yanıtı tarih aralığındaki tüm kayıtları sayfalar:
{
"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
| Parametre | Tip | Açı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
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
{
"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
| Alan | Tip | Açıklama |
|---|---|---|
transactionId | string | Fatura / fiş numarası (benzersiz işlem kimliği) |
createdAt | datetime | Kayıt zamanı |
invoiceDateTime | datetime | Fatura / satış zamanı |
receiptNo | string | Fiş numarası |
turnover | decimal | Ciro tutarı (iade negatif olabilir) |
currencyCode | string | Para birimi · yoksa MallApi:DefaultCurrency (AED) |
itemCount | int | Ürün satırı adedi |
discountTotal | decimal | Toplam iskonto |
isReturn | bool | true ise iade fişi |
items | array | Ürün kalemleri (aşağıda) |
Yanıt alanları · items[]
| Alan | Tip | Açıklama |
|---|---|---|
sku | string | Ürün kodu (Nebim ItemCode) |
name | string | Ürün adı (+ renk / beden) |
barcode | string? | Barkod (varsa) |
quantity | decimal | Miktar |
unitPrice | decimal | Birim fiyat |
discount | decimal | Satır + fiş iskontosu |
amount | decimal | Net tutar |
vatAmount | decimal | KDV tutarı |
vatRate | decimal | KDV oranı (%) |
page / pageSize kullanın.