Arama kriterlerinize uygun sonuç bulunamadı.

GoPOS Veri API

Bu API, muhasebe programları ve diğer 3. parti uygulamaların GoPOS'tan veri okumasını sağlar. Tek bir uç vardır: istemek istediğiniz verilerin adlarını bir liste hâlinde gönderirsiniz, cevap isim: veri şeklinde tek pakette döner. Ayrı ayrı istek atmanıza gerek yoktur.

API yalnızca okuma yapar; hiçbir uç veri değiştirmez. Erişim, işletmenin size verdiği token ile sağlanır ve işletmenin API Entegrasyon modülü aktif olduğu sürece çalışır.

Üç adımda özet: İşletme size token verir → token'ı X-Api-Key başlığında gönderirsiniz → istediğiniz veri adlarını POST edersiniz.

Hızlı Başlangıç

  1. İşletme, API Entegrasyon modülünü açtırır Modül aylık ücretlidir ve GoPOS bayisi/yetkilisi tarafından işletmeye tanımlanır. Modül aktif değilse token üretilemez, üretilmiş token da çalışmaz.
  2. İşletme token oluşturur İşletme kendi GoPOS panelinde Entegrasyonlar → API Entegrasyonları sayfasına girer, Ekle der ve firma adınızı yazar. Üretilen token'ı size iletir. Token süresizdir; sızarsa işletme aynı ekrandan yenileyebilir (eski token o anda geçersiz olur).
  3. Token'ı isteğe ekleyin Her istekte X-Api-Key başlığında gönderin. Başka bir kimlik bilgisi (kullanıcı adı, şifre, JWT) gerekmez.
  4. Hangi verileri çekebileceğinizi öğrenin Gövdede boş liste [] göndererek işletmeye açık olan bütün veri adlarını ve parametrelerini alırsınız.
  5. Veriyi çekin İstediğiniz adları liste hâlinde gönderin. Aşağıdaki Canlı Test bölümünden tarayıcıdan deneyebilirsiniz.

Kimlik Doğrulama

Tüm isteklerde token X-Api-Key başlığında gönderilir:

İstek Başlıkları
Content-Type: application/json
X-Api-Key: cGFzdGUteW91ci10b2tlbi1oZXJl...

Token hakkında bilmeniz gerekenler:

  • Token bir işletmenin tek şubesine bağlıdır. Şube bilgisi token'ın içinde şifreli taşınır; ayrıca şube parametresi göndermenize gerek yoktur.
  • Süresizdir, ama işletmenin modül lisansı biterse istekler 402 ile reddedilir.
  • İşletme token'ı yenilerse ya da silerse anında geçersiz olur.
  • Token gizli bilgidir; istemci uygulamaya (mobil/tarayıcı) gömmeyin, sunucu tarafında saklayın.
Birden fazla şubenin verisini çekecekseniz her şube için ayrı token alırsınız. Bir token yalnızca kendi şubesinin verisini döndürür.

Canlı Test

Token'ınızı girip gerçek istek atabilirsiniz. Bu bölüm tarayıcınızdan doğrudan API'ye bağlanır; araya bir sunucu girmez, veriler hiçbir yere kaydedilmez. Token yalnızca sizin tarayıcınızda (localStorage) saklanır, istersen tek tuşla silinir.

Token girilmedi.
İstek gönderilemedi hatası alıyorsanız istek sunucuya hiç ulaşmamış demektir. Sık sebepler: seçtiğiniz adres henüz yayında değil (DNS çözülemiyor), API çalışmıyor, ya da tarayıcı CORS engeli. Sunucuya ulaşılabildiğinde — token yanlış olsa bile — gerçek bir HTTP kodu (401, 402 gibi) görürsünüz.

Sayfa https:// üzerinden açıkken http://localhost adresine istek atarsanız tarayıcı karışık içerik (mixed content) engeline takılır; yerel testte dokümanı file:// ya da http://localhost üzerinden açın.

Toplu Veri Çekme

