جستجوی کالا
سوپر اپلیکیشن مهراد
این سند دو endpoint را توضیح میدهد که پذیرنده روی سرور خود پیادهسازی میکند تا کالاهایش در جستجوی کالای اپلیکیشن مهراد نمایش داده شود. در این ارتباط مهراد request ارسال میکند و پذیرنده پاسخ میدهد.
نمای کلی
کاربرجستجو یا پیمایش فهرست کالاها در اپلیکیشن مهراد
مهرادارسال request فهرست کالا به endpoint پذیرنده
پذیرندهبازگرداندن یک صفحه از کالاها و تعداد کل نتایج
کاربرانتخاب یک کالا
مهرادارسال request جزئیات کالا با product_id
پذیرندهبازگرداندن جزئیات و تنوعهای کالا
پیشنیازها
| مورد | توضیح |
|---|---|
| آدرس فهرست کالا | آدرس HTTPS که request فهرست کالا به آن ارسال میشود |
| آدرس جزئیات کالا | آدرس HTTPS شامل عبارت {product_id}؛ به جای این عبارت، ID کالا قرار میگیرد |
| ثبت پذیرنده در مهراد | آدرسها روی پذیرندهٔ ثبتشده در مهراد تنظیم میشوند |
این آدرسها در فرآیند راهاندازی به مهراد اعلام میشوند. نمونه:
https://shop.example.com/products/mehrad/
https://shop.example.com/products/{product_id}/mehrad/فهرست endpointها
| endpoint | کاربرد | authentication |
|---|---|---|
GET {آدرس فهرست کالا} | فهرست کالاها همراه با جستجو، فیلتر و صفحهبندی | بدون header |
GET {آدرس جزئیات کالا} | جزئیات یک کالا و تنوعهای آن | بدون header |
مهراد requestها را بدون header Authorization ارسال میکند. هر دو endpoint باید فقط دادههای عمومی کالا را برگردانند.
قواعد مشترک
- پاسخ موفق باید کد ۲۰۰ و body از نوع JSON داشته باشد.
- پاسخ باید در کمتر از ۱۰ ثانیه ارسال شود.
- مبالغ به ریال و به صورت عدد صحیح ارسال میشوند.
rateامتیاز کالا از ۰ تا ۵ است.- فیلدی که در جدولها اختیاری است میتواند ارسال نشود یا
nullباشد.
endpoint فهرست کالا
GET https://shop.example.com/products/mehrad/?limit=10&offset=0&title=ساعت&is_available=1این request هنگام جستجو و پیمایش صفحهبهصفحهٔ فهرست کالاها در اپلیکیشن ارسال میشود.
پارامترها
مقادیر boolean به صورت 1 و 0 ارسال میشوند. به جز limit و offset، سایر پارامترها اختیاریاند. اگر پارامتری ارسال نشود، فیلتر آن اعمال نمیشود.
limitintegerالزامیپیشفرض: 10
offsetintegerالزامیپیشفرض: 0
titlestringis_ availablebooleanis_ domesticbooleanhas_ fast_ shippingbooleanhas_ in_ store_ purchasebooleanmin_ priceintegermax_ priceintegerResponse
total_ itemsinteger | nullاختیاریdataarray of objectsفیلدهای هر عضو لیست data10 فیلد
idstringtitlestringimage_ thumbnail_ urlsarray of stringsاختیاریmin_ available_ priceinteger | nullاختیاریmax_ available_ priceinteger | nullاختیاریis_ availableboolean | nullاختیاریhas_ fast_ shippingboolean | nullاختیاریhas_ in_ store_ purchaseboolean | nullاختیاریis_ domesticboolean | nullاختیاریratenumber | nullاختیاری{
"total_items": 37,
"data": [
{
"id": "260",
"title": "ساعت مچی عقربهای کوارتز مردانه مدل EM610",
"image_thumbnail_urls": [
"https://shop.example.com/media/products/260_thumb.webp"
],
"min_available_price": 2975000,
"max_available_price": 2975000,
"is_available": true,
"has_fast_shipping": false,
"has_in_store_purchase": true,
"is_domestic": true,
"rate": 5
}
]
}endpoint جزئیات کالا
GET https://shop.example.com/products/260/mehrad/به جای {product_id} در آدرس، id کالا از فهرست کالا قرار میگیرد. این request پارامتر query ندارد.
اگر کالایی با این ID در سیستم پذیرنده وجود ندارد، پاسخ آن باید کد ۴۰۴ داشته باشد.
Response
data آرایهای است که کالا تنها عضو آن است.
dataarray of objectsفیلدهای هر عضو لیست data9 فیلد
idstringurlstring | nullاختیاریtitlestringratenumber | nullاختیاریis_ domesticboolean | nullاختیاریspecificationsarray of objectsاختیاریفیلدهای هر عضو لیست specifications2 فیلد
titlestringattributesarray of objectsاختیاریفیلدهای هر عضو لیست attributes2 فیلد
namestringvaluestringbold_ attributesarray of objectsاختیاریفیلدهای هر عضو لیست bold_attributes2 فیلد
namestringvaluestringvariantsarray of objectsاختیاریفیلدهای هر عضو لیست variants10 فیلد
idstringurlstring | nullاختیاریtitlestringskustring | nullاختیاریkey_ propertiesarray of objectsاختیاریفیلدهای هر عضو لیست key_properties3 فیلد
namestringvaluestringhex_ codestring | nullاختیاریmin_ available_ priceinteger | nullاختیاریmax_ available_ priceinteger | nullاختیاریhas_ fast_ shippingboolean | nullاختیاریhas_ in_ store_ purchaseboolean | nullاختیاریmediasarray of objectsاختیاری{
"data": [
{
"id": "260",
"url": "https://shop.example.com/products/260",
"title": "ساعت مچی عقربهای کوارتز مردانه مدل EM610",
"rate": 5,
"is_domestic": true,
"specifications": [
{
"title": "مشخصات کلی",
"attributes": [{ "name": "وزن", "value": "180 گرم" }]
}
],
"bold_attributes": [{ "name": "برند", "value": "الگانس" }],
"shared_medias": [
{
"type": "IMAGE",
"url": "https://shop.example.com/media/products/260.webp",
"thumbnail_url": "https://shop.example.com/media/products/260_thumb.webp"
}
],
"variants": [
{
"id": "260",
"url": "https://shop.example.com/products/260",
"title": "مشکی",
"sku": "MS-21695508",
"key_properties": [{ "name": "رنگ", "value": "مشکی", "hex_code": "#000000" }],
"min_available_price": 2975000,
"max_available_price": 2975000,
"has_fast_shipping": false,
"has_in_store_purchase": true,
"medias": []
}
]
}
]
}نکات پیادهسازی
- فیلترها و صفحهبندی باید در سمت پذیرنده اعمال شوند.
total_itemsباید تعداد کل نتایج همان فیلترها باشد، نه تعداد کالاهای همین صفحه.- ID کالا باید پایدار باشد؛
idبازگشتی در فهرست کالا باید در endpoint جزئیات کالا همان کالا را برگرداند. - آدرس تصاویر و رسانهها باید کامل و از طریق HTTPS در دسترس باشد.
- ارتباط باید فقط روی HTTPS برقرار شود.
چکلیست پیادهسازی
- پیادهسازی endpoint فهرست کالا با پارامترهای
limit،offsetو فیلترها - بازگرداندن
total_itemsبرابر تعداد کل نتایج فیلترشده - پیادهسازی endpoint جزئیات کالا با
{product_id}در آدرس - بازگرداندن کد ۴۰۴ برای کالای ناموجود در endpoint جزئیات کالا
- ارسال مبالغ به ریال و
rateبین ۰ و ۵ - پاسخ در کمتر از ۱۰ ثانیه
- اعلام آدرسهای فهرست و جزئیات کالا به مهراد