Storex API - Geliştirici Entegrasyon Servisleri v2.0

Giriş

Storex API, sipariş yönetimi, ürün kataloğu ve stok takibi işlemlerini programatik olarak gerçekleştirmenizi sağlar.

ℹ️
Tüm API isteklerinizde API anahtarınızı X-API-KEY başlığında göndermelisiniz.
🌐
API Yolu: https://siteniz.com/api/{endpoint}

Kimlik Doğrulama

API'ye erişim için bir API anahtarı gereklidir.

  1. Yönetici panelinize giriş yapın
  2. Sağ üst köşedeki 🔑 API anahtarı ikonuna tıklayın
  3. API anahtarınızı kopyalayın
X-API-KEY: sizin-api-anahtariniz
⚠️
API anahtarınız 1 yıl geçerlidir. Süre dolmadan yönetici panelinden yenileyebilirsiniz.

Rate Limiting

Kötüye kullanımı önlemek için istek sınırlaması uygulanmaktadır.

Her IP adresi için dakikada maksimum 60 istek gönderilebilir. Limit aşıldığında 429 Too Many Requests yanıtı döner.
// Limit aşıldığında:
HTTP/1.1 429 Too Many Requests
Retry-After: 60

{
  "durum": false,
  "mesaj": "Çok fazla istek gönderdiniz. Lütfen 60 saniye sonra tekrar deneyin."
}

Kimlik

POST /api/giris Kullanıcı girişi & API anahtarı alma

Panel kullanıcısının giriş bilgilerini doğrular ve API anahtarı oluşturur.

📥 İstek Gövdesi
ParametreTürDurumAçıklama
kullaniciAdimetinZorunluPanel kullanıcı adı
sifremetinZorunluPanel kullanıcı şifresi
✅ Başarılı Yanıt (200)
{
  "durum": true,
  "mesaj": "Giriş başarılı",
  "veri": {
    "kullanici": {
      "id": 1,
      "kullaniciAdi": "admin",
      "tip": 1,
      "telefon": "5551234567"
    },
    "apiAnahtari": {
      "anahtar": "e5fb6cde8a7542c889bc73160aed26e9...",
      "sonKullanim": "2027-02-21 15:30:42"
    }
  }
}
❌ Başarısız Yanıt (401)
{
  "durum": false,
  "mesaj": "Kullanıcı adı veya şifre hatalı"
}

Sipariş Yönetimi

Sipariş listeleme, detay görüntüleme, filtreleme ve durum güncelleme işlemleri.

GET /api/siparisler Siparişleri listele

Sistemdeki siparişleri sayfalı olarak listeler.

📥 Parametreler
ParametreTürDurumAçıklama
limitsayıOpsiyonelSayfa başına sipariş sayısı (varsayılan: 10)
sayfasayıOpsiyonelSayfa numarası (varsayılan: 1)
durumsayıOpsiyonelSipariş durum kodu ile filtrele
✅ Başarılı Yanıt (200)
{
  "durum": true,
  "mesaj": "Siparişler başarıyla alındı",
  "veri": {
    "siparisler": [
      {
        "id": "999",
        "sipID": "123456789012",
        "ad": "Ali",
        "soyad": "Veli",
        "telefon": "05551234567",
        "email": "ornek@example.com",
        "adres": "Örnek Mahallesi No: 123",
        "il": "Ankara",
        "ilce": "Çankaya",
        "siparis_tarihi": "1623456789",
        "urun_tutar": "500.00",
        "kargo_tutar": "10.00",
        "kdv_tutar": "90.00",
        "toplam_tutar": "600.00",
        "kargo_adi": "Örnek Kargo",
        "kargo_kodu": "KRG123456",
        "durum": "1",
        "siparis_notu": "Örnek not",
        "siparis_tarihi_formati": "01.01.2025 12:00:00",
        "durum_metni": "Ödeme Bekliyor"
      }
    ],
    "toplamSiparis": 25,
    "sayfaSayisi": 3,
    "mevcutSayfa": 1
  }
}
GET /api/siparis Sipariş detayı getir

Sipariş detayını, ürünlerini ve kargo takip bilgilerini getirir.

