READERP

READERP API belgeleri v1

API'nin yetenekleri Rapor kataloğu Panel girişi

Giriş

READERP API'si, ERP'nizdeki veriyi kendi sistemlerinize okutmanızı sağlar: e-ticaret sitesi, CRM, mobil uygulama, kendi paneliniz. Yalnız okur. Yazma ucu yoktur ve eklenmeyecektir.

Çalışma biçimi diğer API'lerden bir yerde ayrılıyor ve entegrasyonu yazmadan önce bilinmesi gereken tek şey bu: sorgular sizin sunucunuzda koşar. Çağrınız işi kuyruğa alır, şirketinizdeki ajan işi alıp kendi veritabanınızda çalıştırır, sonuç panele döner. Bu yüzden akış eşzamansızdır ve iki uç vardır.

Üç cümlede

  • Taban adres https://panel.readerp.com/api/v1 — yalnız HTTPS.
  • Kimlik iki başlıkla: X-Readerp-Api-Key ve X-Readerp-Api-Secret.
  • Sonuç ömrü varsayılan 60 saniye. Aldığınız sonucu kendi tarafınıza yazın.
Sonuç satırları bizde birikmez. Süre dolunca silinir; aynı işi ikinci kez okumak isterseniz raporu yeniden çalıştırmanız gerekir. Bu bir eksiklik değil, ürünün sözü.

Akış

  • POST /run — raporu kuyruğa alır, job_id döner.
  • GET /job/{id} — durumu ve bittiğinde sonucu verir.
  • Hazır istemcilerdeki runAndWait ikisini sizin için yapar.
İstek
Yanıt
{
  "pong": true,
  "tenant": "sirketiniz"
}

Hızlı başlangıç

Dört adım, yarım saat. Sonunda mağazanız canlı stok okuyor olur.

1. Anahtarı alın

Panelde Ayarlar → API anahtarları. Anahtara ad verin, hangi şirkette hangi raporları çalıştırabileceğini işaretleyin. Gizli değer yalnız o an bir kez gösterilir; bizde yalnız özeti durur.

2. Bağlantıyı sınayın

/ping 200 dönüyorsa anahtar ve ağ tamam. 401 alıyorsanız başlıklar eksiktir ya da gizli değer yanlıştır.

3. Neyi çalıştırabildiğinizi görün

/catalog yalnız bu anahtarın çalıştırabileceği raporları döner; her rapor kendi şirket listesini ve parametrelerini taşır. Kataloğu uygulamanızın açılışında bir kez okuyup önbelleğe alın.

4. İlk raporu çalıştırın

Hazır istemcilerde tek satır. Elle yazıyorsanız /run ile başlatıp /job/{id} yoklayın: bir saniyeyle başlayıp beş saniyeye çıkan aralıklarla, sonsuza kadar değil.

Gizli anahtarı istemciye koymayın. Tarayıcıda ya da mobil uygulama paketinde duran anahtar, kullanıcıya verilmiş anahtardır. Çağrıyı kendi sunucunuzdan yapın.
İstek
Yanıt
{
  "reports": [
    {
      "id": "H1",
      "name": "Stok mevcudu",
      "entities": ["SIRKET", "SIRKET2"],
      "parameters": [],
      "columns": ["stock_code", "stock_name", "depot", "quantity"]
    }
  ]
}

Kimlik doğrulama

Her istek iki başlık taşır. Üçüncü bir yöntem yok: OAuth akışı, imzalı istek ya da çerez oturumu aramayın.

Başlık Değer
X-Readerp-Api-KeyAnahtarın kimliği. Günlüğe yazılabilir; gizli değildir.
X-Readerp-Api-SecretGizli değer. Yalnız oluşturulduğu anda bir kez gösterilir; bizde özeti durur.

Anahtarı kaybederseniz

Geri getirilemez, yenilenir. Yenilendiği an eskisi geçersiz olur — entegrasyonu durdurmadan anahtar döndürmek için bunu bakım penceresinde yapın.

Nerede saklanmalı

  • Sunucunuzun ortam değişkeninde ya da gizli anahtar deposunda.
  • Depoda değil. Bir kez commit edilen anahtar, geçmişte kalır.
  • İstemcide değil. Tarayıcı ve mobil paket herkese açıktır.