POST /v2/integration/data/fetch

Gövde üç şekilde gönderilebilir. En basiti düz isim listesidir:

1. Düz liste
["category.getall", "paymenttype.getall"]

Parametre gerekiyorsa ya da cevapta farklı bir anahtar adı istiyorsanız nesne kullanın:

2. Parametreli / takma adlı
[
  {
    "name": "pos.get-orders-by-date",
    "parameters": { "startDate": "2026-08-01", "endDate": "2026-08-19" },
    "alias": "agustosSatislari"
  },
  "category.getall"
]

Aynı parametre birden fazla uca gidecekse defaults ile bir kez yazın:

3. Ortak parametreli
{
  "defaults": { "startDate": "2026-08-01", "endDate": "2026-08-19" },
  "items": ["pos.get-orders-by-date", "pos.get-ticket-report-by-day-id-or-date"]
}

Cevap

Sonuçlar results altında, istediğiniz sırayla, isim: veri şeklinde döner. Bir uç hata verirse istek tamamen başarısız olmaz: o adın verisi null olur ve ayrıntı errors altına yazılır.

Örnek Cevap (JSON)
{
  "success": true,
  "storeGoId": "8f14e45f-ceea-467a-9575-28e6b1c2f0a1",
  "count": 2,
  "elapsedMs": 48,
  "results": {
    "category.getall": [ ... ],
    "paymenttype.getall": [ ... ]
  }
}
AlanAçıklama
successHiç hata yoksa true. Bir uç bile hata verirse false olur ama diğer veriler yine gelir.
storeGoIdToken'ın bağlı olduğu şube.
countCevaptaki anahtar sayısı.
elapsedMsİsteğin sunucudaki toplam süresi (ms).
resultsisim: veri eşleşmeleri. Takma ad verdiyseniz anahtar takma addır.
errorsYalnızca hata varsa gelir: { "isim": { "status": 404, "message": "..." } }
Aynı adı iki kez isterseniz ikinci anahtar isim#2 olur. Karışmaması için alias kullanın.

Katalog (İsim Listesi)

Gövdede boş liste gönderirseniz hiçbir uç çalıştırılmaz; bunun yerine o işletmede çekebileceğiniz bütün adlar, parametreleriyle birlikte listelenir. Entegrasyona başlarken ilk yapmanız gereken budur.

İstek
POST /v2/integration/data/fetch
X-Api-Key: ...

[]
Cevap
{
  "success": true,
  "count": 18,
  "catalog": [
    {
      "name": "category.getall",
      "path": "/v2/category/getall",
      "parameters": []
    },
    {
      "name": "pos.get-orders-by-date",
      "path": "/v2/pos/get-orders-by-date",
      "parameters": [
        { "name": "StoreId", "type": "Int64", "optional": false },
        { "name": "startDate", "type": "DateTimeOffset", "optional": false }
      ]
    }
  ]
}
StoreId ve storeGoId parametrelerini göndermenize gerek yok — sunucu bunları token'daki şubeye göre kendisi doldurur, gönderseniz bile dikkate almaz.

Çekilebilen Veriler

Aşağıdaki liste standart kurulumda açık olan adlardır. Kesin liste işletmeye göre değişebilir; her zaman katalog ucundan doğrulayın.

AdNe dönerParametre
product.get-all-with-servingsÜrünler, porsiyon ve fiyatlarıyla
product.getbycategoryBir kategorinin ürünleriCategoryId
category.getallKategoriler
menutag.menutag.getallAna kategoriler (menü etiketleri)
menutag.categorytag.getbystoreKategori ↔ ana kategori ilişkisi
modifier.group.getallÖzellik grupları
modifier.get-by-groupGruba bağlı özelliklerModifierGroupId
productmodifiers.getallÜrün ↔ özellik ilişkisi
serving.getbyproductÜrün porsiyonlarıProductId
area.getallBölgeler
table.getall-bystoreMasalar
pos.get-active-ordersAçık masalar / aktif adisyonlar
pos.get-orders-by-dateTarih aralığına göre satışlarstartDate, endDate
pos.get-orders-by-dayidGün sonuna göre satışlardayStartId
pos.get-ticket-report-by-day-id-or-dateAdisyon / satış raporudayStartId ya da tarih
paymenttype.getallÖdeme tipleri
tax.get-allVergi oranları
tax.relation.get-by-productÜrün ↔ vergi ilişkisiproductId
Muhasebeye satış yazacaksanız en az şunlar gerekir: pos.get-orders-by-date (satışlar), paymenttype.getall (ödeme tipi eşleştirmesi) ve tax.get-all (KDV oranı).

