Ürünleri toplu aktar

POST /sapigw/suppliers/{supplierId}/v2/products — PIM API · Ürünler

ERP/tedarikçi formatındaki ürünleri toplu olarak PIM'e aktarır (yaratır veya günceller). İstek kuyruğa alınır ve hemen bir BatchRequestId döner; sonuç Toplu işlem sonucunu sorgula ile takip edilir.

Ürün hiyerarşisi: Model → Option (renk) → SKU (beden/varyant, satılabilir birim).

Alan PIM karşılığı
ProductMainId Option kodu
StockCode SKU (tekil)
Barcode Varsayılan barkod (tekil)
Attributes içindeki Model Kodu Model kodu (yoksa ProductMainId)
Title Ürün adı
CategoryId CategoryId niteliği olarak yazılır

Kurallar:

  • StockCode veya Barcode boş olan satırlar işlenmez.
  • Aynı istekte tekrar eden StockCode veya Barcode olan satırların hepsi reddedilir.
  • Ürünle birlikte gelen ListPrice, SalePrice ve Quantity fiyat/stok olarak da yazılır.
  • Alan eşlemesi firmaya özel olabilir; yukarıdaki tablo varsayılan eşlemedir.
  • Firma için "güvenilir kaynak" zorunluluğu açıksa trustedSource=true gönderilmeyen istek işlenmez (IsSuccess: false döner, ret kaydı yine BatchRequestId ile sorgulanabilir).

Pazaryeri modeli kullanan firmalarda aynı adres farklı bir gövde biçimi bekleyebilir; size iletilen entegrasyon notlarını esas alın.

Parametreler

  • supplierId (path, string, zorunlu): CommerceLab'in size ilettiği tedarikçi kimliği. Bu ortamda tanımlı değilse istek 401 alır.
  • trustedSource (query, boolean): Firmada "güvenilir kaynak" zorunluluğu açıksa true gönderilmelidir; gönderilmezse istek işlenmeden reddedilir. Zorunluluk kapalıysa etkisizdir.
  • Tenant (header, string): Basic Auth ile birden fazla firmaya erişen kullanıcılarda firma kodu. Bearer token kullanılıyorsa gerekmez.

İstek gövdesi

  • items (object[], zorunlu): Aktarılacak SKU'lar; her eleman satılabilir tek bir ürün (barkod) temsil eder.
    • items.title (string): Ürün adı (ad, kısa açıklama ve SEO açıklaması olarak yazılır).
    • items.images (object[]): Ürün görselleri; sırası korunur.
      • items.images.url (string): Görselin herkese açık tam adresi.
      • items.images.updatedOn (string<date-time>): Görselin son güncellenme zamanı.
    • items.onSale (boolean): Satış durumu alanı; varsayılan eşlemede satış durumu salePrice > 0 ile belirlenir.
    • items.barcode (string, zorunlu): Ürünün varsayılan barkodu; tekil olmalıdır.
    • items.brandId (integer<int64>): Marka kimliği.
    • items.vatRate (number): KDV oranı (ör. 20).
    • items.quantity (number): Stok miktarı; varsayılan depoya yazılır.
    • items.brandName (string): Marka adı.
    • items.listPrice (number): Liste fiyatı.
    • items.salePrice (number): Satış fiyatı; 0'dan büyükse ürün satışta kabul edilir.
    • items.stockCode (string, zorunlu): SKU kodu; tekil olmalıdır.
    • items.attributes (object[]): Ürün nitelikleri. Nitelik adı (attributeName) veya kimliği (attributeId) ile gönderilir. Model Kodu adlı nitelik ürünün model kodunu belirler.
      • items.attributes.attributeId (integer<int64>): Nitelik kimliği; attributeName yoksa anahtar olarak kullanılır.
      • items.attributes.attributeName (string): Nitelik adı (ör. Renk, Beden). Adda / varsa - ile değiştirilir.
      • items.attributes.attributeValue (string): Nitelik değeri (metin).
      • items.attributes.attributeValueId (integer<int64>): Değer kimliği; attributeValue ve customAttributeValue yoksa kullanılır.
      • items.attributes.customAttributeValue (string): Serbest metin değer; attributeValue yoksa kullanılır.
    • items.categoryId (integer): Kategori kimliği; ürüne CategoryId niteliği olarak yazılır.
    • items.description (string): Ürün açıklaması (HTML olabilir).
    • items.currencyType (string): Para birimi kodu (ör. TRY).
    • items.productMainId (string, zorunlu): Option (renk) kodu; aynı renkteki bedenlerde aynı olmalıdır.
    • items.cargoCompanyId (integer<int64>): Kargo firması kimliği.
    • items.sourceFirstPrice (number): İlk (kaynak) fiyat; gönderilmezse listPrice kullanılır.
    • items.dimensionalWeight (integer<int64>): Desi.

Yanıtlar

  • 200: İstek alındı. IsSuccess: true ise kuyruğa alınmıştır. IsSuccess: false ve boş BatchRequestId istek limitinin aşıldığını, dolu BatchRequestId güvenilmeyen kaynak reddini gösterir.
  • 400: İstek gövdesi geçerli JSON değil veya alan tipleri uyumsuz.
  • 401: Kimlik doğrulanamadı veya supplierId bu ortamda tanımlı değil. Gövde boştur.
  • 500: Sunucu tarafında beklenmeyen hata.

200 yanıt alanları

  • Message (string): İstek kuyruğa alınamadıysa nedeni (ör. istek limiti aşıldı); başarılıysa null.
  • IsSuccess (boolean): İstek kuyruğa alındıysa true.
  • BatchRequestId (string): İşlem kimliği; sonucu sorgulamak için saklayın. Limit aşımında null.