📥 Parametreler
ParametreTürDurumAçıklama
idsayıZorunluSipariş ID'si
✅ Başarılı Yanıt (200)
{
  "durum": true,
  "mesaj": "Sipariş detayı başarıyla alındı",
  "veri": {
    "siparis": {
      "id": "145",
      "sipID": "987654321012",
      "ad": "Ahmet",
      "soyad": "Yılmaz",
      "telefon": "05553334455",
      "email": "ahmet@example.com",
      "adres": "Atatürk Caddesi No: 10",
      "il": "Ankara",
      "ilce": "Çankaya",
      "siparis_tarihi": "1743623490",
      "urun_tutar": "1500.00",
      "kargo_tutar": "10.00",
      "kdv_tutar": "150.00",
      "toplam_tutar": "1660.00",
      "durum": "1",
      "siparis_notu": "Lütfen akşam teslim edin",
      "siparis_tarihi_formati": "03.05.2025 15:30:00",
      "durum_metni": "Ödeme Bekliyor"
    },
    "urunler": [
      {
        "id": "300",
        "siparis_id": "145",
        "urun_id": "700",
        "fiyat": "750.00",
        "adet": "2",
        "urun_adi": "Mavi Kot Pantolon",
        "urun_aciklama": "Ürün açıklaması..."
      }
    ],
    "kargo_bilgisi_var": true,
    "kargoTakip": [
      {
        "id": "90",
        "kargo_adi": "Yurtiçi Kargo",
        "kargo_no": "22222",
        "link": "yurticikargo.com"
      }
    ]
  }
}
GET /api/siparisFiltrele Siparişleri filtrele

Çeşitli kriterlere göre siparişleri filtrelemenizi sağlar.

📥 Parametreler
ParametreTürDurumAçıklama
limitsayıOpsiyonelSayfa başına sipariş sayısı (varsayılan: 10)
sayfasayıOpsiyonelSayfa numarası (varsayılan: 1)
durumsayıOpsiyonelSipariş durum kodu
baslangicTarihitarihOpsiyonelBaşlangıç tarihi (YYYY-AA-GG)
bitisTarihitarihOpsiyonelBitiş tarihi (YYYY-AA-GG)
aramametinOpsiyonelSipariş ID, ad, telefon veya e-posta ile arama
✅ Başarılı Yanıt (200)
{
  "durum": true,
  "mesaj": "Siparişler başarıyla filtrelendi",
  "veri": {
    "siparisler": [ ... ],
    "toplamSiparis": 8,
    "sayfaSayisi": 1,
    "mevcutSayfa": 1
  }
}
POST /api/siparisDurumGuncelle Sipariş durumunu güncelle

Belirtilen siparişin durumunu günceller. Opsiyonel olarak kargo bilgisi de eklenebilir.

📥 İstek Gövdesi
ParametreTürDurumAçıklama
siparisIdsayıZorunluSipariş ID'si
durumsayıZorunluYeni durum kodu
kargoAdimetinOpsiyonelKargo firma adı
kargoKodumetinOpsiyonelKargo takip numarası
✅ Başarılı Yanıt (200)
{
  "durum": true,
  "mesaj": "Sipariş durumu güncellendi",
  "veri": {
    "eskiDurum": 1,
    "yeniDurum": 4,
    "durumMetni": "Kargoda"
  }
}
❌ Başarısız Yanıt (404)
{
  "durum": false,
  "mesaj": "Sipariş bulunamadı"
}

Ürün Yönetimi

Ürün listeleme, detay, arama ve stok kontrol işlemleri.

GET /api/urunler Ürünleri listele

Aktif ürünleri sayfalı olarak listeler. Kategori, marka ve arama filtresi destekler.

