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.
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_anahtardö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
429dö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."}}
| Kod | Anlamı |
|---|---|
| 401 | Anahtar yok, hatalı veya iptal edilmiş. |
| 403 | Salt-okunur anahtarla yazma denemesi ya da başka firmanın kaydı. |
| 404 | Kayıt bulunamadı. |
| 422 | Doğrulama veya iş kuralı hatası (error.code açıklar). |
| 429 | Hı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
| Metot | Uç | Açıklama | Anahtar |
|---|---|---|---|
| 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?
- Panele firma sahibi hesabıyla girin.
- Ayarlar → API ve Webhook ekranını açın.
- Anahtar adı yazın (ör. “muhasebe servisi”), yetkisini seçin (salt-okunur önerilir), oluşturun.
- Gösterilen anahtarı yazılımcınıza güvenli bir kanaldan iletin (e-postada düz metin olarak değil).
- 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.