Ü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/Barcodedolu. - Varyantlı ürün: bir
Type: 1(model), birType: 2(option, renk) ve her beden için birType: 3(SKU) elemanı. EşlemeModelveOptionkodlarıyla yapılır. - Yalnızca fiyat güncellemek için
Main+Pricesgö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):truegönderilirse üründe olup istekte gönderilmeyen nitelikler silinir.requestSource(query, string): İsteğin kaynağı. Entegrasyonlarda varsayılanpimdeğ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,Modelalanlarından en az biri dolu olmalıdır; aksi halde istekinvalid product main infohatası 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:1Model,2Option,3SKU/varyant,4Tekil,5Bundle,7Asorti,8Koli.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 (stdvarsayılan,tr,envb.).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 (stdvarsayılan,tr,envb.).Title.EntityListId(integer, zorunlu): İçerik listesi kimliği (EntityTypeId = 8).
Assets(object[]): Görsel ve videolar.Assets.Name(string, zorunlu): Dosya adresi.httpile 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:1fotoğraf (varsayılan),3video.Assets.EntityListId(integer, zorunlu): Görsel listesi kimliği (EntityTypeId = 7).Assets.OperationType(string):upsert(varsayılan),deleteveya adres değiştiyse yeniden yükleyendeleteThenInsertIfUrlChanged.
OnSale(object[]): Ürünün satışta olup olmadığı (içerik listesi bazında).Value: nullmanuel değeri kaldırır.OnSale.Value(boolean): Satışta mı.OnSale.Culture(string): Dil kodu;stdkullanı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):1KDV dahil,2KDV 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 (stdvarsayı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 (stdvarsayılan,tr,envb.).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 (stdvarsayılan,tr,envb.).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 elemandaMainyok 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 deneneceksetrue.TransactionId(string): İşlem kimliği; işlem takibi uçlarında kullanılır.TransactionStatus(string):SUCCESS,INQUEUEveyaERROR.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).