Ürün kaydet (PIM modeli)

POST /PIM/SaveProductsManually — PIM API · Ürünler

Ürünleri PIM'in kendi veri modeliyle yaratır veya günceller. Gövde bir ürün dizisidir; her eleman bir model, option veya SKU kaydıdır ve Main nesnesiyle tanımlanır.

Ürün tipleri (Main.Type, bkz. Ürün tiplerini listele): 1 Model, 2 Option, 3 SKU/varyant, 4 Tekil ürün, 5 Bundle.

  • Tekil ürün: tek eleman, Type: 4, Model/Option/Sku/Barcode dolu.
  • Varyantlı ürün: bir Type: 1 (model), bir Type: 2 (option, renk) ve her beden için bir Type: 3 (SKU) elemanı. Eşleme Model ve Option kodlarıyla yapılır.
  • Yalnızca fiyat güncellemek için Main + Prices göndermek yeterlidir.

Liste kimlikleri: EntityListId değerleri firmaya özeldir; içerik (ad, açıklama), fiyat, görsel, ürün ve nitelik listelerinin kimlikleri Listeleri getir ile alınır. Para birimi kimliği Para birimlerini listele, nitelik Key değerleri Nitelikleri listele ile alınır.

İşleme: Gövdede tek ürün varsa istek hemen işlenir ve ürün bazında sonuç (TransactionProductStatusList) döner. Birden fazla ürün varsa istek kuyruğa alınır, TransactionStatus: INQUEUE döner; sonuç İşlem özetini sorgula ve İşlem ürün sonuçlarını sorgula ile takip edilir.

OperationType alanı upsert (varsayılan) veya delete olabilir. Nitelikte boş Value değeri o niteliği siler. Görsel Name alanı http ile başlıyorsa dosya indirilip CommerceLab deposuna yüklenir.

