Skip to content

divar-ir/kenar-docs

Repository files navigation




کنار دیوار بستری برای افزودن اطلاعات و خدمات به دیوار است. با ارائهٔ خدمات خود در کنار دیوار، به کاربران دیوار کمک کنید تجربهٔ خرید و فروش ساده‌تر، مطمئن‌تر و دلنشین‌تری را تجربه کنند. در کنار دیوار می‌توانید:

  • به آگهی‌گذاران کمک کنید اطلاعات تکمیلی در آگهی‌های خود درج کنند.
  • با همکاری آگهی‌گذاران خدمات تکمیلی روی آگهی‌ها ارائه دهید.
  • با ارائهٔ خدمات در چت، تعامل کاربران را در راستای معاملهٔ سریع‌تر و مطمئن‌تر تسهیل کنید.

🚀 برای شروع کار در کنار دیوار، در پنل کنار دیوار ثبت‌نام کنید.



🚧 ‌‌APIهای آزمایشی 🚧

برخی از APIهای کنار دیوار در حال حاضر در مرحلهٔ آزمایشی هستند. در این مرحله ممکن است قواعد، سیاست‌ها و ابزارهای آزمایشی در بازه‌های زمانی کوتاه تغییر کنند. این تغییرات از طریق ایمیلی که در پنل کنار ثبت کرده‌اید به اطلاع شما می‌رسد. در صورت استفاده از این API ها، آمادگی به روزرسانی و تغییر در بازه‌های ۲ هفته‌ای را داشته باشید. آدرس APIهای آزمایشی در مستندات به جای نسخه‌بندی (مثلاً v2) با experimental شروع می‌شود.


به دلیل سرعت تغییرات، ممکن است در بازه‌های زمانی خاصی اطلاعات ارائه شده در مورد این APIها در این مخزن نیز ناقص یا نیازمند بروزرسانی باشند.


☎️ تماس با ما

  • پاسخ سوالتان را در این مستندات پیدا نکرده‌اید؟ سوالات خود را اینجا بپرسید.
  • برای افزونه‌ی خود درخواست تغییر یا انتشار دارید؟ در توسعه‌ی افزونه‌ی خود دچار مشکلی شده‌اید؟ درخواست خود را در پنل کنار دیوار ثبت کنید.
  • برای طرح سایر مشکلات، موضوعات، نظرات، پیشنهادات، و ... با ما از طریق آدرس ایمیل kenar.support@divar.ir تماس بگیرید.

شروع سریع

برای ارسال اولین درخواست به API های کنار دیوار این مراحل را بروید.

۱. در پنل کنار دیوار وارد شوید.
۲. یک برنامهٔ تستی بسازید، یا از مدیر یک برنامهٔ دیگر بخواهید شما را به برنامه‌اش اضافه کند.
۳. برای برنامهٔ مورد نظرتان کلید API بسازید.
۴. در قسمت آگهی‌های تستی یک آگهی بسازید تا بتوانید راحت‌تر تست کنید.
۵. می‌توانید فهرست درخواست‌ها را ببینید یا این کالکشن را دانلود کنید و در ابزارهایی مثل Postman وارد کنید و شروع کنید.

پروژه‌های قدرت‌گرفته از کنار دیوار

مستر دیاگ

ریتینو

مثال ساده

بازی ایکس او

نمای کلی و پیش‌نیاز‌ها

خدمات مختلف در کنار دیوار در قالب «برنامه‌» یا «اپلیکیشن» (Application) ها به کاربران ارائه می‌شوند. کاربران در نقاط مشخصی از دیوار مثل صفحهٔ آگهی یا چت، می‌توانند به درخواست خودشان با برنامهٔ شما در قالب یک برنامهٔ وب (Web Application)تعامل کنند، در صورت نیاز اجازه‌های لازم را به شما بدهند، خدمات مورد نظر را دریافت کنند و به دیوار برگردند.

