API katalogu2026-11Podgląd
Reguły synchronizacji
Co dzieje się z twoją ofertą, gdy sprzedawca w Chinach zmienia cenę lub wyprzedaje towar.
- Ponownie odczytujemy ofertę, gdy przychodzi na nią zamówienie, i według stałego harmonogramu; last_checked_at każdego produktu mówi, kiedy zrobiliśmy to ostatnio. Synchronizacja produktów jest darmowa.
- Każda zmiana, na którą reagujemy, to też zdarzenie: product.cost_changed i product.out_of_stock.
Obiekt Sync rule
idstring- Zaczyna się od rule_; reguła domyślna to rule_default.
applies_tostring- all dla reguły domyślnej lub ID produktu dla nadpisania.
on_cost_increase.actionstring- reprice — przelicz cenę, by zachować marżę, pause — wstrzymaj produkt, notify — tylko powiadom.
on_cost_increase.keep_margin_percentstring- Przy reprice: marża do zachowania, liczona od ceny sprzedaży.
on_cost_increase.max_increase_percentstring|null- Przy reprice: maksymalny jednorazowy wzrost ceny. Powyżej obowiązuje above_max: pause lub notify.
on_cost_decreasestring- keep_price lub obniżenie ceny do tej samej marży.
on_out_of_stockstring- Zawsze zero_stock: wyprzedany SKU pokazuje 0 w twoich kanałach sprzedaży.
on_back_in_stockstring- restock lub stay_paused, dopóki go nie wznowisz.
round_tostring|null- Końcówka ceny dla przeliczonych cen, np. .99 lub .00.
{
"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"
}Lista reguł synchronizacji
GET/v1/sync_rules
Najpierw reguła domyślna, potem każde nadpisanie dla produktu.
Zakresproducts:read
curl "https://www.ninjabuy.com/api/v1/sync_rules" \
-H "Authorization: Bearer $NINJABUY_API_KEY" \
-H "NinjaBuy-Version: 2026-11"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
}Pobranie reguły synchronizacji
GET/v1/sync_rules/{id}
Jedna reguła.
Zakresproducts:read
Parametry ścieżki
idstringwymagane- ID reguły.
Błędy
| Status | Typ | Kiedy |
|---|---|---|
| 404 | not-found | Na tym koncie nie ma takiej reguły. |
curl "https://www.ninjabuy.com/api/v1/sync_rules/rule_default" \
-H "Authorization: Bearer $NINJABUY_API_KEY" \
-H "NinjaBuy-Version: 2026-11"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"
}Nadpisanie dla produktu
POST/v1/sync_rules
Produkt z własną regułą stosuje ją zamiast domyślnej. Pominięte pola przyjmują wartości z reguły domyślnej.
Zakresproducts:write
Body
applies_tostringwymagane- all dla reguły domyślnej lub ID produktu dla nadpisania.
on_cost_increase.actionstring- reprice — przelicz cenę, by zachować marżę, pause — wstrzymaj produkt, notify — tylko powiadom.
on_cost_increase.keep_margin_percentstring- Przy reprice: marża do zachowania, liczona od ceny sprzedaży.
on_cost_increase.max_increase_percentstring|null- Przy reprice: maksymalny jednorazowy wzrost ceny. Powyżej obowiązuje above_max: pause lub notify.
on_cost_decreasestring- keep_price lub obniżenie ceny do tej samej marży.
on_out_of_stockstring- Zawsze zero_stock: wyprzedany SKU pokazuje 0 w twoich kanałach sprzedaży.
on_back_in_stockstring- restock lub stay_paused, dopóki go nie wznowisz.
round_tostring|null- Końcówka ceny dla przeliczonych cen, np. .99 lub .00.
Błędy
| Status | Typ | Kiedy |
|---|---|---|
| 404 | not-found | Na tym koncie nie ma takiego produktu. |
| 409 | invalid-state | Produkt ma już nadpisanie: zastąp je. |
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"
}'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"
}Zastąpienie reguły synchronizacji
PUT/v1/sync_rules/{id}
Wysyłaj całą regułę. Obowiązuje od następnego odczytu każdej oferty.
Zakresproducts:write
Parametry ścieżki
idstringwymagane- ID reguły.
Body
on_cost_increase.actionstring- reprice — przelicz cenę, by zachować marżę, pause — wstrzymaj produkt, notify — tylko powiadom.
on_cost_increase.keep_margin_percentstring- Przy reprice: marża do zachowania, liczona od ceny sprzedaży.
on_cost_increase.max_increase_percentstring|null- Przy reprice: maksymalny jednorazowy wzrost ceny. Powyżej obowiązuje above_max: pause lub notify.
on_cost_decreasestring- keep_price lub obniżenie ceny do tej samej marży.
on_out_of_stockstring- Zawsze zero_stock: wyprzedany SKU pokazuje 0 w twoich kanałach sprzedaży.
on_back_in_stockstring- restock lub stay_paused, dopóki go nie wznowisz.
round_tostring|null- Końcówka ceny dla przeliczonych cen, np. .99 lub .00.
Błędy
| Status | Typ | Kiedy |
|---|---|---|
| 404 | not-found | Na tym koncie nie ma takiej reguły. |
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"
}'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"
}Usunięcie nadpisania
DELETE/v1/sync_rules/{id}
Produkt znów stosuje regułę domyślną. Samej rule_default nie można usunąć.
Zakresproducts:write
Parametry ścieżki
idstringwymagane- ID reguły.
Błędy
| Status | Typ | Kiedy |
|---|---|---|
| 409 | invalid-state | rule_default nie może zostać usunięta. |
curl -X DELETE "https://www.ninjabuy.com/api/v1/sync_rules/rule_9p3e" \
-H "Authorization: Bearer $NINJABUY_API_KEY" \
-H "NinjaBuy-Version: 2026-11"HTTP/2 200 OK
{ "id": "rule_9p3e", "deleted": true }