Senkronia

Geliştirici

Senkronia API

Kendi yazılımınızı veya çalıştığınız yazılımcının sistemini Senkronia'ya bağlayın: siparişleri okuyun, stok sayımı gönderin, satış oluşturun; olaylar gerçekleştiğinde kendi sunucunuza imzalı webhook alın. Bu sayfayı yazılımcınıza olduğu gibi verebilirsiniz.

Taban adres: https://senkronia.com/api/v1 Kimlik: Bearer token Biçim: JSON (UTF-8)

1. Güvenlik — önce bunu okuyun

  • Anahtar = şifre. API anahtarı, o firmanın verisine erişim demektir. Panelden Ayarlar → API ve Webhook ekranında üretilir ve yalnızca bir kez gösterilir. Kaybolursa yenisi üretilir, eskisi iptal edilir.
  • Dış yazılımcıya salt-okunur anahtar verin. Anahtar üretirken “Salt okunur” seçeneği veriyi okur ama değiştiremez; yazma uçlarına 403 salt_okunur_anahtar döner. Entegrasyon geliştirilirken bu anahtarla başlanması önerilir.
  • Anahtarı istemci tarafında saklamayın. Tarayıcı JavaScript'i, mobil uygulama paketi veya herkese açık bir depo (GitHub) anahtar için güvenli yer değildir; istekler kendi sunucunuzdan yapılmalıdır.
  • Yalnız HTTPS. Tüm istekler TLS üzerinden gider; http:// adresine yapılan çağrılar yönlendirilir.
  • Hız sınırı. Anahtar başına dakikada 120 istek (giriş ucu 10/dk). Aşımda 429 döner; isteğinizi geri çekilerek (backoff) tekrarlayın.
  • Firma sınırı koddadır. Anahtar hangi firmaya aitse yalnız o firmanın verisini görür; istek gövdesine firma kimliği yazılamaz, yazılsa da dikkate alınmaz.
  • İptal. Yazılımcıyla çalışmanız bitince anahtarı panelden iptal edin; iptal anında geçerli olur.
  • Webhook'ları doğrulayın. Gelen her webhook'ta HMAC imzası vardır (aşağıda örnek kod); imzayı doğrulamadan gövdeye güvenmeyin.

2. Kimlik doğrulama

Panelden alınan anahtarı her istekte Authorization başlığında gönderin:

curl -H "Authorization: Bearer ANAHTARINIZ" \
     -H "Accept: application/json" \
     https://senkronia.com/api/v1/ozet

Alternatif olarak panel kullanıcısının e-posta/şifresiyle de token alınabilir (mobil uygulama bu yolu kullanır):

POST https://senkronia.com/api/v1/giris
{"email": "[email protected]", "password": "•••", "device": "muhasebe-servisi"}

→ {"success": true, "data": {"token": "12|abc…", "user": {…}}}

3. Yanıt biçimi

Tüm yanıtlar aynı zarfı kullanır:

// başarı
{"success": true, "data": { … }, "meta": {"sayfa": 1, "toplam": 42}}

// hata
{"success": false, "error": {"code": "is_kurali", "message": "Bu duruma geçiş yapılamaz."}}
KodAnlamı
401Anahtar yok, hatalı veya iptal edilmiş.
403Salt-okunur anahtarla yazma denemesi ya da başka firmanın kaydı.
404Kayıt bulunamadı.
422Doğrulama veya iş kuralı hatası (error.code açıklar).
429Hız sınırı aşıldı.

Para birimleri kuruş cinsinden tam sayıdır (150000 = 1.500,00 ₺). Tarihler ISO-8601'dir.

4. Uçlar

