বিষয়বস্তুতে যান

পেলোড রেফারেন্স

যেকোনো নন-ইমেল চ্যানেলের (পুশ, SMS, টেলিগ্রাম, Kakao, LINE, Viber, WhatsApp) মাধ্যমে পাঠানোর সময় Notify দ্বারা ব্যবহৃত Payload মেসেজের জন্য রেফারেন্স।

পেলোড

Anchor link to
  • preset (string): এই মেসেজে প্রয়োগ করার জন্য পুশ প্রিসেট কোড (ফরম্যাট XXXXX-XXXXX)।
  • sms_preset (string): একটি সংরক্ষিত SMS প্রিসেট-এর কোড (ফরম্যাট XXXXX-XXXXX)। এর প্রতি-লোকেল টেক্সট প্রতিটি লোকেল-এর sms.body-তে সমাধান করা হয়। একটি নির্দিষ্ট লোকেল-এর জন্য একটি ইনলাইন sms.body সেই লোকেল-এর জন্য প্রিসেটটিকে ওভাররাইড করে। প্রিসেটটি অবশ্যই মেসেজের মতো একই অ্যাপ্লিকেশনের হতে হবে।
  • content (LocalizedContent): মেসেজের কন্টেন্ট। silent-এর সাথে পারস্পরিকভাবে স্বতন্ত্র।
  • silent (bool): একটি সাইলেন্ট (শুধুমাত্র ডেটা) পুশ পাঠান। content-এর সাথে পারস্পরিকভাবে স্বতন্ত্র।
  • custom_data (object): ক্লায়েন্ট SDK-তে u প্যারামিটার হিসাবে ফরোয়ার্ড করা ফ্রি-ফর্ম JSON।
  • open_action (OpenAction): ব্যবহারকারী নোটিফিকেশন খুললে ট্রিগার হওয়া অ্যাকশন।
  • open_actions (map<Platform, OpenAction>): open_action-এর প্রতি-প্ল্যাটফর্ম ওভাররাইড। কী হলো একটি সংখ্যাসূচক Platform enum মান।
  • voip_push (bool): iOS VoIP নোটিফিকেশন।
{
"payload": {
"preset": "XXXXX-XXXXX",
"content": { "localized_content": { "default": { "ios": { "title": "Hello", "body": "Tap to view" } } } },
"custom_data": { "order_id": "42" },
"open_action": { "link": { "url": "https://example.com/promo" } }
}
}

LocalizedContent

Anchor link to

লোকেল কোড → প্রতি-প্ল্যাটফর্ম কন্টেন্ট ম্যাপ করে। কী-গুলো হলো ISO 639-1 দুই-অক্ষরের কোড (উদাহরণস্বরূপ, "en", "es") এবং একটি ক্যাচ-অল অনুবাদের জন্য বিশেষ কী "default"। ISO 639-1 এর ব্যতিক্রম হলো প্রথাগত এবং সরলীকৃত চীনা ভাষার জন্য "zh-Hant" এবং "zh-Hans"

{
"localized_content": {
"default": {
"ios": { "title": "Hello", "body": "Tap to view" },
"android": { "title": "Hello", "body": "Tap to view" }
},
"es": {
"ios": { "title": "Hola", "body": "Toca para ver" },
"android": { "title": "Hola", "body": "Toca para ver" }
}
}
}

একটি ডিভাইসের জন্য লোকেল নির্বাচন

Anchor link to

একটি ডিভাইসে ডেলিভার করা কন্টেন্ট এই ক্রমে বাছাই করা হয়:

  1. ডিভাইসের ভাষার সাথে সঠিক মিল।
  2. কী "default"
  3. কী "en"
  4. ম্যাপে উপস্থিত অন্য যেকোনো লোকেল।

"default" বা "en" এর মধ্যে অন্তত একটি প্রদান করুন যাতে প্রতিটি ডিভাইসের একটি ডিটারমিনিস্টিক ফলব্যাক থাকে। যদি আপনি প্রতি-লোকেল ভ্যারিয়েন্ট আশা না করেন, তবে শুধুমাত্র "default" পাঠান।

প্রতিটি লোকেল এন্ট্রি একটি Content অবজেক্ট যা ঐচ্ছিক প্রতি-প্ল্যাটফর্ম ব্লক সহ থাকে। শুধুমাত্র আপনি যে প্ল্যাটফর্মগুলিকে টার্গেট করছেন সেগুলি পূরণ করুন।