📥 Parametreler
ParametreTürDurumAçıklama
limitsayıOpsiyonelSayfa başına ürün sayısı (varsayılan: 10)
sayfasayıOpsiyonelSayfa numarası (varsayılan: 1)
kategorisayıOpsiyonelKategori ID'sine göre filtrele
markasayıOpsiyonelMarka ID'sine göre filtrele
aramametinOpsiyonelÜrün adı, barkod veya stok kodunda arama
✅ Başarılı Yanıt (200)
{
  "durum": true,
  "mesaj": "Ürünler başarıyla alındı",
  "veri": {
    "urunler": [
      {
        "UrunId": "1735",
        "UrunAdi": "Ybr Konjektör Janshe",
        "SefLink": "ybr-konjektor-janshe",
        "KisaAciklama": "Ürün hakkında kısa açıklama",
        "Fiyat": "260.00",
        "EskiFiyat": "6",
        "Stok": 2,
        "StokKodu": "00311",
        "Barkod": "BS32093603",
        "Kdv": 20,
        "KargoFiyati": "0",
        "MarkaId": 95,
        "MarkaAdi": "JANSE",
        "Mensei": "Türkiye",
        "UrunKonum": "hepsi",
        "OlusturmaTarihi": "2025-12-21 03:25:41",
        "AnaGorsel": "ybr-konjektor-janshe.webp",
        "Kategoriler": [
          {"id": 400, "baslik": "Motor Parçaları"},
          {"id": 401, "baslik": "Konjektör"}
        ]
      }
    ],
    "toplamUrun": 25,
    "sayfaSayisi": 3,
    "mevcutSayfa": 1
  }
}
GET /api/urun?id=1735 Ürün detayı getir

Ürünün tüm detaylarını, görsellerini, kategorilerini, varyant ve kombinasyon bilgilerini getirir.

📥 Parametreler
ParametreTürDurumAçıklama
idsayıZorunluÜrün ID'si
✅ Başarılı Yanıt (200)
{
  "durum": true,
  "mesaj": "Ürün detayı başarıyla alındı",
  "veri": {
    "urun": {
      "UrunId": "1735",
      "UrunAdi": "Ybr Konjektör Janshe",
      "SefLink": "ybr-konjektor-janshe",
      "KisaAciklama": "Ürün hakkında kısa açıklama",
      "Aciklama": "<p>YBR KONJEKTÖR JANSHE</p>",
      "Fiyat": "260.00",
      "EskiFiyat": "6",
      "Stok": 2,
      "StokKodu": "00311",
      "Barkod": "BS32093603",
      "Kdv": 20,
      "KargoFiyati": "0",
      "MarkaAdi": "JANSE",
      "Mensei": "Türkiye",
      "AsgariAdet": 1,
      "UrunPuan": "6.3",
      "UrunDesi": "1.00"
    },
    "gorseller": [
      {"id": 1664, "Resim": "ybr-konjektor-janshe.webp", "Sira": 1}
    ],
    "kategoriler": [
      {"id": 400, "baslik": "Motor Parçaları", "sef": "motor-parcalari"}
    ],
    "varyantlar": [
      {
        "grupId": 1,
        "grupAdi": "Beden",
        "secenekler": [
          {"Id": 1, "SecenekAdi": "XS", "Sira": 1},
          {"Id": 2, "SecenekAdi": "S", "Sira": 2}
        ]
      }
    ],
    "kombinasyonlar": [
      {
        "Id": 16,
        "StokKodu": "00311-S-Mavi",
        "Barkod": "BS32093603-S-Mavi",
        "Stok": 2,
        "EkFiyat": "1.00",
        "secenekler": [
          {"GrupAdi": "Beden", "SecenekAdi": "S"},
          {"GrupAdi": "Renk", "SecenekAdi": "Mavi"}
        ]
      }
    ]
  }
}
GET /api/urunAra Hızlı ürün arama

Ürün adı, barkod veya stok koduna göre hızlı arama yapar.

📥 Parametreler
ParametreTürDurumAçıklama
aramametinZorunluAranacak kelime
limitsayıOpsiyonelMaksimum sonuç sayısı (varsayılan: 20)
✅ Başarılı Yanıt (200)
{
  "durum": true,
  "mesaj": "Arama sonuçları",
  "veri": {
    "urunler": [
      {
        "UrunId": "1735",
        "UrunAdi": "Ybr Konjektör Janshe",
        "Fiyat": "260.00",
        "Stok": 2,
        "Barkod": "BS32093603",
        "AnaGorsel": "ybr-konjektor-janshe.webp"
      }
    ]
  }
}
GET /api/stokKontrol Stok durumu sorgula

