یک پیام پوش نوتیفیکیشن به فهرستی از توکنهای مشخص ارسال میکند. توکن هر کاربر از طریق اسکریپت
نجوا (window.NAJVA.getUserToken() یا رویداد najvaUserSubscribed) روی وبسایت شما در دسترس
قرار میگیرد — به راهنمای دریافت توکن کاربر نگاه کنید.
درخواست باید multipart/form-data باشد.
نامعتبر بودن یک توکن، کل درخواست را رد نمیکند: در نمونهٔ پاسخ زیر یکی از توکنها وضعیت
InvalidToken با cost: 0 دارد در حالی که پاسخ کلی همچنان ۲۰۰ است — وضعیت هر توکن جداگانه در
Entries.tokens[] گزارش میشود، نه با کد خطای HTTP.
احراز هویت
pushApiKeyAuthکلید API را در هدر apiKey بفرستید (نه Authorization: Bearer سرویسهای پیامک). طبق راهنمای
دریافت کلید API، این همان کلید «api key پیامک و پوشنوتیفیکیشن» در تب «api key»
پنل توسعهدهندگان است — پیامک و پوش یک کلید مشترک دارند.
apiKey: YOUR_API_KEYکلید خود را کجا پیدا کنم؟
کلید API را از پنل کاربری خود دریافت کنید، آن را در یک متغیر محیطی روی سرور نگه دارید و هرگز در کد سمت کاربر (مرورگر یا اپلیکیشن موبایل) قرار ندهید.
بدنهٔ درخواست
multipart/form-dataالزامیفرم چندبخشی. فیلدهای تودرتو (`message.title`، `message.notification_click.click_url`، ...) با نقطه از هم جدا میشوند.
| نام | نوع | الزامی | توضیح |
|---|---|---|---|
website_id* | string | الزامی | شناسهٔ سرویس/اسکریپت پوش شما در پنل نجوا. نمونه 45100 |
ttl | string | اختیاری | عمر پیام به ساعت — بعد از این مدت اگر کاربر آفلاین بود، پیام تحویل داده نمیشود. نمونه 24 |
date | string· date-time | اختیاری | زمان ارسال. اگر خالی بماند، ارسال فوری است (رفتار دقیق برای ارسال زمانبندیشده روی صفحهٔ منبع تأیید نشده). نمونه 2025-07-21T21:04:45+03:30قالبdate-time |
tokens[]* | array<string> | الزامی | فهرست توکنهای گیرنده. هر توکن را در یک فیلد جداگانه با همین نام ( |
message.title* | string | الزامی | عنوان نوتیفیکیشن. نمونه transactional sample |
message.body* | string | الزامی | متن نوتیفیکیشن. نمونه this is the body of transactional sample |
message.icon | string· binary | اختیاری | آیکون کوچک نوتیفیکیشن (فایل تصویری). قالب binary |
message.image | string· binary | اختیاری | تصویر بزرگ نوتیفیکیشن (فایل تصویری). قالب binary |
message.notification_click.click_url | string· uri | اختیاری | آدرسی که با کلیک روی نوتیفیکیشن باز میشود. نمونه https://google.comقالبuri |
message.button_1.title | string | اختیاری | متن دکمهٔ اول (اختیاری). وجود نمونه Button One |
message.button_1.click_url | string· uri | اختیاری | آدرس مقصد دکمهٔ اول. نمونه https://najva.comقالبuri |
نمونهٔ درخواست
{ "website_id": "45100", "ttl": "24", "date": "2025-07-21T21:04:45+03:30", "tokens[]": [ "21a4548a-574d-4425-9af2-6a0e70dae649", "9615c2ea-9d2d-4343-b880-4e79cb115384" ], "message.title": "transactional sample", "message.body": "this is the body of transactional sample", "message.icon": "string", "message.image": "string", "message.notification_click.click_url": "https://google.com", "message.button_1.title": "Button One", "message.button_1.click_url": "https://najva.com"}پاسخها
ساختار پاسخ
| نام | نوع | الزامی | توضیح |
|---|---|---|---|
Message | string | اختیاری | نمونه Request approved. |
Entries | object | اختیاری | |
request_id | string· uuid | اختیاری | قالب uuid |
tokens | array<PushTokenResult> | اختیاری | نتیجهٔ ارسال به یک توکن مشخص. |
نمونهٔ پاسخ
{ "Message": "Request approved.", "Entries": { "request_id": "4faac313-f3b2-4f5e-b9b9-dabc7e3f5d4c", "tokens": [ { "token": "21a4548a-574d-4425-9af2-6a0e70dae649", "status": "InvalidToken", "cost": 0 }, { "token": "9615c2ea-9d2d-4343-b880-4e79cb115384", "status": "Scheduled", "cost": 25 } ] }}