# سرویس محصول در صورتی که بخواهید لیست محصولات شما به بازاریابان نمایش داده شود یا برای دسته‌بندی‌ها و محصولات مختلف پورسانت‌های متفاوتی را از طریق پنل کاربری اعمال کنید؛ نیاز است که محصولات فروشگاه خود را درون‌ریزی کنید. می‌توانید از طریق پیاده‌سازی وب سرویس یا از طریق ست کردن وب هوک این کار را انجام دهید. ## **وب سرویس** ### پیش‌نیازها برای استفاده، نیاز به ارسال **Bearer** توکن است. از طریق ارتباط با پشتیبانی می‌توانید توکن فروشگاه خود را دریافت کنید. ### آدرس پایه ارسال درخواست‌ها ``` https://core.affili.ir/services/products ``` ### API محصولات طبق توضیحات داده شده در جدول زیر، از API تعریف شده می‌توانید برای ایمپورت محصولات فروشگاه خود در افیلی استفاده کنید.
**نوع عملیات****نوع درخواست****توضیحات****uri**
درون‌ریزیPOSTدرون‌ریزی محصولات؛ می‌توانید حداکثر ۱۰۰۰ محصول را در هر بار فراخوانی سرویس درون‌ریزی کنید. برای بروزرسانی هم می‌توانید از همین وب سرویس استفاده کنید./import
#### درون‌ریزی محصولات ##### آدرس ارسال درخواست ``` POST https://core.affili.ir/services/products/import ``` ##### قالب درخواست درون‌ریزی ```json { "products": [ object (Product), ... ] } ``` ##### پارامترها
**نام****اجباری****توضیحات**
productsبلی[**Array of Product Object**](#bkmrk-product) لیست محصولات
## **وب هوک** کافی است API‌ای با قالب پاسخی مطابق زیر آماده کرده و در اختیار پشتیبانی قرار دهید. تا کار ست کردن وب هوک توسط پشتیبانی برای فروشگاه شما انجام شود. ```json { "data": { "products": [ object (Product), ... ] }, "meta": { "page": object (Page) } } ``` ### پارامترها
products[**Product Object**](#bkmrk-product) لیست محصولات فروشگاه
page[**Page Object**](#bkmrk-page) اطلاعات مربوط به صفحه دریافتی شامل شماره صفحه، تعداد آیتم‌ها در هر صفحه و ...
### اعمال فیلتر پیاده‌سازی بخش فیلتر نیازمند پیروی از قوانینی است که در ادامه به شرح آن‌ها خواهیم پرداخت. ۱- قابلیت اعمال فیلتر روی تمامی آیتم‌‌های آبجکت محصول و دسته‌بندی باید فعال باشد. ۲- برای اعمال فیلتر روی مقادیر **old\_price** ،**price** و **last\_update** که می‌توانند به صورت بازه‌ای از مقادیر باشند؛ از پیشوند **\_min** برای تعریف پارامتر ارسالی حداقل و از پیشوند **\_max** برای تعریف پارامتر ارسالی حداکثر استفاده می‌شود. به طور مثال برای اعمال فیلتر روی قیمت محصول در صورتی که پارامتر **min\_price** از سمت افیلی ارسال شود به معنای فیلتر محصولاتی است که قیمت آنها بزرگتر مساوی مقدار پارامتر **min\_price** باشد. برای پارامتر **max\_price** هم به طور مشابه منظور فیلتر محصولاتی است که قیمت آنها کمتر مساوی مقدار پارامتر **max\_price** باشد. ### صفحه‌بندی برای پیمایش در صفحات از پارامتر **page** برای ارسال شماره صفحه مدنظر و از پارامتر **per\_page** برای تعیین تعداد محصولات هر صفحه استفاده می‌شود. ## **موجودیت‌ها** ### product #### قالب JSON ```json { "pid": string, "name": string, "url": string, "price": double, "old_price": double, "in_stock": boolean, "images": [ string, ... ], "categories": [ object (Category) ], "created_at": dateTime, "updated_at": datetime } ``` #### پارامترها
pid**String** شناسه یکتای محصول در وبسایت فروشگاه
name**String** نام محصول
url**String** آدرس صفحه محصول در وبسایت فروشگاه
price**Double** قیمت محصول
old\_price**Double** قیمت قدیمی محصولی؛ در صورتی که محصول قیمت قدیمی ندارد مقدار این پارامتر برابر با **null** می‌شود.
in\_stock**Boolean** وضعیت موجود بودن محصول؛ که می‌تواند یکی از مقادیر 0، 1، true یا false را داشته باشد.
images**Array** آرایه‌ای از آدرس عکس‌های محصول
categories
[**Array of Category Object**](#bkmrk-category) لیست دسته‌بندی‌های محصول
created\_at**DateTime** تاریخ ایجاد محصول
updated\_at**DateTime** تاریخ آخرین بروزرسانی محصول
### Category #### قالب JSON ```json { "cid": string, "name": string, "url": string, "parent_cid": string, "is_primary": boolean } ``` #### پارامترها
cid**String** شناسه یکتای دسته‌بندی در وبسایت فروشگاه
name**String** نام دسته‌بندی
url**String** آدرس صفحه دسته‌بندی در وبسایت فروشگاه
parent\_cid**String** دسته والد؛ در صورتی که دسته‌بندی، دسته والد ندارد مقدار این پارامتر برابر با **null** می‌شود.
is\_primary**Boolean** دسته‌بندی شاخص؛ در صورتی که این دسته‌بندی، دسته‌بندی شاخص محصول است مقدار این پارامتر برابر با ۱ یا true و در غیر این صورت برابر با ۰ یا false می‌شود.
### Page #### قالب JSON ```json { "current": integer, "per": integer, "last": integer, "total": integer } ``` #### پارامترها
current**Integer** شماره صفحه فعلی
per**Integer** تعداد محصولات در هر صفحه، مقدار این پارامتر می‌تواند حداکثر ۱۰۰۰ باشد.
last**Integer** شماره آخرین صفحه
total**Integer** تعداد کل محصولات