Ürün veya varyant kombinasyonunun stok durumunu sorgular.

📥 Parametreler
ParametreTürDurumAçıklama
urunIdsayıZorunluÜrün ID'si
kombinasyonIdsayıOpsiyonelVaryant kombinasyon ID (belirtilirse kombinasyonun stoku döner)
✅ Başarılı Yanıt (200)
{
  "durum": true,
  "mesaj": "Stok bilgisi",
  "veri": {
    "stok": 2,
    "stokVar": true
  }
}

Katalog

Kategori ve marka listeleme işlemleri.

GET /api/kategoriler Kategorileri listele

Aktif kategorileri listeler. Alt kategorileri filtrelemek için üst kategori ID'si gönderilebilir.

📥 Parametreler
ParametreTürDurumAçıklama
ustKategorisayıOpsiyonelÜst kategori ID (0 = ana kategoriler)
✅ Başarılı Yanıt (200)
{
  "durum": true,
  "mesaj": "Kategoriler başarıyla alındı",
  "veri": {
    "kategoriler": [
      {
        "KategoriId": 393,
        "KategoriAdi": "Eşofman & Sweatshirt",
        "SefLink": "esofman-sweatshirt",
        "UstKategoriId": 0,
        "Gorsel": "icon.png",
        "Sira": 0,
        "UrunSayisi": 5
      }
    ]
  }
}
GET /api/markalar Markaları listele

Aktif markaları ve her markadaki ürün sayısını listeler.

✅ Başarılı Yanıt (200)
{
  "durum": true,
  "mesaj": "Markalar başarıyla alındı",
  "veri": {
    "markalar": [
      {
        "MarkaId": 6,
        "MarkaAdi": "MSR",
        "SefLink": null,
        "Gorsel": "bos-logo.png",
        "UrunSayisi": 1
      }
    ]
  }
}

Sipariş Durum Kodları

Sipariş filtreleme ve durum güncelleme işlemlerinde kullanılan durum kodları.

0 Onay Bekliyor
1 Ödeme Bekliyor
2 Ödeme Alındı
3 Onaylandı
4 Kargoda
5 Tamamlandı
6 İptal Edildi
8 Paketleniyor
9 Tedarik Ediliyor
10 İade Edildi
11 Silinmiş
12 İade Talebi Alındı
13 İade Ulaştı - Ödeme Yapılacak
14 İade Ödemesi Yapıldı
15 Teslimat Öncesi İptal Talebi
16 İptal Talebi
17 Kısmi İade Talebi
18 Kısmi İade Yapıldı
19 Teslim Edilemedi
20 Mağazaya Gönderildi
21 Mağazaya Ulaştı
22 Mağazada Teslim Bekliyor
23 Cari Hesap

Kod Örnekleri

Farklı programlama dilleri ile API kullanım örnekleri.

$ApiAnahtari = "sizin-api-anahtariniz";
$BaseUrl = "https://sizin-siteniz.com";

// Kullanıcı girişi ve API anahtarı alma
function KullaniciGirisi($BaseUrl, $KullaniciAdi, $Sifre) {
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, "$BaseUrl/api/giris");
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_POST, true);
    curl_setopt($ch, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);
    curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode([
        "kullaniciAdi" => $KullaniciAdi,
        "sifre" => $Sifre
    ]));
    $Yanit = curl_exec($ch);
    curl_close($ch);
    return json_decode($Yanit, true);
}

// Siparişleri listeleme
function SiparisleriGetir($BaseUrl, $ApiAnahtari, $Limit = 10, $Sayfa = 1) {
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, "$BaseUrl/api/siparisler?limit=$Limit&sayfa=$Sayfa");
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_HTTPHEADER, ["X-API-KEY: $ApiAnahtari"]);
    $Yanit = curl_exec($ch);
    curl_close($ch);
    return json_decode($Yanit, true);
}