برنامه‌های متصل به کنار دیوار با هر زبانی می‌توانند توسعه یابند، اما برقراری ارتباطشان با کنار دیوار از طریق درخواست‌های HTTP خواهد‌بود.

جزییات برنامه‌(ها)ی خود را در صفحهٔ اپ‌ها در پنل کنار دیوار می‌توانید ببینید. اطلاعات بیشتر در مورد مدیریت برنامه‌ها را اینجا بخوانید.


خدمات روی آگهی‌ها 📜

در حال حاضر خدماتی که از طریق صفحات مربوط به آگهی می‌توانید ارائه دهید، در قالب زیر است:

۱. برنامه‌های مرتبط با آگهی (از نظر دسته، شهر یا موارد دیگر) در قسمت مدیریت آگهی به کاربر پیشنهاد می‌شود.
۲. کاربر پس از انتخاب برنامهٔ شما، به آدرس مشخص شده هدایت می‌شود و وب‌اپلیکیشن شما در اپ دیوار باز خواهد شد.
۳. در صورت نیاز می‌توانید در وب‌اپ خود اطلاعات آگهی، اطلاعات کاربر یا آگهی‌های کاربر (با کسب اجازهٔ کاربر) را از دیوار دریافت کنید.
۴. به علاوه می‌توانید از کاربر اجازهٔ درج محتوا در آگهی مورد نظر را نیز بگیرید. این محتوا از ویجت‌های دیوار مثل متن، عکس، امتیاز و ... تشکیل می‌شود.
۵. پس از پایان کار، برنامه باید کاربر را به دیوار برگرداند.
۶. پس از انتشار، کاربران آگهی‌بیننده می‌توانند با محتوای درج‌شده تعامل داشته‌باشند (برای مثال، با استفاده از دکمه‌های اضافه شده، آدرس‌های مشخص شده در برنامهٔ شما را باز کرده و با وب‌اپلیکیشن شما تعامل کنند). دقت کنید که حتما بعد از پایان تعامل با کاربر، وی را به دیوار بازگردانید.

مسیر ارائهٔ خدمات در آگهی


💡 مثال
یک سرویس پرداخت آنلاین، بعد از ثبت آگهی کالای نو، با فروشنده هماهنگ کرده، اطلاعات و مجوزهای لازم را از وی می‌گیرد، سپس با افزودن دکمهٔ پرداخت آنلاین به آگهی، به آگهی‌‌بینندگان امکان پرداخت سریع و از طریق درگاه را فراهم می‌آورد.


ارائه خدمات به بیننده آگهی

در این حالت سرویس شما به عنوان سرویس سمت بیننده آگهی ثبت می‌شود، در هنگام بازدید آگهی به کاربر معرفی خواهد شد و اگر کاربر بیننده انتخاب کند به سایت شما منتقل خواهد شد و اطلاعات مورد نیاز بیندده آگهی را در اختیار او قرار می‌دهید
برای اطلاعات دقیق تر اینجا را مطالعه کنید

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



📖 اطلاعات بیشتر در مورد افزونه‌های آگهی‌ها را اینجا بخوانید.



خدمات در چت 💬

ارائهٔ خدمات در چت دیوار به طور کلی در قالب زیر انجام می‌شود:

۱. برنامه‌های مرتبط با آگهی و چت کاربران به آنها پیشنهاد داده‌می‌شود.
۲. پس از انتخاب برنامهٔ شما توسط کاربر، درخواستی از طرف دیوار به آدرسی که از قبل توسط شما در پنل مشخص شده ارسال می‌شود و کاربر به آدرسی که در پاسخ به درخواست دیوار می‌دهید، هدایت می‌شود.
۳. در این مرحله شما می‌توانید اطلاعات آگهی یا اطلاعات کاربر را (با اجازهٔ کاربر) از دیوار بگیرید.
۴. به علاوه، در این مرحله می‌توانید با اجازهٔ کاربر، در چت‌ پیام ارسال کنید.
۵. شما می‌توانید به پیام‌های ارسالی در چت، دکمه‌هایی برای طرفین چت ضمیمه کنید که کاربران با استفاده از آن‌ها، با برنامهٔ شما تعامل نمایند.
۶. بعد از پایان تعامل، برنامهٔ شما باید کاربر را به دیوار برگرداند.