IP kısıtı varsa anahtar doğru olsa bile listede olmayan adresten gelen çağrı 403 alır. Sunucunuzun çıkış IP'si değişiyorsa (bulut, NAT havuzu) blok olarak yazın.
İstek
Yanıt
{
  "pong": true,
  "tenant": "sirketiniz"
}

Veri tipleri

Her parametrenin bir tipi var ve doğrulama tam olarak aşağıdaki kurallarla yapılıyor. Kurala uymayan değer sorguya hiç girmez, 400 ile döner. Beyaz liste yöntemi: tırnak, noktalı virgül, boşluk ve yorum işaretleri süzülmüyor — en baştan kabul edilmiyor.

Tip Kural Örnek Bilmeniz gereken
codeHarf, rakam ve . _ / - € ₺ $ £ · 1–40 karakterURN0035Para birimi işareti kasıtlı: Netsis dövizli cari kodlarına ekliyor, 120340068€ gerçek bir koddur.
docnoHarf, rakam ve . / _ - · 1–20 karakterFTR2026000000123Belge numarası LIKE ile eşleşir. ASCII dışı her karakter tek karakterlik joker _ olur — veritabanları Latin1 olduğu için Ş harfini birebir aramak hiçbir zaman tutmaz.
dateYYYY-MM-DD2026-01-31Saat yok, saat dilimi yok. Gün bazında karşılaştırılır.
intİsteğe bağlı eksi, en çok 9 basamak90Raporun kendi üst sınırı ayrıca geçerlidir; H8'de limit en fazla 1000.
taxno10 hane (VKN) ya da 11 hane (TCKN)1234567890Kullanım kaydına maskelenerek yazılır; sorguya olduğu gibi gider.
nameHarf, rakam, boşluk ve . , & ' / - · 3–60 karakterörnek metalÜnvan araması (H4). Kelimeler ayrı ayrı aranır ve hepsi geçmelidir; en çok üç kelime. ASCII dışı karakterler tek karakterlik jokere çevrilir, bu yüzden Türkçe karakter ve büyük/küçük farkı aramayı bozmaz.
emailStandart e-posta biçimi, yerel kısım ≤64 karakteralici@ornek.comKüçük harfe çevrilerek karşılaştırılır.

Boş değer ne demek

Zorunlu olmayan parametreyi göndermeyebilirsiniz ya da boş string geçebilirsiniz; ikisi de "bu alanda filtre yok" demektir ve raporun kendi varsayılanı devreye girer. Katalogda tanımlı olmayan bir alan gönderirseniz istek reddedilir — sessizce yok sayılmaz.

Dönen değerlerin tipleri

  • Sayılar JSON sayısıdır, binlik ayracı yoktur. Kuruş duyarlılığı gereken yerde metne çevirip decimal okuyun; kayan noktada toplamayın.
  • Tarihler YYYY-MM-DD biçiminde metindir.
  • Boş alan null döner; boş string ile karıştırmayın.
  • Eksi stok eksi döner, kırpılmaz — kırpmak veri sorununu gizlemek olurdu.
İstek
Yanıt
{
  "error": "Geçersiz parametre: doc_no"
}

İstek ve yanıt sözleşmesi

Sonuç iki parçadır: kolon listesi ve satırlar. Kolon sırası kataloğdaki sırayla aynıdır ve raporun sürümü değişmeden değişmez; yeni kolon sona eklenir, var olanın adı değişmez. Buna güvenerek kolon adıyla okuyun, sırayla değil.

Alan Tip Açıklama
job_idintegerÇalıştırmanın numarası. Kendi kaydınıza yazın; destek istediğinizde aradığımız şey budur.
statusstringqueued · running · done · failed · cancelled
row_countintegerDönen satır sayısı. result silinmiş olsa bile kalır.
duration_msintegerSorgunun sizin sunucunuzda geçirdiği süre.
truncatedbooleantrue ise raporun üst sınırına dayanıldı ve satırlar kesildi.
result.columnsstring[]Kolon adları, sırasıyla.
result.rowsobject[]Her satır bir nesne: kolon adı → değer.
errorstringYalnız hata gövdelerinde. Başarılı yanıtta bu alan yoktur.
truncated: true gördüğünüzde eksik veriyi tam sanmayın. Filtreyi daraltıp yeniden çalıştırın.

