API referansı · Ürünler
Ürün ekle
StockMount tipindeki bir kaynağa yeni ürün ekler; varyantları, görselleri ve özellikleri aynı çağrıda kaydeder. Yanıt yeni ürünün ProductId değeridir.
https://out.stockmount.com/api/Product/AddProduct
Zorunlu alanlar şu sırayla kontrol edilir: ProductSourceId, CurrencyId, Price (0'dan büyük olmalı), Code, Name, Category. İlk eksik alanda 00003 döner ve ErrorMessage alanı belirtir: ProductSourceId is missing, CurrencyId is missing, Price is missing, Code is missing, Name is missing veya yalnızca Category. Herhangi bir varyantta VariantValueN doluysa üründe VariantNameN de zorunludur; yoksa VariantNameN is missing döner.
Kaynak hesabınızda bulunamazsa 70002 (Invalid Product Source), StockMount tipinde değilse 70003 (Invalid Product Source Type) döner. Ürünü yalnızca GetProductSources listesindeki kaynaklara ekleyebilirsiniz.
Code kaynak içinde benzersizdir ve birebir karşılaştırılır. Aynı kodlu ürün zaten varsa hiçbir şey değişmez ve yanıt {"Result": true, "Message": "Product code already exists", "ErrorCode": "70004", "Response": <mevcut ProductId>} olur. Yani Result: true tek başına ürünün eklendiğini göstermez; ErrorCode alanını da kontrol edin. Kaldırılmış DeleteProduct ile geçmişte silinen ürünlerin kodları da bu kontrolde sayılır.
UpdateProductByCode: true gönderirseniz ve kod kaynakta varsa, 70004 yerine mevcut ürün güncellenir (ekle veya güncelle). Bu durumda UpdateProduct kuralları geçerlidir: gönderilmeyen alanlar temizlenir ve görseller değişmez.
Başarılı eklemede Response yeni ürünün ProductId değeridir. Yeni ürünün durumu stok miktarından bağımsız olarak 1 (yeni) olur. ProductId, Status, Url, StoreId, CreationTime, Image, SoldCount ve SetProductQuantityFromVariants alanları bu çağrıda yok sayılır.
Görsel, varyant ve özellik kayıtları ürün satırı kaydedildikten sonra yapılır. Bunlardaki hatalar yanıta yansımaz; çağrı yine Result: true döner. Görsel yükleme başarısız olursa görsel boş adresle kaydedilir. Geçersiz Base64 verisi ise 99999 döndürür, ama ürün o anda zaten oluşmuştur; aynı isteği tekrarlarsanız 70004 alırsınız. Sonucu GetProduct ile kontrol edin.
Varyantlar ürün üzerindeki VariantName1–VariantName6 ve varyantlardaki VariantValue1–VariantValue6 ile tanımlanır (ör. VariantName1: Renk, VariantValue1: Siyah). Varyant Code alanı sonraki güncellemelerde eşleştirme anahtarıdır. Ürünün Quantity değeri varyant stoklarından hesaplanmaz; toplam stoğu kendiniz gönderin.
Bu çağrı pazaryerine özel kontrolleri yapmaz: barkod biçimi ve özel karakterler, zorunlu marka, izinli KDV oranları, webp görseller veya katalog onayı burada denetlenmez. Bu kontroller ürün bir pazaryerine gönderilirken yapılır ve sonucu StockMount panelinde görünür. 70012 ve 70014–70017 kodları bu çağrıdan dönmez.
Uzunluk sınırları veritabanı alanlarından gelir ve API tarafından kontrol edilmez; sınırı aşan metinler hata vermeden kesilir. Hata mesajları İngilizcedir.
Yalnızca paket hatasının (70018) mesajı Türkçedir.
Aktif Ürün Paketi olmayan hesaplar 70018 hatası alır; paket bilgisi doğrulanamazsa 99999 döner.
İstek alanları
| Alan | Tip | Açıklama |
|---|---|---|
ApiCode
zorunlu
|
string |
DoLogin ile aldığınız oturum kodu.
|
ProductSourceId
zorunlu
|
integer |
Ürünün bulunduğu StockMount tipindeki kaynak (GetProductSources). Hesabınızda yoksa 70002, StockMount tipinde değilse 70003 döner.
|
Code
zorunlu
|
string | Ürün kodu (stok kodu). Kaynak içinde benzersizdir ve birebir karşılaştırılır. En fazla 50 karakter. |
Name
zorunlu
|
string | Ürün adı. En fazla 400 karakter. |
Category
zorunlu
|
string |
Kategori adı (kimlik değil). Kaynakta yoksa otomatik oluşturulur. Mevcut adlar için GetProductCategories.
|
Price
zorunlu
|
number |
Satış fiyatı. 0'dan büyük olmalıdır; değilse 00003 (Price is missing) döner. 2 ondalık basamak saklanır.
|
CurrencyId
zorunlu
|
integer |
Para birimi kimliği (GetCurrencies; ör. 4 = TRY, 2 = USD, 3 = EUR). 1'den küçükse 00003 döner. API kimliğin varlığını doğrulamaz; geçerli bir kimlik gönderin.
|
Quantity
|
integer | Stok miktarı. Gönderilmezse 0. API negatif değeri reddetmez. Varyantlı üründe toplam stoğu kendiniz gönderin; varyant stoklarından hesaplanmaz. |
MarketPrice
|
number |
Piyasa (liste) fiyatı; genellikle Price değerinden yüksektir ve indirimi göstermek için kullanılır. Gönderilmezse 0.
|
TaxRate
|
number |
KDV oranı, yüzde olarak (ör. 20). API izinli değer listesi uygulamaz. Gönderilmezse 0 kaydedilir.
|
Barcode
|
string | Ürün barkodu. En fazla 30 karakter. Biçim veya özel karakter kontrolü yapılmaz. |
Brand
|
string | Marka. En fazla 30 karakter. |
Model
|
string | Model. En fazla 30 karakter. |
Code2
|
string | İkinci ürün kodu. En fazla 50 karakter. |
Mpn
|
string | Üretici parça numarası (MPN). En fazla 50 karakter. |
Subtitle
|
string | Alt başlık. En fazla 400 karakter. |
Description
|
string | Ürün açıklaması; HTML olabilir. Güvenli olmayan HTML (ör. script) temizlenir. Gönderilmezse boş kaydedilir. |
UpdateProductDescription
|
boolean |
Yalnızca UpdateProductByCode ile çağrı güncellemeye dönüştüğünde anlamlıdır: false ise mevcut açıklama korunur. Varsayılan true.
|
DispatchPeriod
|
integer | Kargoya teslim (hazırlık) süresi, gün. Gönderilmezse -1 (tanımsız). |
Volume
|
number | Hacim / desi. Gönderilmezse 0. |
Width
|
number | Genişlik. Gönderilmezse 0. |
Length
|
number | Uzunluk. Gönderilmezse 0. |
Height
|
number | Yükseklik. Gönderilmezse 0. |
Weight
|
number | Ağırlık. Gönderilmezse 0. |
SellerNote
|
string | Satıcı notu. En fazla 150 karakter. |
Price2
|
number |
Ek fiyat alanı. Yalnızca ürün oluşturulurken kaydedilir; UpdateProduct bu alanı değiştirmez. Gönderilmezse 0.
|
Price3
|
number |
Ek fiyat alanı. Yalnızca ürün oluşturulurken kaydedilir; UpdateProduct bu alanı değiştirmez. Gönderilmezse 0.
|
Price4
|
number |
Ek fiyat alanı. Yalnızca ürün oluşturulurken kaydedilir; UpdateProduct bu alanı değiştirmez. Gönderilmezse 0.
|
Price5
|
number |
Ek fiyat alanı. Yalnızca ürün oluşturulurken kaydedilir; UpdateProduct bu alanı değiştirmez. Gönderilmezse 0.
|
VariantName1
|
string |
1. varyant özelliğinin adı (ör. Renk). En fazla 30 karakter. Herhangi bir varyantta VariantValue1 doluysa zorunludur; yoksa 00003 (VariantName1 is missing) döner.
|
VariantName2
|
string |
2. varyant özelliğinin adı (ör. Beden). En fazla 30 karakter. Herhangi bir varyantta VariantValue2 doluysa zorunludur; yoksa 00003 (VariantName2 is missing) döner.
|
VariantName3
|
string |
3. varyant özelliğinin adı (ör. Beden). En fazla 30 karakter. Herhangi bir varyantta VariantValue3 doluysa zorunludur; yoksa 00003 (VariantName3 is missing) döner.
|
VariantName4
|
string |
4. varyant özelliğinin adı (ör. Beden). En fazla 30 karakter. Herhangi bir varyantta VariantValue4 doluysa zorunludur; yoksa 00003 (VariantName4 is missing) döner.
|
VariantName5
|
string |
5. varyant özelliğinin adı (ör. Beden). En fazla 30 karakter. Herhangi bir varyantta VariantValue5 doluysa zorunludur; yoksa 00003 (VariantName5 is missing) döner.
|
VariantName6
|
string |
6. varyant özelliğinin adı (ör. Beden). En fazla 30 karakter. Herhangi bir varyantta VariantValue6 doluysa zorunludur; yoksa 00003 (VariantName6 is missing) döner.
|
Images
|
object[] |
Ürün görselleri, en fazla 12 adet (fazlası yok sayılır). Sıra dizideki sıradır; Order alanı kullanılmaz.
|
Images[].
Url
|
string |
Görsel adresi. Olduğu gibi kaydedilir; biçim, protokol veya webp kontrolü yapılmaz. // ile başlıyorsa başına http: eklenir. En fazla 400 karakter.
|
Images[].
Base64
|
string |
Url boşsa kullanılır: görsel StockMount görsel sunucusuna yüklenir ve http:// adresiyle kaydedilir. data: öneki olmadan ham Base64 gönderin. PNG ve JPEG tanınır; diğer veriler .png uzantısıyla kaydedilir.
|
Variants
|
object[] |
Varyant listesi. ProductVariantId, CurrencyId, MinSalePrice ve Price2–Price5 alanları yok sayılır.
|
Variants[].
Code
|
string | Varyant kodu. Güncellemelerde varyant bu kodla eşleştirilir; dolu ve ürün içinde benzersiz gönderin. En fazla 50 karakter. |
Variants[].
Barcode
|
string | Varyant barkodu. Baştaki ve sondaki boşluklar kırpılır. En fazla 30 karakter. |
Variants[].
Quantity
|
integer | Varyant stoğu. Negatif değerler 0 olarak kaydedilir. |
Variants[].
Price
|
number | Varyant fiyatı. Gönderilmezse 0 kaydedilir. |
Variants[].
VariantValue1
|
string |
1. varyant özelliğinin değeri (ör. Siyah). En fazla 100 karakter.
|
Variants[].
VariantValue2
|
string |
2. varyant özelliğinin değeri (ör. M). En fazla 100 karakter.
|
Variants[].
VariantValue3
|
string |
3. varyant özelliğinin değeri (ör. M). En fazla 100 karakter.
|
Variants[].
VariantValue4
|
string |
4. varyant özelliğinin değeri (ör. M). En fazla 100 karakter.
|
Variants[].
VariantValue5
|
string |
5. varyant özelliğinin değeri (ör. M). En fazla 100 karakter.
|
Variants[].
VariantValue6
|
string |
6. varyant özelliğinin değeri (ör. M). En fazla 100 karakter.
|
Variants[].
ImageUrl
|
string | Varyant görselinin adresi. En fazla 200 karakter. |
Variants[].
ImageBase64
|
string |
ImageUrl boşsa kullanılır: görsel StockMount görsel sunucusuna yüklenir. data: öneki olmadan ham Base64 gönderin.
|
Variants[].
Code2
|
string |
İkinci varyant kodu. En fazla 50 karakter. Boşsa varyantın dizideki sırası (0, 1, 2…) yazılır.
|
Variants[].
Mpn
|
string | Varyantın üretici parça numarası. En fazla 50 karakter. |
Specs
|
object[] | Ürün özellikleri (ad–değer çiftleri). |
Specs[].
Name
|
string |
Özellik adı (ör. Materyal). En fazla 50 karakter.
|
Specs[].
Value
|
string |
Özellik değeri (ör. Pamuk). En fazla 100 karakter.
|
UpdateProductByCode
|
boolean |
true ise ve Code kaynakta zaten varsa, 70004 yerine mevcut ürün güncellenir (ekle veya güncelle). Varsayılan false.
|
Yanıt alanları (Response)
| Alan | Tip | Açıklama |
|---|---|---|
Response
|
integer |
Yeni ürünün ProductId değeri. 70004 durumunda aynı kodlu mevcut ürünün kimliğidir.
|
Bu servisin hata kodları
| Kod | Ne zaman |
|---|---|
70002 |
ProductSourceId hesabınızdaki bir kaynak değil (Invalid Product Source). |
70003 |
Kaynak StockMount tipinde değil (Invalid Product Source Type). |
70004 |
Kaynakta aynı Code ile ürün var. Result true döner, Response mevcut ProductId değeridir ve hiçbir şey değişmez. |
70005 |
Kod kontrolü için ürünler okunamadı (iç okuma hatası; Message: Product could not be retreived). |
70018 |
Hesabınızda aktif Ürün Paketi yok (ErrorMessage: Ürün entegrasyonu için aktif Ürün Paketi gereklidir.). |
99999 |
Beklenmeyen bir hata oluştu. Ürün kaydedilemediğinde veya Base64 görsel çözülemediğinde de döner (ikinci durumda ürün oluşmuş olabilir). |
Oturum hataları (00001, 00006) ve tüm kodlar için hata kodları.
İlgili servisler
Örnek istek
{
"ApiCode": "API_CODE",
"ProductSourceId": 1234,
"Code": "TSHIRT-001",
"Name": "Basic Pamuklu Tişört",
"Category": "Tişört",
"Price": 249.9,
"MarketPrice": 299.9,
"CurrencyId": 4,
"TaxRate": 20,
"Quantity": 30,
"Barcode": "8690000000017",
"Brand": "Örnek Marka",
"Model": "BSC-01",
"Description": "<p>%100 pamuk, regular fit.</p>",
"DispatchPeriod": 2,
"Volume": 1,
"VariantName1": "Renk",
"VariantName2": "Beden",
"Images": [
{
"Url": "https://cdn.example.com/tshirt-001-1.jpg"
},
{
"Url": "https://cdn.example.com/tshirt-001-2.jpg"
}
],
"Variants": [
{
"Code": "TSHIRT-001-BLK-M",
"Barcode": "8690000000024",
"Quantity": 10,
"Price": 249.9,
"VariantValue1": "Siyah",
"VariantValue2": "M"
},
{
"Code": "TSHIRT-001-BLK-L",
"Barcode": "8690000000031",
"Quantity": 20,
"Price": 249.9,
"VariantValue1": "Siyah",
"VariantValue2": "L"
}
],
"Specs": [
{
"Name": "Materyal",
"Value": "Pamuk"
}
]
}
curl -X POST 'https://out.stockmount.com/api/Product/AddProduct' \
-H 'Content-Type: application/json' \
-d '{
"ApiCode": "API_CODE",
"ProductSourceId": 1234,
"Code": "TSHIRT-001",
"Name": "Basic Pamuklu Tişört",
"Category": "Tişört",
"Price": 249.9,
"MarketPrice": 299.9,
"CurrencyId": 4,
"TaxRate": 20,
"Quantity": 30,
"Barcode": "8690000000017",
"Brand": "Örnek Marka",
"Model": "BSC-01",
"Description": "<p>%100 pamuk, regular fit.</p>",
"DispatchPeriod": 2,
"Volume": 1,
"VariantName1": "Renk",
"VariantName2": "Beden",
"Images": [
{
"Url": "https://cdn.example.com/tshirt-001-1.jpg"
},
{
"Url": "https://cdn.example.com/tshirt-001-2.jpg"
}
],
"Variants": [
{
"Code": "TSHIRT-001-BLK-M",
"Barcode": "8690000000024",
"Quantity": 10,
"Price": 249.9,
"VariantValue1": "Siyah",
"VariantValue2": "M"
},
{
"Code": "TSHIRT-001-BLK-L",
"Barcode": "8690000000031",
"Quantity": 20,
"Price": 249.9,
"VariantValue1": "Siyah",
"VariantValue2": "L"
}
],
"Specs": [
{
"Name": "Materyal",
"Value": "Pamuk"
}
]
}'
using System.Net.Http;
using System.Text;
using var http = new HttpClient();
var json = """
{
"ApiCode": "API_CODE",
"ProductSourceId": 1234,
"Code": "TSHIRT-001",
"Name": "Basic Pamuklu Tişört",
"Category": "Tişört",
"Price": 249.9,
"MarketPrice": 299.9,
"CurrencyId": 4,
"TaxRate": 20,
"Quantity": 30,
"Barcode": "8690000000017",
"Brand": "Örnek Marka",
"Model": "BSC-01",
"Description": "<p>%100 pamuk, regular fit.</p>",
"DispatchPeriod": 2,
"Volume": 1,
"VariantName1": "Renk",
"VariantName2": "Beden",
"Images": [
{
"Url": "https://cdn.example.com/tshirt-001-1.jpg"
},
{
"Url": "https://cdn.example.com/tshirt-001-2.jpg"
}
],
"Variants": [
{
"Code": "TSHIRT-001-BLK-M",
"Barcode": "8690000000024",
"Quantity": 10,
"Price": 249.9,
"VariantValue1": "Siyah",
"VariantValue2": "M"
},
{
"Code": "TSHIRT-001-BLK-L",
"Barcode": "8690000000031",
"Quantity": 20,
"Price": 249.9,
"VariantValue1": "Siyah",
"VariantValue2": "L"
}
],
"Specs": [
{
"Name": "Materyal",
"Value": "Pamuk"
}
]
}
""";
var response = await http.PostAsync(
"https://out.stockmount.com/api/Product/AddProduct",
new StringContent(json, Encoding.UTF8, "application/json"));
var result = await response.Content.ReadAsStringAsync();
// Result == false ise ErrorCode ve ErrorMessage alanlarına bakın.
Console.WriteLine(result);
<?php
$body = <<<'JSON'
{
"ApiCode": "API_CODE",
"ProductSourceId": 1234,
"Code": "TSHIRT-001",
"Name": "Basic Pamuklu Tişört",
"Category": "Tişört",
"Price": 249.9,
"MarketPrice": 299.9,
"CurrencyId": 4,
"TaxRate": 20,
"Quantity": 30,
"Barcode": "8690000000017",
"Brand": "Örnek Marka",
"Model": "BSC-01",
"Description": "<p>%100 pamuk, regular fit.</p>",
"DispatchPeriod": 2,
"Volume": 1,
"VariantName1": "Renk",
"VariantName2": "Beden",
"Images": [
{
"Url": "https://cdn.example.com/tshirt-001-1.jpg"
},
{
"Url": "https://cdn.example.com/tshirt-001-2.jpg"
}
],
"Variants": [
{
"Code": "TSHIRT-001-BLK-M",
"Barcode": "8690000000024",
"Quantity": 10,
"Price": 249.9,
"VariantValue1": "Siyah",
"VariantValue2": "M"
},
{
"Code": "TSHIRT-001-BLK-L",
"Barcode": "8690000000031",
"Quantity": 20,
"Price": 249.9,
"VariantValue1": "Siyah",
"VariantValue2": "L"
}
],
"Specs": [
{
"Name": "Materyal",
"Value": "Pamuk"
}
]
}
JSON;
$ch = curl_init('https://out.stockmount.com/api/Product/AddProduct');
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_HTTPHEADER => ['Content-Type: application/json'],
CURLOPT_POSTFIELDS => $body,
CURLOPT_RETURNTRANSFER => true,
]);
$result = json_decode(curl_exec($ch), true);
curl_close($ch);
if (!$result['Result']) {
echo $result['ErrorCode'] . ' ' . $result['ErrorMessage'];
}
import requests
payload = {
"ApiCode": "API_CODE",
"ProductSourceId": 1234,
"Code": "TSHIRT-001",
"Name": "Basic Pamuklu Ti\u015F\u00F6rt",
"Category": "Ti\u015F\u00F6rt",
"Price": 249.9,
"MarketPrice": 299.9,
"CurrencyId": 4,
"TaxRate": 20,
"Quantity": 30,
"Barcode": "8690000000017",
"Brand": "\u00D6rnek Marka",
"Model": "BSC-01",
"Description": "\u003Cp\u003E%100 pamuk, regular fit.\u003C/p\u003E",
"DispatchPeriod": 2,
"Volume": 1,
"VariantName1": "Renk",
"VariantName2": "Beden",
"Images": [
{
"Url": "https://cdn.example.com/tshirt-001-1.jpg"
},
{
"Url": "https://cdn.example.com/tshirt-001-2.jpg"
}
],
"Variants": [
{
"Code": "TSHIRT-001-BLK-M",
"Barcode": "8690000000024",
"Quantity": 10,
"Price": 249.9,
"VariantValue1": "Siyah",
"VariantValue2": "M"
},
{
"Code": "TSHIRT-001-BLK-L",
"Barcode": "8690000000031",
"Quantity": 20,
"Price": 249.9,
"VariantValue1": "Siyah",
"VariantValue2": "L"
}
],
"Specs": [
{
"Name": "Materyal",
"Value": "Pamuk"
}
]
}
response = requests.post("https://out.stockmount.com/api/Product/AddProduct", json=payload, timeout=60)
result = response.json()
if not result["Result"]:
print(result["ErrorCode"], result["ErrorMessage"])
const payload = {
"ApiCode": "API_CODE",
"ProductSourceId": 1234,
"Code": "TSHIRT-001",
"Name": "Basic Pamuklu Tişört",
"Category": "Tişört",
"Price": 249.9,
"MarketPrice": 299.9,
"CurrencyId": 4,
"TaxRate": 20,
"Quantity": 30,
"Barcode": "8690000000017",
"Brand": "Örnek Marka",
"Model": "BSC-01",
"Description": "<p>%100 pamuk, regular fit.</p>",
"DispatchPeriod": 2,
"Volume": 1,
"VariantName1": "Renk",
"VariantName2": "Beden",
"Images": [
{
"Url": "https://cdn.example.com/tshirt-001-1.jpg"
},
{
"Url": "https://cdn.example.com/tshirt-001-2.jpg"
}
],
"Variants": [
{
"Code": "TSHIRT-001-BLK-M",
"Barcode": "8690000000024",
"Quantity": 10,
"Price": 249.9,
"VariantValue1": "Siyah",
"VariantValue2": "M"
},
{
"Code": "TSHIRT-001-BLK-L",
"Barcode": "8690000000031",
"Quantity": 20,
"Price": 249.9,
"VariantValue1": "Siyah",
"VariantValue2": "L"
}
],
"Specs": [
{
"Name": "Materyal",
"Value": "Pamuk"
}
]
};
const response = await fetch("https://out.stockmount.com/api/Product/AddProduct", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify(payload),
});
const result = await response.json();
if (!result.Result) {
console.error(result.ErrorCode, result.ErrorMessage);
}
Örnek yanıt
{
"Result": true,
"Response": 987654
}
Deneyin
İstek tarayıcınızdan doğrudan out.stockmount.com adresine gider. ApiCode bu sitede saklanmaz; yalnızca bu sekme açıkken tutulur.
İstek göndermek için önce ApiCode alın.
Bu servis hesabınızdaki gerçek verileri değiştirir.
Son istekler
Bu sekmeden gönderdiğiniz son istekler; birine tıklayınca gövdesi yeniden yüklenir.