Ürün Listesi

Mağazaya ait ürünleri sayfalama, filtreleme ve tarih aralıkları ile birlikte listeler. Variant (varyant) bazında stok, fiyat ve niteliklerle döner.

Gerekli yetki: product:read

Endpoint

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

Production
https://api.milagron.com/integration/product/sellers/{sellerId}/products
Stage
Yakında

Sorgu Parametreleri

Sayfalama ve Sıralama

ParametreTipVarsayılanAçıklama
pageinteger0Sayfa numarası (sıfırdan başlar).
sizeinteger50Sayfa başına dönen ürün adedi (en fazla 1000).
creationDatestringASCOluşturma tarihine göre sıralama yönü: ASC veya DESC.

Ürün Filtreleri

ParametreTipAçıklama
barcodestringBelirli bir barkoda göre filtreleme.
stockCodestringBelirli bir SKU'ya göre filtreleme.
productMainIdstringÜrün ana kimliği ile filtreleme.
statusstringÜrün durumu: onSale, notOnSale, archived.

Marka / Kategori Filtreleri

ParametreTipAçıklama
brandstringMarka adı (virgülle çoklu).
brandIdsstringMarka ID'si (virgülle çoklu).
categorystringAna kategori adı (virgülle çoklu).
categoryIdintegerAna kategori ID (virgülle çoklu).
subCategorystringAlt kategori adı (virgülle çoklu).
subCategoryIdintegerAlt kategori ID (virgülle çoklu).
productTypestringÜrün tipi adı (virgülle çoklu).
productTypeIdintegerÜrün tipi ID (virgülle çoklu).

Tarih Filtreleri

ParametreTipAçıklama
startDatelong (ms)Bu tarihten sonra güncellenen ürünler (Unix milisaniye).
endDatelong (ms)Bu tarihten önce güncellenen ürünler.
creationDateStartlong (ms)Bu tarihten sonra oluşturulan ürünler.
creationDateEndlong (ms)Bu tarihten önce oluşturulan ürünler.

Yanıt (200)

