Ana içeriğe geç

Urun Ozellikleri (Attribute Definitions)

Dinamik urun ozelliklerinin tanimlari. Her musteri kendi ozellik setini olusturabilir. Ozellikler filtreleme ve siralama icin isaretlenebilir.

Base URL: /api/tenant/product-catalog/attributes Yetkilendirme: Bearer Token + X-Api-Key Modul: Product Catalog modulu musteriye atanmis olmalidir.

Headers:

Authorization: Bearer eyJhbGciOiJIUzI1NiIs...
X-Api-Key: customer-api-key

Veri Tipleri (DataType)

DegerAciklamaOrnek
TextSerbest metinMarka adi, malzeme
NumberTam sayiStok adedi, kapasite
DecimalOndalikli sayiAgirlik (kg), fiyat
BooleanEvet/HayirGarantili mi, su gecirmez mi
DateTarihUretim tarihi, son kullanma
SelectOnceden tanimli seceneklerRenk, beden

POST /

Yeni ozellik tanimi olusturur. Select tipinde ozellikler icin options dizisi ile birlikte secenekler tanimlanabilir.

Request Body:

{
"code": "renk",
"dataType": "Select",
"isRequired": false,
"isFilterable": true,
"isSortable": false,
"unit": null,
"attributeGroupId": "3fa85f64-...",
"translations": [
{
"languageId": "9cd14a82-...",
"label": "Renk",
"description": "Urunun rengi"
}
],
"options": [
{
"sortOrder": 1,
"translations": [
{ "languageId": "9cd14a82-...", "value": "Kirmizi" }
]
},
{
"sortOrder": 2,
"translations": [
{ "languageId": "9cd14a82-...", "value": "Mavi" }
]
}
]
}
AlanTipZorunluAciklama
codestringEvetBenzersiz ozellik kodu (ornek: renk, agirlik)
dataTypestringEvetVeri tipi: Text, Number, Decimal, Boolean, Date, Select
isRequiredboolHayirZorunlu alan mi
isFilterableboolHayirFiltreleme icin kullanilabilir mi
isSortableboolHayirSiralama icin kullanilabilir mi
unitstringHayirBirim (ornek: kg, cm, ml)
attributeGroupIdGuid?HayirAit oldugu ozellik grubu
translationsAttributeDefinitionTranslationRequest[]EvetDil cevirileri
optionsCreateAttributeOptionRequest[]HayirSelect tipinde secenekler

AttributeDefinitionTranslationRequest

AlanTipZorunluAciklama
languageIdGuidEvetDil ID
labelstringEvetGoruntuleme etiketi
descriptionstringHayirAciklama

CreateAttributeOptionRequest

AlanTipZorunluAciklama
sortOrderintHayirSiralama
translationsAttributeOptionTranslationRequest[]EvetSecenek cevirileri

AttributeOptionTranslationRequest

AlanTipZorunluAciklama
languageIdGuidEvetDil ID
valuestringEvetSecenek degeri

Response — 201 Created:

{
"success": true,
"data": {
"id": "3fa85f64-...",
"code": "renk",
"dataType": "Select",
"isRequired": false,
"isFilterable": true,
"isSortable": false,
"unit": null,
"attributeGroupId": "3fa85f64-...",
"createdAt": "2026-03-28T14:00:00Z",
"updatedAt": null,
"translations": [
{
"languageId": "9cd14a82-...",
"languageCode": "tr",
"label": "Renk",
"description": "Urunun rengi"
}
],
"options": [
{
"id": "opt-1-...",
"sortOrder": 1,
"translations": [
{ "languageId": "9cd14a82-...", "languageCode": "tr", "value": "Kirmizi" }
]
},
{
"id": "opt-2-...",
"sortOrder": 2,
"translations": [
{ "languageId": "9cd14a82-...", "languageCode": "tr", "value": "Mavi" }
]
}
]
}
}

GET /

Tum ozellik tanimlarini secenekleriyle birlikte listeler.

Response — 200 OK: AttributeDefinitionResponse[] dizisi doner.


GET /{id}

Belirli bir ozellik tanimini getirir.

Response — 200 OK: AttributeDefinitionResponse objesi doner.


PUT /{id}

Ozellik tanimini gunceller. code alani guncellenemez.

Request Body:

{
"dataType": "Select",
"isRequired": true,
"isFilterable": true,
"isSortable": false,
"unit": null,
"attributeGroupId": "3fa85f64-...",
"translations": [
{
"languageId": "9cd14a82-...",
"label": "Renk",
"description": "Urunun ana rengi"
}
]
}

Response — 200 OK: AttributeDefinitionResponse objesi doner.


DELETE /{id}

Ozellik tanimini siler (soft delete).

Response — 204 No Content


Secenek Yonetimi (Options)

POST /{id}/options

Mevcut bir Select tipindeki ozellege yeni secenek ekler.

Request Body:

{
"sortOrder": 3,
"translations": [
{ "languageId": "9cd14a82-...", "value": "Yesil" }
]
}

Response — 201 Created: AttributeOptionResponse objesi doner.


PUT /{id}/options/{optionId}

Mevcut bir secenegi gunceller.

Request Body:

{
"sortOrder": 3,
"translations": [
{ "languageId": "9cd14a82-...", "value": "Koyu Yesil" }
]
}

Response — 200 OK: AttributeOptionResponse objesi doner.


DELETE /{id}/options/{optionId}

Secenegi siler (soft delete).

Response — 204 No Content


Olasi Hatalar

KodDurum
401Token eksik veya gecersiz
403Tenant kullanicisi yetkisi yok veya product-catalog modul erisimi yok
404Ozellik tanimi veya secenek bulunamadi
409Ozellik kodu cakismasi
400Gecersiz DataType veya Select olmayan ozellege secenek ekleme denemesi