مسیر ارائهٔ خدمات در چت

💡 مثال
برنامهٔ پرداخت به کاربر خریدار پیشنهاد شده و وی برنامه را باز کرده، به آدرس ارسالی هدایت می‌شود. برنامه اطلاعات آگهی و شمارهٔ کاربر را دریافت کرده و از طریق درگاه بانکی، مبلغ را از وی دریافت می‌کند. برنامهٔ پرداخت سپس پیامی در چت ارسال می‌کند که ذیل آن دکمه‌ای برای فروشنده قرار گرفته تا از طریق آن، مبلغ را دریافت کند. فروشنده با زذ دکمه به آدرس مشخص شده هدایت می‌شود، برنامه شمارهٔ تماس وی را از دیوار دریافت کرده و سپس با دریافت اطلاعات بانکی، مبلغ را به فروشنده منتقل می‌کند.


💡 مثال
برنامهٔ تنظیم قرارداد به کاربر پیشنهاد می‌شود. وی از طریق برنامه نمونهٔ قرارداد دلخواه را انتخاب کرده، اطلاعات مربوط به خویش را وارد کرده و به شکل دیجیتال امضاء می‌کند. برنامه لینک مربوط به این قرارداد را به همراه پیامی در چت برای طرف دیگر ارسال می‌کند، کاربر دیگر با باز کردن لینک مشخص شده قرارداد را پر نموده و به صورت دیجیتال امضاء می‌کند، سپس برنامه نسخهٔ امضاء شده را برای طرفین در چت ارسال می‌کند.



📖 اطلاعات بیشتر در مورد افزونه‌های چت را اینجا بخوانید.



تعامل با سرویس‌های دیوار

برای استفاده از قابلیت‌های کنار دیوار باید درخواست‌های HTTP به آدرس مربوطه ارسال کنید. هر درخواست باید شامل یک کلید API متعلق به برنامهٔ شما باشد تا دیوار از طریق آن هویت شما را احراز کند. برای ایجاد کلید برای برنامهٔ خود به [صفحهٔ کلیدها در پنل کنار][پنل کنار‌ » کلیدها] مراجعه کنید.


🔒 نکات امنیتی

🔑 کلید را در هدر x-api-key قرار دهید. درخواست‌های بدون کلید رد خواهند شد.
🙈 در پنل کنار، کلید API را فقط در زمان ساخت می‌توانید ببینید. در نگهداری از آن دقت کنید.
🤹 یک اپلیکیشن می‌تواند کلیدهای مختلف با دسترسی‌های متفاوت داشته باشد.
🛂 مطمئن شوید که هر کلید کمینهٔ دسترسی‌های مورد نیاز را دارد.
🕰️ کلیدها را به شکل دوره‌ای و منظم پاک کرده و با کلید‌های جدید جایگزین کنید.
🔥 هر اپلیکیشن می‌تواند فقط یک کلید برای دریافت اجازه‌های مختلف از کاربر داشته باشد.



📖 برای اطلاعات بیشتر در مورد امنیت کلیدها اینجا را بخوانید. برای اطلاعات بیشتر در مورد کلیدهای API اینجا را بخوانید.



برخی قابلیت‌ها، مثل دریافت اطلاعات شخصی کاربران یا افزودن محتوا به آگهی، نیازمند دریافت اجازه از کاربر هستند. در کنار دیوار، این فرآیند بر مبنای استاندارد OAuth 2.0 انجام می‌شود. برای کار با این استاندارد، در زبان‌ها و فریم‌ورک‌های مختلف، ابزارهای متنوعی وجود دارند که برخی از آن‌ها را می‌توانید اینجا ببینید. برای اطلاعات بیشتر در این مورد، اینجا را بخوانید.