MetotUçAçıklamaAnahtar
POST /giris Token alır (e-posta + şifre). —
POST /sifre-belirle Geçici şifreyle kalıcı şifre belirler {email, gecici_sifre, password, password_confirmation}. Token vermez; yalnız geçici şifresi olan hesapta çalışır. —
POST /sifre-sifirlama Şifre sıfırlama bağlantısı gönderir {email}. Hesap olsa da olmasa da aynı cevap döner. —
POST /cikis Kullanılan tokenı iptal eder. okuma
GET /ozet Günlük ciro, bekleyen sipariş, düşük stok, bekleyen soru/iade. okuma
GET /en-cok-satan En çok satılan ürünler: aralik=gun|hafta|ay, durumlar=virgüllü sipariş durumu kodları (boş: iptal/iade hariç tümü). okuma
POST /siparisler Manuel sipariş oluşturur: customer_name + items[] (variant_id, quantity, unit_price kuruş); isteğe bağlı telefon/adres, payment_method (cash|card|transfer|cod), payment_received, shipping_total/discount_total/cod_commission (kuruş), status (başlangıç durumu), billing (fatura bilgileri), note. Stok rezerve edilir. Manuel sipariş özelliği pakete bağlıdır (Uzman ve Kurumsal); kapalıysa 402 döner. yazma
GET /siparis-varsayilanlari Manuel sipariş formu açılış verisi: başlangıç durumu seçenekleri, kullanıcının varsayılan ödeme yöntemi, kapıda ödeme kuralı varsayılanları. okuma
GET /siparisler Sipariş listesi (?status=&search=&kargo=numarasiz|fissiz|fisli&page=). okuma
GET /siparisler/{id} Sipariş detayı: kalemler, adres, kargo takip. okuma
PUT /siparisler/{id}/durum Durum değiştirir (confirmed, preparing, shipped, delivered, cancelled, returned). yazma
GET /sorular Pazaryeri müşteri soruları (?status=waiting). okuma
POST /sorular/{id}/yanit Soruya yanıt gönderir (en az 10 karakter). yazma
GET /iadeler İade talepleri (?status=). okuma
POST /iadeler/{id}/onayla İadeyi onaylar (geri alınamaz). yazma
GET /urun-ara Barkod, stok kodu veya ada göre ürün arar (?q=). okuma
GET /bildirimler Bildirim merkezi: son bildirimler (yeni sipariş, kritik stok, iade, senkron hatası, lisans); meta.okunmamis sayısı. okuma
POST /bildirimler/okundu Tüm bildirimleri okundu işaretler (kişi bazlı). yazma
GET /bildirim-tercihleri Kullanıcının push tercihleri: olay türleri (siparis/stok/senkron/iade/diger) + sessiz saat aralığı. okuma
PUT /bildirim-tercihleri Push tercihlerini günceller {tipler{...}, sessiz_baslangic?, sessiz_bitis?} (HH:MM). Yalnız telefon bildirimini etkiler, panel zili tam kalır. yazma
GET /sayim-listesi Stok sayımı için raf sırasına göre tüm aktif ürünler (?q=&raf=; en fazla 500, meta.raflar). okuma
POST /stok-sayim-toplu Toplu sayım: items[{variant_id, quantity}] + note? — her satır stok defterinden geçer, kanallara gider. yazma
POST /siparisler/{id}/paketleme Barkodlu paketleme oturumunu başlatır (açık oturum varsa onu döndürür); toplanacak kalemleri verir. yazma
POST /paketleme/{id}/okut Paketlemede barkod/stok kodu okutur {kod, istemci_ref?}. sonuc: ok | fazla | yabanci | tekrar. yazma
POST /paketleme/{id}/bitir Paketlemeyi bitirir; sipariş "Hazırlanıyor"a geçer. Eksik kalem sayısı, süre ve yanlış okutma döner. yazma
POST /paketleme-okut Kargo fişi karekodu / barkodu / sipariş no okutulur {kod, okutma_zamani?, istemci_ref?}; sipariş "X paketledi" kaydı alır. sonuc: ok | tekrar (aynı kişi) | zaten (ilk okutan kalır). Yetki: Paketleme. yazma
POST /paketleme-okut-toplu Çevrimdışı biriken okutmalar tek istekte: okutmalar[{kod, okutma_zamani?, istemci_ref?}] (en çok 200); her satır kendi sonucunu alır (ok | tekrar | zaten | hata). yazma
GET /paketleme-karnem Kullanıcının paketleme karnesi: bugün / bu hafta (Pazartesi) / bu ay + son okutmalar. okuma
GET /ben Kimlik + güncel panel yetkileri (yetkiler[]); uygulama menüyü bununla süzer. Yetkiler tüm uçlarda zorlanır (403 yetki_yok). okuma
PUT /urunler/{id}/raf Ürünün raf bilgisini yazar {raf} (boş = siler). yazma
PUT /urunler/{id}/mense Ürünün menşei (üretildiği ülke) {mense: iki harfli kod | null}. null = firma varsayılanı (Ayarlar; ilk değer TR). Değişince Trendyol ilanına da gider. yazma
GET /menseiler Menşei seçici: Trendyol ülke listesi [{kod, ad}] + firmanın varsayılanı. okuma
GET /urunler/{id}/etiket-adresi Barkod etiketi için 15 dk imzalı yazdırma adresi (?adet=1-50, ?sablon=tasarım kimliği). Yanıt seçilebilir tasarımları da döndürür. okuma
GET /magaza/satislar Mağaza (hızlı satış) geçmişi: kalemler, satış temsilcisi, müşteri, ödeme kırılımı, etiketler ve etiket bazlı kırılım (?from, ?to, ?user_id, ?method, ?status, ?q, ?tag=id|yok, ?sayfa). okuma
GET /magaza/etiketler Mağaza satışında kullanılacak etiketler (sipariş etiketleriyle ortak katalog); satış yetkisi yeter. okuma
POST /magaza/etiketler Yeni etiket açar: {ad, renk?} (satış yetkisiyle). yazma
DELETE /magaza/etiketler/{id} Etiketi siler; satış ve siparişlerdeki işaret düşer, kayıtlar kalır. yazma
PUT /magaza/satislar/{id}/etiketler Mağaza satışının etiketlerini değiştirir: {etiketler:[id]}. yazma
POST /magaza/satislar/{id}/iade Mağaza satışını iade eder (tamamı): stok geri girer, nakit kısmı kasadan çıkar. pos.refund yetkisi. yazma
GET /magaza/iade-ara İade edilecek satışı bulur: fiş no (fiş barkodu), müşteri adı/telefonu, ürün (?q). Boşsa son satışlar. pos.refund yetkisi. okuma
GET /magaza/satislar/{id}/iade-bilgisi Satışın iade görünümü: satırlar (kalan adet, iade değeri), ödemeler, yöntem başına geri verilebilecek tutar, önceki iadeler. okuma
POST /magaza/satislar/{id}/iade-islem Kısmi iade / değişim / iptal: {tur: iade|degisim|iptal, kalemler:[{satir, adet, stoga}], iade_odemeleri:[{method, amount}], yeni_urunler:[{variant_id, qty, unit_price, discount}], fark_odemeleri:[{method, amount}], neden, contact_id, kasa_id, istemci_ref}. Para iadesi toplamı iade değerine (değişimde farka) eşit olmalı. yazma
GET /magaza/iadeler/{id}/belge-adresi İade / değişim belgesi için 15 dk imzalı yazdırma adresi (?sablon=tasarım kimliği). okuma
GET /magaza/kasa-yonetimi Kasalar (ad, depo, varsayılan, aktif, açık mı, satış sayısı, atanan kullanıcılar) + firma kullanıcıları + depolar. Ayar yönetimi yetkisi. okuma
POST /magaza/kasa-yonetimi Yeni kasa: {name}. Paket kasa sınırı geçerlidir; ilk kasa varsayılan olur. yazma
PUT /magaza/kasa-yonetimi/{id} Kasayı düzenler: {name, warehouse_id, is_active, is_default, user_ids[]} — user_ids boşsa kasa herkese açıktır; atanan kullanıcı yalnız atandığı kasaları kullanır. yazma
GET /magaza/satislar/{id}/fis-adresi Satış fişi için 15 dk imzalı yazdırma adresi (?sablon=tasarım kimliği). okuma
GET /magaza/kasalar Kullanıcının kullanabileceği kasalar (açık mı, kasadaki nakit, varsayılan), seçili kasa (aktif_id — panelle ortak) ve hareket türleri (masraf, bankaya yatırılan…); satış yetkisi yeter. okuma
POST /magaza/kasa-sec Kasa değiştir: {kasa_id}. Seçim panelde de geçerli olur; kullanıcı kasaya atanmışsa yalnız atandığı kasalar seçilebilir. yazma
POST /magaza/kasa-hareket Kasaya para girişi / kasadan para çıkışı: {tur: giris|cikis, tutar (kuruş), kategori?, aciklama?, kasa_id? (boşsa seçili kasa; kapalıysa son sayımla açılır), istemci_ref?}. yazma
GET /magaza/kasa-defteri Kasa defteri: devir, giriş/çıkış, sürekli bakiye, gün gün ve tür kırılımı (?from, ?to, ?register_id, ?tur, ?kategori, ?user_id, ?yon=giris|cikis, ?nakit=1, ?topla=1, ?sira=asc|desc, ?q, ?sayfa). okuma
GET /magaza/kasa-defteri/excel-adresi Kasa defteri Excel ekstresi için 15 dk imzalı indirme adresi (kasa defteriyle aynı süzgeçler). okuma
POST /sozlesme-onayi Güncellenen yasal metinleri onayla: {kabul: true}. Bekleyen metinler /ben yanıtındaki sozlesme_onayi alanındadır (yoksa null); onay IP ve cihaz bilgisiyle kanıt olarak saklanır. yazma
GET /hesaplar Banka ve POS hesapları: her hesabın bakiyesi (bugüne kadar), beklenen giriş/çıkış (valör, hakediş, planlı), son 30 gün, hiçbir hesaba işlenmeyen satışlar (eksikler) ve elle hareket türleri. Tutarlar kuruş; varsayılan banka + POS hesabı ilk çağrıda açılır. okuma
GET /hesaplar/{id}/defter Hesap ekstresi: devir, sürekli bakiyeli satırlar, tür kırılımı, beklenenler (?from, ?to, ?tur, ?yon=giris|cikis, ?q, ?sira=asc|desc, ?sayfa — 50 satır). okuma
POST /hesaplar/hareket Elle hareket: {yon: giris|cikis|transfer, hesap_id, tutar (kuruş), kategori (giriş/çıkışta), karsi_hesap_id + masraf? (transferde), tarih?, aciklama?, belge_no?, istemci_ref?}. Aynı istemci_ref ikinci kayıt açmaz. yazma
DELETE /hesaplar/hareket/{id} Elle girilmiş hareketi siler (satış/valör/hakediş satırları kaynağından düzeltilir). yazma
GET /hesaplar/{id}/excel-adresi Hesap ekstresi Excel için 15 dk imzalı indirme adresi (defterle aynı süzgeçler). okuma
POST /hesaplar Hesap açar: {tur: banka|pos, ad, banka?, iban?, baslangic_tarihi, acilis_bakiyesi? (kuruş), varsayilan?, aktif?, not?; POS için komisyon_bp? (%1,79 = 179), sabit_kurus?, valor_gun?, otomatik_aktarim?, bagli_hesap_id?}. yazma
PUT /hesaplar/{id} Hesabı düzenler (türü değişmez; alanlar hesap açmayla aynı). Varsayılan hesap pasife alınamaz. yazma
DELETE /hesaplar/{id} Hiç kullanılmamış hesabı siler; kullanılmış hesap pasife alınır (geçmiş korunur). yazma
GET /hesaplar/yonlendirme Para nereye gider: kasaların POS/banka hesabı, pazaryerlerinin hakediş bankası, mağaza kanallarının tahsilat kuralları, seçilebilir hesaplar. okuma
PUT /hesaplar/yonlendirme Yönlendirmeyi kaydeder: {kasalar:[{id, pos_hesap_id?, banka_hesap_id?}], kanallar:[{id, hesap_id?}]} — boş = varsayılan hesap. yazma
POST /hesaplar/{id}/esitle Bakiye eşitleme: {bakiye (kuruş, bankadaki gerçek bakiye), aciklama?} — fark "bakiye düzeltme" satırı olur; yanıtta fark. yazma
GET /galeri Firmanın görsel galerisi (ürüne yüklenen, galeriye yüklenen, AI Stüdyo, kanaldan gelen): ?q (ürün adı/stok kodu/dosya adı), ?kaynak (upload|galeri|ai|channel), ?sayfa — 36'şar. okuma
GET /urunler/{id}/gorseller Varyantın ürününe ait görseller sırasıyla (ilk = kapak). okuma
POST /urunler/{id}/gorseller Ürüne fotoğraf yükler (multipart images[], en fazla 8, 8 MB). yazma
POST /urunler/{id}/gorsel-sirasi Görsel sırası: {sira: [görsel id]} — ilk görsel kapak olur, kanallara yeni sırayla gider. yazma
POST /urunler/{id}/galeriden Galeriden seçilen görselleri ürüne ekler: {medya: [galeri id]} (dosya paylaşılır). yazma
DELETE /urunler/{id}/gorseller/{id} Görseli üründen kaldırır (ilk id varyant, ikincisi görsel); dosya galeride kalır. yazma
GET /destek Destek talepleri (?durum=acik|kapali, ?sayfa); meta: okunmamis, turler, oncelikler. okuma
GET /destek/{id} Talep ve yazışma (okundu işaretler). Senkronia yanıtı unvanla görünür; kullanıcının mesajında kanit satırı (IP + zaman). okuma
POST /destek Yeni destek talebi (multipart): {subject, message, category? (teknik|satis|muhasebe|genel), priority?, attachments[]? (en fazla 5 görsel/PDF)}. yazma
POST /destek/{id}/yanit Talebe yanıt (multipart): {message, attachments[]?}. Kapalı talep yeniden açılır. yazma
POST /destek/{id}/kapat Talebi kapatır: {satisfaction? (1-5)}. yazma
GET /magaza/tasarimlar Barkod etiketi ve satış fişi tasarımları (Ayarlar ekranından yönetilir). okuma
GET /siparis-etiketleri Satış kaynağı etiketleri (instagram, depo…). okuma
POST /siparis-etiketleri Yeni satış kaynağı etiketi açar: {ad, renk?}. yazma
DELETE /siparis-etiketleri/{id} Etiketi siler; siparişlerdeki işaret düşer, sipariş kalır. yazma
PUT /siparisler/{id}/etiketler Siparişin etiketlerini değiştirir: {etiketler:[id]}. yazma
GET /siparis-odeme-secenekleri Sipariş tahsilat formu için seçilebilir POS/banka hesapları. okuma
POST /siparisler/{id}/odeme Siparişe tahsilat / para iadesi: {method: cash|card|transfer|cod, amount (kuruş; + tahsilat, − iade), note?, hesap_id?}. Yanıtta paid_total, payment_status, payment_diff (kalan; eksi = iade edilecek). yazma
POST /siparisler/{id}/notlar Siparişe iç not düşer: {body, on_slip?}. on_slip=true ise not kargo fişinde basılır. Notlar sipariş detayının notes alanında döner. yazma
PUT /siparisler/{id}/notlar/{id}/fis Notun "kargo fişine ekle" işaretini değiştirir: {on_slip}. İkinci {id} not kimliğidir. yazma
POST /cihaz Push bildirimi için cihaz jetonu kaydeder {token, platform}. yazma
POST /cihaz-tani Push kayıt teşhisi bildirir {platform, adim, izin?, hata?, surum?} (mobil uygulama içindir). yazma
GET /urun-formu Yeni ürün formu açılış verisi: satış kanalları (ürün açabilir mi), kategoriler, markalar, hazır varyasyon setleri, ürün sınırı. /urun-formu/kod-kontrol?sku=&barcode= girilen kodun başka üründe kayıtlı olup olmadığını söyler. okuma
POST /urunler/yeni Görselli/varyasyonlu tam ürün açar (multipart): veri = JSON {istemci_ref, name, description?, type: simple|variable, category_id?, extra_category_ids[]? (ek kategoriler), nitelikler[]? ({ad, degerler[]}), brand_id?, vat_rate, channel_titles?, channel_descriptions?, push_channels?, variants[]: {sku (zorunlu, benzersiz), barcode? (boşsa üretilir), options?, list_price, cost_price?, stock?, channel_prices?, channel_sale_prices?}} + gorseller[] + varyant_gorsel[N]. Kanal fiyatı gönderimden önce yazılır; aynı istemci_ref ikinci ürün açmaz; gönderilemeyen kanal sebebiyle uyarilar alanında döner. yazma
POST /urunler Ürün açar: {name, sku?, barcode?, list_price?, stock?, vat_rate?}. Aynı barkod/stok kodu ikinci kez gönderilirse yeni ürün AÇILMAZ, mevcut kayıt döner. yazma
POST /fiyat Liste fiyatını günceller: {variant_id, list_price}. Kanal fiyatı elle girilmemiş eşleşmiş ilanlara gönderim kuyruğa alınır. yazma
POST /stok-sayim Stoğu MUTLAK adede çeker (sayım): {variant_id, quantity}. yazma
POST /satis Mağaza satışı oluşturur: {items:[{variant_id, qty, unit_price, discount?}], method, contact_id?, note?, tags?:[etiket id]}. discount = o satıra uygulanan TOPLAM indirim (kuruş, satır tutarını aşamaz). method: cash | card | transfer | account. Bölünmüş tahsilat için payments?:[{method, amount (kuruş)}] (toplamı satış tutarına eşit; en çok 4 satır; verilirse method yerine geçer). account (veresiye/kapıda ödeme) müşteri ZORUNLUDUR — tutar o müşterinin cari hesabına borç yazılır; istemci_ref? ile aynı satış ikinci kez açılmaz (çevrimdışı kuyruk). kasa_id? verilmezse satış kullanıcının seçili kasasına yazılır. yazma
GET /musteriler Müşteri (cari) listesi: bakiye, borç ve alacak (?q= arama, ?borclu=1). okuma
GET /musteriler/{id} Müşteri detayı: bakiye, son cari hareketler, son siparişler. okuma
POST /musteriler Müşteri kaydeder {name, phone?, email?, address?, city?, district?}. Aynı telefon/e-posta ile ikinci kart AÇILMAZ. yazma
POST /musteriler/{id}/hareket/{id}/yontem Yöntemi girilmemiş eski alacak kaydını ödeme olarak işler: {yontem: cash|card|transfer, kasa_id?, hesap_id?}. Bakiye değişmez; nakit kasa defterine girer. yazma
POST /musteriler/{id}/hareket Cari hareket: {tur, tutar (kuruş), yontem?, kasa_id?, not?}. tur=giris (tahsilat / ön ödeme) ya da cikis (müşteriye borç verme / para iadesi) PARA hareketidir: yontem cash|card|transfer zorunlu; nakit kasa defterine işler (kasa_id boşsa kullanıcının seçili kasası). tur=debit|credit parasız düzeltmedir (borç / alacak yazar, kasaya işlenmez). yazma
GET /urunler Ürün listesi: fiyat, stok, görsel (?q= arama, ?dusuk_stok=1, ?stok=var|yok, ?kategori[]=, ?kapali_satis=1, ?kanal=id|yok + ?kanal_durum=var|yalniz|yok — kanalda = gerçek ilan, taslak sayılmaz; ?sayfa=). okuma
GET /urunler/suzgecler Ürün listesi süzgeç seçenekleri: ürünü olan kategoriler (tam yoluyla). okuma
GET /urunler/{id} Ürün (varyant) detayı: KDV, maliyet, seçenekler. okuma
PUT /urunler/{id}/fiyat Liste fiyatını günceller {fiyat}. Geçmişe iz düşer, ilanlara gönderim kuyruğa alınır. yazma
PUT /urunler/{id}/stok Stok günceller {adet, mod: mutlak|fark, not?}. Stok defterine yazılır ve kanallara gönderilir. yazma
PUT /urunler/{id}/kanal-fiyat Kanal satış + indirimli fiyatı yazar {channel_id, fiyat|null, indirimli?}. fiyat null = kanal fiyatını kaldırır (genel fiyat geçerli olur); indirimli, fiyattan düşük değilse yok sayılır. yazma
PUT /urunler/{id}/stok-takibi Stok takibi modu {takip: true|false}. false = adet gönderilmez, ürün mağazada sürekli satışta görünür. yazma
PUT /urunler/{id}/kanal-satis İlanı satışa açar/kapatır {islem: ac|kapat, channel_id?}. channel_id yoksa ürünün tüm ilanları işlenir. yazma
GET /urunler/{id}/kanallar Kanal sekmeleri: her satış kanalı için logo, renk, eşleşme/satış durumu, ilan hatası, kanal başlık/açıklama, bu varyantın kanal fiyatı, görsel durumu (etiket: Otomatik / Onay bekliyor / Onaylandı / Reddedildi / Gönderilemez), kanala özel görsel seti ve kanal hazırlığı. okuma
PUT /urunler/{id}/kanal/{id} Kanala özgü kayıt {baslik?, aciklama?, kisa_acik?, kisa_aciklama?, fiyat?|null, indirimli?}. Yalnız gönderilen alanlar yazılır ve değişiklik YALNIZ o kanala gönderilir. fiyat null = kanal fiyatını kaldırır. yazma
POST /urunler/{id}/kanal/{id}/gorsel-seti Kanala özel görseller {acik: true|false}. Açınca genel görseller kopyalanır; kapatınca kanal genel görsellere döner. yazma
POST /urunler/{id}/kanal/{id}/gorseller Kanala özel sete fotoğraf ekler (multipart images[]); set kapalıysa önce açılır. yazma
DELETE /urunler/{id}/kanal/{id}/gorseller/{id} Kanala özel setten görseli kaldırır; son görsel çıkarsa kanal genel görsellere döner. yazma
GET /faturalar e-Fatura/e-Arşiv listesi (?durum=). meta.entegrator_bagli entegratör bağlı mı söyler. okuma
GET /faturalar/{id} Fatura detayı + yazdırma adresi. okuma
POST /siparisler/{id}/fatura Siparişe fatura keser {vkn?, unvan?, eposta?}. İşlem kuyruğa alınır; aynı siparişe ikinci fatura kesilmez. yazma
POST /faturalar/{id}/durum Belgenin GİB durumunu tazeler. yazma
GET /tedarikciler Tedarikçiler (?arama=): borcunuz, açık alış adedi/kalanı, en yakın vade, vade durumu; meta.vade şeridi (gecikti/bugun/yaklasiyor) ve toplam borç. okuma
GET /alislar Alış siparişleri (?tedarikci=&vade=gecikti|bugun|yaklasiyor|odenmedi&sayfa=): tutar, ödenen, kalan, ödeme durumu/türü, vade; meta.odeme_turleri. okuma
POST /alislar/{id}/odeme Tedarikçiye ödeme kaydeder {tutar (kuruş), tur: nakit|kart|havale|cek|senet, tarih?, not?}; kalanı aşamaz, cari deftere düşer. yazma
GET /raporlar Dönem raporu (?from=&to=): ciro/sipariş özeti, önceki dönem karşılaştırması, iptal-iade kayıpları, kanal kırılımı, günlük ciro, en çok satanlar — panelin Raporlar ekranıyla aynı hesap. okuma
GET /raporlar/detay Detaylı rapor (?sekme=&from=&to=&kirilim=&kanal=&arama=): panelin 15 rapor sekmesi (ciro/ürün/kategori/kanal/müşteri/saat/kâr/KDV/ödeme/iptal-iade/kaynak/kargo/düşük stok/satmayan/stok değeri) aynı metottan; kolonlar+satırlar+özet, en fazla 300 satır (meta.sekmeler). okuma
GET /kargo-hesaplari Aktif kargo hesapları (id, label, connector) — kargo numarası alırken seçim için. okuma
POST /siparisler/{id}/kargo Siparişe kargo numarası al {cargo_channel_id, desi?, weight?} — panelle aynı kural (tek canlı gönderi; iş kuyruğa girer, takip no gelince detayda görünür). yazma
GET /ai AI Stüdyo özeti: kredi bakiyesi, üretim türleri ve son üretimler. okuma
GET /ai/isler/{id} Tek üretimin durumu ve çıktı görselleri (yoklama için). okuma
POST /ai/uret Üretim başlatır (multipart): gorsel + tip (background|ghost|color_variant|angles|edit) + yonerge?/renkler?/not?/product_id?. Kredi düşer; başarısız üretimde iade edilir. yazma
POST /ai/isler/{id}/urune-ata Çıktıyı ürün görseli olarak ekler {product_id, index, variant_id?, kapak?}; bağlı kanallara gönderilir. yazma
GET /siparisler/{id}/yazdir Kargo fişi ve fatura için 15 dakikalık İMZALI yazdırma adresi döner (oturum gerekmez); ?paylas=1 ile 24 saatlik paylaşım bağlantısı. okuma
GET /bayi/ozet Bayilik: komisyoncunun özeti (oran, ay cirosu, kendi cari listesi). Yalnız komisyoncu hesabı. okuma
GET /bayi/satislar Bayilik: komisyoncunun kendi satışları. okuma
POST /bayi/satis Bayilik: komisyoncu satışı girer {items:[{variant_id, qty, unit_price}], contact_id?, note?, tags?, payment_method?, teslimat?}. yazma
POST /bayi/cari Bayilik: komisyoncu müşteri kartı açar {name, phone?}. yazma
POST /bayi/satislar/{id}/iade Bayilik: komisyoncunun satışını iade eder (stok geri alınır). yazma
POST /bayi/satislar/{id}/durum Bayilik: komisyoncu kendi satışının durumunu değiştirir (kargoya verdim / elden teslim ettim). yazma

