REST API v1.0

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.

39+
Endpoint
XML
Yanıt Formatı
MD5
Auth Key

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. 1
    Admin kullanıcı oluştur
    REST API servisi sunan sitede admin statüsünde bir kullanıcı açın.
    Örnek: [email protected] / testapi
  2. 2
    Bayi grubuna ata
    Kullanıcıyı bir bayi grubuna atayın ve bu grubun "Rest API kullanabilir" seçeneğini işaretleyin.
  3. 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 hesaplama
Önce şifre md5 ile hashlenir, sonra email ile birleştirilip tekrar md5'lenir:
PHP
$auth_key = md5('restapi@domainadı.com' . md5('testapi'));

Bölüm 1

Ürünler

GET /rest/products #

Tüm Ürünleri Listele

Sistemdeki tüm ürünleri XML formatında döndürür.

GET /rest/products/{param}/{deger} #

Ürün Sorgulama

ID, kategori veya isim yoluna göre ürün sorgulama yapabilirsiniz.

Örnekler
/rest/products/ID/132
/rest/products/namePath/Elektronik_Televizyon

💡 namePath içerisindeki / karakteri _ ile değiştirilmelidir.

GET /rest/products/catID/{id} #

Kategoriye Ait Ürünler

Belirli bir kategoriye ait ürünleri listeler.

/rest/products/catID/132
/rest/products/namePath/Elektronik_Televizyon
GET /rest/products/markaID/{id} #

Markaya Ait Ürünler

Belirli bir markanın ürünlerini listeler.

/rest/products/markaID/132
POST /rest/setProduct #

Ürün Ekle / Güncelle

Yeni ürün eklemek için önce kategori ve marka ID'lerinin eklenmiş olması gerekir.

Body Parametreleri

ParametreTipAçıklama
IDintYazılıma ait ürün ID değeri
productCode *stringBenzersiz ürün kodu (ID ile birlikte, en az biri zorunlu)
catIDintYazılıma ait kategori ID değeri
virtualCatIDsstringEk kategori ID'leri (Ör: 12,22,33,44)
markaIDintYazılıma ait marka ID değeri
namestringÜrün adı
listeDetaystringListede gösterilecek kısa açıklama
onDetaystringÖn detay metni
detaytextÜrün detay açıklaması
resim1 ... resim5textResim URL adresleri (5 adet)
resim_base64_1 ... 5base64Base64 formatında resimler
stokfloatStok miktarı
kdvintKDV oranı (%18 için 18 gönderilmelidir)
fiyatfloatSatış fiyatı
piyasafiyatfloatPiyasa fiyatı
fiyatBirmstringFiyat birimi
garantiintGaranti ay süresi
desifloatDesi bilgisi
gtinstringGTIN/EAN/UPC/ISBN barkod bilgisi
filterName_[1-10]stringFiltre adı (Ör: "Yazar")
filterValue_[1-10]stringFiltre değeri (Ör: "Orhan Kemal")
POST /rest/setProduct/priceAndStock #

Fiyat & Stok Güncelleme

Sadece fiyat ve stok bilgilerini hızlıca günceller.

ParametreTipAçıklama
ID *intÜrün ID değeri (zorunlu)
stokintStok miktarı
kdvintKDV oranı (%18 için 18)
fiyatfloatSatış fiyatı
piyasafiyatfloatPiyasa fiyatı
fiyatBirimstringFiyat birimi
POST /rest/setProduct/variant #

Ü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.

ParametreTipAçıklama
ID *intÜrün ID değeri (zorunlu)
varStockfloatVaryasyon stok adedi
varCodestringVaryasyon stok kodu
varBarcodestringVaryasyon barkodu
varResimstringVaryasyon resim URL
var1_namestring1. varyasyon adı (Ör: Beden)
var2_namestring2. varyasyon adı (Ör: Renk)
var1_varstring1. varyasyon değeri (Ör: XL)
var2_varstring2. varyasyon değeri (Ör: Kırmızı)
var1_farkfloat1. varyasyon fiyat farkı
var2_farkfloat2. varyasyon fiyat farkı
POST /rest/setProduct/filter #

Ürün Filtre Güncelleme

Ürüne özel filtre değerlerini günceller.

