Urunler
Urunlerin CRUD islemleri, ozellik deger atama ve Media Manager referanslariyla kapak/galeri yonetimi.
Base URL: /api/tenant/product-catalog/products
Yetkilendirme: Bearer Token + X-Api-Key
Modul: Product Catalog modulu musteriye atanmis olmalidir.
Headers:
Authorization: Bearer eyJhbGciOiJIUzI1NiIs...
X-Api-Key: customer-api-key
POST /
Yeni urun olusturur. Ceviriler, kategori atamalari ve ozellik degerleri tek istekte gonderilebilir.
Request Body:
{
"code": "iphone-16-pro",
"sku": "IP16PRO-256-BLK",
"coverImageMediaFileId": "media-cover-id-...",
"status": "Draft",
"isActive": true,
"categoryIds": ["3fa85f64-..."],
"translations": [
{
"languageId": "9cd14a82-...",
"name": "iPhone 16 Pro",
"slug": "iphone-16-pro",
"shortDescription": "Apple iPhone 16 Pro 256GB",
"description": "<p>Detayli urun aciklamasi...</p>",
"metaTitle": "iPhone 16 Pro | Magazamiz",
"metaDescription": "iPhone 16 Pro 256GB en uygun fiyatla"
}
],
"images": [
{
"mediaFileId": "media-gallery-1-id-...",
"sortOrder": 1,
"altText": "iPhone 16 Pro on gorunum"
}
],
"attributeValues": [
{
"attributeDefinitionId": "attr-renk-id-...",
"attributeOptionId": "opt-siyah-id-..."
},
{
"attributeDefinitionId": "attr-agirlik-id-...",
"decimalValue": 0.199
},
{
"attributeDefinitionId": "attr-garantili-id-...",
"booleanValue": true
}
]
}
| Alan | Tip | Zorunlu | Aciklama |
|---|---|---|---|
code | string | Evet | Benzersiz urun kodu |
sku | string | Hayir | Benzersiz stok birimi kodu |
coverImageMediaFileId | Guid? | Hayir | Kapak gorseli icin Media Manager dosya ID |
status | string | Evet | Draft, Published veya Archived |
isActive | bool | Hayir | Aktiflik durumu (varsayilan: true) |
categoryIds | Guid[] | Hayir | Kategori ID listesi |
translations | ProductTranslationRequest[] | Evet | Dil cevirileri |
images | ProductImageRequest[] | Hayir | Galeri gorselleri |
attributeValues | ProductAttributeValueRequest[] | Hayir | Ozellik degerleri |
ProductTranslationRequest
| Alan | Tip | Zorunlu | Aciklama |
|---|---|---|---|
languageId | Guid | Evet | Dil ID |
name | string | Evet | Urun adi |
slug | string | Hayir | URL slug (bos ise otomatik olusturulur) |
shortDescription | string | Hayir | Kisa aciklama |
description | string | Hayir | Detayli aciklama (HTML) |
metaTitle | string | Hayir | SEO basligi |
metaDescription | string | Hayir | SEO aciklamasi |
ProductAttributeValueRequest
Ozelligin dataType degerine gore ilgili alan doldurulur:
| Alan | Tip | Aciklama |
|---|---|---|
attributeDefinitionId | Guid | Ozellik tanimi ID (zorunlu) |
textValue | string? | Text tipi deger |
numberValue | int? | Number tipi deger |
decimalValue | decimal? | Decimal tipi deger |
booleanValue | bool? | Boolean tipi deger |
dateValue | DateTime? | Date tipi deger |
attributeOptionId | Guid? | Select tipi secenek ID |
ProductImageRequest
| Alan | Tip | Zorunlu | Aciklama |
|---|---|---|---|
mediaFileId | Guid | Evet | Media Manager'da yuklenmis gorsel ID |
sortOrder | int | Hayir | Siralama degeri |
altText | string? | Hayir | Alternatif metin |
Response — 201 Created:
{
"success": true,
"data": {
"id": "3fa85f64-...",
"code": "iphone-16-pro",
"sku": "IP16PRO-256-BLK",
"status": "Draft",
"isActive": true,
"coverImageUrl": null,
"createdAt": "2026-03-28T14:00:00Z",
"updatedAt": null,
"translations": [
{
"languageId": "9cd14a82-...",
"languageCode": "tr",
"name": "iPhone 16 Pro",
"slug": "iphone-16-pro",
"shortDescription": "Apple iPhone 16 Pro 256GB",
"description": "<p>Detayli urun aciklamasi...</p>",
"metaTitle": "iPhone 16 Pro | Magazamiz",
"metaDescription": "iPhone 16 Pro 256GB en uygun fiyatla"
}
]
}
}
GET /
Urunleri filtreli ve sayfalanmis olarak listeler. Ozellik degerlerine gore filtreleme destekler.
Query Parametreleri:
| Parametre | Tip | Varsayilan | Aciklama |
|---|---|---|---|
page | int | 1 | Sayfa numarasi |
pageSize | int | 10 | Sayfa basina kayit |
status | string | — | Draft, Published veya Archived filtresi |
categoryId | Guid | — | Kategori filtresi |
search | string | — | Urun adinda arama |
lang | string | — | Dil kodu filtresi (ornek: tr) |
attrs[code] | string | — | Ozellik degerine gore filtreleme |
attrs[code_min] | string | — | Sayisal ozellik alt sinir |
attrs[code_max] | string | — | Sayisal ozellik ust sinir |
Ozellik Filtreleme Ornekleri
# Rengi "Kirmizi" olan urunler
GET /api/tenant/product-catalog/products?attrs[renk]=Kirmizi
# Agirligi 0.5 ile 2.0 kg arasi urunler
GET /api/tenant/product-catalog/products?attrs[agirlik_min]=0.5&attrs[agirlik_max]=2.0
# Garantili urunler
GET /api/tenant/product-catalog/products?attrs[garantili]=true
# Birden fazla filtre birlikte
GET /api/tenant/product-catalog/products?categoryId=xxx&attrs[renk]=Mavi&attrs[agirlik_max]=1.5
Response — 200 OK:
{
"success": true,
"data": {
"items": [
{
"id": "3fa85f64-...",
"code": "iphone-16-pro",
"sku": "IP16PRO-256-BLK",
"status": "Published",
"isActive": true,
"coverImageUrl": "https://api.example.com/media/acme/cc4d4a1df9894a8da60f0a5e8cb8583d.webp",
"createdAt": "2026-03-28T14:00:00Z",
"name": "iPhone 16 Pro",
"slug": "iphone-16-pro"
}
],
"page": 1,
"pageSize": 10,
"totalCount": 1,
"totalPages": 1
}
}
GET /{id}
Urun detayini kategoriler, ozellik degerleri ve gorselleriyle birlikte getirir.
Response — 200 OK:
{
"success": true,
"data": {
"id": "3fa85f64-...",
"code": "iphone-16-pro",
"sku": "IP16PRO-256-BLK",
"status": "Published",
"isActive": true,
"coverImageUrl": "https://api.example.com/media/acme/cc4d4a1df9894a8da60f0a5e8cb8583d.webp",
"createdAt": "2026-03-28T14:00:00Z",
"updatedAt": "2026-03-28T15:00:00Z",
"translations": [
{
"languageId": "9cd14a82-...",
"languageCode": "tr",
"name": "iPhone 16 Pro",
"slug": "iphone-16-pro",
"shortDescription": "Apple iPhone 16 Pro 256GB",
"description": "<p>Detayli urun aciklamasi...</p>",
"metaTitle": "iPhone 16 Pro | Magazamiz",
"metaDescription": "iPhone 16 Pro 256GB en uygun fiyatla"
}
],
"categories": [
{
"id": "cat-id-...",
"parentId": null,
"sortOrder": 1,
"isActive": true,
"translations": [
{ "languageId": "...", "languageCode": "tr", "name": "Telefonlar", "slug": "telefonlar" }
]
}
],
"attributeValues": [
{
"attributeDefinitionId": "attr-renk-...",
"attributeCode": "renk",
"dataType": "Select",
"unit": null,
"textValue": null,
"numberValue": null,
"decimalValue": null,
"booleanValue": null,
"dateValue": null,
"attributeOptionId": "opt-siyah-...",
"optionTranslations": [
{ "languageId": "...", "languageCode": "tr", "value": "Siyah" }
]
},
{
"attributeDefinitionId": "attr-agirlik-...",
"attributeCode": "agirlik",
"dataType": "Decimal",
"unit": "kg",
"decimalValue": 0.199,
"attributeOptionId": null,
"optionTranslations": null
}
],
"images": [
{
"id": "img-id-...",
"imageUrl": "https://api.example.com/media/acme/f9cc9bbcc17f4635b4b8766d939e6043.jpg",
"sortOrder": 1,
"altText": "iPhone 16 Pro on gorunum"
}
]
}
}
PUT /{id}
Urunu gunceller. Kategori atamalari ve ozellik degerleri tamamen yeniden yazilir (replace).
Request Body: CreateProductRequest ile ayni yapidir (code haric).
Response — 200 OK: ProductResponse objesi doner.
DELETE /{id}
Urunu siler (soft delete).
Response — 204 No Content
Medya Kullanımı
Kapak ve galeri gorselleri icin akıs:
- Dosyalari Media Manager modulu ile yukleyin.
- Kapak icin
coverImageMediaFileId, galeri icinimages[].mediaFileIdalanlarini kullanin. - Kapagi kaldirmak icin
coverImageMediaFileId: null, galeriyi degistirmek icinimageslistesini yeniden gonderin.
Olasi Hatalar
| Kod | Durum |
|---|---|
401 | Token eksik veya gecersiz |
403 | Tenant kullanicisi yetkisi yok veya product-catalog modul erisimi yok |
404 | Urun, kategori, ozellik tanimi veya medya kaydi bulunamadi |
409 | Urun kodu, SKU veya slug cakismasi |
400 | Gecersiz status degeri veya medya referansi hatasi |