Bir satır her zaman bir belge değildir

Belge raporları satır bazlıdır: bir faturanın üç kalemi üç satırdır ve başlık alanları üçünde de tekrarlanır. Belge sayısı isteyen, belge numarasına göre teklileştirmelidir.

Ortak kurallar

  • Saat dilimi Europe/Istanbul · kodlama UTF-8.
  • Sıkıştırma gzip destekleniyor; büyük sonuçlarda Accept-Encoding: gzip gönderin.
  • Sürümleme yol içinde: /api/v1. Yeni uç eklenebilir, var olanın davranışı değişmez.
Yanıt
{
  "job_id": 2871,
  "status": "done",
  "duration_ms": 413,
  "row_count": 303,
  "truncated": false,
  "result": {
    "columns": ["stock_code", "stock_name", "depot", "quantity"],
    "rows": [
      {"stock_code": "URN0035", "stock_name": "…", "depot": 1, "quantity": 128.0},
      {"stock_code": "URN0036", "stock_name": "…", "depot": 1, "quantity": 0.0}
    ]
  }
}

Bağlantı ve anahtar kontrolü

GET/ping

Anahtar geçerli mi, hangi kiracıya ait. Entegrasyonu kurarken ilk çağrılacak uç; izleme betiğinizde de bunu kullanın. Ajanın canlı olup olmadığını söylemez — onu /run söyler.

İstek
Yanıt
{
  "pong": true,
  "tenant": "sirketiniz"
}

Çalıştırabileceğiniz raporlar

GET/catalog

Bu anahtarın çalıştırabileceği raporlar. Her rapor kendi şirket listesini, parametrelerini ve döndürdüğü kolonları taşır.

Yetkiniz olmayan rapor listede görünmez. Varlığını bile öğrenmezsiniz: yetki kontrolü varlık kontrolünden önce yapılır. Bu yüzden yanlış rapor kodu 404, yetkisiz rapor 403 döner.

Kataloğu uygulamanızın açılışında bir kez okuyup önbelleğe alın; her çağrıdan önce sormanız gerekmez.

İstek
Yanıt
{
  "reports": [
    {
      "id": "H1",
      "name": "Stok mevcudu",
      "entities": ["SIRKET", "SIRKET2"],
      "parameters": [],
      "columns": ["stock_code", "stock_name", "depot", "quantity", "is_service"]
    },
    {
      "id": "H8",
      "name": "Stok kodu satış satırları",
      "entities": ["SIRKET"],
      "parameters": [
        {"name": "stock_code", "required": true,  "type": "code"},
        {"name": "limit",      "required": false, "type": "int", "default": 200}
      ],
      "columns": ["doc_date", "doc_no", "cari_name", "quantity", "unit_price_tl"]
    }
  ]
}

Raporu kuyruğa al

POST/run

Raporu kuyruğa alır ve hemen döner — sonucu beklemez. Sorgu sizin sunucunuzda koşacağı için tipik bekleme bir ile beş saniyedir.

Alan Tip Açıklama
id zorunlustringRapor kodu, kataloğdaki hâliyle: H1, H8.
entity isteğe bağlıstringŞirket kodu. Verilmezse kiracının varsayılan şirketi kullanılır.
arguments isteğe bağlıobjectRaporun kendi parametreleri. Katalogdaki adlar ve tipler geçerlidir; bilinmeyen alan reddedilir.
Çok şirketliyseniz entity alanını her çağrıda yazın. Verilmezse istek varsayılan şirkete gider: yetkiniz yoksa 403, varsa yanlış şirketin verisi. İkincisi daha pahalıdır, çünkü hata vermez.
İstek
Yanıt
{
  "job_id": 2871,
  "status": "queued"
}

Durum ve sonuç

GET/job/{job_id}

Çalıştırmanın durumu; bittiyse sonucu da içinde.

Durum Anlamı
queuedKuyrukta, ajan henüz almadı.
runningAjan aldı, sizin veritabanınızda çalışıyor.
doneBitti. result içinde satırlar var — ömrü dolmadıysa.
failedSorgu hata verdi ya da süre aşımına uğradı.
cancelledİptal edildi.