ParametreTipAçıklama
ID *intÜrün ID (zorunlu)
titlestringFiltre başlığı (Ör: Ekran Çözünürlüğü)
strstringFiltre değeri (Ör: Full HD)

Bölüm 2

Kategoriler & Markalar

GET /rest/list/kategori #

Kategorileri Listele

Tüm ana kategorileri XML olarak döndürür.

GET /rest/list/kategori/{catID|namePath} #

Alt Kategorileri Listele

Belirli bir kategorinin alt kategorilerini listeler. namePath içerisindeki / karakteri _ ile değiştirilmelidir.

POST /rest/setCategory #

Kategori Ekle / Güncelle

Kategori zaten eklenmişse güncellenmez, mevcut bilgiler XML olarak döner.

ParametreTipAçıklama
IDintYazılıma ait kategori ID
categoryCode *stringBenzersiz kategori kodu (ID ile birlikte, en az biri zorunlu)
parentIDintÜst kategori ID değeri
parentCategoryCodestringÜst kategori kodu (parentID yerine kullanılabilir)
namestringKategori adı
POST /rest/setBrand #

Marka Ekle / Güncelle

Marka daha önce eklenmişse yeni kayıt oluşturulmaz, mevcut bilgi XML olarak döner.

ParametreTipAçıklama
IDintMarka ID değeri (gönderilmezse yeni eklenir)
namestringMarka adı

Bölüm 3

Siparişler

Sipariş Durum Kodları
1 — Ödeme Onay Bekliyor
2 — Sipariş Onaylandı / Hazırlanıyor
51 — Kargoya Teslim Edildi
81 — Teslimat Yapıldı
89 — Değişim Talebi Alındı
90 — İptal Talebi Alındı
GET /rest/orders/date/{start}_{end} #

Tarihe Göre Siparişler

Belirtilen tarih aralığındaki siparişleri listeler.

/rest/orders/date/2017-12-31_2019-12-31
GET /rest/orders/no/{siparisNo} #

Sipariş Numarası ile Sorgulama

Tek bir siparişin detaylarını getirir.

/rest/orders/no/158238365
GET /rest/orders/durum/{durumNo} #

Duruma Göre Siparişler

Belirli durum koduna sahip siparişleri listeler.

/rest/orders/durum/2
POST /rest/updateOrder/no/{siparisNo}/{durum} #

Sipariş Durumu Değiştirme

Kargo bilgileri ile birlikte sipariş durumunu günceller.

/rest/updateOrder/no/158238365/51
ParametreTipAçıklama
durumintYeni sipariş durum kodu
kargoTarihdateKargo teslim tarihi
kargoFirmaintKargo firma ID
kargoSeriNostringKargo takip numarası
kargoURLstringKargo takip URL'si
POST /rest/setOrder #

Sipariş Oluşturma

Tek sorguda azami 50 farklı ürün sepete eklenebilir.

Sipariş Bilgileri

ParametreTipAçıklama
noint9 haneli benzersiz sipariş numarası
namestringMüşteri adı
lastnamestringMüşteri soyadı
birtdatedateDoğum tarihi
tckNointTC kimlik numarası
vergiDairestringVergi dairesi
vergiNostringVergi numarası
cityintTeslimat için il plaka kodu
semtintTeslimat için semt ID
addressstringTeslimat adresi
city2intFatura için il plaka kodu
semt2intFatura için semt ID
address2stringFatura adresi
ceptelstringCep telefonu (XXX-YYYYYYY formatında)
istelstringİş telefonu (XXX-YYYYYYY formatında)
evtelstringEv telefonu (XXX-YYYYYYY formatında)
kargoTutarfloatKargo tutarı
toplamTutarTLfloatToplam tutar (TL)
odemeTipistringÖdeme tipi

Sepet Bilgileri (N'inci ürün için _N suffix'i)

ParametreTipAçıklama
urunID_NintÜrün ID
urunName_NstringÜrün adı (veritabanından farklıysa)
urunFiyat_NstringTL cinsinden satış fiyatı
urunAdet_NfloatÜrün adedi
ozellik1detay_NstringVaryasyon detayı (ozellik1detay, ozellik2detay, ozellik3detay...)
POST /rest/setOrderStatus #

Sipariş Durumu Güncelleme

Sipariş durumunu kolay şekilde günceller.

