تغییر نسبی موجودی (ثبت فروش یا برگشت)
using System.Net.Http.Headers;var client = new HttpClient();var request = new HttpRequestMessage{ Method = HttpMethod.Post, RequestUri = new Uri("https://api.seller360.ir/v1/stock/84780448/adjustments"), Headers = { { "Idempotency-Key", "example" }, { "Authorization", "Bearer <token>" }, }, Content = new StringContent("{ \"quantity\": -1, \"reason\": \"sale\", \"reference\": \"ORD-58213\" }") { Headers = { ContentType = new MediaTypeHeaderValue("application/json") } }};using (var response = await client.SendAsync(request)){ response.EnsureSuccessStatusCode(); var body = await response.Content.ReadAsStringAsync(); Console.WriteLine(body);}const url = 'https://api.seller360.ir/v1/stock/84780448/adjustments';const options = { method: 'POST', headers: { 'Idempotency-Key': 'example', Authorization: 'Bearer <token>', 'Content-Type': 'application/json' }, body: '{"quantity":-1,"reason":"sale","reference":"ORD-58213"}'};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request POST \ --url https://api.seller360.ir/v1/stock/84780448/adjustments \ --header 'Authorization: Bearer <token>' \ --header 'Content-Type: application/json' \ --header 'Idempotency-Key: example' \ --data '{ "quantity": -1, "reason": "sale", "reference": "ORD-58213" }'موجودی فروشنده را به اندازهی quantity کم یا زیاد میکند؛ عدد زنده از دیجیکالا خوانده میشود و
بررسی و تغییر در یک قدم و زیر قفل تقسیم موجودی انجام میشود (همان مسیر تکی تعیین مطلق). اگر موجودی
کافی نباشد، هیچ تغییری انجام نمیشود و خطای insufficient_stock برمیگردد؛ پس اگر دو خریدار همزمان
آخرین عدد را بخواهند، فقط یکی موفق میشود. با همان Idempotency-Key تکرار درخواست اثر دوباره ندارد.
Authorizations
Section titled “Authorizations”Parameters
Section titled “Parameters”Path Parameters
Section titled “Path Parameters”Example
84780448عدد کد DKPC تنوع.
Header Parameters
Section titled “Header Parameters”یک شناسهی یکتا برای هر تغییر (مثلا UUID). اگر پاسخ را دریافت نکردید، همان درخواست را با همان کلید تکرار کنید؛ تغییر دو بار انجام نمیشود. پاسخ اول تا ۲۴ ساعت نگه داشته میشود.
Request Bodyrequired
Section titled “Request Bodyrequired”object
منفی برای کم کردن (فروش)، مثبت برای زیاد کردن (برگشت). صفر مجاز نیست.
Example
-1شناسهی سفارش در سایت شما، برای پیگیری.
Example
ORD-58213Responses
Section titled “Responses”تغییر ثبت شد.
object
object
مدل واحد موجودی یک تنوع، با همان برچسبهای پنل. رابطهها:
warehouse_available= max(0,warehouse_stock−reserved.digikala) «باقیمانده در انبار دیجیکالا»reservation_shortfall= max(0,reserved.digikala−warehouse_stock) سفارشهای دیجیکالا بیش از موجودی انبار آن که فروشنده تامین میکندseller_available= max(0,seller_stock−reservation_shortfall−reserved.seller) «باقیمانده در انبار فروشنده»sellable_calculated=warehouse_available+seller_available«تعداد قابل فروش»sellableعدد رسمی «قابل فروش» خود دیجیکالاست و معمولا باsellable_calculatedبرابر است.in_transit.ordersبخشی ازreservation_shortfallاست؛ آن را روی هیچ عددی جمع نکنید.- واحدهای
in_transit.consignmentتا دریافت در انبار دیجیکالا هنوز جزوseller_stockهستند و ازseller_availableکم نمیشوند.
object
«قابل فروش» در دیجیکالا؛ همان عددی که سایت شما باید نشان دهد.
«موجودی در انبار فروشنده» (انبار خودتان).
«موجودی در انبار دیجیکالا».
واحدهای رزروشده برای سفارشهای ارسالنشده.
object
«رزرو ارسال دیجیکالا».
«رزرو ارسال فروشنده».
«باقیمانده در انبار دیجیکالا».
رزرو دیجیکالا بیش از موجودی انبار آن.
«باقیمانده در انبار فروشنده».
«تعداد قابل فروش» به محاسبهی سلر ۳۶۰.
object
«در راه برای سفارشها»؛ واحدهای محمولههای سفارش در راه انبار دیجیکالا.
«در محمولهی انبارش»؛ محمولههای ساختهشده و هنوز دریافتنشده.
با هر تغییر بزرگتر میشود؛ عدد قدیمیتر را روی جدیدتر ننویسید.
زمان آخرین خواندن از دیجیکالا (نقش synced_at در این منبع).
true اگر پایش این پنل بیش از حد معمول عقب افتاده باشد؛ عدد را با احتیاط به کار ببرید.
Example
{ "status": "ok", "data": { "id": "adj_5d0e77", "quantity": -1, "reason": "sale", "reference": "ORD-58213", "stock": { "variant_id": 84780448, "sku": "NK-1024-G", "supplier_code": "5144", "sellable": 38, "seller_stock": 39, "warehouse_stock": 2, "reserved": { "total": 3, "digikala": 3, "seller": 0 }, "warehouse_available": 0, "reservation_shortfall": 1, "seller_available": 38, "sellable_calculated": 38, "in_transit": { "orders": 1, "consignment": 12 }, "version": 1842 } }}Headers
Section titled “Headers”کد پیگیری این درخواست.
سقف درخواست این نوع (خواندن یا نوشتن) در هر دقیقه برای این کلید.
درخواستهای باقیمانده تا پایان دقیقهی جاری.
زمان شروع دقیقهی بعد، به ثانیه از ۱۹۷۰ (Unix).
پارامتر یا بدنهی نامعتبر.
object
object
پیام فارسی برای برنامهنویس.
آنچه دقیقا نادرست بود، مثلا نام پارامتر.
Example
{ "status": "error", "error": { "code": "missing_api_key" }}Headers
Section titled “Headers”کد پیگیری این درخواست.
سقف درخواست این نوع (خواندن یا نوشتن) در هر دقیقه برای این کلید.
درخواستهای باقیمانده تا پایان دقیقهی جاری.
زمان شروع دقیقهی بعد، به ثانیه از ۱۹۷۰ (Unix).
کلید ارسال نشده یا نامعتبر است.
object
object
پیام فارسی برای برنامهنویس.
آنچه دقیقا نادرست بود، مثلا نام پارامتر.
Example
{ "status": "error", "error": { "code": "missing_api_key" }}کلید دسترسی لازم را ندارد، یا ماژول یا پنل فعال نیست.
object
object
پیام فارسی برای برنامهنویس.
آنچه دقیقا نادرست بود، مثلا نام پارامتر.
Example
{ "status": "error", "error": { "code": "missing_api_key" }}مورد درخواستشده در این پنل وجود ندارد.
object
object
پیام فارسی برای برنامهنویس.
آنچه دقیقا نادرست بود، مثلا نام پارامتر.
Example
{ "status": "error", "error": { "code": "missing_api_key" }}Headers
Section titled “Headers”کد پیگیری این درخواست.
سقف درخواست این نوع (خواندن یا نوشتن) در هر دقیقه برای این کلید.
درخواستهای باقیمانده تا پایان دقیقهی جاری.
زمان شروع دقیقهی بعد، به ثانیه از ۱۹۷۰ (Unix).
تغییر با وضعیت فعلی سازگار نیست (موجودی ناکافی، نسخهی تغییرکرده، قفل یا کلید یکتای تکراری).
object
object
پیام فارسی برای برنامهنویس.
آنچه دقیقا نادرست بود، مثلا نام پارامتر.
Example
{ "status": "error", "error": { "code": "missing_api_key" }}Headers
Section titled “Headers”کد پیگیری این درخواست.
سقف درخواست این نوع (خواندن یا نوشتن) در هر دقیقه برای این کلید.
درخواستهای باقیمانده تا پایان دقیقهی جاری.
زمان شروع دقیقهی بعد، به ثانیه از ۱۹۷۰ (Unix).
سقف درخواست گذشته است.
object
object
پیام فارسی برای برنامهنویس.
آنچه دقیقا نادرست بود، مثلا نام پارامتر.
Example
{ "status": "error", "error": { "code": "missing_api_key" }}Headers
Section titled “Headers”چند ثانیه صبر کنید و دوباره تلاش کنید.
سقف درخواست این نوع (خواندن یا نوشتن) در هر دقیقه برای این کلید.
درخواستهای باقیمانده تا پایان دقیقهی جاری.
زمان شروع دقیقهی بعد، به ثانیه از ۱۹۷۰ (Unix).
دیجیکالا تغییر را نپذیرفت یا پاسخ نامعتبر داد؛ هیچ تغییری ثبت نشد.
object
object
پیام فارسی برای برنامهنویس.
آنچه دقیقا نادرست بود، مثلا نام پارامتر.
Example
{ "status": "error", "error": { "code": "missing_api_key" }}Headers
Section titled “Headers”کد پیگیری این درخواست.
سقف درخواست این نوع (خواندن یا نوشتن) در هر دقیقه برای این کلید.
درخواستهای باقیمانده تا پایان دقیقهی جاری.
زمان شروع دقیقهی بعد، به ثانیه از ۱۹۷۰ (Unix).
دیجیکالا در دسترس نیست یا سقف آن پر است؛ پس از Retry-After دوباره تلاش کنید.
object
object
پیام فارسی برای برنامهنویس.
آنچه دقیقا نادرست بود، مثلا نام پارامتر.
Example
{ "status": "error", "error": { "code": "missing_api_key" }}Headers
Section titled “Headers”چند ثانیه صبر کنید و دوباره تلاش کنید.