Yoklama aralığı

Bir saniyeyle başlayıp beş saniyeye çıkın ve bir üst sınır koyun. Sabit yüz milisaniyelik yoklama ne sonucu hızlandırır ne de kimseye fayda sağlar; ajanı meşgul eder.

İş bitti ama result yoksa saklama süresi dolmuştur. Raporu yeniden çalıştırın ve sonucu hemen kendi tarafınıza yazın.
İstek
Yanıt
{
  "job_id": 2871,
  "status": "done",
  "duration_ms": 413,
  "row_count": 303,
  "truncated": false,
  "result": {
    "columns": ["doc_no", "doc_date", "total_tl"],
    "rows": [
      {"doc_no": "FTR2026000000123", "doc_date": "2026-09-14", "total_tl": 18450.0}
    ]
  }
}

Son tamamlanmış sonuç

GET/report/{id}/latest

Bu rapor için tamamlanmış son çalıştırmanın sonucu — panelin ya da zamanlı görevin çalıştırdığı bir iş de olabilir. Yeni bir çalıştırma başlatmaz, bu yüzden hızlıdır.

Parametre Yer Açıklama
id zorunluyolRapor kodu.
entity isteğe bağlısorguŞirket kodu.
Bu bir hız kolaylığıdır, garanti değil. Saklama süresi dolmuşsa 404 döner. Kesin sonuç isteyen /run + /job kullanır.
İstek
Yanıt
{
  "report": "H1",
  "entity": "SIRKET",
  "finished_at": "2026-09-27T09:00:12+03:00",
  "row_count": 303,
  "result": { "columns": ["…"], "rows": [] }
}

Pano özeti

GET/dashboard

Panonun özet rakamları — kendi iç ekranınıza taşımak için.

Ayrı yetki gerekir. Anahtarda dashboard:read işaretli olmalı; rapor yetkisi bunu kendiliğinden vermez.
İstek
Yanıt
{
  "entity": "SIRKET",
  "generated_at": "2026-09-27T09:12:00+03:00",
  "metrics": {
    "revenue_mtd": 4820150.44,
    "receivables_open": 19233410.10,
    "dispatch_open": 1384220.00
  }
}

Hata kodları

Hata gövdesi her zaman {"error":"..."} biçimindedir ve Türkçe yazılmıştır — çünkü onu okuyan çoğu zaman bir geliştirici değil, entegrasyonu izleyen kişidir.

Kod Mesaj Ne oldu
401API kimlik başlıkları eksikBaşlıkları göndermediniz.
401Geçersiz API anahtarıAnahtar ya da gizli değer yanlış.
403API anahtarı kullanım dışıAnahtar devre dışı bırakılmış.
403API anahtarının süresi dolmuşSon kullanma tarihi geçmiş.
403Bu adresten bu anahtarla erişime izin yokIP kısıtı.
403Bu anahtarın X şirketinde H2 yetkisi yokMatriste o kutu işaretli değil.
400Geçersiz parametre: doc_noBiçim tutmuyor (tırnak, boşluk, uzunluk).
400Eksik parametre: doc_noZorunlu parametre yok.
400Bilinmeyen tüzel kişi: XYZŞirket kodu yanlış.
404Bilinmeyen rapor: H9Katalogda böyle bir rapor yok.
404Çalıştırma bulunamadıİş numarası size ait değil ya da yok.
404Bu rapor için tamamlanmış çalıştırma yoklatest, hiç çalışmamış rapor.
404Sonuç saklama süresi dolmuş olabilirSatırlar silinmiş; yeniden çalıştırın.
500Sunucu hatasıBizde. Ayrıntı günlükte, yanıtta değil.
Ağ hatasında boş liste dönmeyin. READERP'e ulaşılamıyorsa son iyi veriyle devam edin. Boş liste dönmek, mağazada bütün ürünleri stoksuz göstermek demektir.

Yeniden deneme

  • 5xx ve ağ hatası: artan aralıklarla birkaç kez deneyin.
  • 4xx: denemeyin. İstek yanlış; tekrarı da yanlış olacak.
  • failed olan iş: aynı parametrelerle bir kez deneyin, sonra durun ve bildirin — genelde sorgu süre aşımına uğramıştır, filtreyi daraltmak gerekir.