ParametreTipAçıklama
noint9 haneli benzersiz sipariş numarası
statusintSipariş durum kodu (1, 2, 51, 81, 91)

Bölüm 4

Kullanıcılar & Adresler

GET /rest/users #

Kullanıcıları Listele

Tek kullanıcı için /rest/users/ID/132 kullanabilirsiniz.

POST /rest/setUser #

Kullanıcı Ekle / Güncelle

E-posta varsa kullanıcı bilgileri güncellenir, yoksa yeni kayıt oluşturulur.

ParametreTipAçıklama
email *stringKullanıcı e-posta (zorunlu)
passwordstringKullanıcı şifresi (md5 hash olarak saklanır)
namestringAd
lastnamestringSoyad
birtdatedateDoğum tarihi
tckNointTC kimlik numarası
vergiDairestringVergi dairesi
vergiNostringVergi numarası
efaturaboolE-fatura mükellefi mi?
cityintİl plaka kodu
semtintSemt ID
addressstringAdres
ceptel / istel / evtelstringTelefon numaraları (XXX-YYYYYYY formatında)
ebultenboolE-bülten aboneliği
ebultensmsboolSMS bülten aboneliği
GET /rest/list/address/{userID} #

Adresleri Listele

Bir kullanıcının kayıtlı adreslerini listeler.

/rest/list/address/1
POST /rest/setAddress #

Adres Ekle / Güncelle

ParametreTipAçıklama
userID *intKullanıcı ID (zorunlu)
addressIDintVarsa güncellenir, yoksa yeni eklenir
titlestringAdres başlığı
addressstringAdres metni
cityintİl plaka kodu
semtintSemt ID
tckNointTC kimlik numarası
vergiDairestringVergi dairesi
vergiNostringVergi numarası
POST /rest/setFavorite #

Favoriye Ürün Ekle

Başarılıda success, hata durumunda ERROR döner.

ParametreTipAçıklama
userID *intKullanıcı ID (zorunlu)
urunID *intÜrün ID (zorunlu)
POST /rest/removeFavorite #

Favoriden Ürün Kaldır

ParametreTipAçıklama
userID *intKullanıcı ID (zorunlu)
urunID *intÜrün ID (zorunlu)

Bölüm 5

Sepet İşlemleri

GET /rest/basket/view/{siparisNo} #

Sepet Görüntüle

/rest/basket/view/123456789
POST /rest/basket/insert/{siparisNo} #

Sepete Ürün Ekle

ParametreTipAçıklama
urunIDintSepete eklenecek ürün ID
adetfloatÜrün adedi
userIDintKullanıcı ID
ozellik1detaystringVaryasyon detayı (1 yerine 2, 3 vb. kullanılabilir)
POST /rest/basket/remove/{siparisNo} #

Sepetten Ürün Sil

Sepet ID'si /rest/basket/view çağrısından alınan XML'den bulunur.

ParametreTipAçıklama
lineIDintSilinecek sepet satırı ID
POST /rest/basket/update/{siparisNo} #

Sepet Ürün Adet Güncelle

ParametreTipAçıklama
lineIDintGüncellenecek sepet satırı ID
adetfloatYeni adet
GET /rest/basket/clean/{siparisNo} #

Sepeti Boşalt

/rest/basket/clean/123456789

Bölüm 6

Diğer Servisler

GET /rest/list/kargo #

Kargo Firmaları Listesi

GET /rest/list/slider #

Slider Resimleri

GET /rest/list/city #

Şehirleri Listele

GET /rest/list/town #

Semtleri Listele

POST /rest/sendSMS/no/{siparisNo} #

SMS Gönder

ParametreTipAçıklama
msgstringGönderilecek SMS metni
GET /rest/html/taksit/{tutar} #

HTML Taksit Ekranı

Belirtilen tutar için taksit seçeneklerini HTML olarak döndürür.

/rest/html/taksit/190
POST /rest/setPromotion #

Promosyon Kodu Ekle

ParametreTipAçıklama
code *stringPromosyon kodu (zorunlu)
minfloatAsgari sipariş tutarı
discountfloatİndirim oranı (%10 için 0.1)
amountfloatİndirim tutarı (TL)
tarihdateSon 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.

PHP
// 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.

PHP
$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 #

PHP
$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 #

PHP
$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.

PHP
$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 #

PHP
$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();
}