カタログAPI2026-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など)。
{
"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"
}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
}同期ルールを取得
GET/v1/sync_rules/{id}
ルール1つ。
スコープproducts:read
パスパラメータ
idstring必須- ルールのID。
エラー
| ステータス | タイプ | 時期 |
|---|---|---|
| 404 | not-found | このアカウントにそのルールはありません。 |
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"
}商品の個別ルール
POST/v1/sync_rules
個別ルールのある商品は、既定ルールではなくそちらに従います。省略したフィールドは既定ルールの値を使います。
スコープproducts: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など)。
エラー
| ステータス | タイプ | 時期 |
|---|---|---|
| 404 | not-found | このアカウントにその商品はありません。 |
| 409 | invalid-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"
}'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}
ルール全体を送ってください。各出品を次に読み取ったときから適用されます。
スコープproducts: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など)。
エラー
| ステータス | タイプ | 時期 |
|---|---|---|
| 404 | not-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"
}'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 自体は削除できません。
スコープproducts:write
パスパラメータ
idstring必須- ルールのID。
エラー
| ステータス | タイプ | 時期 |
|---|---|---|
| 409 | invalid-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"HTTP/2 200 OK
{ "id": "rule_9p3e", "deleted": true }