প্ল্যাটফর্ম ব্লকচ্যানেল
iosiOS পুশ
androidAndroid (FCM) পুশ
huawei_androidHuawei Android পুশ
mac_osmacOS পুশ
amazonAmazon (ADM) পুশ
safariSafari ওয়েব পুশ
chromeChrome ওয়েব পুশ
firefoxFirefox ওয়েব পুশ
ieInternet Explorer ওয়েব পুশ
windowsWindows পুশ (টাইল / টোস্ট / ব্যাজ)
telegramTelegram মেসেজ
kakaoKakao মেসেজ
lineLINE মেসেজ
viberViber মেসেজ
whatsappWhatsApp মেসেজ
smsSMS মেসেজ

সাধারণ পুশ ফিল্ড

Anchor link to

এই ফিল্ডগুলো ios, android, huawei_android, mac_os, amazon, safari, chrome, এবং firefox ব্লক দ্বারা শেয়ার করা হয় (সাপোর্ট ভিন্ন হতে পারে। অব্যবহৃত ফিল্ডগুলো সংশ্লিষ্ট প্ল্যাটফর্ম দ্বারা উপেক্ষা করা হয়)।

  • title (string): নোটিফিকেশনের শিরোনাম।
  • body (string): নোটিফিকেশনের বডি।
  • time_to_live (duration, যেমন "3600s"): একটি অফলাইন ডিভাইসের জন্য পুশ সার্ভার কতক্ষণ নোটিফিকেশনটি ধরে রাখবে।
  • sound (string): সাউন্ড ফাইলের নাম।
  • sound_enabled (bool): সাউন্ড সক্রিয় বা দমন করুন।
  • badges (string): ব্যাজ সংখ্যা (iOS) বা তার সমতুল্য।
  • root_params (object): র প্ল্যাটফর্ম-নির্দিষ্ট পেলোড ওভাররাইড।
  • inbox (Inbox): Message Inbox এন্ট্রি।
{
"android": {
"title": "Hello",
"body": "Tap to view",
"time_to_live": "3600s",
"sound": "default",
"sound_enabled": true,
"badges": "+1"
}
}
  • subtitle (string): iOS নোটিফিকেশনের সাবটাইটেল।
  • is_critical (bool): ক্রিটিক্যাল অ্যালার্ট (এনটাইটেলমেন্ট প্রয়োজন)।
  • attachment (string): একটি মিডিয়া অ্যাটাচমেন্টের URL।
  • thread_id (string): গ্রুপ করা নোটিফিকেশনের জন্য থ্রেড আইডেন্টিফায়ার।
  • trim_content (bool): ফিট করার জন্য কন্টেন্ট ট্রিম করুন।
  • category_id (string): ইন্টারেক্টিভ অ্যাকশনের জন্য UNNotificationCategory আইডেন্টিফায়ার।
  • interruption_level (string): passive, active, time-sensitive, বা critical
  • collapse_id (string): APNs কলাপ্স আইডেন্টিফায়ার। একই collapse_id সহ নোটিফিকেশনগুলো ডিভাইসে একে অপরকে প্রতিস্থাপন করে।
{
"ios": {
"title": "Hello",
"body": "Tap to view",
"subtitle": "New update",
"attachment": "https://cdn.example.com/image.png",
"interruption_level": "active",
"thread_id": "promo"
}
}

Android (android, huawei_android)

Anchor link to
  • icon (string): নোটিফিকেশনের ছোট আইকন।
  • banner (string): বড় ছবির URL।
  • delivery_priority (NORMAL | HIGH): FCM ডেলিভারি প্রায়োরিটি।
  • vibration (bool): প্রাপ্তির সময় ভাইব্রেশন।
  • led_color (string, hex): নোটিফিকেশন LED-এর রঙ।
  • icon_background_color (string, hex): আইকনের পটভূমির রঙ।
  • show_on_lockscreen (bool): লক স্ক্রিনে দেখান।
  • custom_icon (string): একটি কাস্টম আইকনের URL।
  • priority (NotificationPriority): ইন-ট্রে প্রায়োরিটি।
  • group_id (string): নোটিফিকেশন গ্রুপ কী।
  • collapse_key (string): FCM কলাপ্স কী। ডিভাইস অফলাইন থাকাকালীন একই collapse_key সহ নোটিফিকেশনগুলো একে অপরকে প্রতিস্থাপন করে।
{
"android": {
"title": "Hello",
"body": "Tap to view",
"icon": "ic_notification",
"banner": "https://cdn.example.com/banner.png",
"led_color": "#FF0000",
"priority": "PRIORITY_HIGH",
"delivery_priority": "HIGH"
}
}

