۳. محصولات، قیمت و موجودی

۳.۱ چرا این بخش حیاتی است؟

همگام‌سازی صحیح محصولات، قیمت و موجودی نقش مستقیمی در کاهش NFC، جلوگیری از False Positive / False Negative و بهبود تجربه مشتری دارد.

در مدل رایج صنعت گروسری (Vendor → POS → Platform)، اختلاف بین موجودی واقعی فروشگاه و عدد ثبت‌شده در سیستم یک پدیده طبیعی عملیاتی است، نه نشانه خرابی سیستم.

هدف این APIها: حذف کامل خطا نیست، بلکه کاهش اثر خطا بر سفارش و مشتری است.

۳.۲ آدرس پایه و سیاست Batch

آدرس پایه APIهای محصول: https://api-proxy.snapp.express/va/v1/product

۳.۳ همگام‌سازی قیمت و تخفیف (productDetails)

این endpoint برای ارسال یا بروزرسانی قیمت مصرف‌کننده و تخفیف فروشنده استفاده می‌شود. برای محصولاتی که تازه وارد فروشگاه شده‌اند، ابتدا باید از این مسیر معرفی شوند.

POST https://api-proxy.snapp.express/va/v1/product/productDetails
Authorization: Bearer <access_token>
Content-Type: application/json
{
  "vendorCode": "VENDOR_CODE",
  "products": [
    { "barcode": "1234", "price": 10000, "discount": 10 }
  ]
}

پاسخ شامل آرایه failedItems است و موفقیت یا شکست هر بارکد به‌صورت مجزا مشخص می‌شود.

۳.۴ همگام‌سازی موجودی (stock)

موجودی، حساس‌ترین داده عملیاتی است. تأخیر در ارسال آن یکی از رایج‌ترین دلایل NFC در گروسری آنلاین محسوب می‌شود.

POST https://api-proxy.snapp.express/va/v1/product/stock
Authorization: Bearer <access_token>
Content-Type: application/json
{
  "vendorCode": "VENDOR_CODE",
  "stocks": [
    { "barcode": "1234", "stock": 18 }
  ]
}
نکته عملی: Batchهای دیرهنگام یا ارسال دوره‌ای موجودی ریسک False Positive را افزایش می‌دهد.

۳.۵ فعال / غیرفعال‌سازی محصول

در شرایطی که محصول به‌طور فیزیکی قابل فروش نیست، می‌توان آن را به‌صورت دستی غیرفعال کرد.

PUT https://api-proxy.snapp.express/va/v1/product/
Authorization: Bearer <access_token>
Content-Type: application/json

۳.۶ بروزرسانی فقط قیمت (price)

اگر فقط قیمت تغییر کرده و تخفیف ثابت است، استفاده از این endpoint توصیه می‌شود.

POST https://api-proxy.snapp.express/va/v1/product/price
Authorization: Bearer <access_token>
Content-Type: application/json

۳.۷ ارسال عنوان محصول (title)

این endpoint برای اصلاح یا ارسال عنوان نمایشی محصولات فروشگاه استفاده می‌شود. پاسخ موفق شامل 204 No Content خواهد بود.

POST https://api-proxy.snapp.express/va/v1/product/title
Authorization: Bearer <access_token>
Content-Type: application/json

۳.۸ استعلام وضعیت ثبت‌شده (get-info)

این endpoint ابزار اصلی بررسی Drift بین POS و داده ثبت‌شده در پلتفرم است و برای دیباگ اختلاف‌ها استفاده می‌شود.

۳.۹ توصیه‌های عملی برای کاهش ریسک

جمع‌بندی: این APIها ابزار مدیریت ریسک هستند، نه تضمین بی‌خطایی موجودی.

۳.۱۰ ادامه مسیر

رفتن به بخش ۴: سفارش‌ها و Webhook / MQTT