رفتن به محتوا

تغییر گروهی حداقل قیمت (پیش‌نمایش و اعمال)

POST
/v1/bot/floors
curl --request POST \
--url https://api.seller360.ir/v1/bot/floors \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--header 'Idempotency-Key: example' \
--data '{ "variant_ids": [ 84780448, 84780449 ], "action": "pct", "value": 5, "margin": 1, "price": 1, "days": 0, "allow_loss": false, "apply": false }'

همان ابزار «تغییر حداقل قیمت» صفحه‌ی وضعیت بای‌باکس. حداقل قیمتی که اینجا تغییر می‌کند همان حداقلی است که ربات رعایت می‌کند (بیشترین مقدار از حداقل قیمت دستی، حداقل «بهای خرید به‌علاوه‌ی سود هدف» و حداقل قیمت استراتژی).

  • با apply: false (پیش‌فرض) فقط پیش‌نمایش برمی‌گردد و چیزی ذخیره نمی‌شود.
  • با apply: true ردیف‌های ok ذخیره می‌شوند. فقط تنظیمات سلر ۳۶۰ تغییر می‌کند و ربات در دور بعد از حداقل تازه استفاده می‌کند.
  • روش هر کالا حفظ می‌شود: در حالت دستی حداقل قیمت ریالی تغییر می‌کند؛ در حالت «بهای خرید به‌علاوه‌ی سود»، درصد سود هدف طوری دوباره محاسبه می‌شود که حداقل روی قیمت تازه بنشیند.
  • حداقل تازه به پایین و به مضرب ۱۰۰ ریال گرد می‌شود.
  • هیچ حداقلی زیر نقطه‌ی سربه‌سر (سود خالص صفر) نمی‌رود، مگر با allow_loss: true.
  • پیش از اولین کاهش، حداقل فعلی به‌عنوان «حداقل قیمت پایه» نگه داشته می‌شود. با days حداقل پس از این مدت خودکار به پایه برمی‌گردد؛ 0 یعنی تا وقتی خودتان با action: restore برگردانید.
  • هر اعمال در «بازگردانی» پنل تا ۲۴ ساعت قابل برگرداندن است.
Idempotency-Key
required
string
>= 8 characters <= 255 characters

یک شناسه‌ی یکتا برای هر تغییر (مثلا UUID). اگر پاسخ را دریافت نکردید، همان درخواست را با همان کلید تکرار کنید؛ تغییر دو بار انجام نمی‌شود. پاسخ اول تا ۲۴ ساعت نگه داشته می‌شود.

Media typeapplication/json
object
variant_ids
required
Array<integer>
>= 1 items <= 1000 items

Example

[
84780448,
84780449
]
action
required
  • pct: حداقل قیمت value درصد کاهش یابد.
  • to_win: حداقل قیمت margin درصد زیر قیمت تخمینی بردن بای‌باکس قرار گیرد (فقط اگر کمتر از حداقل فعلی باشد).
  • profit_pts: سود هدف value واحد درصد کاهش یابد (فقط حالت cost_plus با سود هدف درصدی).
  • set: حداقل قیمت برابر price شود.
  • restore: بازگشت به حداقل قیمت پایه.
string
Allowed values: pct to_win profit_pts set restore
value

برای pct و profit_pts لازم است.

number
> 0 <= 90

Example

5
margin

فاصله‌ی اطمینان زیر قیمت بردن، به درصد (فقط to_win).

number
default: 1 <= 20
price

حداقل قیمت تازه به ریال (فقط set).

integer
>= 100
days

پس از چند روز حداقل قیمت خودکار به پایه برگردد (فقط pct، to_win و profit_pts)؛ 0 یعنی خودکار برنمی‌گردد.

integer
0
Allowed values: 0 1 3 7 14
allow_loss

حداقل قیمت زیر نقطه‌ی سربه‌سر هم مجاز باشد (فروش با زیان).

boolean
apply

false: فقط پیش‌نمایش؛ true: ذخیره‌ی ردیف‌های ok.

boolean

پیش‌نمایش یا نتیجه‌ی اعمال برای هر تنوع.

Media typeapplication/json
object
status
required
Allowed value: ok
data
required
data
required
object
applied
required

تغییرات ذخیره شد (apply: true).

boolean
done
required

تعداد ردیف‌های ok.

integer
undo_expires_at

پایان مهلت بازگردانی این تغییر در پنل (فقط پس از اعمال).

string | null format: date-time
rows
required
Array<object>
object
variant_id
required
integer
mode
required
string
Allowed values: manual cost_plus
old_floor
required

ریال.

integer | null
new_floor
required

ریال.

integer | null
old_target_profit_pct
number | null
new_target_profit_pct
number | null
profit_pct

سود خالص در حداقل تازه، به درصد همان قیمت.

number | null
breakeven

کمترین قیمت با سود خالص صفر.

One of:

مبلغی که سلر ۳۶۰ تخمین زده است، نه عددی که دیجی‌کالا اعلام کرده باشد.