İstek
Yanıt
{
  "error": "Bu anahtarın SIRKET şirketinde H2 yetkisi yok"
}

Güvenlik ve sınırlar

Bir entegrasyon anahtarı er ya da geç bir yere yazılır: bir sunucunun ortam dosyasına, bir dağıtım betiğine, bir geliştiricinin makinesine. Tasarım bu varsayımla yapıldı — anahtar sızarsa kaybın ne olacağı baştan sınırlı.

Sınır Nasıl uygulanır Aşılırsa
YöntemYalnız GET ve tek bir POST (/run). Yazma ucu yok; ajan tek bir SELECT ya da WITH çalıştırır, INSERT · UPDATE · DELETE · EXEC · MERGE reddedilir.405
RaporYalnız kataloğa alınmış, imzalanmış sorgular. Çalışma anında SQL üretilmez; gönderdiğiniz şey bir sorgu değil, bir rapor kodu ve parametrelerdir.404
Şirket × raporMatristeki kutu işaretli değilse o şirkette o rapor çalışmaz.403
IPTek adres ya da CIDR bloğu. Liste boşsa kısıt yoktur.403
SüreSon kullanma tarihi olan anahtar o tarihten sonra kendiliğinden durur.403
SatırHer raporun kendi üst sınırı var (200–15.000).truncated: true
Süre aşımıRapor başına 60–180 saniye. Uzun sorgu ERP'nizi meşgul etmesin diye kesilir.iş failed
Sonuç ömrüVarsayılan 60 saniye, kiracıya göre ayarlanır.404

Eşzamanlılık

Bir anahtar aynı anda birden çok iş kuyruğa alabilir. Ama aynı raporu aynı şirkette saniyede bir defadan sık çalıştırmanın faydası yoktur: veri o hızda değişmiyor ve ajanı meşgul eder. Saat başı tazeleme çoğu mağaza için doğru aralıktır.

Kayıt ve gizlilik

  • Yalnız HTTPS. Kimlik başlığı günlüğe yazılabilir, gizli değer yazılmaz.
  • Kullanım kaydında vergi numarası ve e-posta maskelenir; belge numarası olduğu gibi kalır — aranan genelde odur.
  • Her çağrı kayıtlıdır: hangi anahtar, hangi şirketten, neyi, hangi parametreyle çekti, kaç satır döndü, kaç milisaniye sürdü.

Mobil uygulamalar

API düz HTTP ve JSON; iOS, Android, React Native, Flutter ya da bir PWA fark etmiyor. Mobilde dikkat edilecek üç şey var ve üçü de ağın yavaş olmasından geliyor.

Anahtar sizin sunucunuzda durur

Uygulama paketinden çıkarılan anahtar herkesindir. Mobil uygulama kendi sunucunuza sorar, sunucunuz READERP'e. Böylece anahtarı döndürmek için uygulama güncellemesi de gerekmez.

Eşzamansız akışı sunucunuz yönetsin

Telefon /run ve /job döngüsünü kendisi yürütmesin: ekran kilitlendiğinde yoklama durur, sonuç ömrü dolar ve kullanıcı boş ekran görür. Sunucunuz sonucu alıp kendi tarafında saklasın, uygulama oradan okusun.

Çevrimdışıyken son iyi veri

Ağ hatasında boş liste dönmeyin — sahada bu, "stok yok" demektir. Son başarılı sonucu zaman damgasıyla gösterin: "14:20 itibarıyla" yazan bir ekran, boş bir ekrandan her zaman daha kullanışlıdır.

Saha senaryosu: satışçı müşterinin kapısında bakiyeyi ve açık irsaliyeyi görür. Bu üç rapor yeterlidir: cari bul (H4), cari belgeleri (H6), açık irsaliyeler (A4).
İstek

Panelden yönetim

API'yi kuran geliştiricidir, ama yetkiyi veren ve geri alan çoğu zaman o değildir. Bu yüzden anahtarın her ayarı panelde, tıklanır hâlde duruyor.