// Ürünleri listeleme
function UrunleriGetir($BaseUrl, $ApiAnahtari, $Limit = 10, $Sayfa = 1) {
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, "$BaseUrl/api/urunler?limit=$Limit&sayfa=$Sayfa");
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_HTTPHEADER, ["X-API-KEY: $ApiAnahtari"]);
    $Yanit = curl_exec($ch);
    curl_close($ch);
    return json_decode($Yanit, true);
}

// Sipariş durumu güncelleme
function SiparisDurumGuncelle($BaseUrl, $ApiAnahtari, $SiparisId, $Durum) {
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, "$BaseUrl/api/siparisDurumGuncelle");
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_POST, true);
    curl_setopt($ch, CURLOPT_HTTPHEADER, [
        "X-API-KEY: $ApiAnahtari",
        "Content-Type: application/json"
    ]);
    curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode([
        "siparisId" => $SiparisId,
        "durum" => $Durum
    ]));
    $Yanit = curl_exec($ch);
    curl_close($ch);
    return json_decode($Yanit, true);
}

// Kullanım
$Siparisler = SiparisleriGetir($BaseUrl, $ApiAnahtari, 20, 1);
$Urunler = UrunleriGetir($BaseUrl, $ApiAnahtari);
$Guncelle = SiparisDurumGuncelle($BaseUrl, $ApiAnahtari, 145, 4);
const apiKey = "sizin-api-anahtariniz";
const baseUrl = "https://sizin-siteniz.com";

const headers = { "X-API-KEY": apiKey };

// Kullanıcı girişi
async function kullaniciGirisi(kullaniciAdi, sifre) {
  const res = await fetch(`${baseUrl}/api/giris`, {
    method: "POST",
    headers: { "Content-Type": "application/json" },
    body: JSON.stringify({ kullaniciAdi, sifre })
  });
  return res.json();
}

// Siparişleri listeleme
async function siparisleriGetir(limit = 10, sayfa = 1) {
  const res = await fetch(
    `${baseUrl}/api/siparisler?limit=${limit}&sayfa=${sayfa}`,
    { headers }
  );
  return res.json();
}

// Ürünleri listeleme
async function urunleriGetir(limit = 10, sayfa = 1) {
  const res = await fetch(
    `${baseUrl}/api/urunler?limit=${limit}&sayfa=${sayfa}`,
    { headers }
  );
  return res.json();
}

// Sipariş durumu güncelleme
async function siparisDurumGuncelle(siparisId, durum) {
  const res = await fetch(`${baseUrl}/api/siparisDurumGuncelle`, {
    method: "POST",
    headers: { ...headers, "Content-Type": "application/json" },
    body: JSON.stringify({ siparisId, durum })
  });
  return res.json();
}

// Kullanım
siparisleriGetir(20, 1).then(d => console.log(d));
urunleriGetir().then(d => console.log(d));
siparisDurumGuncelle(145, 4).then(d => console.log(d));
const axios = require("axios");

const apiKey = "sizin-api-anahtariniz";
const baseURL = "https://sizin-siteniz.com";

const api = axios.create({
  baseURL,
  headers: { "X-API-KEY": apiKey }
});

// Kullanıcı girişi
async function kullaniciGirisi(kullaniciAdi, sifre) {
  const { data } = await axios.post(`${baseURL}/api/giris`, {
    kullaniciAdi, sifre
  });
  return data;
}

// Siparişleri listeleme
async function siparisleriGetir(limit = 10, sayfa = 1) {
  const { data } = await api.get("/api/siparisler", {
    params: { limit, sayfa }
  });
  return data;
}

// Ürünleri listeleme
async function urunleriGetir(limit = 10, sayfa = 1) {
  const { data } = await api.get("/api/urunler", {
    params: { limit, sayfa }
  });
  return data;
}

// Sipariş durumu güncelleme
async function siparisDurumGuncelle(siparisId, durum) {
  const { data } = await api.post("/api/siparisDurumGuncelle", {
    siparisId, durum
  });
  return data;
}

// Kullanım
(async () => {
  console.log(await siparisleriGetir(20, 1));
  console.log(await urunleriGetir());
  console.log(await siparisDurumGuncelle(145, 4));
})();
import requests

api_key = "sizin-api-anahtariniz"
base_url = "https://sizin-siteniz.com"
headers = {"X-API-KEY": api_key}

