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

AlanTipAçıklama
category.variantlessbooleantrue ise bu kategorideki ürünler her zaman tek varyantlıdır; attributes gönderilemez.
category.taxRatesarrayÜrün oluşturmada taxRate bu listeden seçilmelidir.
idintegerÖzellik ID'si. Ürün oluştururken varyantların attributes alanında attributeId olarak kullanılır.
namestringÖzellik adı. Vitrinde varyant seçeneğinin adı olur (ör. Renk).
requiredbooleantrue ise bu özellik ürün gövdesindeki attributes dizisinde bulunmak zorundadır.
multiplebooleanfalse ise özellik tek değer alır: tüm varyantlar aynı attributeValueId'yi kullanmalıdır. true ise varyantlar farklı değerler alabilir.
variantbooleantrue 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.
valuesarraySeçilebilir değerler. Varyantlardaki attributeValueId bu listeden gelmelidir.

Kullanım Kuralları

  • Ürün oluştururken varyantların attributes alanında yalnızca bu yanıttaki variant: true özellikler kullanılabilir; en fazla 3 tanesi.
  • required: true olan 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: false olan bir özellikte varyantlar farklı değerler kullanamaz.
  • Yanıt boş bir attributes dizisi ve variantless: false dö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ı

HTTPKodDurum
401 / 403Unauthorized / ForbiddenKimlik doğrulama, yetki (scope) veya satıcı eşleşme hatası.
404NotFoundcategoryId bulunamadı veya yaprak kategori değil.
429TooManyRequestsRate 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.