Ovaj dokument za sada postoji samo na turskom.
Ürünler
Admin API ile ürün listele, ekle, güncelle ve sil; varyant, görsel ve İngilizce içerik gönder. Panelde geçerli olan doğrulama kuralları burada da geçerlidir.
Uçlar
| Yöntem ve adres | Kapsam | Ne yapar |
|---|---|---|
GET /products |
products.read |
Listeler |
GET /products/{id} |
products.read |
Tek ürün |
POST /products |
products.write |
Ekler, 201 döner |
PATCH /products/{id} |
products.write |
Yalnız gönderilen alanları değiştirir |
DELETE /products/{id} |
products.write |
Siler, 204 döner |
GET /locations |
products.read |
Stok lokasyonlarını listeler, ayrıntı Stok sayfasında |
Listeleme
| Süzgeç | Açıklama |
|---|---|
status |
active ya da draft |
q |
Ad ya da markada arar |
sku |
Üründe ya da varyantında bu stok kodu olanlar |
updated_since |
Bu tarihten sonra değişenler |
curl "https://piyodo.com/api/store/v1/products?status=active&q=gomlek" \
-H "Authorization: Bearer psk_..."Ürün ekleme
name, price ve status zorunludur.
curl -X POST "https://piyodo.com/api/store/v1/products" \
-H "Authorization: Bearer psk_..." \
-H "Content-Type: application/json" \
-d '{
"name": "Keten Gömlek",
"price": "899.90",
"status": "active",
"stock": 12,
"sku": "KG-1",
"image_urls": ["https://cdn.example.com/keten-gomlek.jpg"]
}'Alanlar
| Alan | Tür | Not |
|---|---|---|
name |
metin, en çok 120 | Zorunlu |
price |
ondalık | Zorunlu. "899,90" da kabul edilir |
status |
active, draft |
Zorunlu |
slug |
metin | Boşsa addan üretilir. Değişirse eski adres yeni adrese yönlenir |
description |
metin, en çok 20000 | HTML gelebilir, izin listesinden geçirilir |
compare_price |
ondalık | Üstü çizili eski fiyat |
stock |
tam sayı | null stok takibini kapatır |
stock_levels |
nesne | Lokasyon kimliği → adet. Lokasyonu olan mağazada gönderilirse stock yok sayılır, toplam adetlerden hesaplanır. Varyant satırında da geçerlidir |
sku, barcode |
metin, en çok 64 | |
brand, vendor |
metin, en çok 80 | |
weight |
tam sayı | Gram. Yanıtta weight_grams olarak döner |
vat_rate |
0, 1, 10, 20 ya da null |
Faturaya yazılan KDV oranı. null mağazanın oranıdır |
min_quantity |
1-99 ya da null |
Vitrinde en az sipariş adedi. Panel ve satış ekranında uygulanmaz |
subscription_months |
1, 2, 3, 6, 12 ya da null |
Doluysa satın alan müşteriye her dönem ödeme bağlantısı gider |
tags |
metin dizisi | |
badge, tagline |
metin | En çok 30 ve 200 |
meta_title, meta_description |
metin | En çok 120 ve 200 |
collection_ids |
kimlik dizisi | Gönderilirse koleksiyon atamaları bununla değişir |
sort |
tam sayı | Sıralama |
fields |
nesne | Mağazanın tanımladığı özel alanlar |
faq |
dizi | [{"q": "...", "a": "..."}], en çok 10 |
personalization |
dizi | Müşteriden alınan kişiselleştirme seçenekleri |
options, variants |
dizi | Aşağıda |
translations |
nesne | Aşağıda |
image_urls |
adres dizisi | Aşağıda |
Görseller
POST ya da PATCH içinde image_urls gönder: en çok 8 http(s) adresi. Görseller arka planda iner, yanıt beklemez ve ürünün mevcut görsellerinin sonuna eklenir (ürün başına en çok 8).
Adres herkese açık olmalı, görsel dosyası dönmeli ve 10 MB'ı geçmemeli. Yönlendirme izlenmez; inmeyen görsel atlanır.
Varyantlar
options seçenekleri (en çok 3), variants satırları tanımlar. Varyant fiyatı boşsa ürün fiyatı geçerlidir; yanıttaki effective_price geçerli fiyatı verir.
{
"options": [
{"name": "Beden", "values": ["S", "M"]},
{"name": "Renk", "values": ["Ekru"], "swatches": {"Ekru": "#efe6d5"}}
],
"variants": [
{"options": {"Beden": "S", "Renk": "Ekru"}, "stock": 4, "sku": "KG-1-S"},
{"options": {"Beden": "M", "Renk": "Ekru"}, "stock": 8, "sku": "KG-1-M", "price": "949.90"}
]
}PATCH içinde options gönderirsen variants listesi de gönder: listede olmayan varyantlar silinir. Var olan varyantı korumak için satırda id ver; id olmayan satır yeni varyanttır. Satır başına alanlar: id, options, price, compare_price, stock, stock_levels, sku, barcode. options göndermezsen varyantlara dokunulmaz.
İngilizce içerik
Mağaza İngilizce de yayındaysa translations.en içinde gönder. Alanlar: name, description, tagline, meta_title, meta_description.
{"translations": {"en": {"name": "Linen Shirt", "tagline": "Light, breathable, everyday"}}}Yanıt
{
"data": {
"id": "01J...",
"slug": "keten-gomlek",
"name": "Keten Gömlek",
"description": null,
"status": "active",
"url": "https://ayse.example.com/urun/keten-gomlek",
"price": "899.90",
"compare_price": null,
"stock": 12,
"stock_levels": [],
"sku": "KG-1",
"barcode": null,
"brand": null,
"vendor": null,
"weight_grams": null,
"tags": [],
"badge": null,
"tagline": null,
"images": [],
"fields": {},
"translations": {},
"meta_title": null,
"meta_description": null,
"options": [],
"personalization": [],
"rating": null,
"reviews_count": 0,
"variants": [],
"collection_ids": [],
"created_at": "2026-11-05T10:00:00+00:00",
"updated_at": "2026-11-05T10:00:00+00:00"
}
}images tam adres listesidir. stock satılabilir toplamdır; stock_levels onun lokasyonlara dağılımıdır ([{"location_id": "01J...", "quantity": 7}]), varyant satırlarında da döner. Mağazada lokasyon yoksa boş listedir. Stok güncellemek için ürünün tamamını göndermen gerekmez: Stok sayfasındaki toplu uç daha uygundur.