Topbar Banner Topbar Banner

API Dokümantasyonu

Gelişmiş API sistemi ile ürünlerinizi programatik olarak yönetin

📢 Duyurular ve Güncellemeler

Beklenen An Geldi! API Sistemimiz Açıldı

Giyim Moda API sistemi resmen yayına alındı! Entegrasyon işlemlerine başlamak ve teknik detayları incelemek için giyimmoda.com.tr üzerinden yeni dökümanlarımıza göz atabilirsiniz. İyi kodlamalar!

2026-01-03

📊 API İstatistikleri

205

Toplam Ürün

18

Toplam Satıcı

18

API Kullanıcısı

150ms

Ortalama Yanıt Süresi

API Kullanım Kılavuzu

API sistemini kullanmak için aşağıdaki adımları takip edin:

1
API Key/Secret Oluşturma

API'yi kullanmak için önce API Key ve Secret oluşturmanız gerekir:

  • Satıcı Panelinden: Profil → API Credentials → "API Key Oluştur"
  • Admin Panelinden: Satıcılar → Satıcı Detayı → API Credentials → "API Key Oluştur"
Önemli: API Key ve Secret bir kez görüntülenebilir. Kaybetmeniz durumunda yeniden oluşturmanız gerekir.
2
Kimlik Doğrulama

API isteklerinde kimlik doğrulama için iki yöntem:

API Key/Secret (Önerilen)

Her istekte header'larda gönderilir

Token

Giriş yaparak token alınır

3
API İstekleri

Tüm API istekleri aşağıdaki formatta yapılır:

https://www.giyimmoda.com.tr/api/seller/{endpoint}

Örnek Endpoint'ler:

  • GET /api/seller/products
  • POST /api/seller/products
  • POST /api/seller/products/bulk
  • GET /api/seller/orders
4
Request Formatı

Tüm istekler JSON formatında gönderilmelidir:

Content-Type: application/json

{
    "field1": "value1",
    "field2": "value2"
}
5
Response Formatı

Tüm yanıtlar standart JSON formatındadır:

{
    "success": true,
    "message": "İşlem başarılı",
    "data": {
        // Response data
    }
}
6
Hata Yönetimi

Hata durumlarında aşağıdaki format döner:

{
    "success": false,
    "message": "Hata mesajı",
    "errors": {
        "field_name": ["Hata detayı"]
    }
}

HTTP Durum Kodları:

200 Başarılı
201 Oluşturuldu
401 Kimlik hatası
403 Yetki hatası
404 Bulunamadı
500 Sunucu hatası
7
Rate Limiting

API istekleri dakikada 600 istek ile sınırlandırılmıştır. Bu limit aşıldığında 429 Too Many Requests hatası döner.

Genel Bakış

Satıcı API sistemi, satıcıların ürünlerini, siparişlerini ve diğer işlemlerini programatik olarak yönetmelerine olanak tanır. Gelişmiş API yapısı ile güçlü entegrasyonlar oluşturabilirsiniz.

Base URL: https://www.giyimmoda.com.tr/api
Production ortamında otomatik olarak güncellenir.
SEO Friendly URLs:
  • Dokümantasyon: https://www.giyimmoda.com.tr/api-dokmantasyonu
  • API Base: https://www.giyimmoda.com.tr/api

Özellikler

  • ✅ API Key/Secret ve Token tabanlı kimlik doğrulama
  • ✅ Toplu ürün yükleme (100 ürüne kadar)
  • ✅ Otomatik kategori hiyerarşisi yönetimi
  • ✅ Görsel indirme ve optimizasyon
  • ✅ Gelişmiş sipariş yönetimi
  • ✅ Gerçek zamanlı stok yönetimi
  • ✅ Toplu fiyat güncelleme
  • ✅ Detaylı raporlama ve analitik
  • ✅ Müşteri yönetimi
  • ✅ Kupon yönetimi (ürün/sepet bazlı)
  • ✅ Ürün yorumları ve değerlendirmeler
  • ✅ Para çekme istekleri
  • ✅ Mağaza ayarları yönetimi
  • ✅ Mesajlaşma sistemi
  • ✅ Destek talepleri
  • ✅ Ürün soruları ve yanıtları
  • ✅ Bildirim yönetimi
  • ✅ Adres yönetimi
  • ✅ Dosya yükleme
  • ✅ Komisyon geçmişi
  • ✅ Webhook sistemi (gerçek zamanlı bildirimler)
  • ✅ Yüksek performans (~1.5 ürün/saniye)

Kimlik Doğrulama

Yöntem 1: API Key/Secret (Önerilen)

Satıcı panelinden veya admin panelinden API Key ve Secret oluşturun. Bu yöntem token'dan daha güvenli ve kalıcıdır.

POST /api/seller/login
// Headers
X-API-Key: sk_XXXXXXXXXXXX
X-API-Secret: xxxxxxxxxxxxxx
Content-Type: application/json

// Request Body
{
    "email": "seller@example.com",
    "password": "your_password"
}

Yöntem 2: Token

Giriş yaparak token alabilir ve tüm isteklerde kullanabilirsiniz.

// Headers
Authorization: Bearer 1|xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

Profil İşlemleri

  • GET /api/seller/profile - Profil bilgilerini getir
  • PUT /api/seller/profile - Profil bilgilerini güncelle
Not: API token oluşturma işlemi sadece admin ve satıcı panelinden yapılabilir.

Ürün İşlemleri

1. Ürünleri Listeleme

GET /api/seller/products

Query Parameters:

  • search - Ürün adı ile arama (opsiyonel)
  • status - Durum filtresi: published, pending, unpublished (opsiyonel)
  • per_page - Sayfa başına kayıt sayısı (varsayılan: 15, tümünü listelemek için: all veya per_page=-1)
  • page - Sayfa numarası (opsiyonel)
💡 Tüm Ürünleri Listeleme:
  • GET /api/seller/products?per_page=all - Tüm ürünleri listele (pagination olmadan)
  • GET /api/seller/products?per_page=-1 - Tüm ürünleri listele (alternatif yöntem)

2. Ürün Oluşturma