macOS (mac_os)

Anchor link to

সাধারণ পুশ ফিল্ডের সাথে subtitle এবং action (ব্যবহারকারী নোটিফিকেশনে ক্লিক করলে যে URL খোলা হয়) ব্যবহার করে।

{
"mac_os": {
"title": "Hello",
"body": "Tap to view",
"subtitle": "New update",
"action": "https://example.com/promo"
}
}

Amazon (amazon)

Anchor link to

সাধারণ পুশ ফিল্ডের সাথে custom_icon এবং priority (NotificationPriority) ব্যবহার করে।

{
"amazon": {
"title": "Hello",
"body": "Tap to view",
"custom_icon": "https://cdn.example.com/icon.png",
"priority": "PRIORITY_HIGH"
}
}

Safari (safari)

Anchor link to
  • action (string): ব্যবহারকারী নোটিফিকেশনে ক্লিক করলে যে URL খোলা হয়।
  • url_arguments (array of string): Safari URL আর্গুমেন্ট যা ওয়েব পুশ URL টেমপ্লেটে প্রতিস্থাপিত হয়।
{
"safari": {
"title": "Hello",
"body": "Tap to view",
"action": "https://example.com/promo",
"url_arguments": ["promo", "2026"]
}
}

Chrome (chrome)

Anchor link to
  • icon, image (string): ছোট আইকন এবং বড় ছবির URL।
  • duration (duration): স্বয়ংক্রিয়-বন্ধ টাইমার।
  • button_text1 / button_url1, button_text2 / button_url2: দুটি পর্যন্ত অ্যাকশন বাটন।
{
"chrome": {
"title": "Hello",
"body": "Tap to view",
"icon": "https://cdn.example.com/icon.png",
"image": "https://cdn.example.com/banner.png",
"duration": "20s",
"button_text1": "Open",
"button_url1": "https://example.com/promo"
}
}

Firefox (firefox)

Anchor link to

শুধুমাত্র title, body, icon, root_params, এবং inbox ব্যবহার করে।

{
"firefox": {
"title": "Hello",
"body": "Tap to view",
"icon": "https://cdn.example.com/icon.png"
}
}

Windows (windows)

Anchor link to

Windows একটি ভিন্ন আকার ব্যবহার করে:

{
"windows": {
"type": "TOAST",
"template": { "title": "Hello", "body": "Tap to view" },
"tag": "promo",
"cache": true,
"time_to_live": "3600s"
}
}
  • type হলো TILE, TOAST, বা BADGE
  • template (স্ট্রাকচার্ড) বা raw ({ "content": "<raw xml>" }) — ঠিক একটি।

Telegram (telegram)

Anchor link to
  • body (string): মেসেজের টেক্সট।
  • content_variables (string): বট-সাইড টেমপ্লেটের জন্য JSON-স্ট্রিংগিফাইড ভেরিয়েবল।
{
"telegram": {
"body": "Hello from Pushwoosh",
"content_variables": "{\"name\":\"John\"}"
}
}

Kakao (kakao)

Anchor link to
  • content (string): মেসেজের কন্টেন্ট।
  • template (string): অনুমোদিত টেমপ্লেট কোড।
  • content_variables (string): JSON-স্ট্রিংগিফাইড টেমপ্লেট ভেরিয়েবল বাইন্ডিং।
{
"kakao": {
"content": "Hello from Pushwoosh",
"template": "welcome_v1",
"content_variables": "{\"name\":\"John\"}"
}
}

LINE (line)

Anchor link to
  • content (string): প্লেইন টেক্সট বডি।
  • template (string): Pushwoosh কন্ট্রোল প্যানেলে কনফিগার করা একটি LINE টেমপ্লেটের কোড (ছবি, ক্যারোসেল, বা ফ্লেক্স মেসেজ পাঠানোর জন্য ব্যবহৃত হয়)। রিচ কন্টেন্টের জন্য, কন্ট্রোল প্যানেলে টেমপ্লেটটি আগে থেকে কনফিগার করুন এবং এখানে তার রেফারেন্স দিন।