# Kullanıcı girişi
def kullanici_girisi(kullanici_adi, sifre):
    res = requests.post(f"{base_url}/api/giris", json={
        "kullaniciAdi": kullanici_adi,
        "sifre": sifre
    })
    return res.json()

# Siparişleri listeleme
def siparisleri_getir(limit=10, sayfa=1):
    res = requests.get(
        f"{base_url}/api/siparisler",
        headers=headers,
        params={"limit": limit, "sayfa": sayfa}
    )
    return res.json()

# Ürünleri listeleme
def urunleri_getir(limit=10, sayfa=1):
    res = requests.get(
        f"{base_url}/api/urunler",
        headers=headers,
        params={"limit": limit, "sayfa": sayfa}
    )
    return res.json()

# Sipariş durumu güncelleme
def siparis_durum_guncelle(siparis_id, durum):
    res = requests.post(
        f"{base_url}/api/siparisDurumGuncelle",
        headers=headers,
        json={"siparisId": siparis_id, "durum": durum}
    )
    return res.json()

# Kullanım
print(siparisleri_getir(20, 1))
print(urunleri_getir())
print(siparis_durum_guncelle(145, 4))
import java.net.URI;
import java.net.http.*;
import java.net.http.HttpResponse.BodyHandlers;

public class StorexApi {
    static final String API_KEY = "sizin-api-anahtariniz";
    static final String BASE_URL = "https://sizin-siteniz.com";
    static final HttpClient client = HttpClient.newHttpClient();

    static String get(String endpoint) throws Exception {
        var req = HttpRequest.newBuilder()
            .uri(URI.create(BASE_URL + endpoint))
            .header("X-API-KEY", API_KEY)
            .GET().build();
        return client.send(req, BodyHandlers.ofString()).body();
    }

    static String post(String endpoint, String json) throws Exception {
        var req = HttpRequest.newBuilder()
            .uri(URI.create(BASE_URL + endpoint))
            .header("X-API-KEY", API_KEY)
            .header("Content-Type", "application/json")
            .POST(HttpRequest.BodyPublishers.ofString(json))
            .build();
        return client.send(req, BodyHandlers.ofString()).body();
    }

    public static void main(String[] args) throws Exception {
        // Siparişleri getir
        System.out.println(get("/api/siparisler?limit=20&sayfa=1"));

        // Ürünleri getir
        System.out.println(get("/api/urunler?limit=10&sayfa=1"));

        // Sipariş durumu güncelle
        System.out.println(post("/api/siparisDurumGuncelle",
            "{\"siparisId\":145,\"durum\":4}"));
    }
}
using System.Net.Http;
using System.Text;
using System.Text.Json;

var apiKey = "sizin-api-anahtariniz";
var baseUrl = "https://sizin-siteniz.com";
var client = new HttpClient();
client.DefaultRequestHeaders.Add("X-API-KEY", apiKey);

// Kullanıcı girişi
async Task<JsonDocument> KullaniciGirisi(string kullaniciAdi, string sifre)
{
    var content = new StringContent(
        JsonSerializer.Serialize(new { kullaniciAdi, sifre }),
        Encoding.UTF8, "application/json");
    var res = await client.PostAsync($"{baseUrl}/api/giris", content);
    var json = await res.Content.ReadAsStringAsync();
    return JsonDocument.Parse(json);
}

// Siparişleri listeleme
async Task<JsonDocument> SiparisleriGetir(int limit = 10, int sayfa = 1)
{
    var res = await client.GetStringAsync(
        $"{baseUrl}/api/siparisler?limit={limit}&sayfa={sayfa}");
    return JsonDocument.Parse(res);
}

// Ürünleri listeleme
async Task<JsonDocument> UrunleriGetir(int limit = 10, int sayfa = 1)
{
    var res = await client.GetStringAsync(
        $"{baseUrl}/api/urunler?limit={limit}&sayfa={sayfa}");
    return JsonDocument.Parse(res);
}

