Katalog & ID Keşfi

Ürün Oluşturma isteğinde kullanılan marka, kategori, ürün tipi ve özellik (attribute) ID'lerini döndüren salt-okunur endpoint'lerdir.

Gerekli yetki: product:read
ID'ler kalıcıdır; entegrasyonunuzda isimleri değil ID'leri saklayın. İsimler Milagron panelinde güncellenebilir, ID'ler değişmez.

1. Kategoriler

GET /integration/product/sellers/{sellerId}/categories

Ana ve alt kategori ağacını döndürür. Ürün oluşturmada mainCategoryId ana kategoriden, subCategoryId onun subCategories listesinden seçilmelidir.

Yanıt (200)

{
  "categories": [
    {
      "id": 7,
      "name": "Giyim",
      "subCategories": [
        { "id": 37, "name": "Tişört" },
        { "id": 38, "name": "Gömlek" }
      ]
    },
    {
      "id": 3,
      "name": "Aydınlatma",
      "subCategories": [
        { "id": 9, "name": "Aplik" }
      ]
    }
  ]
}
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. Ürün Tipleri

GET /integration/product/sellers/{sellerId}/product-types

Ürün tiplerini ve her tip için izin verilen KDV oranlarını döndürür. Ürün oluşturmada productTypeId seçilen alt kategoriye ait olmalı, taxRate tipin taxRates listesinden seçilmelidir.

Sorgu Parametreleri

ParametreTipAçıklama
subCategoryIdintegerOpsiyonel. Verilirse yalnızca o alt kategoriye ait tipler 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

Varyant özelliklerini (Renk, Beden vb.) ve seçilebilir değerlerini döndürür. Ürün oluşturmada üst düzey attributes dizisi bu listedeki id'lerden, varyantlardaki attributeValueId ilgili özelliğin values listesinden seçilmelidir.

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();

4. Markalar

GET /integration/product/sellers/{sellerId}/brands

Satıcıya tanımlı markaları döndürür. Ürün oluşturmada brandId bu listeden seçilmelidir; başka satıcıların markaları kullanılamaz.

Yanıt (200)

{
  "brands": [
    { "id": 5, "name": "Marka Adı" },
    { "id": 8, "name": "Diğer Marka" }
  ]
}
curl -u "API_KEY:API_SECRET" \
  -X GET "https://api.milagron.com/integration/product/sellers/123/brands"
<?php

$ch = curl_init('https://api.milagron.com/integration/product/sellers/123/brands');

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/brands', {
    method: 'GET',
    headers: {
        'Authorization': `Basic ${auth}`
    }
});

const data = await res.json();
import requests

response = requests.get(
    'https://api.milagron.com/integration/product/sellers/123/brands',
    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/brands", 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/brands"))
    .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/brands')

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/brands");
var data = await response.Content.ReadAsStringAsync();

Notlar

  • Bu endpoint'ler 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ış: categoriesproduct-types?subCategoryId=attributes + brandsürün oluşturma.