content বা template-এর মধ্যে অন্তত একটি সেট করতে হবে।

{
"line": {
"content": "Hello from Pushwoosh",
"template": "promo_carousel"
}
}

Viber (viber)

Anchor link to

একটি Viber মেসেজ হয় একটি ফ্রি-টেক্সট বডি অথবা একটি পূর্ব-অনুমোদিত ট্রানজ্যাকশনাল টেমপ্লেট (Omni Messaging / MStat) যা আইডি এবং ভাষা দ্বারা রেফারেন্স করা হয়।

  • body (string): প্লেইন টেক্সট মেসেজ। template_id সেট না থাকলে এটি আবশ্যক।
  • template_id (string): একটি পূর্ব-অনুমোদিত ট্রানজ্যাকশনাল টেমপ্লেটের আইডি। সেট করা হলে, এটি body-এর উপর অগ্রাধিকার পায়।
  • template_lang (string): টেমপ্লেট লোকেল। template_id সেট করা হলে এটি আবশ্যক।
  • template_params (map<string, string>): কী/মান বাইন্ডিং যা টেমপ্লেটে প্রতিস্থাপিত হয়, যেমন { "name": "John", "code": "123456" }
  • all_devices (bool): false (ডিফল্ট) শুধুমাত্র ব্যবহারকারীর প্রাথমিক ডিভাইসে ডেলিভার করে; true ব্যবহারকারীর সমস্ত ডিভাইসে ডেলিভার করে।

body বা template_id-এর মধ্যে অন্তত একটি সেট করতে হবে। যখন template_id সেট করা হয়, তখন template_lang আবশ্যক।

Viber প্রাপকদের viber:<phone> (E.164) ফরম্যাটে hwids হিসাবে ঠিকানা দিন, উদাহরণস্বরূপ viber:+1234567890

প্লেইন টেক্সট:

{
"viber": {
"body": "Hello from Pushwoosh"
}
}

ট্রানজ্যাকশনাল টেমপ্লেট:

{
"viber": {
"template_id": "e3dec4a0-c063-4b0f-96d5-cf9d629a7abe",
"template_lang": "en",
"template_params": {
"name": "John",
"code": "123456",
"expires_in": "5 minutes"
},
"all_devices": false
}
}

WhatsApp (whatsapp)

Anchor link to

WhatsApp মেসেজ Meta-এর মাধ্যমে যায় এবং Meta-এর মেসেজিং নিয়মাবলীর অধীন। মূল বিভাজনটি হলো ফ্রি-ফর্ম টেক্সট (শুধুমাত্র ব্যবহারকারীর কাছ থেকে ইনবাউন্ড মেসেজ দ্বারা খোলা ২৪-ঘণ্টার গ্রাহক পরিষেবা উইন্ডোর মধ্যে ডেলিভার করা হয়) এবং অনুমোদিত টেমপ্লেট (আউটবাউন্ড ইনিসিয়েশন এবং ২৪-ঘণ্টার উইন্ডোর বাইরের যেকোনো মেসেজের জন্য আবশ্যক)।

  • content (string): ফ্রি-ফর্ম মেসেজ টেক্সট। Meta দ্বারা শুধুমাত্র ২৪-ঘণ্টার উইন্ডোর মধ্যে ডেলিভার করা হয়।
  • content_id (string): একটি পূর্ব-অনুমোদিত Meta টেমপ্লেটের নাম (যেমন "hello_world")। আউটবাউন্ড ইনিসিয়েশন বা ২৪-ঘণ্টার উইন্ডোর বাইরের যেকোনো মেসেজের জন্য আবশ্যক।
  • language (string): টেমপ্লেট লোকেল যা Meta-তে অনুমোদিত লোকেলটির সাথে হুবহু মিলতে হবে (যেমন "en_US", "en_GB")। শুধুমাত্র content_id-এর সাথে অর্থবহ। এটি বাইরের LocalizedContent কী থেকে স্বাধীন। বাইরের কী একটি ডিভাইসের জন্য কন্টেন্ট নির্বাচন করে, এবং language সেই কন্টেন্টের জন্য Meta-টেমপ্লেট লোকেল নির্বাচন করে।
  • content_variables (string): বডি প্লেসহোল্ডার ম্যাপ করা JSON অবজেক্ট, যেমন "{\"1\":\"John\"}"
  • button_url_variables (string): বাটন-URL প্লেসহোল্ডার ম্যাপ করা JSON অবজেক্ট যা বাটন ইনডেক্স দ্বারা কী করা হয়, যেমন "{\"0\":\"https://...\"}"
  • header_variables (string): হেডার প্লেসহোল্ডার ম্যাপ করা JSON অবজেক্ট যা টাইপ দ্বারা কী করা হয়, যেমন "{\"image\":\"https://...\"}"

