Sitebizden REST API Dokümantasyonu
Sitebizden e-ticaret sistemini harici uygulamalarınızla (muhasebe, mobil uygulama, ERP vb.) entegre edin. Ürün, kategori, marka, sipariş ve kullanıcı yönetimi için eksiksiz REST API servisi.
Giriş #
REST API servisi ile harici programlarınızı (muhasebe yazılımları, mobil uygulamalar, ERP sistemleri vb.) Sitebizden e-ticaret sistemiyle entegre edebilirsiniz. Serviste ürün, kategori, marka, sipariş ve kullanıcı servislerine okuma ve yazma desteği sunulmaktadır. Aşağıdaki endpointler ile tam entegrasyon yapabilirsiniz.
Kurulum & Yetkilendirme #
API'yi kullanmaya başlamadan önce aşağıdaki adımları tamamlamanız gerekir:
-
1
Admin kullanıcı oluşturREST API servisi sunan sitede admin statüsünde bir kullanıcı açın.
Örnek:[email protected]/testapi -
2
Bayi grubuna ataKullanıcıyı bir bayi grubuna atayın ve bu grubun "Rest API kullanabilir" seçeneğini işaretleyin.
-
3
IP kısıtlaması (opsiyonel)İlgili panelde "XML veya Rest API Kullanabileceği IP'ler" kısmına API kullanacak IP adresini ekleyin. Boş bırakılırsa IP kısıtlaması uygulanmaz.
Kimlik Doğrulama #
Her API çağrısında auth_email ve auth_key parametrelerini POST olarak göndermeniz zorunludur.
$auth_key = md5('restapi@domainadı.com' . md5('testapi'));
Bölüm 1
Ürünler
Tüm Ürünleri Listele
Sistemdeki tüm ürünleri XML formatında döndürür.
Ürün Sorgulama
ID, kategori veya isim yoluna göre ürün sorgulama yapabilirsiniz.
💡 namePath içerisindeki / karakteri _ ile değiştirilmelidir.
Kategoriye Ait Ürünler
Belirli bir kategoriye ait ürünleri listeler.
Markaya Ait Ürünler
Belirli bir markanın ürünlerini listeler.
Ürün Ekle / Güncelle
Yeni ürün eklemek için önce kategori ve marka ID'lerinin eklenmiş olması gerekir.
Body Parametreleri
| Parametre | Tip | Açıklama |
|---|---|---|
| ID | int | Yazılıma ait ürün ID değeri |
| productCode * | string | Benzersiz ürün kodu (ID ile birlikte, en az biri zorunlu) |
| catID | int | Yazılıma ait kategori ID değeri |
| virtualCatIDs | string | Ek kategori ID'leri (Ör: 12,22,33,44) |
| markaID | int | Yazılıma ait marka ID değeri |
| name | string | Ürün adı |
| listeDetay | string | Listede gösterilecek kısa açıklama |
| onDetay | string | Ön detay metni |
| detay | text | Ürün detay açıklaması |
| resim1 ... resim5 | text | Resim URL adresleri (5 adet) |
| resim_base64_1 ... 5 | base64 | Base64 formatında resimler |
| stok | float | Stok miktarı |
| kdv | int | KDV oranı (%18 için 18 gönderilmelidir) |
| fiyat | float | Satış fiyatı |
| piyasafiyat | float | Piyasa fiyatı |
| fiyatBirm | string | Fiyat birimi |
| garanti | int | Garanti ay süresi |
| desi | float | Desi bilgisi |
| gtin | string | GTIN/EAN/UPC/ISBN barkod bilgisi |
| filterName_[1-10] | string | Filtre adı (Ör: "Yazar") |
| filterValue_[1-10] | string | Filtre değeri (Ör: "Orhan Kemal") |
Fiyat & Stok Güncelleme
Sadece fiyat ve stok bilgilerini hızlıca günceller.
| Parametre | Tip | Açıklama |
|---|---|---|
| ID * | int | Ürün ID değeri (zorunlu) |
| stok | int | Stok miktarı |
| kdv | int | KDV oranı (%18 için 18) |
| fiyat | float | Satış fiyatı |
| piyasafiyat | float | Piyasa fiyatı |
| fiyatBirim | string | Fiyat birimi |
Ürün Varyant Güncelleme
İkili varyasyon (X-Y kombinasyonu) desteği vardır. Örnek: Bir ürünün XL beden + Kırmızı renk varyasyonu.
| Parametre | Tip | Açıklama |
|---|---|---|
| ID * | int | Ürün ID değeri (zorunlu) |
| varStock | float | Varyasyon stok adedi |
| varCode | string | Varyasyon stok kodu |
| varBarcode | string | Varyasyon barkodu |
| varResim | string | Varyasyon resim URL |
| var1_name | string | 1. varyasyon adı (Ör: Beden) |
| var2_name | string | 2. varyasyon adı (Ör: Renk) |
| var1_var | string | 1. varyasyon değeri (Ör: XL) |
| var2_var | string | 2. varyasyon değeri (Ör: Kırmızı) |
| var1_fark | float | 1. varyasyon fiyat farkı |
| var2_fark | float | 2. varyasyon fiyat farkı |
Ürün Filtre Güncelleme
Ürüne özel filtre değerlerini günceller.
| Parametre | Tip | Açıklama |
|---|---|---|
| ID * | int | Ürün ID (zorunlu) |
| title | string | Filtre başlığı (Ör: Ekran Çözünürlüğü) |
| str | string | Filtre değeri (Ör: Full HD) |
Bölüm 2
Kategoriler & Markalar
Kategorileri Listele
Tüm ana kategorileri XML olarak döndürür.
Alt Kategorileri Listele
Belirli bir kategorinin alt kategorilerini listeler. namePath içerisindeki / karakteri _ ile değiştirilmelidir.
Kategori Ekle / Güncelle
Kategori zaten eklenmişse güncellenmez, mevcut bilgiler XML olarak döner.
| Parametre | Tip | Açıklama |
|---|---|---|
| ID | int | Yazılıma ait kategori ID |
| categoryCode * | string | Benzersiz kategori kodu (ID ile birlikte, en az biri zorunlu) |
| parentID | int | Üst kategori ID değeri |
| parentCategoryCode | string | Üst kategori kodu (parentID yerine kullanılabilir) |
| name | string | Kategori adı |
Marka Ekle / Güncelle
Marka daha önce eklenmişse yeni kayıt oluşturulmaz, mevcut bilgi XML olarak döner.
| Parametre | Tip | Açıklama |
|---|---|---|
| ID | int | Marka ID değeri (gönderilmezse yeni eklenir) |
| name | string | Marka adı |
Bölüm 3
Siparişler
1 — Ödeme Onay Bekliyor2 — Sipariş Onaylandı / Hazırlanıyor51 — Kargoya Teslim Edildi81 — Teslimat Yapıldı89 — Değişim Talebi Alındı90 — İptal Talebi AlındıTarihe Göre Siparişler
Belirtilen tarih aralığındaki siparişleri listeler.
Sipariş Numarası ile Sorgulama
Tek bir siparişin detaylarını getirir.
Duruma Göre Siparişler
Belirli durum koduna sahip siparişleri listeler.
Sipariş Durumu Değiştirme
Kargo bilgileri ile birlikte sipariş durumunu günceller.
| Parametre | Tip | Açıklama |
|---|---|---|
| durum | int | Yeni sipariş durum kodu |
| kargoTarih | date | Kargo teslim tarihi |
| kargoFirma | int | Kargo firma ID |
| kargoSeriNo | string | Kargo takip numarası |
| kargoURL | string | Kargo takip URL'si |
Sipariş Oluşturma
Tek sorguda azami 50 farklı ürün sepete eklenebilir.
Sipariş Bilgileri
| Parametre | Tip | Açıklama |
|---|---|---|
| no | int | 9 haneli benzersiz sipariş numarası |
| name | string | Müşteri adı |
| lastname | string | Müşteri soyadı |
| birtdate | date | Doğum tarihi |
| tckNo | int | TC kimlik numarası |
| vergiDaire | string | Vergi dairesi |
| vergiNo | string | Vergi numarası |
| city | int | Teslimat için il plaka kodu |
| semt | int | Teslimat için semt ID |
| address | string | Teslimat adresi |
| city2 | int | Fatura için il plaka kodu |
| semt2 | int | Fatura için semt ID |
| address2 | string | Fatura adresi |
| ceptel | string | Cep telefonu (XXX-YYYYYYY formatında) |
| istel | string | İş telefonu (XXX-YYYYYYY formatında) |
| evtel | string | Ev telefonu (XXX-YYYYYYY formatında) |
| kargoTutar | float | Kargo tutarı |
| toplamTutarTL | float | Toplam tutar (TL) |
| odemeTipi | string | Ödeme tipi |
Sepet Bilgileri (N'inci ürün için _N suffix'i)
| Parametre | Tip | Açıklama |
|---|---|---|
| urunID_N | int | Ürün ID |
| urunName_N | string | Ürün adı (veritabanından farklıysa) |
| urunFiyat_N | string | TL cinsinden satış fiyatı |
| urunAdet_N | float | Ürün adedi |
| ozellik1detay_N | string | Varyasyon detayı (ozellik1detay, ozellik2detay, ozellik3detay...) |
Sipariş Durumu Güncelleme
Sipariş durumunu kolay şekilde günceller.
| Parametre | Tip | Açıklama |
|---|---|---|
| no | int | 9 haneli benzersiz sipariş numarası |
| status | int | Sipariş durum kodu (1, 2, 51, 81, 91) |
Bölüm 4
Kullanıcılar & Adresler
Kullanıcıları Listele
Tek kullanıcı için /rest/users/ID/132 kullanabilirsiniz.
Kullanıcı Ekle / Güncelle
E-posta varsa kullanıcı bilgileri güncellenir, yoksa yeni kayıt oluşturulur.
| Parametre | Tip | Açıklama |
|---|---|---|
| email * | string | Kullanıcı e-posta (zorunlu) |
| password | string | Kullanıcı şifresi (md5 hash olarak saklanır) |
| name | string | Ad |
| lastname | string | Soyad |
| birtdate | date | Doğum tarihi |
| tckNo | int | TC kimlik numarası |
| vergiDaire | string | Vergi dairesi |
| vergiNo | string | Vergi numarası |
| efatura | bool | E-fatura mükellefi mi? |
| city | int | İl plaka kodu |
| semt | int | Semt ID |
| address | string | Adres |
| ceptel / istel / evtel | string | Telefon numaraları (XXX-YYYYYYY formatında) |
| ebulten | bool | E-bülten aboneliği |
| ebultensms | bool | SMS bülten aboneliği |
Adresleri Listele
Bir kullanıcının kayıtlı adreslerini listeler.
Adres Ekle / Güncelle
| Parametre | Tip | Açıklama |
|---|---|---|
| userID * | int | Kullanıcı ID (zorunlu) |
| addressID | int | Varsa güncellenir, yoksa yeni eklenir |
| title | string | Adres başlığı |
| address | string | Adres metni |
| city | int | İl plaka kodu |
| semt | int | Semt ID |
| tckNo | int | TC kimlik numarası |
| vergiDaire | string | Vergi dairesi |
| vergiNo | string | Vergi numarası |
Favoriye Ürün Ekle
Başarılıda success, hata durumunda ERROR döner.
| Parametre | Tip | Açıklama |
|---|---|---|
| userID * | int | Kullanıcı ID (zorunlu) |
| urunID * | int | Ürün ID (zorunlu) |
Favoriden Ürün Kaldır
| Parametre | Tip | Açıklama |
|---|---|---|
| userID * | int | Kullanıcı ID (zorunlu) |
| urunID * | int | Ürün ID (zorunlu) |
Bölüm 5
Sepet İşlemleri
Sepet Görüntüle
Sepete Ürün Ekle
| Parametre | Tip | Açıklama |
|---|---|---|
| urunID | int | Sepete eklenecek ürün ID |
| adet | float | Ürün adedi |
| userID | int | Kullanıcı ID |
| ozellik1detay | string | Varyasyon detayı (1 yerine 2, 3 vb. kullanılabilir) |
Sepetten Ürün Sil
Sepet ID'si /rest/basket/view çağrısından alınan XML'den bulunur.
| Parametre | Tip | Açıklama |
|---|---|---|
| lineID | int | Silinecek sepet satırı ID |
Sepet Ürün Adet Güncelle
| Parametre | Tip | Açıklama |
|---|---|---|
| lineID | int | Güncellenecek sepet satırı ID |
| adet | float | Yeni adet |
Sepeti Boşalt
Bölüm 6
Diğer Servisler
Kargo Firmaları Listesi
Slider Resimleri
Şehirleri Listele
Semtleri Listele
SMS Gönder
| Parametre | Tip | Açıklama |
|---|---|---|
| msg | string | Gönderilecek SMS metni |
HTML Taksit Ekranı
Belirtilen tutar için taksit seçeneklerini HTML olarak döndürür.
Promosyon Kodu Ekle
| Parametre | Tip | Açıklama |
|---|---|---|
| code * | string | Promosyon kodu (zorunlu) |
| min | float | Asgari sipariş tutarı |
| discount | float | İndirim oranı (%10 için 0.1) |
| amount | float | İndirim tutarı (TL) |
| tarih | date | Son kullanım tarihi (Ör: 2020-12-31) |
Bölüm 7
PHP Kod Örnekleri
Ürün Ekleme #
cURL ile POST isteği göndererek yeni bir ürün ekleme örneği.
// API bağlantı bilgileri
$api_url = "https://api.siteniz.com/rest/setProduct";
$auth_email = "[email protected]";
$auth_password = "testapi";
// auth_key oluşturma
$auth_key = md5($auth_email . md5($auth_password));
// Ürün bilgileri
$product_data = [
"auth_email" => $auth_email,
"auth_key" => $auth_key,
"productCode" => "PRD001",
"name" => "Örnek Ürün",
"catID" => 123,
"markaID" => 456,
"stok" => 100,
"fiyat" => 199.99,
"kdv" => 20,
"detay" => "Bu ürün çok güzel bir üründür.",
"resim1" => "https://example.com/images/urun1.jpg",
];
// cURL ile POST isteği
function sendPostRequest($url, $data) {
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data));
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
$response = curl_exec($ch);
curl_close($ch);
return $response;
}
$response = sendPostRequest($api_url, $product_data);
if ($response) {
$xml = simplexml_load_string($response);
echo "API Yanıtı: " . $xml->asXML();
} else {
echo "API isteği başarısız oldu!";
}
Varyantlı Ürün Ekleme #
Ana ürün ekleyip ardından birden fazla varyasyon atama örneği.
$api_url = "https://api.siteniz.com/rest/setProduct";
$auth_email = "[email protected]";
$auth_password = "testapi";
$auth_key = md5($auth_email . md5($auth_password));
// Ana ürün
$product_data = [
"auth_email" => $auth_email,
"auth_key" => $auth_key,
"productCode" => "VARPRD001",
"name" => "Varyantlı Örnek Ürün",
"catID" => 123,
"markaID" => 456,
"stok" => 50,
"fiyat" => 299.99,
"kdv" => 18,
"detay" => "Bu varyantlı ürün çok kaliteli.",
"resim1" => "https://example.com/images/varyant_urun1.jpg",
];
function sendPostRequest($url, $data) {
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data));
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
$response = curl_exec($ch);
curl_close($ch);
return $response;
}
$response = sendPostRequest($api_url, $product_data);
if ($response) {
$xml = simplexml_load_string($response);
$product_id = (int)$xml->ID;
if ($product_id) {
$variant_api_url = "https://api.siteniz.com/rest/setProduct/variant";
// Varyant 1: Beden L, Renk Kırmızı
$variant_data_1 = [
"auth_email" => $auth_email,
"auth_key" => $auth_key,
"ID" => $product_id,
"varStock" => 10,
"varCode" => "VAR001-L-Kirmizi",
"varBarcode" => "1234567890123",
"var1_name" => "Beden",
"var1_var" => "L",
"var2_name" => "Renk",
"var2_var" => "Kırmızı",
"var1_fark" => 0,
"var2_fark" => 10,
];
// Varyant 2: Beden M, Renk Mavi
$variant_data_2 = [
"auth_email" => $auth_email,
"auth_key" => $auth_key,
"ID" => $product_id,
"varStock" => 20,
"varCode" => "VAR002-M-Mavi",
"varBarcode" => "1234567890124",
"var1_name" => "Beden",
"var1_var" => "M",
"var2_name" => "Renk",
"var2_var" => "Mavi",
"var1_fark" => 0,
"var2_fark" => 5,
];
sendPostRequest($variant_api_url, $variant_data_1);
sendPostRequest($variant_api_url, $variant_data_2);
}
}
Kategori Ekleme #
$api_url = "https://api.siteniz.com/rest/setCategory";
$auth_email = "[email protected]";
$auth_password = "testapi";
$auth_key = md5($auth_email . md5($auth_password));
$category_data = [
"auth_email" => $auth_email,
"auth_key" => $auth_key,
"categoryCode" => "KAT001",
"name" => "Örnek Kategori",
"parentID" => 0, // 0 ise ana kategori
];
function sendPostRequest($url, $data) {
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data));
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
$response = curl_exec($ch);
curl_close($ch);
return $response;
}
$response = sendPostRequest($api_url, $category_data);
if ($response) {
$xml = simplexml_load_string($response);
echo "API Yanıtı: " . $xml->asXML();
}
Marka Ekleme #
$api_url = "https://api.siteniz.com/rest/setBrand";
$auth_email = "[email protected]";
$auth_password = "testapi";
$auth_key = md5($auth_email . md5($auth_password));
$brand_data = [
"auth_email" => $auth_email,
"auth_key" => $auth_key,
"name" => "Örnek Marka",
];
function sendPostRequest($url, $data) {
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data));
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
$response = curl_exec($ch);
curl_close($ch);
return $response;
}
$response = sendPostRequest($api_url, $brand_data);
if ($response) {
$xml = simplexml_load_string($response);
echo "API Yanıtı: " . $xml->asXML();
}
Siparişleri Listeleme #
Tarih aralığına göre siparişleri GET isteği ile çekme.
$api_url = "https://api.siteniz.com/rest/orders/date/2023-01-01_2023-12-31";
$auth_email = "[email protected]";
$auth_password = "testapi";
$auth_key = md5($auth_email . md5($auth_password));
$order_data = [
"auth_email" => $auth_email,
"auth_key" => $auth_key,
];
function sendGetRequest($url, $data) {
$url_with_params = $url . '?' . http_build_query($data);
$ch = curl_init($url_with_params);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
$response = curl_exec($ch);
curl_close($ch);
return $response;
}
$response = sendGetRequest($api_url, $order_data);
if ($response) {
$xml = simplexml_load_string($response);
echo "API Yanıtı: " . $xml->asXML();
}
Sipariş Durumu Güncelleme #
$api_url = "https://api.siteniz.com/rest/setOrderStatus";
$auth_email = "[email protected]";
$auth_password = "testapi";
$auth_key = md5($auth_email . md5($auth_password));
$order_status_data = [
"auth_email" => $auth_email,
"auth_key" => $auth_key,
"no" => 158238365,
"status" => 51, // 51 = Kargoya teslim edildi
];
function sendPostRequest($url, $data) {
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data));
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
$response = curl_exec($ch);
curl_close($ch);
return $response;
}
$response = sendPostRequest($api_url, $order_status_data);
if ($response) {
$xml = simplexml_load_string($response);
echo "API Yanıtı: " . $xml->asXML();
}