Katalog API'si2026-11Önizleme

Senkronizasyon kuralları

Çin'deki bir satıcı fiyatı değiştirdiğinde ya da stoğu bittiğinde ilanınıza ne olur.
  • Bir ilanı, ona sipariş geldiğinde ve düzenli bir programla yeniden okuruz; her ürünün last_checked_at değeri en son ne zaman okuduğumuzu söyler. Ürünleri senkronize tutmak ücretsizdir.
  • Harekete geçtiğimiz her değişiklik aynı zamanda bir olaydır: product.cost_changed ve product.out_of_stock.

Sync rule nesnesi

idstring
rule_ ile başlar; varsayılan kural rule_default'tur.
applies_tostring
Varsayılan kural için all ya da bir istisna için ürün id'si.
on_cost_increase.actionstring
kâr marjınızı korumak için fiyatı güncelle, ürünü duraklat ya da yalnızca bildir.
on_cost_increase.keep_margin_percentstring
reprice ile: satış fiyatı üzerinden korunacak kâr marjı.
on_cost_increase.max_increase_percentstring|null
reprice ile: bir fiyatın tek seferde en fazla ne kadar artabileceği. Bunun üstünde above_max uygulanır: pause ya da notify.
on_cost_decreasestring
keep_price ya da aynı kâr marjına inecek şekilde fiyatı düşür.
on_out_of_stockstring
Her zaman zero_stock: tükenen bir SKU kanallarınızda 0 gösterir.
on_back_in_stockstring
restock ya da siz sürdürene kadar stay_paused.
round_tostring|null
Yeniden fiyatlanan fiyatlar için .99 ya da .00 gibi bir fiyat sonu.
sync_rule
{
  "id": "rule_default",
  "applies_to": "all",
  "on_cost_increase": {
    "action": "reprice",
    "keep_margin_percent": "30",
    "max_increase_percent": "15",
    "above_max": "pause"
  },
  "on_cost_decrease": "keep_price",
  "on_out_of_stock": "zero_stock",
  "on_back_in_stock": "restock",
  "round_to": ".99",
  "updated_at": "2026-11-02T08:00:00Z"
}

Senkronizasyon kurallarını listele

GET/v1/sync_rules

Önce varsayılan kural, ardından ürün bazlı her istisna.

Kapsamproducts:read

curl "https://www.ninjabuy.com/api/v1/sync_rules" \
  -H "Authorization: Bearer $NINJABUY_API_KEY" \
  -H "NinjaBuy-Version: 2026-11"
Response 200
HTTP/2 200 OK

{
  "data": [
    {
      "id": "rule_default",
      "applies_to": "all",
      "on_cost_increase": {
        "action": "reprice",
        "keep_margin_percent": "30",
        "max_increase_percent": "15",
        "above_max": "pause"
      },
      "on_cost_decrease": "keep_price",
      "on_out_of_stock": "zero_stock",
      "on_back_in_stock": "restock",
      "round_to": ".99",
      "updated_at": "2026-11-02T08:00:00Z"
    },
    {
      "id": "rule_9p3e",
      "applies_to": "prd_1x0a",
      "on_cost_increase": { "action": "pause" },
      "on_cost_decrease": "keep_price",
      "on_out_of_stock": "zero_stock",
      "on_back_in_stock": "stay_paused",
      "round_to": null,
      "updated_at": "2026-11-03T10:14:00Z"
    }
  ],
  "has_more": false,
  "cursor": null
}

Senkronizasyon kuralını getir

GET/v1/sync_rules/{id}

Tek bir kural.

Kapsamproducts:read

Yol parametreleri

idstringzorunlu
Kuralın id'si.

Hatalar

DurumTürNe zaman
404not-foundBu hesapta böyle bir kural yok.
curl "https://www.ninjabuy.com/api/v1/sync_rules/rule_default" \
  -H "Authorization: Bearer $NINJABUY_API_KEY" \
  -H "NinjaBuy-Version: 2026-11"
Response 200
HTTP/2 200 OK

{
  "id": "rule_default",
  "applies_to": "all",
  "on_cost_increase": {
    "action": "reprice",
    "keep_margin_percent": "30",
    "max_increase_percent": "15",
    "above_max": "pause"
  },
  "on_cost_decrease": "keep_price",
  "on_out_of_stock": "zero_stock",
  "on_back_in_stock": "restock",
  "round_to": ".99",
  "updated_at": "2026-11-02T08:00:00Z"
}

Bir ürün için istisna

POST/v1/sync_rules

Kendi kuralı olan ürün varsayılan yerine o kuralı izler. Belirtmediğiniz alanlar varsayılandan alınır.

Kapsamproducts:write

Gövde