{
  "totalElements": 487,
  "totalPages": 10,
  "page": 0,
  "size": 50,
  "content": [
    {
      "contentId": 60042,
      "productMainId": "9084249637087",
      "title": "Ürün Adı",
      "description": "

Ürün açıklaması...

", "images": [ { "url": "https://cdn.milagron.com/products/image1.webp" }, { "url": "https://cdn.milagron.com/products/image2.webp" } ], "brand": { "id": 12, "name": "By Lamp" }, "category": { "id": 3, "name": "Aydınlatma" }, "subCategory": { "id": 7, "name": "Aplik" }, "productType": { "id": 9, "name": "Aplik" }, "taxRate": 20, "productUrl": "https://milagron.com/products/urun-handle", "creationDate": 1749416400000, "lastModifiedDate": 1749502800000, "deliveryOptions": { "minDeliveryDays": 2, "maxDeliveryDays": 5 }, "onSale": true, "archived": false, "approvalStatus": { "code": "pendingApproval", "name": "Onay bekliyor", "date": 1749416400000, "rejectReason": null, "pendingImageApproval": false }, "variants": [ { "variantId": "47115403722975", "barcode": "8690000000001", "stockCode": "APLIK-7151", "stock": { "quantity": 100, "lastModifiedDate": 1749502800000 }, "price": { "salePrice": 2554.74, "listPrice": 3609.90 }, "productUrl": "https://milagron.com/products/urun-handle?variant=47115403722975", "attributes": [ { "attributeId": 1, "attributeName": "Renk", "attributeValueId": 8, "attributeValue": "Lila" } ] } ] } ] }

Ürün Alanları

AlanTipAçıklama
contentIdintegerÜrünün dahili kimliği.
productMainIdstringÜrün ana kimliği.
titlestringÜrün başlığı.
descriptionstringHTML formatında ürün açıklaması.
imagesarrayÜrün görselleri listesi (her biri { url }).
brandobjectMarka bilgisi: { id, name }.
categoryobjectAna kategori: { id, name }.
subCategoryobjectAlt kategori: { id, name }.
productTypeobjectÜrün tipi: { id, name }.
taxRateintegerKDV oranı.
productUrlstring \| nullSatışa açık ürünün genel müşteri URL'si.
creationDatelongOluşturma zamanı, Unix milisaniye.
lastModifiedDatelongSon değişiklik zamanı, Unix milisaniye.
deliveryOptionsobjectTeslimat süresi: { minDeliveryDays, maxDeliveryDays }.
onSalebooleanÜrün aktif satıştaysa true.
archivedbooleanÜrün arşivlendiyse true.
approvalStatusobjectÜrünün onay sürecindeki durumu (aşağıda).
variantsarrayVaryantlar listesi (aşağıda).

Onay Durumu (approvalStatus)

onSale ve archived ürünün satış durumunu söyler; approvalStatus ise ürünün Milagron onay sürecinin neresinde olduğunu söyler.

AlanTipAçıklama
codestringDurum kodu: pendingApproval, approved, rejected, archived.
namestringDurumun okunabilir karşılığı (örn. "Onay bekliyor").
datelong \| nullÜrünün bu duruma geçtiği zaman, Unix milisaniye.
rejectReasonstring \| nullRed gerekçesi. Yalnızca rejected durumunda dolu gelir.
pendingImageApprovalbooleanÜrünün yeni görselleri onay kuyruğunda bekliyorsa true. Ürün bu sırada yayında kalır, yayındaki görseller değişmez.
KodAnlamı
pendingApprovalÜrün oluşturuldu veya güncellendi, kontrol ekibinin onayı bekleniyor.
approvedÜrün onaylandı. Satışta olup olmadığı onSale alanından okunur.
rejectedÜrün reddedildi; gerekçe rejectReason alanındadır. Düzeltilip tekrar gönderildiğinde durum yeniden pendingApproval olur.
archivedÜrün arşivlendi.

Varyant Alanları (variants[])

AlanTipAçıklama
variantIdstringVaryant kimliği.
barcodestringBarkod.
stockCodestringSKU.
stock.quantityintegerStok adedi.
stock.lastModifiedDatelongStokun son güncelleme zamanı, Unix milisaniye.
price.salePricenumberSatış fiyatı.
price.listPricenumberListe fiyatı (indirim öncesi).
productUrlstring \| nullVaryant seçimi ile oluşturulmuş ürün URL'si.
attributesarrayVaryant nitelikleri (renk, beden vb.).

Attribute Alanları (variants[].attributes[])

AlanTipAçıklama
attributeIdintegerNitelik ID.
attributeNamestringNitelik adı (örn. Renk).
attributeValueIdintegerDeğer ID.
attributeValuestringDeğer adı (örn. Kırmızı).

Kullanım Örnekleri

curl -u "API_KEY:API_SECRET" \
  -X GET "https://api.milagron.com/integration/product/sellers/123/products?page=0&size=50&status=onSale"
<?php

$ch = curl_init('https://api.milagron.com/integration/product/sellers/123/products?page=0&size=50&status=onSale');

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/products?page=0&size=50&status=onSale', {
    method: 'GET',
    headers: {
        'Authorization': `Basic ${auth}`
    }
});

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

response = requests.get(
    'https://api.milagron.com/integration/product/sellers/123/products?page=0&size=50&status=onSale',
    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/products?page=0&size=50&status=onSale", 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/products?page=0&size=50&status=onSale"))
    .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/products?page=0&size=50&status=onSale')

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/products?page=0&size=50&status=onSale");
var data = await response.Content.ReadAsStringAsync();

Hata Kodları

KodSebep
400page sınırı aşılmış (maks 5000).
401 / 403Kimlik doğrulama veya yetki problemi.
404Seller bulunamadı.

Notlar

  • Bu endpoint salt-okunur niteliktedir; stage ortamında dahi gerçek veri döner.
  • barcode, stockCode, status filtreleri aktifken ürünün yalnızca eşleşen varyantları variants dizisinde döner.
  • productUrl alanı, ürün aktif olarak satışta değilse null olur.
  • API ile oluşturulan ürün pendingApproval durumunda başlar; onaydan sonra satışa çıkar.
  • Reddedilen bir ürün düzeltilip tekrar gönderildiğinde rejectReason temizlenir ve durum yeniden pendingApproval olur.