“yazma” işaretli uçlar salt-okunur anahtarla çağrılamaz. Stok ve sipariş işlemleri panelle aynı iş kurallarından geçer: yanlış durum geçişi, yetersiz stok gibi durumlarda Türkçe açıklamalı 422 döner.

5. Webhook (giden bildirim)

Panelden bir adres tanımlarsanız, olay gerçekleştiğinde sunucunuza POST atarız. Olaylar: siparis.olusturuldu, siparis.durum_degisti, stok.degisti.

POST https://sizin-sunucunuz/senkronia
X-Senkronia-Event: siparis.olusturuldu
X-Senkronia-Imza: 9f2c…            // HMAC-SHA256(gövde, webhook sırrı)

{"event": "siparis.olusturuldu", "data": {"order_no": "TR-123", "grand_total": 150000, …}}

İmza doğrulama (PHP):

$govde = file_get_contents('php://input');
$imza  = $_SERVER['HTTP_X_SENKRONIA_IMZA'] ?? '';

if (! hash_equals(hash_hmac('sha256', $govde, SENKRONIA_WEBHOOK_SIRRI), $imza)) {
    http_response_code(401); exit;      // imzasız/yanlış imzalı isteği İŞLEME
}

$olay = json_decode($govde, true);

Sunucunuz 2xx dönmezse 3 kez tekrar denenir. Üst üste 10 başarısız gönderimde webhook otomatik kapatılır ve panelde uyarı çıkar. Bildirimler sıralı gelmeyebilir; kayıtları order_no gibi bir anahtarla eşleştirin (idempotent olun).

6. Erişim nasıl açılır?

  1. Panele firma sahibi hesabıyla girin.
  2. Ayarlar → API ve Webhook ekranını açın.
  3. Anahtar adı yazın (ör. “muhasebe servisi”), yetkisini seçin (salt-okunur önerilir), oluşturun.
  4. Gösterilen anahtarı yazılımcınıza güvenli bir kanaldan iletin (e-postada düz metin olarak değil).
  5. Gerekiyorsa webhook adresi ekleyin; sır değeri de bir kez gösterilir.

API erişimi Profesyonel ve üzeri paketlerde açıktır. Sorularınız için iletişim sayfamız.

Bütün kanallarınız, tek panel.

14 gün ücretsiz deneyin; kredi kartı gerekmez, kurulum 10 dakika sürer.