محیط تست

  • برای تست خدمات روی آگهی‌ها اینجا را بخوانید.
  • برای تست خدمات در چت [اینجا را بخوانید][راهنما » افزونه‌های چت »‌ تست].
  • برای اتصال یک آدرس عمومی و قابل دسترس در اینترنت به localhost خود، می‌توانید از سرویس‌هایی مثل ngrok یا Pinggy یا Loophole استفاده کنید.

فهرست درخواست‌ها

در این قسمت فهرست ‌درخواست‌ها، پارامترها و دسترسی‌های لازم برای هر کدام را می‌بینید. جزییات بیشتر در مورد هر درخواست را در صفحهٔ جزییات مربوط به درخواست مورد نظر می‌توانید بیابید.\

همهٔ آدرس‌های زیر با https://api.divar.ir/v${v}/open-platform شروع می‌شوند.

v endpoint method توضیحات دسترسی‌های لازم برای اپ دسترسی‌های احراز باز لازم مستندات
1 /finder/post/{{token}} GET دریافت اطلاعات یک آگهی GET_POST - اطلاعات آگهی
1 /finder/user-posts GET دریافت آگهی‌های یک کاربر GET_USER_POSTS USER_POSTS_GET آگهی‌های کاربر
2 /finder/posts POST جستجوی آگهی بر اساس شهر و محله، دسته، کلیدواژه SEARCH_POST - جستجو در آگهی‌ها
1 /users POST دریافت اطلاعات تماس یک کاربر USER_RETRIEVE USER_PHONE اطلاعات کاربر
2 /addons/user/{{phone}} POST درج افزونه برای همهٔ آگهی‌های یک کاربر USER_ADDON_CREATE USER_ADDON_CREATE درج افزونه‌ی کاربر
1 /addons/user/{{id}} DELETE حذف یک افزونهٔ درج شده از همهٔ آگهی‌های یک کاربر USER_ADDON_CREATE USER_ADDON_CREATE حذف افزونه کاربر
1 /semantic/user/{{phone}} POST درج اطلاعات احراز به یک کاربر USER_SEMANTIC_CREATE USER_VERIFICATION_CREATE درج اطلاعات معنایی کاربر
1 /semantic/user/{{phone}} DELETE حذف اطلاعات احراز درج شده برای یک کاربر USER_SEMANTIC_DELETE - حذف اطلاعات معنایی کاربر
1 /payment-ticket/validate POST بررسی معتبر بودن تیکت پرداخت - - بررسی صحت تیکت پرداخت
2 /events/subscriptions POST ایجاد هوک مطلع شدن از رویدادها EVENTS_REGISTER_SUBSCRIPTION - رویداد‌ها
2 /conversations/{{conversation-id}}/messages POST ارسال پیام در یک چت CHAT_SEND_MESSAGE_OAUTH CONVERSATION_SEND_MESSAGE CHAT_SUPPLIER_ALL_CONVERSATIONS_MESSAGE_SEND ارسال پیام در چت
1 /assets/category GET فهرست دسته‌ها - - مقادیر
1 /assets/city GET فهرست شهرها - - مقادیر
1 /assets/district/{{city}} GET فهرست همهٔ محله‌ها یا محله‌های یک شهر با تنظیم شهر در آدرس - - مقادیر
1 /assets/brand-model/light GET فهرست برندمدل‌ها در دستهٔ خودروی سواری - - مقادیر
1 /assets/body-status GET فهرست نام‌های مربوط به وضعیت بدنه برای دستهٔ خودروی سواری - - مقادیر
1 /assets/color/light GET فهرست رنگ‌ها در دستهٔ خودروی سواری - - مقادیر
1 /assets/brand-model/mobile-phones GET فهرست برندمدل‌ها در دستهٔ گوشی موبایل - - مقادیر
1 /assets/color/mobile-phones GET فهرست رنگ‌ها در دستهٔ گوشی موبایل - - مقادیر
1 /assets/internal-storage GET فهرست نام‌ها و مقدار مربوط به حافظهٔ داخلی در دسته‌های مرتبط دیجیتال - - مقادیر
1 /assets/ram-memory GET فهرست نام‌ها و مقدار مربوط به حافظهٔ RAM در دسته‌های مرتبط دیجیتال - - مقادیر