// Sipariş durumu güncelleme
async Task<JsonDocument> SiparisDurumGuncelle(int siparisId, int durum)
{
    var content = new StringContent(
        JsonSerializer.Serialize(new { siparisId, durum }),
        Encoding.UTF8, "application/json");
    var res = await client.PostAsync(
        $"{baseUrl}/api/siparisDurumGuncelle", content);
    var json = await res.Content.ReadAsStringAsync();
    return JsonDocument.Parse(json);
}

// Kullanım
var siparisler = await SiparisleriGetir(20, 1);
var urunler = await UrunleriGetir();
var guncelle = await SiparisDurumGuncelle(145, 4);
interface ApiYanit<T> {
  durum: boolean;
  mesaj: string;
  veri?: T;
}

interface Siparis {
  id: string;
  sipID: string;
  ad: string;
  soyad: string;
  durum: string;
  durum_metni: string;
  toplam_tutar: string;
}

interface Urun {
  UrunId: string;
  UrunAdi: string;
  Fiyat: string;
  Stok: number;
  Barkod: string;
}

const apiKey: string = "sizin-api-anahtariniz";
const baseUrl: string = "https://sizin-siteniz.com";

const headers: HeadersInit = { "X-API-KEY": apiKey };

async function apiGet<T>(endpoint: string): Promise<ApiYanit<T>> {
  const res = await fetch(`${baseUrl}${endpoint}`, { headers });
  return res.json();
}

async function apiPost<T>(endpoint: string, body: object): Promise<ApiYanit<T>> {
  const res = await fetch(`${baseUrl}${endpoint}`, {
    method: "POST",
    headers: { ...headers, "Content-Type": "application/json" },
    body: JSON.stringify(body),
  });
  return res.json();
}

// Kullanım
const siparisler = await apiGet<{ siparisler: Siparis[] }>(
  "/api/siparisler?limit=20&sayfa=1"
);
const urunler = await apiGet<{ urunler: Urun[] }>(
  "/api/urunler?limit=10&sayfa=1"
);
const guncelle = await apiPost("/api/siparisDurumGuncelle", {
  siparisId: 145, durum: 4
});
package main

import (
    "bytes"
    "encoding/json"
    "fmt"
    "io"
    "net/http"
)

const (
    apiKey  = "sizin-api-anahtariniz"
    baseURL = "https://sizin-siteniz.com"
)

func apiGet(endpoint string) (map[string]interface{}, error) {
    req, _ := http.NewRequest("GET", baseURL+endpoint, nil)
    req.Header.Set("X-API-KEY", apiKey)
    res, err := http.DefaultClient.Do(req)
    if err != nil {
        return nil, err
    }
    defer res.Body.Close()
    body, _ := io.ReadAll(res.Body)
    var result map[string]interface{}
    json.Unmarshal(body, &result)
    return result, nil
}

func apiPost(endpoint string, data interface{}) (map[string]interface{}, error) {
    jsonData, _ := json.Marshal(data)
    req, _ := http.NewRequest("POST", baseURL+endpoint, bytes.NewBuffer(jsonData))
    req.Header.Set("X-API-KEY", apiKey)
    req.Header.Set("Content-Type", "application/json")
    res, err := http.DefaultClient.Do(req)
    if err != nil {
        return nil, err
    }
    defer res.Body.Close()
    body, _ := io.ReadAll(res.Body)
    var result map[string]interface{}
    json.Unmarshal(body, &result)
    return result, nil
}

func main() {
    // Siparişleri getir
    siparisler, _ := apiGet("/api/siparisler?limit=20&sayfa=1")
    fmt.Println(siparisler)

    // Ürünleri getir
    urunler, _ := apiGet("/api/urunler?limit=10&sayfa=1")
    fmt.Println(urunler)

    // Sipariş durumu güncelle
    guncelle, _ := apiPost("/api/siparisDurumGuncelle", map[string]interface{}{
        "siparisId": 145,
        "durum":     4,
    })
    fmt.Println(guncelle)
}
import java.net.URI
import java.net.http.HttpClient
import java.net.http.HttpRequest
import java.net.http.HttpResponse

val apiKey = "sizin-api-anahtariniz"
val baseUrl = "https://sizin-siteniz.com"
val client = HttpClient.newHttpClient()

