Kategori Özellikleri
Bir kategoriye hangi özelliklerin (Renk, Beden, Cinsiyet vb.) atandığını, hangilerinin zorunlu olduğunu ve hangi değerlerin seçilebildiğini döndürür. Ürün Oluşturma isteğini kurgulamadan önce çağrılması gereken endpoint budur.
Gerekli yetki:
product:read
Endpoint
GET /integration/product/sellers/{sellerId}/categories/{categoryId}/attributes
Production
https://api.milagron.com/integration/product/sellers/{sellerId}/categories/{categoryId}/attributes
Stage
Yakında
{categoryId} bir yaprak kategori olmalıdır (kategori ağacının en alt seviyesi,
"leaf": true). Ana veya alt kategori ID'si gönderilirse 404 döner.
Yaprak kategorileri kategori ağacından alın.
Yanıt (200)
{
"category": {
"id": 12,
"name": "Basic Tişört",
"leaf": true,
"subCategoryId": 37,
"taxRates": [8, 18],
"variantless": false
},
"attributes": [
{
"id": 3,
"name": "Renk",
"required": true,
"multiple": true,
"variant": true,
"values": [
{ "id": 15, "value": "Siyah" },
{ "id": 16, "value": "Beyaz" }
]
},
{
"id": 7,
"name": "Beden",
"required": false,
"multiple": true,
"variant": true,
"values": [
{ "id": 41, "value": "S" },
{ "id": 42, "value": "M" }
]
},
{
"id": 21,
"name": "Cinsiyet",
"required": false,
"multiple": false,
"variant": true,
"values": [
{ "id": 88, "value": "Kadın" },
{ "id": 89, "value": "Erkek" },
{ "id": 90, "value": "Unisex" }
]
}
]
}
Alanlar
| Alan | Tip | Açıklama |
|---|---|---|
category.variantless | boolean | true ise bu kategorideki ürünler her zaman tek varyantlıdır; attributes gönderilemez. |
category.taxRates | array | Ürün oluşturmada taxRate bu listeden seçilmelidir. |
id | integer | Özellik ID'si. Ürün oluştururken varyantların attributes alanında attributeId olarak kullanılır. |
name | string | Özellik adı. Vitrinde varyant seçeneğinin adı olur (ör. Renk). |
required | boolean | true ise bu özellik ürün gövdesindeki attributes dizisinde bulunmak zorundadır. |
multiple | boolean | false ise özellik tek değer alır: tüm varyantlar aynı attributeValueId'yi kullanmalıdır. true ise varyantlar farklı değerler alabilir. |
variant | boolean | true ise özellik varyant üretir ve ürün gövdesinde kullanılabilir. false olanlar yalnızca bilgilendirme amaçlıdır; ürün oluşturmada kabul edilmez. |
values | array | Seçilebilir değerler. Varyantlardaki attributeValueId bu listeden gelmelidir. |
Kullanım Kuralları
- Ürün oluştururken varyantların
attributesalanında yalnızca bu yanıttakivariant: trueözellikler kullanılabilir; en fazla 3 tanesi. required: trueolan tüm özellikler kullanılmalıdır; eksikse istek reddedilir.- Yalnızca isteğe bağlı özellikler varsa hiçbirini kullanmayabilirsiniz. Bu durumda ürün tek varyantlı oluşur.
multiple: falseolan bir özellikte varyantlar farklı değerler kullanamaz.- Yanıt boş bir
attributesdizisi vevariantless: falsedöndürüyorsa o kategorinin yapılandırması henüz tamamlanmamıştır; ürün oluşturulamaz. Milagron ile iletişime geçin.
Özellik Sırası ve Varyant Adı
Varyant adı ve vitrindeki seçenek sırası, bu yanıttaki özellik sırasından üretilir (önce zorunlular). Örneğin Renk ve Beden kullanan bir üründe varyant adları "Siyah / S" biçiminde oluşur. İstek gövdesindeki JSON sırası sonucu etkilemez.
Örnek Akış
// 1) Kategori ağacı: yaprak ("leaf": true) kategoriyi seçin
GET /integration/product/sellers/123/categories
// 2) Yaprak kategoriye atanmış özellikler
GET /integration/product/sellers/123/categories/12/attributes
// 3) Marka
GET /integration/product/sellers/123/brands
// 4) Ürün oluşturma
POST /integration/product/sellers/123/products
Kullanım Örnekleri
curl -u "API_KEY:API_SECRET" \
-X GET "https://api.milagron.com/integration/product/sellers/123/categories/12/attributes"<?php
$ch = curl_init('https://api.milagron.com/integration/product/sellers/123/categories/12/attributes');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_USERPWD => 'API_KEY:API_SECRET',
CURLOPT_CUSTOMREQUEST => 'GET',
]);
$response = curl_exec($ch);
$data = json_decode($response, true);
curl_close($ch);const auth = Buffer.from('API_KEY:API_SECRET').toString('base64');
const res = await fetch('https://api.milagron.com/integration/product/sellers/123/categories/12/attributes', {
method: 'GET',
headers: {
'Authorization': `Basic ${auth}`
}
});
const data = await res.json();import requests
response = requests.get(
'https://api.milagron.com/integration/product/sellers/123/categories/12/attributes',
auth=('API_KEY', 'API_SECRET')
)
response.raise_for_status()
data = response.json()package main
import (
"net/http"
)
func main() {
req, _ := http.NewRequest("GET", "https://api.milagron.com/integration/product/sellers/123/categories/12/attributes", nil)
req.SetBasicAuth("API_KEY", "API_SECRET")
resp, err := http.DefaultClient.Do(req)
if err != nil {
panic(err)
}
defer resp.Body.Close()
}import java.net.URI;
import java.net.http.*;
import java.util.Base64;
HttpClient client = HttpClient.newHttpClient();
String auth = Base64.getEncoder()
.encodeToString("API_KEY:API_SECRET".getBytes());
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://api.milagron.com/integration/product/sellers/123/categories/12/attributes"))
.header("Authorization", "Basic " + auth)
.GET()
.build();
HttpResponse<String> response = client.send(request,
HttpResponse.BodyHandlers.ofString());require 'net/http'
require 'uri'
require 'json'
uri = URI('https://api.milagron.com/integration/product/sellers/123/categories/12/attributes')
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true
request = Net::HTTP::Get.new(uri.request_uri)
request.basic_auth('API_KEY', 'API_SECRET')
response = http.request(request)
data = JSON.parse(response.body)using System.Net.Http;
using System.Net.Http.Headers;
using System.Text;
var client = new HttpClient();
var auth = Convert.ToBase64String(
Encoding.UTF8.GetBytes("API_KEY:API_SECRET"));
client.DefaultRequestHeaders.Authorization =
new AuthenticationHeaderValue("Basic", auth);
var response = await client.GetAsync("https://api.milagron.com/integration/product/sellers/123/categories/12/attributes");
var data = await response.Content.ReadAsStringAsync();Hata Yanıtları
| HTTP | Kod | Durum |
|---|---|---|
| 401 / 403 | Unauthorized / Forbidden | Kimlik doğrulama, yetki (scope) veya satıcı eşleşme hatası. |
| 404 | NotFound | categoryId bulunamadı veya yaprak kategori değil. |
| 429 | TooManyRequests | Rate limit. |
Notlar
- Bu endpoint salt-okunurdur; stage ortamında da gerçek veri döner.
- Eşlemeler Milagron panelinden yönetilir ve nadiren değişir; istemci tarafında makul süreyle (ör. 1 saat) önbelleklenebilir.
- Kategoriden bağımsız, sistemdeki tüm özelliklerin listesi için Katalog & ID Keşfi sayfasına bakın. Ürün oluşturmada bağlayıcı olan bu sayfadaki kategori bazlı listedir.