Anahtar oluşturma — Ayarlar → API anahtarları

  • Ad — hangi entegrasyon olduğu ("mağaza", "crm", "bayi portalı").
  • Şirket × rapor matrisi — her şirket için her rapor ayrı işaretlenir.
  • IP kısıtı — tek adres ya da blok; boş bırakılırsa kısıt yok.
  • Son kullanma — o tarihten sonra anahtar kendiliğinden durur.
  • Pano yetkisi — dashboard:read, ayrı bir kutu.
Kutuyu kaldırdığınız an geçerlidir. Anahtarı yeniden üretmeye ya da entegrasyonu durdurmaya gerek yok; kaldırılan yetki bir sonraki çağrıda 403 döner.

Kullanım kaydı — Ayarlar → API kullanımı

Tarih aralığı, anahtar, rapor ve durum koduna göre süzülür; saat saat dağılım, en çok çağrılan raporlar, dönen satır sayısı ve süre aynı ekranda. Canlı izleme açıkken sayfa yenilenmeden yeni satırlar düşer.

Entegrasyonu ilk bağladığınız gün bu ekranı açık tutun: isteğin gelip gelmediği, gelmiyorsa nerede durduğu orada görünür. İlk gün en çok görülen iki satır 401 (başlık adı yanlış yazılmış) ve 403 (matriste kutu işaretlenmemiş) olur.

Anahtar döndürme

Yenileme tek tıktır ve eskisini anında geçersiz kılar. Kesintisiz döndürmek için ikinci bir anahtar oluşturun, entegrasyonu ona geçirin, sonra eskisini kapatın — kapatmak silmek değildir, geçmiş kullanım kaydı durur.

İstemciler ve araçlar

Tek dosya, bağımlılık yok. İkisi de eşzamansız akışı, yeniden deneme aralığını ve hata sınıflarını içeriyor.

Araç Gereksinim İndir
PHP istemcisiPHP 8.0+, yalnız curlreaderp-client.php
JavaScript istemcisiNode 18+ ya da tarayıcıreaderp-client.js
Postman koleksiyonuYedi hazır istek, değişkenlerlereaderp.postman_collection.json

Başka bir dilde çalışıyorsanız yazılacak şey altı istekten ibaret: iki başlık, bir POST, bir yoklama döngüsü. Sağdaki Python ve C# örnekleri kütüphanesiz kullanım için yeterli.

Rapor kataloğu

Katalog kurulumla birlikte gelir ve büyür. Hangi raporun ne döndürdüğünü /catalog kolon kolon söyler; anlatımlı listesi rapor kataloğu sayfasında.

Yardım

Entegrasyonu uçtan uca biz de kurabiliyoruz; IMFLEXI üzerinde çalışan mağazalarla birebir uyumlu. İletişim

İstek

Stok listesi

H1Depo bazında eldeki miktar.

Parametresiz çalışır. Sıfır bakiyeli kartlar da döner — tükenen ürün mağazada "tükendi" görünebilsin diye.

Üç tuzak. Hizmet kartları (is_service = 1) muhasebe bakiyesi taşır, milyonluk "miktar" görürsünüz; stok olarak yayımlamayın. Satırlar depo bazındadır, tek ürün için depoları siz toplarsınız. Aynı ürünün iki şirkette de kartı olabilir; iki şirketin miktarını toplamak aynı malı iki kez saymaktır.

Dönen kolonlar

stock_code · stock_name · manufacturer_code · barcode_1..3 · extra_barcodes product_group · unit · is_service · card_locked · sales_locked depot_code · depot_name · quantity · last_movement · movements

Üst sınır: 5000 satır · 180 sn

İstek
Yanıt
{
  "job_id": 2871,
  "status": "queued"
}

Belge sorgula

H2İrsaliye, fatura ya da e-belge numarasıyla.

Belgenin başlığı ve kalemleri tek çağrıda.

Kodları okumanız gerekmez: doc_type "Satış faturası", dispatch_state "Açık irsaliye" ya da "Faturalanmış irsaliye", e_doc_status "Oluşturuldu, gönderilmedi" diye yazar.

Parametre Tip Açıklama
doc_no zorunludocnoBelge ya da e-belge numarası.

Dönen kolonlar