object
value
required

ریال.

integer
estimated
required
boolean
ok
required

این ردیف قابل اعمال است.

boolean
loss

حداقل تازه زیر نقطه‌ی سربه‌سر است (با allow_loss).

boolean
note

دلیل اعمال نشدن، اگر ok نادرست باشد.

string

Example

{
"status": "ok",
"data": {
"done": 2,
"rows": [
{
"variant_id": 84780448,
"mode": "manual",
"old_floor": 280000000,
"new_floor": 266000000,
"old_target_profit_pct": 15,
"new_target_profit_pct": 9.4,
"profit_pct": 6.1,
"breakeven": {
"value": 268000000,
"estimated": true
},
"note": "حداقل قیمت فعلی مانع بردن نیست."
}
]
}
}
X-Request-Id
string

کد پیگیری این درخواست.

X-RateLimit-Limit
integer

سقف درخواست این نوع (خواندن یا نوشتن) در هر دقیقه برای این کلید.

X-RateLimit-Remaining
integer

درخواست‌های باقی‌مانده تا پایان دقیقه‌ی جاری.

X-RateLimit-Reset
integer

زمان شروع دقیقه‌ی بعد، به ثانیه از ۱۹۷۰ (Unix).

پارامتر یا بدنه‌ی نامعتبر.

Media typeapplication/json
object
status
required
Allowed value: error
error
required
object
code
required
string
Allowed values: missing_api_key invalid_api_key https_required scope_missing module_inactive panel_unavailable subscription_inactive not_found variant_not_found method_not_allowed invalid_parameter idempotency_key_required idempotency_mismatch idempotency_in_progress insufficient_stock version_conflict stock_write_locked sku_taken price_out_of_band price_managed_by_bot webhook_url_invalid webhook_limit_reached rate_limited digikala_rate_limited digikala_refused module_required digikala_outcome_unknown digikala_unavailable internal_error stock_split_in_progress kardex_disabled movement_type_not_allowed stock_count_finalized purchase_order_status_invalid product_key_unknown purchase_price_range_invalid product_locked_for_moderation catalog_row_invalid demo_panel_unsupported build_in_progress package_not_built_here shipping_write_unavailable pickup_unavailable feature_unavailable commitment_exceeded warehouse_not_listed slot_watch_exists draft_limit_reached draft_not_buildable draft_overdue draft_not_waiting consignment_not_allowed slot_unavailable no_open_slot replenish_rule_limit replenish_inactive price_managed_by_fx bot_strategy_required bot_quota_full strategy_not_found strategy_locked strategy_hidden strategy_title_reserved competitor_not_found change_not_undoable undo_window_expired already_undone undo_in_progress promotion_not_eligible promotion_managed_by_bot promotion_no_floor promotion_below_floor promotion_invalid promotion_not_active campaign_not_found campaign_closed fx_strategy_not_found fx_no_pending_price
message
required

پیام فارسی برای برنامه‌نویس.

string
detail

آنچه دقیقا نادرست بود، مثلا نام پارامتر.

string
doc_url
required
string format: uri
request_id
required
string

Example

{
"status": "error",
"error": {
"code": "missing_api_key"
}
}
X-Request-Id
string

کد پیگیری این درخواست.

X-RateLimit-Limit
integer

سقف درخواست این نوع (خواندن یا نوشتن) در هر دقیقه برای این کلید.

X-RateLimit-Remaining
integer

درخواست‌های باقی‌مانده تا پایان دقیقه‌ی جاری.

X-RateLimit-Reset
integer

زمان شروع دقیقه‌ی بعد، به ثانیه از ۱۹۷۰ (Unix).

کلید ارسال نشده یا نامعتبر است.

Media typeapplication/json
object
status
required
Allowed value: error
error
required
object
code
required
string
Allowed values: missing_api_key invalid_api_key https_required scope_missing module_inactive panel_unavailable subscription_inactive not_found variant_not_found method_not_allowed invalid_parameter idempotency_key_required idempotency_mismatch idempotency_in_progress insufficient_stock version_conflict stock_write_locked sku_taken price_out_of_band price_managed_by_bot webhook_url_invalid webhook_limit_reached rate_limited digikala_rate_limited digikala_refused module_required digikala_outcome_unknown digikala_unavailable internal_error stock_split_in_progress kardex_disabled movement_type_not_allowed stock_count_finalized purchase_order_status_invalid product_key_unknown purchase_price_range_invalid product_locked_for_moderation catalog_row_invalid demo_panel_unsupported build_in_progress package_not_built_here shipping_write_unavailable pickup_unavailable feature_unavailable commitment_exceeded warehouse_not_listed slot_watch_exists draft_limit_reached draft_not_buildable draft_overdue draft_not_waiting consignment_not_allowed slot_unavailable no_open_slot replenish_rule_limit replenish_inactive price_managed_by_fx bot_strategy_required bot_quota_full strategy_not_found strategy_locked strategy_hidden strategy_title_reserved competitor_not_found change_not_undoable undo_window_expired already_undone undo_in_progress promotion_not_eligible promotion_managed_by_bot promotion_no_floor promotion_below_floor promotion_invalid promotion_not_active campaign_not_found campaign_closed fx_strategy_not_found fx_no_pending_price
message
required