احراز باز

برای ارسال درخواست‌هایی که نیاز به دریافت مجوز از کاربر دارد از OAuth استفاده کنید. فرایند در یافت کلید دسترسی را در ادامه می‌بینید. جزییات اسکو‌پ‌های دسترسی را در مستندات هر درخواست و همچنین صفحهٔ اسکوپ‌ها می‌توانید ببینید

گام اول (درخواست اجازه از کاربر)

Redirect https://api.divar.ir/oauth2/auth

نام پارامتر مقدار توضیحات
response_type code مقدار بازگشتی بعد از ریدایرکت کاربر از صفحهٔ احراز باز دیوار به صفحهٔ شما که در پارامتر redirect_uri مشخص می‌کنید
client_id نام یکتای برنامهٔ شما که در قسمت مدیریت برنامه‌ٔ پنل کنار دیوار می‌توانید ببینید
redirect_uri آدرسی از برنامهٔ شما که کاربر بعد از صدور (یا رد) اجازه‌های درخواستی به آن هدایت شود. (این آدرس باید URL encoded باشد، در فهرست آدرس‌های مجاز برنامهٔ شما در پنل کنار ثبت شده‌باشد و هیچ پارامتری در آن نباشد.)
scope جازه‌های مورد نیاز برای دریافت از کاربر که با اسپیس (‍‍" ") از هم جدا شدند.
state ک مقدار دلخواه که در بازگشت کاربر به اپلیکیشن شما مجدد در پارامترهای URL قرار می‌گیرد.

گام دوم (بازگشت به برنامهٔ شما)

کاربر به آدرس redirect_uri که در گام اول مشخص کردید با پارامترهای زیر ریدایرکت می‌شود.

نام پارامتر مقدار توضیحات
code code اگر کاربر با درخواست اجازهٔ شما موافقت کرده‌باشد، این مقدار را خواهید داشت. در غیر این صورت می‌توانید خطای متناسب به کاربر نمایش دهید.
state مقداری که در پارامتر state در بخش قبل قرار دادید را عیناً این قسمت دریافت می‌کنید.

گام سوم (دریافت توکن)

در صورت موافقت کاربر و دریافت code در هنگام بازگشت به برنامه، می‌توانید با درخواست زیر access token دریافت کنید. دقت شود در این درخواست هدر Content-Type حتما باید application/x-www-form-urlencoded باشد.

POST https://api.divar.ir/oauth2/token

{
  "code": "c87sDtaqmWwgis7dYyukMqy6KAArNUFkukAPW8O90GmiEJkdmSTWH4KjSkNUP6FZ",
  "client_id": "{{app_slug}}",
  "client_secret": "{{client_secret}}",
  "grant_type": "authorization_code",
  "redirect_uri": "your redirect_uri"
}
نام پارامتر مقدار توضیحات
code code اگر کاربر با درخواست اجازهٔ شما موافقت کرده‌باشد، این مقدار را خواهید داشت. در غیر این صورت می‌توانید خطای متناسب به کاربر نمایش دهید.
redirect_uri <redirect_uri> با همان مقداری که برای ریکوئست اول (گرفتن کد در گام اول) قرار داده شده است پر شود.

دریافت اطلاعات یک آگهی

دسترسی سریع