Parametreler

  • companyId (query, integer, zorunlu): Ürünün kaydedileceği şirket kimliği. CommerceLab tarafından iletilir; şirket bulunamazsa istek hata alır.
  • supplierId (query, integer): Tedarikçi adına kayıt yapılıyorsa tedarikçi kimliği. Gönderilirse yalnızca o tedarikçinin kataloğundaki listelere yazılabilir.
  • deleteOldAttributes (query, boolean): true gönderilirse üründe olup istekte gönderilmeyen nitelikler silinir.
  • requestSource (query, string): İsteğin kaynağı. Entegrasyonlarda varsayılan pim değerini değiştirmeyin; gövde doğrulaması yalnızca bu değerde yapılır.
  • 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

  • Main (object, zorunlu): Kaydın kimliği ve tipi. Id, Barcode, Sku, Option, Model alanlarından en az biri dolu olmalıdır; aksi halde istek invalid product main info hatası alır.
    • Main.Id (integer): Var olan ürünün PIM kimliği (biliniyorsa).
    • Main.Sku (string): SKU kodu (tip 3, 4, 5 için).
    • Main.Type (integer, zorunlu): Ürün tipi: 1 Model, 2 Option, 3 SKU/varyant, 4 Tekil, 5 Bundle, 7 Asorti, 8 Koli.
    • Main.Model (string): Model kodu.
    • Main.Option (string): Option (renk) kodu.
    • Main.Barcode (string): Varsayılan barkod (tip 3, 4, 5 için).
  • Name (object[]): Ürün adı (dil bazında).
    • Name.Value (string, zorunlu): İçerik metni.
    • Name.Culture (string): Dil kodu (std varsayılan, tr, en vb.).
    • Name.EntityListId (integer, zorunlu): İçerik listesi kimliği (EntityTypeId = 8).
  • Title (object[]): Ürün başlığı (dil bazında).
    • Title.Value (string, zorunlu): İçerik metni.
    • Title.Culture (string): Dil kodu (std varsayılan, tr, en vb.).
    • Title.EntityListId (integer, zorunlu): İçerik listesi kimliği (EntityTypeId = 8).
  • Assets (object[]): Görsel ve videolar.
    • Assets.Name (string, zorunlu): Dosya adresi. http ile başlıyorsa dosya indirilip CommerceLab deposuna yüklenir; aksi halde depodaki göreli yol kabul edilir.
    • Assets.Order (integer): Gösterim sırası.
    • Assets.AssetType (integer): Dosya tipi: 1 fotoğraf (varsayılan), 3 video.
    • Assets.EntityListId (integer, zorunlu): Görsel listesi kimliği (EntityTypeId = 7).
    • Assets.OperationType (string): upsert (varsayılan), delete veya adres değiştiyse yeniden yükleyen deleteThenInsertIfUrlChanged.
  • OnSale (object[]): Ürünün satışta olup olmadığı (içerik listesi bazında). Value: null manuel değeri kaldırır.
    • OnSale.Value (boolean): Satışta mı.
    • OnSale.Culture (string): Dil kodu; std kullanın.
    • OnSale.EntityListId (integer): İçerik listesi kimliği.
  • Prices (object[]): Fiyatlar.
    • Prices.Id (integer): Var olan fiyat kaydının kimliği (silme/güncelleme için).
    • Prices.ListPrice (number): Liste fiyatı; 0'dan büyük olmalıdır.
    • Prices.SalePrice (number): Satış fiyatı; 0'dan büyük olmalıdır.
    • Prices.CurrencyId (integer): Para birimi kimliği; gönderilmezse varsayılan para birimi kullanılır.
    • Prices.VatStrategy (integer): 1 KDV dahil, 2 KDV hariç.
    • Prices.EntityListId (integer, zorunlu): Fiyat listesi kimliği (EntityTypeId = 4).
    • Prices.ValidEndDate (string<date-time>): Geçerlilik bitişi.
    • Prices.CampaignPrice (number): Kampanya fiyatı.
    • Prices.OperationType (string): İşlem tipi; varsayılan fiyat alanlarına göre belirlenir.
    • Prices.IsTransferable (boolean): Fiyatın satış kanallarına aktarılacak fiyat olup olmadığı.
    • Prices.ValidStartDate (string<date-time>): Geçerlilik başlangıcı.
    • Prices.SourceFirstPrice (number): İlk (kaynak) fiyat.
    • Prices.CustomerGroupCode (string): Fiyatın geçerli olduğu müşteri grubu kodu.
  • Stocks (object[]): Depo bazında stok.
    • Stocks.Quantity (integer): Stok miktarı.
    • Stocks.OperationType (string): Yaz (upsert) veya sil (delete).
    • Stocks.WarehouseCode (string, zorunlu): Depo kodu; boş olamaz.
  • Attributes (object[]): Nitelik değerleri.
    • Attributes.Key (integer, zorunlu): Nitelik kimliği (AttributeId).
    • Attributes.Value (string): Değer metni. Değer listede yoksa yaratılır; boş değer niteliği siler.
    • Attributes.Culture (string): Dil kodu (std varsayılan).
    • Attributes.EntityListId (integer, zorunlu): Nitelik listesi kimliği.
    • Attributes.OperationType (string): İşlem tipi.
  • Categories (object[]): Kategori bağları.
    • Categories.Id (integer, zorunlu): Kategori kimliği.
    • Categories.EntityListId (integer, zorunlu): Kategori ağacı listesi kimliği (EntityTypeId = 3).
    • Categories.OperationType (string): Bağla (upsert) veya kaldır (delete).
  • Description (object[]): Ürün açıklaması (dil bazında, HTML olabilir).
    • Description.Value (string, zorunlu): İçerik metni.
    • Description.Culture (string): Dil kodu (std varsayılan, tr, en vb.).
    • Description.EntityListId (integer, zorunlu): İçerik listesi kimliği (EntityTypeId = 8).
  • ProductLists (object[]): Ürünün yer alacağı ürün listeleri.
    • ProductLists.EntityListId (integer): Ürün listesi kimliği (EntityTypeId = 5).
    • ProductLists.OperationType (string): Ekle (upsert) veya çıkar (delete).
  • SeoDescription (object[]): SEO açıklaması (dil bazında).
    • SeoDescription.Value (string, zorunlu): İçerik metni.
    • SeoDescription.Culture (string): Dil kodu (std varsayılan, tr, en vb.).
    • SeoDescription.EntityListId (integer, zorunlu): İçerik listesi kimliği (EntityTypeId = 8).

Yanıtlar

  • 200: Tek üründe işlem sonucu, çok üründe kuyruk kaydı döner. TransactionStatus: SUCCESS (işlendi; ürün bazında sonuç listede), INQUEUE (kuyrukta veya geçici kilit nedeniyle yeniden denenecek), ERROR (işlem hata aldı).
  • 400: İstek gövdesi geçerli JSON değil veya alan tipleri uyumsuz.
  • 401: Kimlik doğrulanamadı (başlık yok, Basic bilgileri hatalı veya token geçersiz). Gövde boştur.
  • 500: Gövde veya yetki hatası. Örnek mesajlar: invalid product main info (bir elemanda Main yok ya da tanımlayıcı alanların hepsi boş), You are not authorized for this operation (kullanıcının ürün yaratma yetkisi yok), company not found.

200 yanıt alanları

  • IsRetryable (boolean): Geçici kilit nedeniyle işlem yeniden denenecekse true.
  • TransactionId (string): İşlem kimliği; işlem takibi uçlarında kullanılır.
  • TransactionStatus (string): SUCCESS, INQUEUE veya ERROR.
  • TransactionErrorMessage (string): İşlem bütünüyle hata aldıysa mesaj.
  • TransactionProductStatusList (object[]): Ürün bazında sonuçlar (yalnızca hemen işlenen tek ürünlü isteklerde).