doc_type_code · doc_type · dispatch_state · e_doc_status · doc_no · e_doc_no doc_date · cari_code · cari_name · gross_tl · vat_tl · total_tl · currency total_fx · payment_date · payment_days · note · extra_1..4 line_no · stock_code · stock_name · manufacturer_code · quantity unit_price_tl · unit_price_fx · line_currency · vat_rate · depot_code linked_doc_no · order_ref

Üst sınır: 2000 satır · 60 sn

İstek
Yanıt
{
  "job_id": 2871,
  "status": "queued"
}

Stok fiyatları

H3Alış maliyeti ve satış fiyatı geçmişi.

Son alış, 12 aylık ve tüm zamanların ortalaması, son satış, 12 aylık en düşük ve en yüksek satış fiyatı, kaç müşteriye satıldığı. Fiyatlandırma ve marj kontrolü için.

Parametre Tip Açıklama
stock_code isteğe bağlıcodeBoş bırakılırsa bütün kartlar.

Dönen kolonlar

stock_code · stock_name · manufacturer_code last_purchase_date · last_purchase_price_tl · last_purchase_price_eur avg_purchase_price_tl_12m · purchase_qty_12m last_sale_date · last_sale_price_tl · avg_sale_price_eur_12m min_sale_price_eur_12m · max_sale_price_eur_12m · customers_12m

Üst sınır: 5000 satır · 120 sn

İstek
Yanıt
{
  "job_id": 2871,
  "status": "queued"
}

Cari bul

H4Vergi no, TC kimlik, e-posta, cari kodu veya ünvanla.

Sipariş sırasında mevcut cariyi bulup yenisini açmamak için. Bakiye ve son hareket de döner.

Parametre Tip Açıklama
tax_no isteğe bağlıtaxnoVKN (10) ya da TCKN (11).
email isteğe bağlıemailKüçük harfe çevrilerek aranır.
cari_code isteğe bağlıcodeCari kodu.
name isteğe bağlınameÜnvan / isim. En az 3 karakter. Kelimeler ayrı ayrı aranır ve hepsi geçmelidir.

Hepsi isteğe bağlıdır ama en az biri anlamlı olmalı; hepsi boşsa sonuç boş döner.

Birden çok parametre birleşimdir, yedekleme değil. Hem tax_no hem name verirseniz ikisinin eşleştiği kartların tamamı döner (VEYA), "önce şuna bak, bulamazsan buna" değil. Aynı vergi numarası hem müşteri hem tedarikçi kartında durabiliyor ve mükerrer cari aramanın amacı zaten hepsini görmek.

Ünvan araması

Kelime sırası önemsiz. "selçuk gülben" yazınca "GÜLBEN SELÇUK" de bulunur: insanların yazdığı sıra, kartın yazıldığı sıra değil. En çok üç kelime dikkate alınır; fazlası yok sayılır, yani sonuç kümesi genişler, daralmaz.

Türkçe karakter ve büyük/küçük farkı aramayı bozmaz. Veritabanları Latin1 ve Türkçe metni Windows-1254 baytlarıyla tutuyor; bu yüzden ASCII dışı her karakter tek karakterlik jokere çevriliyor ("GÜLBEN" → "g_lben").

En az üç karakter. Daha kısası 400 ile reddedilir: iki harf yüz cari döndürür ve o liste cevap değil gürültüdür.

Sıralama: ünvanın başında eşleşenler önce, sonra son hareket tarihi yeniden eskiye.

Dönen kolonlar

cari_code · cari_name · account_class · currency_card · tax_no · national_id tax_office · email · phone · mobile · city · district · currency created · balance_tl · last_movement · movements · total_rows

Üst sınır: 50 satır · 60 sn. total_rows kırpmadan önceki eşleşme sayısıdır — 50 satır dönüp toplamın 94 olduğunu söylemeyen bir arama, bulduğu şey hakkında sessizce yanlış konuşur. Kırpma sorgunun içinde olduğu için yanıttaki truncated alanı false kalır; bakılacak alan total_rows.

İstek
Yanıt
{
  "job_id": 2871,
  "status": "queued"
}

Sipariş durumu

H5Sevk edildi mi, faturalandı mı.

Kalem kalem sipariş edilen, sevk edilen ve faturalanan miktar; bağlı irsaliye ve fatura numaralarıyla.