content বা content_id-এর মধ্যে অন্তত একটি সেট করতে হবে।

{
"whatsapp": {
"content_id": "hello_world",
"language": "en_US",
"content_variables": "{\"1\":\"John\"}"
}
}

প্রতিটি লোকেল-এর Content-এর ভিতরে SMS-এর নিজস্ব প্ল্যাটফর্ম ব্লক রয়েছে, ios, android, এবং অন্যান্য মেসেজিং চ্যানেলের পাশাপাশি।

  • body (string): লোকেল-এর জন্য SMS টেক্সট। sms ব্লক উপস্থিত থাকলে এটি আবশ্যক।

টেক্সট সরবরাহ করার দুটি উপায় আছে:

  • ইনলাইনlocalized_content-এ প্রতি লোকেল-এ sms.body সেট করুন।
  • একটি প্রিসেট থেকে — পেলোড-স্তরের sms_preset-কে একটি সংরক্ষিত SMS প্রিসেট-এর কোডে (ফরম্যাট XXXXX-XXXXX) সেট করুন। এর প্রতি-লোকেল কন্টেন্ট প্রতিটি লোকেল-এর জন্য sms.body-তে সমাধান করা হয় যা প্রিসেটটি সংজ্ঞায়িত করে। একটি লোকেল-এর জন্য একটি ইনলাইন sms.body সেই লোকেল-এর জন্য প্রিসেটটিকে ওভাররাইড করে, তাই আপনি একটি প্রিসেট পুনরায় ব্যবহার করতে পারেন এবং এখনও পৃথক ভাষাগুলি পরিবর্তন করতে পারেন।
{
"payload": {
"sms_preset": "XXXXX-XXXXX",
"content": {
"localized_content": {
"default": { "sms": { "body": "Your order has shipped." } },
"es": { "sms": { "body": "Tu pedido ha sido enviado." } }
}
}
}
}

একটি sms ব্লকে subject এবং file_urls যোগ করলে মেসেজটি একটি MMS-এ পরিণত হয়। শুধুমাত্র AbleMobile-এর একটি MMS এন্ডপয়েন্ট আছে — অন্যান্য SMS প্রদানকারীরা উভয় ফিল্ড উপেক্ষা করে এবং শুধুমাত্র প্লেইন-টেক্সট body ডেলিভার করে।

  • subject (string): MMS সাবজেক্ট। file_urls-এ অন্তত একটি এন্ট্রি প্রয়োজন — অ্যাটাচমেন্ট ছাড়া একটি সাবজেক্ট প্রত্যাখ্যান করা হয়। ৪০টি ASCII অক্ষর পর্যন্ত, অথবা যদি সাবজেক্টে নন-ASCII অক্ষর থাকে তবে ১৩টি অক্ষর।
  • file_urls (array of string): ৩টি পর্যন্ত অ্যাটাচমেন্ট URL। প্রতিটি অবশ্যই একটি অ্যাবসোলিউট https URL হতে হবে যা .jpg বা .gif-এ শেষ হয় — .jpeg এবং .png ভ্যালিডেশন দ্বারা প্রত্যাখ্যান করা হয়, এমনকি একটি আসল JPEG বা PNG ফাইলের জন্যও, কারণ প্রদানকারী সেগুলি ডিকোড করতে পারে না। প্রতিটি ফাইল অবশ্যই ২০০ KB বা তার কম হতে হবে; কোনো অ্যাটাচমেন্ট ভারী হলে AbleMobile পুরো সেন্ডটি প্রত্যাখ্যান করে।
  • message_at (int): file_urls-এর মধ্যে ইনডেক্স (0-ভিত্তিক) যার পরে SMS বডি টেক্সট দেখানো হয়।

