Katalog & ID Keşfi
Ürün Oluşturma isteğinde kullanılan kategori ve özellik (attribute) ID'lerini döndüren salt-okunur uçlarıdır. Marka listesi için Markalar sayfasına bakın.
product:read
1. Kategori Ağacı
GET /integration/product/sellers/{sellerId}/categories
Üç seviyeli kategori ağacını döndürür: ana kategori → alt kategori → yaprak kategori. Ürün her zaman bir yaprak kategoriye ("leaf": true) açılır.
Yanıt (200)
{
"categories": [
{
"id": 7,
"name": "Giyim",
"leaf": false,
"subCategories": [
{
"id": 37,
"name": "Tişört",
"leaf": false,
"subCategories": [
{ "id": 12, "name": "Basic Tişört", "leaf": true,
"taxRates": [8, 18], "variantless": false },
{ "id": 13, "name": "Polo Yaka", "leaf": true,
"taxRates": [8], "variantless": false }
]
}
]
}
]
}
Ürün oluşturmada kullanımı
| Seviye | Alan | Açıklama |
|---|---|---|
| 1. Ana kategori | mainCategoryId | Ağacın kökü. |
| 2. Alt kategori | subCategoryId | Seçilen ana kategorinin altından. |
| 3. Yaprak kategori | categoryId | "leaf": true olan seviye. Ürünün özellikleri ve KDV oranları buna bağlıdır. |
subCategoryId ↔ 2. seviye, categoryId ↔ 3. seviye).
GET .../categories/{categoryId}/attributes).
curl -u "API_KEY:API_SECRET" \
-X GET "https://api.milagron.com/integration/product/sellers/123/categories"<?php
$ch = curl_init('https://api.milagron.com/integration/product/sellers/123/categories');
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', {
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',
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", 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"))
.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')
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");
var data = await response.Content.ReadAsStringAsync();2. Yaprak Kategorilerin Düz Listesi
GET /integration/product/sellers/{sellerId}/product-types
Yaprak kategorileri ağaç yerine düz liste hâlinde döndürür. Alan adları geriye dönük uyumluluk için productTypes / subCategoryId olarak korunmuştur; dönen id değerleri ürün oluşturmadaki categoryId ile aynıdır.
Sorgu Parametreleri
| Parametre | Tip | Açıklama |
|---|---|---|
subCategoryId | integer | Opsiyonel. Verilirse yalnızca o alt kategoriye ait yaprak kategoriler döner. |
Yanıt (200)
{
"productTypes": [
{ "id": 12, "name": "Tişört", "subCategoryId": 37, "taxRates": [8, 18] },
{ "id": 13, "name": "Polo Yaka", "subCategoryId": 37, "taxRates": [8] }
]
}
curl -u "API_KEY:API_SECRET" \
-X GET "https://api.milagron.com/integration/product/sellers/123/product-types?subCategoryId=37"<?php
$ch = curl_init('https://api.milagron.com/integration/product/sellers/123/product-types?subCategoryId=37');
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/product-types?subCategoryId=37', {
method: 'GET',
headers: {
'Authorization': `Basic ${auth}`
}
});
const data = await res.json();import requests
response = requests.get(
'https://api.milagron.com/integration/product/sellers/123/product-types?subCategoryId=37',
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/product-types?subCategoryId=37", 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/product-types?subCategoryId=37"))
.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/product-types?subCategoryId=37')
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/product-types?subCategoryId=37");
var data = await response.Content.ReadAsStringAsync();3. Özellikler (Attributes)
GET /integration/product/sellers/{sellerId}/attributes
Sistemdeki tüm özellikleri (Renk, Beden vb.) ve seçilebilir değerlerini döndürür. Genel katalog görünümüdür.
GET .../categories/{categoryId}/attributes) ucunu kullanın.
Kategoriye atanmamış bir attributeId gönderilirse istek reddedilir.
Yanıt (200)
{
"attributes": [
{
"id": 3,
"name": "Renk",
"required": true,
"multiple": false,
"values": [
{ "id": 15, "value": "Siyah" },
{ "id": 16, "value": "Beyaz" }
]
},
{
"id": 7,
"name": "Beden",
"required": true,
"multiple": false,
"values": [
{ "id": 41, "value": "S" },
{ "id": 42, "value": "M" },
{ "id": 43, "value": "L" }
]
}
]
}
curl -u "API_KEY:API_SECRET" \
-X GET "https://api.milagron.com/integration/product/sellers/123/attributes"<?php
$ch = curl_init('https://api.milagron.com/integration/product/sellers/123/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/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/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/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/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/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/attributes");
var data = await response.Content.ReadAsStringAsync();Notlar
- Bu uçlar salt-okunurdur; stage ortamında dahi gerçek veri döner.
- Yanıtlar gün içinde nadiren değişir; istemci tarafında makul süreyle (ör. 1 saat) önbelleklenebilir.
- Önerilen akış:
categories(yaprak kategoriyi seç) →categories/{categoryId}/attributes→ markalar → ürün oluşturma. - Marka listesi ayrı sayfada: Markalar (
GET .../brands).