Parametre Tip Açıklama
order_no zorunludocnoNetsis sipariş numarası.

Dönen kolonlar

order_no · order_date · cari_code · cari_name · order_total_tl · currency order_total_fx · note · line_no · stock_code · stock_name ordered_qty · dispatched_qty · invoiced_qty · unit_price_tl · unit_price_fx line_status · dispatch_doc_nos · invoice_doc_nos

Üst sınır: 2000 satır · 60 sn

İstek
Yanıt
{
  "job_id": 2871,
  "status": "queued"
}

Cari belgeleri

H6Sipariş, irsaliye, fatura ve iade.

Bir müşterinin son N gündeki belgeleri — bayi paneli ya da müşteri ekranı için. uninvoiced ve uninvoiced_days faturalanmamış sevkiyatı işaret eder.

Parametre Tip Açıklama
cari_code zorunlucodeCari kodu.
days isteğe bağlıintKaç gün geriye. Boş: 90.

Dönen kolonlar

doc_type_code · doc_type · dispatch_state · e_doc_status · doc_no · e_doc_no doc_date · total_tl · currency · total_fx · payment_date · note line_count · quantity · extra_1 · linked_doc_no · linked_docs order_ref · uninvoiced · uninvoiced_days

Üst sınır: 2000 satır · 60 sn

İstek
Yanıt
{
  "job_id": 2871,
  "status": "queued"
}

E-ticaret siparişinin belgeleri

H7Ek sahadaki sipariş numarasıyla.

Kendi sipariş numaranızla sorgular — belgeyi Netsis'te oluştururken numarayı ek sahaya yazdığınız için. Siparişin faturası kesildi mi, e-belge GİB'e gitti mi, hepsi tek çağrıda.

Parametre Tip Açıklama
shop_ref zorunludocnoSizin sipariş numaranız; en az 4 karakter.
matched_in numaranın hangi alanda bulunduğunu, exact_match ise tam eşleşme mi yoksa içinde geçme mi olduğunu söyler. Sipariş numaranız kısa ve başka numaraların içinde geçebilecek türdense exact_match alanına bakın.

Dönen kolonlar

doc_type_code · doc_type · dispatch_state · e_doc_status · doc_no · e_doc_no doc_date · cari_code · cari_name · total_tl · currency · total_fx · note extra_1 · matched_in · exact_match · line_count · quantity linked_doc_no · order_ref · created_at · changed_at

Üst sınır: 200 satır · 60 sn

İstek
Yanıt
{
  "job_id": 2871,
  "status": "queued"
}

Stok satış satırları

H8Hangi tarihte, kime, kaça satıldı.

Ürün sayfasında fiyat geçmişi ya da kendi panelinizde satış eğrisi için.

Parametre Tip Açıklama
stock_code zorunlucodeStok kodu.
date_from isteğe bağlıdateBoş: 24 ay önce.
date_to isteğe bağlıdateBoş: bugün.
limit isteğe bağlıintBoş: 200 · üst sınır 1000.
total_rows filtreye uyan gerçek satır sayısıdır — limit yüzünden kesilmiş olsa bile. exchange_rate satır bazında ima edilen kurdur; toplamı toplama bölerek kur hesaplamayın, ortanca alın.

Dönen kolonlar

doc_date · doc_type · doc_no · e_doc_no · cari_code · cari_name · line_no quantity · unit · unit_price_tl · unit_price_fx · currency · exchange_rate line_total_tl · line_total_fx · vat_rate · extra_1 · total_rows

Üst sınır: 1000 satır · 60 sn

İstek
Yanıt
{
  "job_id": 2871,
  "status": "queued"
}

Açık irsaliyeler

A4Mal çıktı, fatura yok.

Parametresiz. Yaş aralığı ve satır tutarıyla birlikte döner; kendi uyarı ekranınıza taşıyabilirsiniz.

Dönen kolonlar

dispatch_no · dispatch_date · cari_code · customer_name · customer_label stock_code · stock_name · kind · depot · quantity · unit_price · line_value days_open · age_bucket · reason · evidence

Üst sınır: 15000 satır · 180 sn

İstek
Yanıt
{
  "job_id": 2871,
  "status": "queued"
}