API καταλόγου2026-11Προεπισκόπηση

Κανόνες συγχρονισμού

Τι γίνεται με την καταχώρισή σας όταν ένας πωλητής στην Κίνα αλλάζει τιμή ή εξαντλεί το απόθεμα.
  • Ξαναδιαβάζουμε μια καταχώριση όταν έρχεται παραγγελία γι' αυτήν και με τακτικό πρόγραμμα· το last_checked_at κάθε προϊόντος λέει πότε το κάναμε τελευταία. Ο συγχρονισμός των προϊόντων είναι δωρεάν.
  • Κάθε αλλαγή στην οποία ενεργούμε είναι και συμβάν: product.cost_changed και product.out_of_stock.

Το αντικείμενο Sync rule

idstring
Ξεκινά με rule_· ο προεπιλεγμένος κανόνας είναι rule_default.
applies_tostring
all για τον προεπιλεγμένο κανόνα, ή ένα id προϊόντος για εξαίρεση.
on_cost_increase.actionstring
νέα τιμή για να διατηρηθεί το περιθώριό σας, παύση του προϊόντος ή μόνο ειδοποίηση.
on_cost_increase.keep_margin_percentstring
Με reprice: το περιθώριο που διατηρείται, επί της τιμής πώλησης.
on_cost_increase.max_increase_percentstring|null
Με reprice: η μέγιστη αύξηση μιας τιμής με τη μία. Πάνω από αυτή ισχύει το above_max: pause ή notify.
on_cost_decreasestring
keep_price, ή μείωση τιμής στο ίδιο περιθώριο.
on_out_of_stockstring
Πάντα zero_stock: ένα εξαντλημένο SKU δείχνει 0 στα κανάλια σας.
on_back_in_stockstring
restock, ή stay_paused μέχρι να το συνεχίσετε.
round_tostring|null
Κατάληξη τιμής για τις αναπροσαρμοσμένες τιμές, όπως .99 ή .00.
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"
}

Λίστα κανόνων συγχρονισμού

GET/v1/sync_rules

Πρώτα ο προεπιλεγμένος κανόνας, μετά κάθε εξαίρεση ανά προϊόν.

Scopeproducts: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
}

Ανάκτηση κανόνα συγχρονισμού

GET/v1/sync_rules/{id}

Ένας κανόνας.

Scopeproducts:read

Παράμετροι διαδρομής

idstringυποχρεωτικό
Το id του κανόνα.

Σφάλματα

ΚατάστασηΤύποςΠότε
404not-foundΔεν υπάρχει τέτοιος κανόνας σε αυτόν τον λογαριασμό.
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"
}

Εξαίρεση για ένα προϊόν

POST/v1/sync_rules

Ένα προϊόν με δικό του κανόνα ακολουθεί αυτόν αντί για τον προεπιλεγμένο. Τα πεδία που παραλείπετε παίρνουν τις τιμές του προεπιλεγμένου.

Scopeproducts:write

Σώμα

applies_tostringυποχρεωτικό
all για τον προεπιλεγμένο κανόνα, ή ένα id προϊόντος για εξαίρεση.
on_cost_increase.actionstring
νέα τιμή για να διατηρηθεί το περιθώριό σας, παύση του προϊόντος ή μόνο ειδοποίηση.
on_cost_increase.keep_margin_percentstring
Με reprice: το περιθώριο που διατηρείται, επί της τιμής πώλησης.
on_cost_increase.max_increase_percentstring|null
Με reprice: η μέγιστη αύξηση μιας τιμής με τη μία. Πάνω από αυτή ισχύει το above_max: pause ή notify.
on_cost_decreasestring
keep_price, ή μείωση τιμής στο ίδιο περιθώριο.
on_out_of_stockstring
Πάντα zero_stock: ένα εξαντλημένο SKU δείχνει 0 στα κανάλια σας.
on_back_in_stockstring
restock, ή stay_paused μέχρι να το συνεχίσετε.
round_tostring|null
Κατάληξη τιμής για τις αναπροσαρμοσμένες τιμές, όπως .99 ή .00.

Σφάλματα

ΚατάστασηΤύποςΠότε
404not-foundΔεν υπάρχει τέτοιο προϊόν σε αυτόν τον λογαριασμό.
409invalid-stateΤο προϊόν έχει ήδη εξαίρεση: αντικαταστήστε εκείνη.
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"
}

Αντικατάσταση κανόνα συγχρονισμού

PUT/v1/sync_rules/{id}

Στείλτε ολόκληρο τον κανόνα. Ισχύει από την επόμενη φορά που θα διαβάσουμε κάθε καταχώριση.

Scopeproducts:write

Παράμετροι διαδρομής

idstringυποχρεωτικό
Το id του κανόνα.

Σώμα

on_cost_increase.actionstring
νέα τιμή για να διατηρηθεί το περιθώριό σας, παύση του προϊόντος ή μόνο ειδοποίηση.
on_cost_increase.keep_margin_percentstring
Με reprice: το περιθώριο που διατηρείται, επί της τιμής πώλησης.
on_cost_increase.max_increase_percentstring|null
Με reprice: η μέγιστη αύξηση μιας τιμής με τη μία. Πάνω από αυτή ισχύει το above_max: pause ή notify.
on_cost_decreasestring
keep_price, ή μείωση τιμής στο ίδιο περιθώριο.
on_out_of_stockstring
Πάντα zero_stock: ένα εξαντλημένο SKU δείχνει 0 στα κανάλια σας.
on_back_in_stockstring
restock, ή stay_paused μέχρι να το συνεχίσετε.
round_tostring|null
Κατάληξη τιμής για τις αναπροσαρμοσμένες τιμές, όπως .99 ή .00.

Σφάλματα

ΚατάστασηΤύποςΠότε
404not-foundΔεν υπάρχει τέτοιος κανόνας σε αυτόν τον λογαριασμό.
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"
}

Διαγραφή εξαίρεσης

DELETE/v1/sync_rules/{id}

Το προϊόν ακολουθεί ξανά τον προεπιλεγμένο κανόνα. Το ίδιο το rule_default δεν διαγράφεται.

Scopeproducts:write

Παράμετροι διαδρομής

idstringυποχρεωτικό
Το id του κανόνα.

Σφάλματα

ΚατάστασηΤύποςΠότε
409invalid-stateΤο rule_default δεν διαγράφεται.
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 }