POST /api/seller/products
Önemli Kurallar:
  • thumbnail_img_url - Zorunlu
  • gallery_images_urls - Zorunlu, en az 2 resim
  • tax_rate - Opsiyonel (vergi oranı, boş bırakılabilir)
  • Birim mantığı: unit = "kg" veya decibel girildiyse → birim "kg", değilse → "adet"
  • Alt kategori seçilirse parent kategorileri otomatik eklenir
{
    "name": "Yeni Ürün",
    "description": "Ürün açıklaması",
    "category_id": 149,
    "category_ids": [150, 151],
    "brand_id": 5,
    "unit_price": 150.00,
    "current_stock": 100,
    "sku": "SKU-001",
    "barcode": "1234567890123",
    "delivery_time": 3,
    "unit": "adet",
    "weight": 0.5,
    "tax_rate": 20,
    "refundable": true,
    "thumbnail_img_url": "https://example.com/thumb.jpg",
    "gallery_images_urls": [
        "https://example.com/img1.jpg",
        "https://example.com/img2.jpg"
    ]
}

📋 Ürün Oluşturmak İçin Gerekli Sütunlar

Göndermeniz Gereken Tablo Sütunu Açıklama
name products.name Ürün adı (zorunlu)
description products.description Ürün açıklaması (zorunlu)
category_id products.category_id Ana kategori ID (zorunlu)
category_ids product_categories.category_id Ek kategori ID'leri (opsiyonel, array)
brand_id products.brand_id Marka ID (opsiyonel)
unit_price products.unit_price Birim fiyat (zorunlu)
current_stock product_stocks.qty Stok miktarı (zorunlu)
sku products.sku SKU kodu (opsiyonel, otomatik oluşturulur)
barcode products.barcode Barkod (opsiyonel)
delivery_time products.delivery_time Teslimat süresi (gün cinsinden, opsiyonel)
unit products.unit Birim (opsiyonel, varsayılan: "adet", "kg" olabilir)
weight products.weight Ağırlık (opsiyonel)
decibel product_translations.description Desibel değeri (opsiyonel, 0-200 arası, unit'i "kg" yapar)
tax_rate product_taxes.tax_id Vergi oranı (opsiyonel, boş bırakılabilir. Verilmezse admin panelinden varsayılan vergi eklenir)
refundable products.refundable İade edilebilir (opsiyonel, varsayılan: true, true/false)
thumbnail_img_url products.thumbnail_img Thumbnail görsel URL (zorunlu, indirilir ve sıkıştırılır)
gallery_images_urls products.photos Galeri görselleri URL'leri (zorunlu, en az 2 görsel, array)
meta_title products.meta_title Meta başlık (opsiyonel, girilmezse ürün adı otomatik kopyalanır)
meta_description products.meta_description Meta açıklama (opsiyonel, girilmezse ürün açıklamasından ilk 140 karakter alınır)
💡 Sistem Otomatik Olarak:
  • products.slug - URL slug (name + timestamp)
  • products.published - Varsayılan: 1 (yayınlanmış)
  • products.digital - Varsayılan: 0 (fiziksel ürün)
  • products.thumbnail_img, preview_img, meta_img - Aynı görsel olarak ayarlanır
  • products.photos - Galeri görselleri (virgülle ayrılmış ID'ler)
  • products.meta_title - Girilmezse ürün adı otomatik kopyalanır
  • products.meta_description - Girilmezse ürün açıklamasından ilk 140 karakter alınır
  • product_stocks.product_id - Ürün ID'si
  • product_stocks.variant - Varsayılan: "" (boş string)
  • product_stocks.price - unit_price ile aynı
  • product_categories - Kategoriler eklenir (alt kategori ise parent'lar da eklenir)
  • product_taxes - Vergi ilişkilendirmesi

📋 Ürün Güncellemek İçin Gerekli Sütunlar (PUT /api/seller/products/{id})

✅ Tüm alanlar opsiyonel - Sadece güncellenecek alanları gönderin
Göndermeniz Gereken Tablo Sütunu Açıklama
name products.name Ürün adı (opsiyonel)
description products.description Ürün açıklaması (opsiyonel)
category_id products.category_id Ana kategori ID (opsiyonel)
category_ids product_categories.category_id Ek kategori ID'leri (opsiyonel, array, sync edilir)
brand_id products.brand_id Marka ID (opsiyonel)
unit_price products.unit_price, product_stocks.price Birim fiyat (opsiyonel)
current_stock product_stocks.qty Stok miktarı (opsiyonel)
sku products.sku SKU kodu (opsiyonel)
barcode products.barcode Barkod (opsiyonel)
delivery_time products.delivery_time Teslimat süresi (gün cinsinden, opsiyonel)
unit products.unit Birim (opsiyonel, varsayılan: "adet", "kg" olabilir)
weight products.weight Ağırlık (opsiyonel)
decibel product_translations.description Desibel değeri (opsiyonel, 0-200 arası, unit'i "kg" yapar)
tax_rate product_taxes.tax_id Vergi oranı (opsiyonel, boş bırakılabilir. Verilirse mevcut vergiler silinir ve yeni eklenir, verilmezse mevcut vergiler korunur)
refundable products.refundable İade edilebilir (opsiyonel, true/false)
published products.published Yayın durumu (opsiyonel, true/false)
thumbnail_img_url products.thumbnail_img Thumbnail görsel URL (opsiyonel, indirilir ve sıkıştırılır)
gallery_images_urls products.photos Galeri görselleri URL'leri (opsiyonel, en az 2 görsel, array)
meta_title products.meta_title Meta başlık (opsiyonel, boş veya girilmezse ürün adı otomatik kopyalanır)
meta_description products.meta_description Meta açıklama (opsiyonel, boş veya girilmezse ürün açıklamasından ilk 140 karakter alınır)
💡 Sistem Otomatik Olarak:
  • products.slug - name güncellenirse slug otomatik güncellenir
  • products.thumbnail_img, preview_img, meta_img - thumbnail_img_url güncellenirse aynı görsel olarak ayarlanır
  • products.photos - gallery_images_urls güncellenirse galeri görselleri (virgülle ayrılmış ID'ler) güncellenir
  • products.meta_title - Boş veya girilmezse ürün adı otomatik kopyalanır
  • products.meta_description - Boş veya girilmezse ürün açıklamasından ilk 140 karakter alınır
  • product_stocks.price - unit_price güncellenirse stok fiyatı da güncellenir
  • product_categories - category_id veya category_ids güncellenirse kategoriler sync edilir (alt kategori ise parent'lar da eklenir)
  • product_taxes - tax_rate verilirse mevcut vergiler silinir ve yeni eklenir, verilmezse mevcut vergiler korunur
  • Birim mantığı: unit = "kg" veya decibel girildiyse → birim "kg", değilse → "adet"

3. Toplu Ürün Yükleme YENİ ~1.5 ürün/saniye

POST /api/seller/products/bulk
🚀 Performans:
  • 5 ürün: ~4 saniye (1.35 ürün/saniye)
  • 10 ürün: ~7 saniye (1.54 ürün/saniye)
  • 20 ürün: ~14 saniye (1.48 ürün/saniye)
  • 50 ürün: ~32 saniye (1.58 ürün/saniye)
  • 100 ürün: ~65 saniye (maksimum limit)
{
    "products": [
        {
            "name": "Toplu Ürün 1",
            "description": "Açıklama",
            "category_id": 149,
            "brand_id": 5,
            "unit_price": 150.00,
            "current_stock": 100,
            "barcode": "1234567890123",
            "delivery_time": 3,
            "tax_rate": 20,
            "refundable": true,
            "thumbnail_img_url": "https://example.com/thumb1.jpg",
            "gallery_images_urls": [
                "https://example.com/img1.jpg",
                "https://example.com/img2.jpg"
            ]
        },
        {
            "name": "Toplu Ürün 2",
            ...
        }
    ]
}

Response:

{
    "success": true,
    "message": "Bulk product creation completed. 2 successful, 0 failed.",
    "data": {
        "total": 2,
        "success_count": 2,
        "failed_count": 0,
        "execution_time_seconds": 3.45,
        "products_per_second": 0.58,
        "success": [...],
        "failed": []
    }
}

📋 Toplu Ürün Yükleme İçin Gerekli Sütunlar

Göndermeniz Gereken Tablo Sütunu Açıklama
name products.name Ürün adı (zorunlu)
description products.description Ürün açıklaması (zorunlu)
category_id products.category_id Ana kategori ID (zorunlu)
category_ids product_categories.category_id Ek kategori ID'leri (opsiyonel, array)
brand_id products.brand_id Marka ID (opsiyonel)
unit_price products.unit_price Birim fiyat (zorunlu)
current_stock product_stocks.qty Stok miktarı (zorunlu)
sku products.sku SKU kodu (opsiyonel, otomatik oluşturulur)
barcode products.barcode Barkod (opsiyonel)
delivery_time products.delivery_time Teslimat süresi (gün cinsinden, opsiyonel)
unit products.unit Birim (opsiyonel, varsayılan: "adet", "kg" olabilir)
weight products.weight Ağırlık (opsiyonel)
decibel product_translations.description Desibel değeri (opsiyonel, 0-200 arası, unit'i "kg" yapar)
tax_rate product_taxes.tax_id Vergi oranı (opsiyonel, boş bırakılabilir. Verilmezse admin panelinden varsayılan vergi eklenir)
refundable products.refundable İade edilebilir (opsiyonel, varsayılan: true, true/false)
thumbnail_img_url products.thumbnail_img Thumbnail görsel URL (zorunlu, indirilir ve sıkıştırılır)
gallery_images_urls products.photos Galeri görselleri URL'leri (zorunlu, en az 2 görsel, array)
meta_title products.meta_title Meta başlık (opsiyonel, girilmezse ürün adı otomatik kopyalanır)
meta_description products.meta_description Meta açıklama (opsiyonel, girilmezse ürün açıklamasından ilk 140 karakter alınır)
💡 Sistem Otomatik Olarak:
  • Her ürün için aynı otomatik işlemler yapılır (ürün oluşturma ile aynı)
  • En fazla 100 ürün aynı anda yüklenebilir

4. Ürün Güncelleme

PUT /api/seller/products/{id}

Tüm alanlar opsiyonel - sadece güncellenecek alanları gönderin.

5. Ürün Silme

DELETE /api/seller/products/{id}

6. Ürün Dışa Aktarma

GET /api/seller/products/export

Ürünleri Excel formatında dışa aktarır.

Query Parametreleri:

  • download (opsiyonel): true - Dosyayı direkt indirir, yoksa download linki döner

Örnek İstekler:

GET /api/seller/products/export Link döner
{
    "success": true,
    "message": "Products exported successfully",
    "data": {
        "download_url": "https://example.com/storage/exports/seller_products_10_2024-12-15_143025.xlsx",
        "filename": "seller_products_10_2024-12-15_143025.xlsx",
        "file_size": 245760,
        "note": "Add ?download=true to the URL to download the file directly"
    }
}
GET /api/seller/products/export?download=true Dosya indirir
💡 Kullanım:
  • GET /api/seller/products/export - Download linki döner (JSON response)
  • GET /api/seller/products/export?download=true - Dosyayı direkt indirir (Excel dosyası)
  • Dosya formatı: Excel (.xlsx)
  • Sadece satıcıya ait ürünler dışa aktarılır

7. Ürün İçe Aktarma

POST /api/seller/products/import

CSV/Excel dosyasından ürünleri toplu olarak içe aktarır.

8. Toplu Ürün Güncelleme

POST /api/seller/products/bulk-update

Birden fazla ürünü aynı anda günceller. Her ürün için sadece güncellenecek alanları gönderin.

{
    "products": [
        {
            "id": 123,
            "unit_price": 199.99,
            "current_stock": 50,
            "published": true
        },
        {
            "id": 124,
            "unit_price": 299.99,
            "published": false
        }
    ]
}

📋 Toplu Ürün Güncellemek İçin Gerekli Sütunlar

✅ Her ürün için sadece güncellenecek alanları gönderin
Göndermeniz Gereken Tablo Sütunu Açıklama
products[].id products.id Ürün ID (zorunlu, satıcıya ait olmalı)
products[].unit_price products.unit_price, product_stocks.price Birim fiyat (opsiyonel, numeric, min: 0)
products[].current_stock product_stocks.qty Stok miktarı (opsiyonel, integer, min: 0, varyantlı ürünlerde ilk stok güncellenir)
products[].published products.published Yayın durumu (opsiyonel, boolean, true/false)
💡 Sistem Otomatik Olarak:
  • Her ürün için sadece gönderilen alanlar güncellenir
  • product_stocks.price - unit_price güncellenirse stok fiyatı da güncellenir
  • Varyantlı ürünlerde current_stock ilk stok kaydını günceller
  • Ürün satıcıya ait olmalı, aksi halde hata döner

Örnek Yanıt:

{
    "success": true,
    "message": "Bulk update completed. Updated: 2, Failed: 0",
    "data": {
        "updated_count": 2,
        "failed_count": 0,
        "errors": []
    }
}
⚠️ Önemli Notlar:
  • Her ürün için id zorunludur
  • Ürün satıcıya ait olmalı, aksi halde o ürün güncellenmez ve hata listesine eklenir
  • Varyantlı ürünlerde stok güncellemesi ilk stok kaydını etkiler
  • Başarısız güncellemeler errors dizisinde listelenir
  • Yanıtta updated_count ve failed_count bilgileri yer alır

Kategori İşlemleri

Kategorileri listeleyebilir, ağaç yapısını alabilir ve detaylarını görüntüleyebilirsiniz.

  • GET /api/seller/categories - Kategorileri listele
  • GET /api/seller/categories/tree - Kategori ağacını getir
  • GET /api/seller/categories/{id} - Kategori detayı
💡 Tüm Kategorileri Listeleme:
  • GET /api/seller/categories?per_page=all - Tüm kategorileri listele
  • GET /api/seller/categories?per_page=-1 - Tüm kategorileri listele (alternatif)
Not: Alt kategori seçildiğinde parent kategorileri otomatik olarak eklenir.

🏷️ Marka İşlemleri

  • GET /api/seller/brands - Markaları listele
  • GET /api/seller/brands/{id} - Marka detayı
💡 Tüm Markaları Listeleme:
  • GET /api/seller/brands?per_page=all - Tüm markaları listele
  • GET /api/seller/brands?per_page=-1 - Tüm markaları listele (alternatif)

Sipariş İşlemleri

Endpoint'ler

  • GET /api/seller/orders - Siparişleri listele (ödeme durumu dahil)
  • GET /api/seller/orders/{id} - Sipariş detayı (ödeme durumu dahil)
  • POST /api/seller/orders - Sipariş oluştur
  • PUT /api/seller/orders/{id}/status - Sipariş durumu güncelle
  • POST /api/seller/orders/{id}/cancel - Sipariş iptal et
  • POST /api/seller/orders/{id}/upload-invoice - Sipariş faturası yükle
💡 Ödeme Durumu:
  • Ödeme süreci admin tarafından kontrol edilir
  • payment_status alanı API'de görüntülenir
  • Değerler: "paid" (ödendi) veya "unpaid" (ödenmedi)
  • Sipariş listeleme ve detay endpoint'lerinde ödeme durumu gösterilir
  • Filtreleme: GET /api/seller/orders?payment_status=paid şeklinde kullanılabilir
💡 Tüm Siparişleri Listeleme:
  • GET /api/seller/orders?per_page=all - Tüm siparişleri listele (pagination olmadan)
  • GET /api/seller/orders?per_page=-1 - Tüm siparişleri listele (alternatif yöntem)
  • Query Parameters: status, payment_status, date_from, date_to, search, per_page, page

📋 Sipariş İşlemleri İçin Gerekli Sütunlar

1. Sipariş Oluşturmak İçin (POST /api/seller/orders)

Göndermeniz Gereken Tablo Sütunu Açıklama
customer.name users.name Müşteri adı (zorunlu)
customer.email users.email Müşteri e-posta (zorunlu)
customer.phone users.phone Müşteri telefon (zorunlu)
customer.address orders.shipping_address Teslimat adresi (zorunlu)
customer.city orders.shipping_address Şehir (zorunlu)
customer.country orders.shipping_address Ülke (zorunlu)
customer.postal_code orders.shipping_address Posta kodu (zorunlu)
customer.tc_identity_number orders.shipping_address TC Kimlik No (opsiyonel, 11 karakter)
items[].product_id order_details.product_id Ürün ID (zorunlu, satıcıya ait olmalı)
items[].quantity order_details.quantity Miktar (zorunlu, min: 1)
items[].variation order_details.variation Varyant (opsiyonel)
payment_type orders.payment_type Ödeme tipi (zorunlu: bank_payment, cash_on_delivery, wallet_payment, iyzico)
payment_status orders.payment_status Ödeme durumu (sadece okuma, admin tarafından kontrol edilir: "paid", "unpaid")
additional_info orders.additional_info Ek bilgi (opsiyonel)
💡 Sistem Otomatik Olarak:
  • orders.seller_id - Giriş yapan satıcının ID'si
  • orders.code - Sipariş kodu (otomatik oluşturulur)
  • orders.date - Sipariş tarihi (otomatik)
  • orders.payment_status - Ödeme durumu (admin tarafından kontrol edilir, API'de görüntülenir: "paid", "unpaid")
  • orders.delivery_status - Teslimat durumu (varsayılan: pending)
  • order_details.price - Ürün fiyatı (otomatik hesaplanır)
  • order_details.tax - Vergi tutarı (otomatik hesaplanır)
  • order_details.shipping_cost - Kargo ücreti (otomatik hesaplanır)
  • orders.grand_total - Toplam tutar (otomatik hesaplanır)
  • product_stocks.qty - Stok düşülür (otomatik)

2. Sipariş Durumu Güncellemek İçin (PUT /api/seller/orders/{id}/status)

Göndermeniz Gereken Tablo Sütunu Açıklama
delivery_status orders.delivery_status Teslimat durumu (zorunlu: pending, confirmed, picked_up, on_the_way, delivered, cancelled)
tracking_code orders.tracking_code Kargo takip kodu (opsiyonel)
💡 Sistem Otomatik Olarak:
  • order_details.delivery_status - Tüm sipariş detaylarının durumu güncellenir

3. Sipariş İptal Etmek İçin (POST /api/seller/orders/{id}/cancel)

💡 Sistem Otomatik Olarak:
  • orders.delivery_status - "cancelled" olarak güncellenir
  • order_details.delivery_status - Tüm detaylar "cancelled" olur
  • product_stocks.qty - Stok geri eklenir (dijital ürünler hariç)

Örnek İstekler

GET /api/seller/orders?status=pending&per_page=20
{
    "success": true,
    "data": [
        {
            "id": 123,
            "code": "20241215-14302545",
            "date": "2024-12-15 14:30:25",
            "customer": {
                "id": 45,
                "name": "Ahmet Yılmaz",
                "email": "ahmet@example.com",
                "phone": "05551234567"
            },
            "payment_type": "bank_payment",
            "payment_status": "paid",
            "delivery_status": "pending",
            "grand_total": "250.00"
        }
    ],
    "pagination": {
        "current_page": 1,
        "last_page": 5,
        "per_page": 20,
        "total": 72
    }
}
POST /api/seller/orders
{
    "customer": {
        "name": "Ahmet Yılmaz",
        "email": "ahmet@example.com",
        "phone": "05551234567",
        "address": "Atatürk Cad. No:123",
        "city": "İstanbul",
        "country": "Türkiye",
        "postal_code": "34000",
        "tc_identity_number": "12345678901"
    },
    "items": [
        {
            "product_id": 789,
            "quantity": 2,
            "variation": ""
        }
    ],
    "payment_type": "bank_payment"
}
Önemli Notlar:
  • Ürün satıcıya ait olmalı
  • Stok kontrolü yapılır, yetersiz stok varsa hata döner
  • Dijital ürünler için stok kontrolü yapılmaz
  • Vergi otomatik hesaplanır
  • Sipariş oluşturulduğunda stok düşülür
  • Eşzamanlı siparişlerde stok karmaşası önlendi (lockForUpdate kullanılıyor)

4. Sipariş Faturası Yüklemek İçin (POST /api/seller/orders/{id}/upload-invoice)

POST /api/seller/orders/{id}/upload-invoice
Göndermeniz Gereken Tablo Sütunu Açıklama
invoice_file orders.invoice_file, uploads.id Fatura dosyası (zorunlu, multipart/form-data)
⚠️ Dosya Gereksinimleri:
  • Format: PDF, JPG, JPEG, PNG
  • Maksimum Boyut: 5MB (5120 KB)
  • Content-Type: multipart/form-data

Örnek İstek (cURL):

curl -X POST https://example.com/api/seller/orders/123/upload-invoice \
  -H "Authorization: Bearer {token}" \
  -F "invoice_file=@/path/to/invoice.pdf"

Örnek İstek (JavaScript/Fetch):

const formData = new FormData();
formData.append('invoice_file', fileInput.files[0]);

fetch('https://example.com/api/seller/orders/123/upload-invoice', {
    method: 'POST',
    headers: {
        'Authorization': 'Bearer {token}'
    },
    body: formData
})
.then(response => response.json())
.then(data => console.log(data));

Örnek Yanıt:

{
    "success": true,
    "message": "Invoice uploaded successfully",
    "data": {
        "order_id": 123,
        "invoice_file_id": 456,
        "invoice_url": "https://example.com/storage/uploads/all/invoice.pdf"
    }
}
💡 Sistem Otomatik Olarak:
  • Dosyayı uploads/all klasörüne kaydeder
  • uploads tablosuna kayıt oluşturur
  • orders.invoice_file sütununu günceller
  • Dosya tipi: invoice olarak işaretlenir
📋 Kullanılan Tablo Sütunları:
  • orders.id - Sipariş ID (yetkilendirme için)
  • orders.seller_id - Satıcı ID (yetkilendirme için)
  • orders.invoice_file - Fatura dosya ID
  • uploads.id - Yüklenen dosya ID
  • uploads.file_name - Dosya yolu
  • uploads.file_original_name - Orijinal dosya adı
  • uploads.extension - Dosya uzantısı
  • uploads.type - Dosya tipi (invoice)
  • uploads.file_size - Dosya boyutu
  • uploads.user_id - Satıcı ID

İade Talepleri

Endpoint'ler

  • GET /api/seller/refund-requests - İade taleplerini listele
  • GET /api/seller/refund-requests/{id} - İade talebi detayı
  • POST /api/seller/refund-requests/{id}/approve - İade talebini onayla
  • POST /api/seller/refund-requests/{id}/reject - İade talebini reddet
💡 Tüm İade Taleplerini Listeleme:
  • GET /api/seller/refund-requests?per_page=all - Tüm iade taleplerini listele (pagination olmadan)
  • GET /api/seller/refund-requests?per_page=-1 - Tüm iade taleplerini listele (alternatif yöntem)
  • Query Parameters: status (pending, approved, rejected), refund_status (pending, approved, rejected), date_from, date_to, search (sipariş kodu ile), per_page, page

1. İade Taleplerini Listeleme (GET /api/seller/refund-requests)

GET /api/seller/refund-requests

Query Parameters:

Parametre Açıklama Örnek
status Satıcı onay durumu (all, pending, approved, rejected) ?status=pending
refund_status İade durumu (pending, approved, rejected) ?refund_status=approved
date_from Başlangıç tarihi (Y-m-d formatında) ?date_from=2026-01-01
date_to Bitiş tarihi (Y-m-d formatında) ?date_to=2026-01-31
search Sipariş kodu ile arama ?search=20260107
per_page Sayfa başına kayıt sayısı (varsayılan: 15, 'all' veya -1 ile tümü) ?per_page=20
page Sayfa numarası ?page=2

Örnek Yanıt:

{
    "success": true,
    "data": [
        {
            "id": 1,
            "order_id": 180,
            "order_code": "20260107-10255162",
            "order_detail_id": 183,
            "customer": {
                "id": 5,
                "name": "Kupon Test Müşteri",
                "email": "kupontest@example.com",
                "phone": "05551234567"
            },
            "product": {
                "id": 36557,
                "name": "Black Truffle Noir - Özel Üretim Kristal Çanta",
                "thumbnail": "https://example.com/uploads/thumb.jpg",
                "sku": "SKU-123"
            },
            "reason": "Ürün hasarlı geldi",
            "refund_amount": "29452.50",
            "refund_type": "individual",
            "refund_type_text": "Bireysel",
            "seller_approval": 0,
            "seller_approval_text": "Bekliyor",
            "admin_approval": 0,
            "admin_approval_text": "Bekliyor",
            "refund_status": 0,
            "refund_status_text": "Bekliyor",
            "rejection_reason": null,
            "created_at": "2026-01-07 10:25:51",
            "updated_at": "2026-01-07 10:25:51"
        }
    ],
    "pagination": {
        "current_page": 1,
        "last_page": 5,
        "per_page": 15,
        "total": 72
    }
}

2. İade Talebi Detayı (GET /api/seller/refund-requests/{id})

GET /api/seller/refund-requests/{id}

Örnek Yanıt:

{
    "success": true,
    "data": {
        "id": 1,
        "order_id": 180,
        "order_code": "20260107-10255162",
        "order_detail_id": 183,
        "customer": {
            "id": 5,
            "name": "Kupon Test Müşteri",
            "email": "kupontest@example.com",
            "phone": "05551234567"
        },
        "product": {
            "id": 36557,
            "name": "Black Truffle Noir - Özel Üretim Kristal Çanta",
            "thumbnail": "https://example.com/uploads/thumb.jpg",
            "sku": "SKU-123"
        },
        "reason": "Ürün hasarlı geldi",
        "refund_amount": "29452.50",
        "refund_type": "individual",
        "refund_type_text": "Bireysel",
        "seller_approval": 0,
        "seller_approval_text": "Bekliyor",
        "admin_approval": 0,
        "admin_approval_text": "Bekliyor",
        "refund_status": 0,
        "refund_status_text": "Bekliyor",
        "rejection_reason": null,
        "order_detail": {
            "id": 183,
            "variation": "",
            "quantity": 1,
            "price": "29452.50",
            "tax": "0.00",
            "shipping_cost": "0.00"
        },
        "order": {
            "id": 180,
            "code": "20260107-10255162",
            "date": "2026-01-07 10:25:51",
            "payment_status": "paid",
            "delivery_status": "confirmed"
        },
        "created_at": "2026-01-07 10:25:51",
        "updated_at": "2026-01-07 10:25:51"
    }
}

📋 İade Talepleri İçin Kullanılan Tablo Sütunları

API Response Alanı Tablo Sütunu Açıklama
id refund_requests.id İade talebi ID
order_id refund_requests.order_id Sipariş ID
order_detail_id refund_requests.order_detail_id Sipariş detay ID
seller_id refund_requests.seller_id Satıcı ID (filtreleme için kullanılır)
reason refund_requests.reason İade nedeni
refund_amount refund_requests.refund_amount İade tutarı (ürün fiyatı + vergi + kargo ücreti)
refund_type refund_requests.refund_type İade tipi (individual, company)
seller_approval refund_requests.seller_approval Satıcı onay durumu (0: Bekliyor, 1: Onaylandı, 2: Reddedildi)
admin_approval refund_requests.admin_approval Admin onay durumu (0: Bekliyor, 1: Onaylandı, 2: Reddedildi)
refund_status refund_requests.refund_status İade durumu (0: Bekliyor, 1: Onaylandı, 2: Reddedildi)
rejection_reason refund_requests.rejection_reason Red nedeni (varsa)
created_at refund_requests.created_at Oluşturulma tarihi
updated_at refund_requests.updated_at Güncellenme tarihi
💡 İlişkili Tablolar:
  • orders - Sipariş bilgileri (code, payment_status, delivery_status)
  • order_details - Sipariş detay bilgileri (product_id, quantity, price, tax, shipping_cost)
  • products - Ürün bilgileri (name, thumbnail_img, sku)
  • users - Müşteri bilgileri (name, email, phone)

3. İade Talebini Onaylama (POST /api/seller/refund-requests/{id}/approve)

POST /api/seller/refund-requests/{id}/approve

Bekleyen bir iade talebini onaylar. Sadece seller_approval = 0 (Bekliyor) durumundaki talepler onaylanabilir.

Örnek Yanıt:

{
    "success": true,
    "message": "İade talebi onaylandı",
    "data": {
        "id": 1,
        "seller_approval": 1,
        "seller_approval_text": "Onaylandı",
        ...
    }
}
💡 Sistem Otomatik Olarak:
  • refund_requests.seller_approval - 1 (Onaylandı) olarak güncellenir
  • İade talebi admin onayına gönderilir

4. İade Talebini Reddetme (POST /api/seller/refund-requests/{id}/reject)

POST /api/seller/refund-requests/{id}/reject

Request Body:

{
    "rejection_reason": "Ürün kullanılmış durumda, iade kabul edilemez"
}
Göndermeniz Gereken Tablo Sütunu Açıklama
rejection_reason refund_requests.rejection_reason Red nedeni (zorunlu, maksimum 500 karakter)

Örnek Yanıt:

{
    "success": true,
    "message": "İade talebi reddedildi",
    "data": {
        "id": 1,
        "seller_approval": 2,
        "seller_approval_text": "Reddedildi",
        "rejection_reason": "Ürün kullanılmış durumda, iade kabul edilemez",
        ...
    }
}
💡 Sistem Otomatik Olarak:
  • refund_requests.seller_approval - 2 (Reddedildi) olarak güncellenir
  • refund_requests.rejection_reason - Red nedeni kaydedilir
  • Müşteriye red nedeni bildirilir
⚠️ Önemli Notlar:
  • Sadece satıcıya ait iade talepleri listelenir ve işlenir
  • İade tutarı: ürün fiyatı + vergi + kargo ücreti
  • Satıcı onay durumu: 0 (Bekliyor), 1 (Onaylandı), 2 (Reddedildi)
  • Admin onay durumu: 0 (Bekliyor), 1 (Onaylandı), 2 (Reddedildi)
  • İade durumu: 0 (Bekliyor), 1 (Onaylandı), 2 (Reddedildi)
  • İade tipi: "individual" (Bireysel) veya "company" (Şirket)
  • Onaylama/Reddetme: Sadece seller_approval = 0 (Bekliyor) durumundaki talepler onaylanabilir veya reddedilebilir
  • Reddetme: Red nedeni zorunludur (maksimum 500 karakter)

Stok Yönetimi

  • GET /api/seller/stocks - Stokları listele (filtreleme: product_id, low_stock, out_of_stock)
  • GET /api/seller/stocks/product/{productId} - Ürün stok detayı
  • GET /api/seller/stocks/low-stock - Düşük stok uyarıları
  • PUT /api/seller/stocks/{id} - Stok miktarı güncelle
  • POST /api/seller/stocks/bulk-update - Toplu stok güncelleme
💡 Tüm Stokları Listeleme:
  • GET /api/seller/stocks?per_page=all - Tüm stokları listele
  • GET /api/seller/stocks?per_page=-1 - Tüm stokları listele (alternatif)
Özellikler:
  • Gerçek zamanlı stok güncelleme
  • Düşük stok uyarıları (varsayılan: 10'dan az)
  • Stok geçmişi takibi
  • Webhook desteği (stock.updated)

Fiyat Yönetimi

  • PUT /api/seller/prices/product/{productId} - Ürün fiyatı güncelle
  • POST /api/seller/prices/bulk-update - Toplu fiyat güncelleme
Özellikler:
  • Tek ürün veya varyant fiyat güncelleme
  • Toplu fiyat güncelleme (100 ürüne kadar)
  • Varyant bazlı fiyatlandırma desteği

Raporlama

  • GET /api/seller/reports/sales - Satış raporları (günlük/haftalık/aylık)
  • GET /api/seller/reports/products - Ürün performans raporları
  • GET /api/seller/reports/commission - Komisyon raporları
  • GET /api/seller/reports/dashboard - Dashboard istatistikleri
Query Parameters:
  • date_from - Başlangıç tarihi (Y-m-d)
  • date_to - Bitiş tarihi (Y-m-d)
  • group_by - Gruplama (day, week, month)
  • limit - Limit (ürün raporları için)

Müşteri Yönetimi

  • GET /api/seller/customers - Müşterileri listele
  • GET /api/seller/customers/{id} - Müşteri detayı ve sipariş geçmişi
💡 Tüm Müşterileri Listeleme:
  • GET /api/seller/customers?per_page=all - Tüm müşterileri listele
  • GET /api/seller/customers?per_page=-1 - Tüm müşterileri listele (alternatif)
Özellikler:
  • Müşteri arama (isim, email, telefon)
  • Toplam sipariş sayısı ve harcama
  • Müşteri sipariş geçmişi

Kupon Yönetimi

  • GET /api/seller/coupons - Kuponları listele
  • GET /api/seller/coupons/{id} - Kupon detayı
  • POST /api/seller/coupons - Kupon oluştur
  • PUT /api/seller/coupons/{id} - Kupon güncelle
  • DELETE /api/seller/coupons/{id} - Kupon sil
💡 Tüm Kuponları Listeleme:
  • GET /api/seller/coupons?per_page=all - Tüm kuponları listele
  • GET /api/seller/coupons?per_page=-1 - Tüm kuponları listele (alternatif)
Kupon Tipleri:
  • product_base - Ürün bazlı kupon
  • cart_base - Sepet bazlı kupon
  • welcome_base - Hoş geldin kuponu

Ürün Yorumları

  • GET /api/seller/reviews - Ürün yorumlarını listele
  • GET /api/seller/reviews/product/{productId} - Ürün yorum detayları
💡 Tüm Yorumları Listeleme:
  • GET /api/seller/reviews?per_page=all - Tüm yorumları listele
  • GET /api/seller/reviews?per_page=-1 - Tüm yorumları listele (alternatif)

Dijital Ürünler

  • GET /api/seller/digital-products - Dijital ürünleri listele
  • GET /api/seller/digital-products/{id} - Dijital ürün detayı
  • POST /api/seller/digital-products - Dijital ürün oluştur
  • PUT /api/seller/digital-products/{id} - Dijital ürün güncelle
  • DELETE /api/seller/digital-products/{id} - Dijital ürün sil
  • GET /api/seller/digital-products/{id}/download - Dijital ürün indir
Not: Dijital ürünler indirilebilir dosyalar içerir (PDF, ZIP, vb.).

Ödeme Geçmişi

  • GET /api/seller/payment-history - Ödeme geçmişini listele
  • GET /api/seller/payment-history/{id} - Ödeme detayı
Özellikler:
  • Tüm ödeme işlemlerini görüntüleme
  • Ödeme durumu takibi
  • Tarih aralığı filtreleme

Para Çekme İstekleri

  • GET /api/seller/withdraw-requests - Para çekme isteklerini listele
  • GET /api/seller/withdraw-requests/{id} - İstek detayı
  • POST /api/seller/withdraw-requests - Yeni para çekme isteği oluştur

Mağaza Ayarları

  • GET /api/seller/shop - Mağaza bilgilerini getir
  • PUT /api/seller/shop - Mağaza ayarlarını güncelle
  • POST /api/seller/shop/verification - Mağaza doğrulama başvurusu gönder
Mağaza Doğrulama:
  • Mağaza doğrulama için gerekli belgeleri yükleyin
  • Doğrulama süreci admin tarafından onaylanır
  • Doğrulanmamış mağazalar API kullanamaz

Mesajlaşma

  • GET /api/seller/conversations - Konuşmaları listele
  • GET /api/seller/conversations/{id} - Konuşma detayı ve mesajlar
  • POST /api/seller/conversations/{id}/message - Mesaj gönder

Destek Talepleri

  • GET /api/seller/support-tickets - Destek taleplerini listele
  • GET /api/seller/support-tickets/{id} - Ticket detayı
  • POST /api/seller/support-tickets - Yeni ticket oluştur
  • POST /api/seller/support-tickets/{id}/reply - Ticket'a yanıt ver

Ürün Soruları

  • GET /api/seller/product-queries - Ürün sorularını listele
  • GET /api/seller/product-queries/{id} - Soru detayı
  • PUT /api/seller/product-queries/{id}/reply - Soruya yanıt ver

Bildirimler

  • GET /api/seller/notifications - Bildirimleri listele
  • PUT /api/seller/notifications/{id}/read - Bildirimi okundu işaretle
  • DELETE /api/seller/notifications/{id} - Bildirimi sil
  • POST /api/seller/notifications/bulk-delete - Toplu bildirim sil

Adresler

  • GET /api/seller/addresses - Adresleri listele
  • GET /api/seller/addresses/{id} - Adres detayı
  • POST /api/seller/addresses - Yeni adres oluştur
  • PUT /api/seller/addresses/{id} - Adres güncelle
  • DELETE /api/seller/addresses/{id} - Adres sil
  • PUT /api/seller/addresses/{id}/set-default - Varsayılan adres belirle

Dosya Yükleme

  • GET /api/seller/uploads - Yüklenen dosyaları listele
  • GET /api/seller/uploads/{id} - Dosya bilgisi
  • POST /api/seller/uploads - Dosya yükle
  • DELETE /api/seller/uploads/{id} - Dosya sil

Komisyon Geçmişi

  • GET /api/seller/commission-history - Komisyon geçmişini listele
  • GET /api/seller/commission-history/{id} - Komisyon detayı

Webhook Sistemi

Webhook'lar ile sistemdeki değişiklikleri gerçek zamanlı olarak takip edebilirsiniz.

  • GET /api/seller/webhooks - Webhook'ları listele
  • POST /api/seller/webhooks - Yeni webhook oluştur
  • PUT /api/seller/webhooks/{id} - Webhook güncelle
  • DELETE /api/seller/webhooks/{id} - Webhook sil
Desteklenen Event Tipleri:
  • order.created - Yeni sipariş oluşturulduğunda
  • order.updated - Sipariş durumu güncellendiğinde
  • order.cancelled - Sipariş iptal edildiğinde
  • stock.updated - Stok güncellendiğinde
// Webhook oluşturma örneği
POST /api/seller/webhooks
{
    "event_type": "order.created",
    "url": "https://your-domain.com/webhook-handler",
    "secret": "your-secret-key" // Opsiyonel, otomatik oluşturulur
}

// Webhook payload örneği
{
    "event": "order.created",
    "timestamp": "2026-01-03T10:30:00Z",
    "data": {
        "order_id": 123,
        "code": "20260103-001",
        "grand_total": "150.00"
    }
}

// Header'da imza kontrolü
X-Webhook-Signature: sha256_hmac_signature

Performans Metrikleri

Ürün Sayısı Süre Hız (ürün/saniye) Ortalama (saniye/ürün)
5 ~4 saniye 1.35 0.75
10 ~7 saniye 1.54 0.65
20 ~14 saniye 1.48 0.68
50 ~32 saniye 1.58 0.63
100 ~65 saniye ~1.54 ~0.65

Örnek Kodlar

cURL Örneği

curl -X POST https://www.giyimmoda.com.tr/api/seller/products/bulk \
  -H "X-API-Key: sk_XXXXXXXXXXXX" \
  -H "X-API-Secret: xxxxxxxxxxxxxx" \
  -H "Content-Type: application/json" \
  -d '{
    "products": [...]
  }'

PHP Örneği

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://www.giyimmoda.com.tr/api/seller/products/bulk');
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode(['products' => $products]));
curl_setopt($ch, CURLOPT_HTTPHEADER, [
    'X-API-Key: sk_XXXXXXXXXXXX',
    'X-API-Secret: xxxxxxxxxxxxxx',
    'Content-Type: application/json'
]);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
curl_close($ch);

JavaScript Örneği

const response = await fetch('https://www.giyimmoda.com.tr/api/seller/products/bulk', {
    method: 'POST',
    headers: {
        'X-API-Key': 'sk_XXXXXXXXXXXX',
        'X-API-Secret': 'xxxxxxxxxxxxxx',
        'Content-Type': 'application/json'
    },
    body: JSON.stringify({
        products: [...]
    })
});
const data = await response.json();

📋 Hızlı Referans: Hangi İşlem İçin Hangi Sütunlar?

✅ Sipariş Oluşturmak İçin

Göndermeniz Gerekenler:
  • customer.nameusers.name
  • customer.emailusers.email
  • customer.phoneusers.phone
  • customer.address, city, country, postal_codeorders.shipping_address
  • customer.tc_identity_numberorders.shipping_address (opsiyonel)
  • items[].product_idorder_details.product_id
  • items[].quantityorder_details.quantity
  • payment_typeorders.payment_type
Sistem Otomatik Yapar:
  • Müşteri oluşturur/günceller (users)
  • Sipariş kaydı oluşturur (orders)
  • Sipariş detayları oluşturur (order_details)
  • Fiyat, vergi, kargo hesaplar
  • Stok düşer (product_stocks.qty)

✅ Ürün Eklemek İçin

Göndermeniz Gerekenler:
  • nameproducts.name
  • descriptionproducts.description
  • category_idproducts.category_id
  • brand_idproducts.brand_id (opsiyonel)
  • barcodeproducts.barcode (opsiyonel)
  • delivery_timeproducts.delivery_time (opsiyonel, gün cinsinden)
  • unit_priceproducts.unit_price
  • current_stockproduct_stocks.qty
  • tax_rateproduct_taxes.tax_id (opsiyonel, verilmezse admin panelinden varsayılan vergi eklenir)
  • thumbnail_img_urlproducts.thumbnail_img
  • gallery_images_urls (en az 2) → products.photos
Sistem Otomatik Yapar:
  • Ürün kaydı oluşturur (products)
  • Stok kaydı oluşturur (product_stocks)
  • Görselleri indirir ve sıkıştırır (uploads)
  • Kategorileri ekler (product_categories)
  • Vergi ilişkilendirmesi yapar (product_taxes)

⚠️ Önemli Notlar

  • Yetkilendirme: orders.seller_id otomatik atanır (giriş yapan satıcı)
  • Stok Yönetimi: product_stocks.qty sipariş oluşturulunca düşer, iptal edilince geri eklenir
  • Vergi: Vergi oranı opsiyoneldir. Verilmezse admin panelinden varsayılan vergi otomatik eklenir. Verilirse sistemde mevcut olmalıdır.
  • Görseller: URL'den indirilir, sıkıştırılır ve uploads tablosuna kaydedilir
  • Kategoriler: Alt kategori seçilirse parent kategoriler otomatik eklenir

Destek

API ile ilgili sorularınız için lütfen destek ekibi ile iletişime geçin.