fun apiGet(endpoint: String): String {
    val req = HttpRequest.newBuilder()
        .uri(URI.create("$baseUrl$endpoint"))
        .header("X-API-KEY", apiKey)
        .GET().build()
    return client.send(req, HttpResponse.BodyHandlers.ofString()).body()
}

fun apiPost(endpoint: String, json: String): String {
    val req = HttpRequest.newBuilder()
        .uri(URI.create("$baseUrl$endpoint"))
        .header("X-API-KEY", apiKey)
        .header("Content-Type", "application/json")
        .POST(HttpRequest.BodyPublishers.ofString(json))
        .build()
    return client.send(req, HttpResponse.BodyHandlers.ofString()).body()
}

fun main() {
    println(apiGet("/api/siparisler?limit=20&sayfa=1"))
    println(apiGet("/api/urunler?limit=10&sayfa=1"))
    println(apiPost("/api/siparisDurumGuncelle",
        """{"siparisId":145,"durum":4}"""))
}
import 'dart:convert';
import 'package:http/http.dart' as http;

const apiKey = 'sizin-api-anahtariniz';
const baseUrl = 'https://sizin-siteniz.com';
final headers = {'X-API-KEY': apiKey};

Future<Map<String, dynamic>> apiGet(String endpoint) async {
  final res = await http.get(
    Uri.parse('$baseUrl$endpoint'),
    headers: headers,
  );
  return jsonDecode(res.body);
}

Future<Map<String, dynamic>> apiPost(String endpoint, Map body) async {
  final res = await http.post(
    Uri.parse('$baseUrl$endpoint'),
    headers: {...headers, 'Content-Type': 'application/json'},
    body: jsonEncode(body),
  );
  return jsonDecode(res.body);
}

void main() async {
  // Siparişleri getir
  final siparisler = await apiGet('/api/siparisler?limit=20&sayfa=1');
  print(siparisler);

  // Ürünleri getir
  final urunler = await apiGet('/api/urunler?limit=10&sayfa=1');
  print(urunler);

  // Sipariş durumu güncelle
  final guncelle = await apiPost('/api/siparisDurumGuncelle', {
    'siparisId': 145,
    'durum': 4,
  });
  print(guncelle);
}
# Kullanıcı girişi
curl -X POST https://sizin-siteniz.com/api/giris \
  -H "Content-Type: application/json" \
  -d '{"kullaniciAdi": "admin", "sifre": "sifre123"}'

# Siparişleri listeleme
curl https://sizin-siteniz.com/api/siparisler?limit=20&sayfa=1 \
  -H "X-API-KEY: sizin-api-anahtariniz"

# Sipariş detayı
curl https://sizin-siteniz.com/api/siparis?id=145 \
  -H "X-API-KEY: sizin-api-anahtariniz"

# Ürünleri listeleme
curl https://sizin-siteniz.com/api/urunler?limit=10&sayfa=1 \
  -H "X-API-KEY: sizin-api-anahtariniz"

# Ürün detayı
curl https://sizin-siteniz.com/api/urun?id=1735 \
  -H "X-API-KEY: sizin-api-anahtariniz"

# Ürün arama
curl https://sizin-siteniz.com/api/urunAra?arama=konjektor \
  -H "X-API-KEY: sizin-api-anahtariniz"

# Kategoriler
curl https://sizin-siteniz.com/api/kategoriler \
  -H "X-API-KEY: sizin-api-anahtariniz"

# Markalar
curl https://sizin-siteniz.com/api/markalar \
  -H "X-API-KEY: sizin-api-anahtariniz"

# Stok kontrol
curl https://sizin-siteniz.com/api/stokKontrol?urunId=1735 \
  -H "X-API-KEY: sizin-api-anahtariniz"

# Sipariş durumu güncelleme
curl -X POST https://sizin-siteniz.com/api/siparisDurumGuncelle \
  -H "X-API-KEY: sizin-api-anahtariniz" \
  -H "Content-Type: application/json" \
  -d '{"siparisId": 145, "durum": 4, "kargoAdi": "Yurtiçi Kargo", "kargoKodu": "YK123456"}'