Hata Kodları

İstek geneli

KodAnlamıNe yapmalı
401Token yok, bozuk, silinmiş ya da pasifİşletmeden güncel token isteyin
402API Entegrasyon modülü lisansı bitmiş ya da hiç yokİşletmenin modülü yenilemesi gerekiyor. Cevapta endDate bulunur
400Gövde hatalı ya da öge limiti aşıldıJSON'u ve öge sayısını kontrol edin

Tek bir veri adına ait hatalar (errors içinde)

KodAnlamı
404Böyle bir ad yok. Katalogdan doğrulayın
403Ad var ama bu entegrasyona kapalı
400Zorunlu parametre eksik
408İsteğin süre bütçesi doldu, bu ad çalıştırılmadı. Listeyi bölün
500Uç beklenmedik hata verdi
Hatalı cevap örneği
{
  "success": false,
  "count": 2,
  "results": {
    "category.getall": [ ... ],
    "olmayan.ad": null
  },
  "errors": {
    "olmayan.ad": { "status": 404, "message": "'olmayan.ad' adinda bir veri cekme ucu yok." }
  }
}

Limitler ve Öneriler

LimitDeğerAşılırsa
Tek istekte ad sayısı100400 döner
İstek süre bütçesi20 saniyeKalan adlar 408 ile atlanır
Cevap önbelleği2 saniyeAynı ad + aynı parametre tekrar sorulursa önbellekten döner

Verimli kullanım

  • Sabit verileri sık çekmeyin. Ürün, kategori, vergi, ödeme tipi günde birkaç kez yeter.
  • Hareketli veride tarih filtresi kullanın. pos.get-orders-by-date ile yalnızca son çekimden bu yanaki aralığı isteyin; tüm listeyi tekrar çekmeyin.
  • Tek istekte toplayın. Beş ayrı istek yerine beş adı tek gövdede gönderin; sunucu sırayla çalıştırıp tek cevapta döner.
  • Çok sık sormayın. Saniyeler mertebesinde sorgulama hem sizi hem işletmenin veritabanını yorar; dakikalık aralıklar çoğu senaryo için fazlasıyla yeterlidir.

Sık Sorulanlar

Token'ı ben mi oluşturuyorum?

Hayır. İşletme kendi panelinden oluşturup size iletir. Siz yalnızca kullanırsınız.

Token'ın süresi doluyor mu?

Token süresizdir. Ama işletmenin API Entegrasyon modülü aylık lisanslıdır; lisans biterse istekler 402 ile reddedilir, ödeme yapılınca aynı token çalışmaya devam eder.

Şube parametresi göndermem gerekiyor mu?

Hayır. Şube token'ın içindedir. StoreId / storeGoId gönderseniz de sunucu kendi değerini kullanır.

Veri yazabilir miyim?

Hayır. Bu API salt okunurdur; katalogda yalnızca veri çekme uçları bulunur.

Bir ad hata verirse diğerleri de mi gelmez?

Gelir. Her ad bağımsız çalışır; hatalı olanın verisi null olur, ayrıntı errors içinde döner.

Token sızarsa ne yapmalıyım?

İşletmeye haber verin; panelden Tokenı Yeniden Oluştur demesi yeterli. Eski token o anda geçersiz olur, size yeni token verilir.