subject এবং file_urls Liquid পার্সোনালাইজেশন সমর্থন করে, body-এর মতোই।

{
"sms": {
"body": "Your order has shipped.",
"subject": "Order update",
"file_urls": [
"https://cdn.example.com/shipping-label.jpg",
"https://cdn.example.com/tracking-map.gif"
],
"message_at": 1
}
}

OpenAction

Anchor link to

ব্যবহারকারী মেসেজটি খুললে যে অ্যাকশনটি সঞ্চালিত হবে তা নির্ধারণ করে।

ঠিক একটি:

  • rich_media (RichMedia): একটি Rich Media পেজ খুলুন।
  • deep_link: একটি ডিপ লিঙ্ক খুলুন: { "code": "flow-code", "params": { "key": "value" } }
  • link (Link): একটি URL খুলুন।
{
"open_action": {
"deep_link": { "code": "flow-code", "params": { "promo": "summer" } }
}
}

ডিপলিঙ্ক URL এবং params মানগুলি Liquid পার্সোনালাইজেশন সিনট্যাক্স সমর্থন করে — ডিপ লিঙ্ক খোলার আগে এক্সপ্রেশনগুলি সমাধান করা হয়।

{ "code": "XXXXX-XXXXX" } // Rich Media কোড দ্বারা
{ "url": "https://..." } // রিমোট URL দ্বারা
{
"url": "https://example.com/promo",
"shortener": "BITLY"
}

shortener হলো NONE (ডিফল্ট) বা BITLY

Message Inbox-এ মেসেজটি কীভাবে প্রদর্শিত হবে তা কনফিগার করে।

{
"image_url": "https://cdn.example.com/inbox.png",
"expiration_date": "2026-05-15T00:00:00Z"
}
  • image_url (string): ইনবক্স এন্ট্রিতে দেখানো ছবি।
  • expiration_date (timestamp): যখন এন্ট্রিটি ইনবক্স থেকে সরানো হবে।

NotificationPriority enum

Anchor link to

টার্গেট ডিভাইসে নোটিফিকেশনের প্রায়োরিটি নিয়ন্ত্রণ করে, PRIORITY_MIN ( সর্বনিম্ন) থেকে PRIORITY_MAX (সর্বোচ্চ) পর্যন্ত।

  • PRIORITY_UNSPECIFIED
  • PRIORITY_MIN
  • PRIORITY_LOW
  • PRIORITY_DEFAULT
  • PRIORITY_HIGH
  • PRIORITY_MAX

উদাহরণ: একটি সেগমেন্টে পুশ পাঠান

Anchor link to
Terminal window
curl -X POST https://api.pushwoosh.com/messaging/v2/notify \
-H "Authorization: Token YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"segment": {
"application": "XXXXX-XXXXX",
"platforms": ["IOS", "ANDROID"],
"code": "active_users",
"payload": {
"content": {
"localized_content": {
"en": {
"ios": { "title": "Hello", "body": "Hello, world!" },
"android": { "title": "Hello", "body": "Hello, world!" }
},
"es": {
"ios": { "title": "¡Hola!", "body": "¡Hola, mundo!" },
"android": { "title": "¡Hola!", "body": "¡Hola, mundo!" }
}
}
},
"open_action": { "link": { "url": "https://example.com/promo" } }
},
"schedule": { "at": "2026-05-01T12:00:00Z" },
"message_type": "MESSAGE_TYPE_MARKETING"
}
}'

উদাহরণ: ইউজার আইডি দ্বারা ট্রানজ্যাকশনাল পুশ

Anchor link to
Terminal window
curl -X POST https://api.pushwoosh.com/messaging/v2/notify \
-H "Authorization: Token YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"transactional": {
"application": "XXXXX-XXXXX",
"platforms": ["IOS", "ANDROID"],
"users": { "list": ["customer-42"] },
"payload": {
"content": {
"localized_content": {
"default": {
"ios": { "title": "Your order", "body": "Order #42 has shipped." },
"android": { "title": "Your order", "body": "Order #42 has shipped." }
}
}
},
"custom_data": { "order_id": "42" }
},
"schedule": { "at": "2026-05-01T12:00:00Z" },
"message_type": "MESSAGE_TYPE_TRANSACTIONAL"
}
}'