پیام فارسی برای برنامه‌نویس.

string
detail

آنچه دقیقا نادرست بود، مثلا نام پارامتر.

string
doc_url
required
string format: uri
request_id
required
string

Example

{
"status": "error",
"error": {
"code": "missing_api_key"
}
}

کلید دسترسی لازم را ندارد، یا ماژول یا پنل فعال نیست.

Media typeapplication/json
object
status
required
Allowed value: error
error
required
object
code
required
string
Allowed values: missing_api_key invalid_api_key https_required scope_missing module_inactive panel_unavailable subscription_inactive not_found variant_not_found method_not_allowed invalid_parameter idempotency_key_required idempotency_mismatch idempotency_in_progress insufficient_stock version_conflict stock_write_locked sku_taken price_out_of_band price_managed_by_bot webhook_url_invalid webhook_limit_reached rate_limited digikala_rate_limited digikala_refused module_required digikala_outcome_unknown digikala_unavailable internal_error stock_split_in_progress kardex_disabled movement_type_not_allowed stock_count_finalized purchase_order_status_invalid product_key_unknown purchase_price_range_invalid product_locked_for_moderation catalog_row_invalid demo_panel_unsupported build_in_progress package_not_built_here shipping_write_unavailable pickup_unavailable feature_unavailable commitment_exceeded warehouse_not_listed slot_watch_exists draft_limit_reached draft_not_buildable draft_overdue draft_not_waiting consignment_not_allowed slot_unavailable no_open_slot replenish_rule_limit replenish_inactive price_managed_by_fx bot_strategy_required bot_quota_full strategy_not_found strategy_locked strategy_hidden strategy_title_reserved competitor_not_found change_not_undoable undo_window_expired already_undone undo_in_progress promotion_not_eligible promotion_managed_by_bot promotion_no_floor promotion_below_floor promotion_invalid promotion_not_active campaign_not_found campaign_closed fx_strategy_not_found fx_no_pending_price
message
required

پیام فارسی برای برنامه‌نویس.

string
detail

آنچه دقیقا نادرست بود، مثلا نام پارامتر.

string
doc_url
required
string format: uri
request_id
required
string

Example

{
"status": "error",
"error": {
"code": "missing_api_key"
}
}

سقف درخواست گذشته است.

Media typeapplication/json
object
status
required
Allowed value: error
error
required
object
code
required
string
Allowed values: missing_api_key invalid_api_key https_required scope_missing module_inactive panel_unavailable subscription_inactive not_found variant_not_found method_not_allowed invalid_parameter idempotency_key_required idempotency_mismatch idempotency_in_progress insufficient_stock version_conflict stock_write_locked sku_taken price_out_of_band price_managed_by_bot webhook_url_invalid webhook_limit_reached rate_limited digikala_rate_limited digikala_refused module_required digikala_outcome_unknown digikala_unavailable internal_error stock_split_in_progress kardex_disabled movement_type_not_allowed stock_count_finalized purchase_order_status_invalid product_key_unknown purchase_price_range_invalid product_locked_for_moderation catalog_row_invalid demo_panel_unsupported build_in_progress package_not_built_here shipping_write_unavailable pickup_unavailable feature_unavailable commitment_exceeded warehouse_not_listed slot_watch_exists draft_limit_reached draft_not_buildable draft_overdue draft_not_waiting consignment_not_allowed slot_unavailable no_open_slot replenish_rule_limit replenish_inactive price_managed_by_fx bot_strategy_required bot_quota_full strategy_not_found strategy_locked strategy_hidden strategy_title_reserved competitor_not_found change_not_undoable undo_window_expired already_undone undo_in_progress promotion_not_eligible promotion_managed_by_bot promotion_no_floor promotion_below_floor promotion_invalid promotion_not_active campaign_not_found campaign_closed fx_strategy_not_found fx_no_pending_price
message
required

پیام فارسی برای برنامه‌نویس.

string
detail

آنچه دقیقا نادرست بود، مثلا نام پارامتر.

string
doc_url
required
string format: uri
request_id
required
string

Example

{
"status": "error",
"error": {
"code": "missing_api_key"
}
}
Retry-After
integer

چند ثانیه صبر کنید و دوباره تلاش کنید.

X-RateLimit-Limit
integer

سقف درخواست این نوع (خواندن یا نوشتن) در هر دقیقه برای این کلید.

X-RateLimit-Remaining
integer

درخواست‌های باقی‌مانده تا پایان دقیقه‌ی جاری.

X-RateLimit-Reset
integer

زمان شروع دقیقه‌ی بعد، به ثانیه از ۱۹۷۰ (Unix).