applies_tostringzorunlu
Varsayılan kural için all ya da bir istisna için ürün id'si.
on_cost_increase.actionstring
kâr marjınızı korumak için fiyatı güncelle, ürünü duraklat ya da yalnızca bildir.
on_cost_increase.keep_margin_percentstring
reprice ile: satış fiyatı üzerinden korunacak kâr marjı.
on_cost_increase.max_increase_percentstring|null
reprice ile: bir fiyatın tek seferde en fazla ne kadar artabileceği. Bunun üstünde above_max uygulanır: pause ya da notify.
on_cost_decreasestring
keep_price ya da aynı kâr marjına inecek şekilde fiyatı düşür.
on_out_of_stockstring
Her zaman zero_stock: tükenen bir SKU kanallarınızda 0 gösterir.
on_back_in_stockstring
restock ya da siz sürdürene kadar stay_paused.
round_tostring|null
Yeniden fiyatlanan fiyatlar için .99 ya da .00 gibi bir fiyat sonu.

Hatalar

DurumTürNe zaman
404not-foundBu hesapta böyle bir ürün yok.
409invalid-stateÜrünün zaten bir istisnası var: onu değiştirin.
curl -X POST "https://www.ninjabuy.com/api/v1/sync_rules" \
  -H "Authorization: Bearer $NINJABUY_API_KEY" \
  -H "NinjaBuy-Version: 2026-11" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{
    "applies_to": "prd_1x0a",
    "on_cost_increase": { "action": "pause" },
    "on_back_in_stock": "stay_paused"
  }'
Response 201
HTTP/2 201 Created

{
  "id": "rule_9p3e",
  "applies_to": "prd_1x0a",
  "on_cost_increase": { "action": "pause" },
  "on_cost_decrease": "keep_price",
  "on_out_of_stock": "zero_stock",
  "on_back_in_stock": "stay_paused",
  "round_to": null,
  "updated_at": "2026-11-03T10:14:00Z"
}

Senkronizasyon kuralını değiştir

PUT/v1/sync_rules/{id}

Kuralın tamamını gönderin. Her ilanı bir sonraki okuyuşumuzdan itibaren geçerli olur.

Kapsamproducts:write

Yol parametreleri

idstringzorunlu
Kuralın id'si.

Gövde

on_cost_increase.actionstring
kâr marjınızı korumak için fiyatı güncelle, ürünü duraklat ya da yalnızca bildir.
on_cost_increase.keep_margin_percentstring
reprice ile: satış fiyatı üzerinden korunacak kâr marjı.
on_cost_increase.max_increase_percentstring|null
reprice ile: bir fiyatın tek seferde en fazla ne kadar artabileceği. Bunun üstünde above_max uygulanır: pause ya da notify.
on_cost_decreasestring
keep_price ya da aynı kâr marjına inecek şekilde fiyatı düşür.
on_out_of_stockstring
Her zaman zero_stock: tükenen bir SKU kanallarınızda 0 gösterir.
on_back_in_stockstring
restock ya da siz sürdürene kadar stay_paused.
round_tostring|null
Yeniden fiyatlanan fiyatlar için .99 ya da .00 gibi bir fiyat sonu.

Hatalar

DurumTürNe zaman
404not-foundBu hesapta böyle bir kural yok.
curl -X PUT "https://www.ninjabuy.com/api/v1/sync_rules/rule_default" \
  -H "Authorization: Bearer $NINJABUY_API_KEY" \
  -H "NinjaBuy-Version: 2026-11" \
  -H "Content-Type: application/json" \
  -d '{
    "on_cost_increase": { "action": "notify" },
    "on_cost_decrease": "keep_price",
    "on_out_of_stock": "zero_stock",
    "on_back_in_stock": "restock",
    "round_to": ".99"
  }'
Response 200
HTTP/2 200 OK

{
  "id": "rule_default",
  "applies_to": "all",
  "on_cost_increase": { "action": "notify" },
  "on_cost_decrease": "keep_price",
  "on_out_of_stock": "zero_stock",
  "on_back_in_stock": "restock",
  "round_to": ".99",
  "updated_at": "2026-11-02T08:00:00Z"
}

İstisna sil

DELETE/v1/sync_rules/{id}

Ürün yeniden varsayılan kuralı izler. rule_default'un kendisi silinemez.

Kapsamproducts:write

Yol parametreleri

idstringzorunlu
Kuralın id'si.

Hatalar

DurumTürNe zaman
409invalid-staterule_default silinemez.
curl -X DELETE "https://www.ninjabuy.com/api/v1/sync_rules/rule_9p3e" \
  -H "Authorization: Bearer $NINJABUY_API_KEY" \
  -H "NinjaBuy-Version: 2026-11"
Response 200
HTTP/2 200 OK

{ "id": "rule_9p3e", "deleted": true }