Varyasyonlar ve Çeviriler

Ürün oluşturma ve güncellemede çok dilli metinler için translations, renk/beden gibi seçenekler için variations dizisini kullanın. Temel akış: Ürün Ekle ve Ürün Güncelle.

Çeviriler (translations)

Dil koduna göre anahtarlanan bir nesnedir (tr, en vb.). Her dil altında tipik alanlar:

  • name — ürün adı
  • description_html — HTML açıklama
  • short_description — kısa metin
  • slug — isteğe bağlı URL parçası
Not: Tek dilde çalışıyorsanız düz name / description_html alanları yeterlidir. Çok dilli mağazalarda translations tercih edin.

Varyasyonlar (variations)

Her satır bir stok tutulabilir varyantı temsil eder:

  • sku — stok kodu
  • barcode — barkod
  • stock — varyant stoğu
  • price — varyant fiyatı (üst üründen farklı olabilir)
  • options — seçenek haritası, örn. Renk / Beden
  • active — isteğe bağlı etkinlik bayrağı

Üst stok mu, varyasyon stoğu mu?

  • Varyasyonsuz ürün: stok ve fiyatı üst ürün alanlarında (stock, price) tutun.
  • Varyasyonlu ürün: satılabilir miktar her varyantın stock değerinden gelir. Üst stock özet veya yedek amaçlı olabilir; satış mantığı varyant satırlarına dayanır.
Dikkat: Varyasyon ekledikten sonra yalnızca üst stoğu güncellemek vitrinde yanlış miktar gösterebilir. Stok senkronunda varyant satırlarını da güncelleyin (bkz. Stok Güncelle).

Güncelleme en iyi uygulaması

  1. GET /products/{id} ile mevcut ürünü alın (Ürün Getir.
  2. İhtiyacınız olan alanları / varyantları birleştirin (merge).
  3. Eksik satır kaybetmemek için PATCH ile mümkün olduğunca tam gövdeyi gönderin Ürün Güncelle.

Örnek istek gövdesi

{
  "translations": {
    "tr": {
      "name": "Pamuklu Tişört",
      "description_html": "<p>Yumuşak kumaş</p>",
      "short_description": "Günlük kullanım"
    },
    "en": {
      "name": "Cotton T-Shirt",
      "description_html": "<p>Soft fabric</p>",
      "short_description": "Everyday wear"
    }
  },
  "category": "Giyim",
  "brand": "Demo Marka",
  "price": 199.99,
  "stock": 15,
  "active": 1,
  "variations": [
    {
      "sku": "TSH-KIRMIZI-M",
      "barcode": "8690000001001",
      "options": {
        "Renk": "Kırmızı",
        "Beden": "M"
      },
      "price": 249.90,
      "stock": 12,
      "active": true
    },
    {
      "sku": "TSH-KIRMIZI-L",
      "barcode": "8690000001002",
      "options": {
        "Renk": "Kırmızı",
        "Beden": "L"
      },
      "price": 249.90,
      "stock": 8,
      "active": true
    }
  ]
}

İlgili sayfalar

PHP
<?php

$baseUrl = 'https://example.com/api/v1';
$apiKey  = 'YOUR_API_KEY';

$payload = [
    'translations' => [
        'tr' => [
            'name' => 'Pamuklu Tişört',
            'slug' => 'pamuklu-tisort',
            'description_html' => '<p>Yumuşak kumaş</p>',
            'short_description' => 'Günlük kullanım',
        ],
        'en' => [
            'name' => 'Cotton T-Shirt',
            'slug' => 'cotton-t-shirt',
            'description_html' => '<p>Soft fabric</p>',
            'short_description' => 'Everyday wear',
        ],
    ],
    'category' => 'Test Category',
    'brand' => 'Test Brand',
    'cost' => 50,
    'price' => 199.99,
    'stock' => 15,
    'active' => 1,
    'barcode' => '86991233322',
    'stock_code' => 'fs123',
    'variations' => [
        [
            'sku' => 'TSH-RED-M',
            'barcode' => '8690000001001',
            'options' => [
                'Color' => 'Red',
                'Size' => 'M',
            ],
            'price' => 249.90,
            'stock' => 12,
            'active' => true,
        ],
        [
            'sku' => 'TSH-RED-L',
            'barcode' => '8690000001002',
            'options' => [
                'Color' => 'Red',
                'Size' => 'L',
            ],
            'price' => 249.90,
            'stock' => 8,
            'active' => true,
        ],
    ],
];

$ch = curl_init($baseUrl . '/products');
curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_CUSTOMREQUEST => 'POST',
    CURLOPT_HTTPHEADER => [
        'X-API-Key: ' . trim($apiKey),
        'Content-Type: application/json',
        'Accept: application/json',
    ],
    CURLOPT_POSTFIELDS => json_encode($payload, JSON_UNESCAPED_UNICODE),
    CURLOPT_SSL_VERIFYPEER => true,
]);
$response = curl_exec($ch);
$httpCode = (int) curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);

echo $httpCode . PHP_EOL;
echo $response;
cURL
curl -s -X POST \
  -H "X-API-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Accept: application/json" \
  -d '{
    "translations": {
      "tr": {
        "name": "Pamuklu Tişört",
        "slug": "pamuklu-tisort",
        "description_html": "<p>Yumuşak kumaş</p>",
        "short_description": "Günlük kullanım"
      },
      "en": {
        "name": "Cotton T-Shirt",
        "slug": "cotton-t-shirt",
        "description_html": "<p>Soft fabric</p>",
        "short_description": "Everyday wear"
      }
    },
    "category": "Test Category",
    "brand": "Test Brand",
    "cost": 50,
    "price": 199.99,
    "stock": 15,
    "active": 1,
    "barcode": "86991233322",
    "stock_code": "fs123",
    "variations": [
      {
        "sku": "TSH-RED-M",
        "barcode": "8690000001001",
        "options": { "Color": "Red", "Size": "M" },
        "price": 249.90,
        "stock": 12,
        "active": true
      },
      {
        "sku": "TSH-RED-L",
        "barcode": "8690000001002",
        "options": { "Color": "Red", "Size": "L" },
        "price": 249.90,
        "stock": 8,
        "active": true
      }
    ]
  }' \
  "https://example.com/api/v1/products"
Örnek Yanıt (JSON)
{
  "success": true,
  "message": "Ürün eklendi",
  "lang": "tr",
  "data": {
    "id": 6,
    "name": "Pamuklu Tişört",
    "slug": "pamuklu-tisort",
    "price": 199.99,
    "stock": 15,
    "active": 1,
    "barcode": "86991233322",
    "stock_code": "fs123",
    "category_name": "Test Category",
    "brand_name": "Test Brand",
    "has_variations": true
  }
}