# पेलोड संदर्भ

`Payload` संदेश के लिए संदर्भ जिसका उपयोग [`Notify`](/hi/developer/api-reference/messaging-api-v2/notify/) द्वारा किसी भी गैर-ईमेल चैनल (पुश, एसएमएस, टेलीग्राम, काकाओ, लाइन, वाइबर, व्हाट्सएप) के माध्यम से भेजते समय किया जाता है।

<Aside type="note">
ईमेल के लिए, [ईमेल पेलोड संदर्भ](/hi/developer/api-reference/messaging-api-v2/email-payload-reference/) देखें।
</Aside>

## पेलोड

- `preset` (स्ट्रिंग): इस संदेश पर लागू करने के लिए [पुश प्रीसेट](/hi/product/content/push-presets/) कोड (प्रारूप `XXXXX-XXXXX`)।
- `sms_preset` (स्ट्रिंग): सहेजे गए [SMS प्रीसेट](/hi/product/content/sms-presets/) का कोड (प्रारूप `XXXXX-XXXXX`)। इसका प्रति-लोकेल टेक्स्ट प्रत्येक लोकेल के [`sms.body`](#sms-sms) में हल हो जाता है। किसी दिए गए लोकेल के लिए एक इनलाइन `sms.body` उस लोकेल के लिए प्रीसेट को ओवरराइड करता है। प्रीसेट को संदेश के समान एप्लिकेशन से संबंधित होना चाहिए।
- `content` ([`LocalizedContent`](#localizedcontent)): संदेश सामग्री। `silent` के साथ परस्पर अनन्य।
- `silent` (बूल): एक साइलेंट (केवल-डेटा) पुश भेजें। `content` के साथ परस्पर अनन्य।
- `custom_data` (ऑब्जेक्ट): फ्री-फॉर्म JSON जो क्लाइंट SDK को `u` पैरामीटर के रूप में अग्रेषित किया जाता है।
- `open_action` ([`OpenAction`](#openaction)): जब उपयोगकर्ता अधिसूचना खोलता है तो ट्रिगर की गई कार्रवाई।
- `open_actions` (मैप&lt;प्लेटफ़ॉर्म, `OpenAction`&gt;): `open_action` का प्रति-प्लेटफ़ॉर्म ओवरराइड। कुंजी एक संख्यात्मक `Platform` एनम मान है।
- `voip_push` (बूल): iOS VoIP अधिसूचना।

```json
{
  "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

लोकेल कोड को प्रति-प्लेटफ़ॉर्म सामग्री पर मैप करता है। कुंजियाँ [ISO 639-1](https://www.loc.gov/standards/iso639-2/php/code_list.php) दो-अक्षर कोड हैं (उदाहरण के लिए, `"en"`, `"es"`) और एक कैच-ऑल अनुवाद के लिए विशेष कुंजी `"default"`। ISO 639-1 के अपवाद पारंपरिक और सरलीकृत चीनी के लिए `"zh-Hant"` और `"zh-Hans"` हैं।

```json
{
  "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" }
    }
  }
}
```

### किसी डिवाइस के लिए लोकेल चयन

किसी डिवाइस पर दी गई सामग्री इस क्रम में चुनी जाती है:

1. डिवाइस की भाषा पर सटीक मिलान।
2. कुंजी `"default"`।
3. कुंजी `"en"`।
4. मैप में मौजूद कोई अन्य लोकेल।

कम से कम `"default"` या `"en"` में से एक प्रदान करें ताकि प्रत्येक डिवाइस में एक नियतात्मक फ़ॉलबैक हो। यदि आप प्रति-लोकेल वेरिएंट की अपेक्षा नहीं करते हैं, तो केवल `"default"` भेजें।

प्रत्येक लोकेल प्रविष्टि वैकल्पिक प्रति-प्लेटफ़ॉर्म ब्लॉक के साथ एक `Content` ऑब्जेक्ट है। केवल उन प्लेटफ़ॉर्म को भरें जिन्हें आप लक्षित करते हैं।

| प्लेटफ़ॉर्म ब्लॉक | चैनल |
|---|---|
| `ios` | iOS पुश |
| `android` | Android (FCM) पुश |
| `huawei_android` | Huawei Android पुश |
| `baidu_android` | Baidu Android पुश |
| `mac_os` | macOS पुश |
| `amazon` | Amazon (ADM) पुश |
| `safari` | Safari वेब पुश |
| `chrome` | Chrome वेब पुश |
| `firefox` | Firefox वेब पुश |
| `ie` | Internet Explorer वेब पुश |
| `windows` | Windows पुश (टाइल / टोस्ट / बैज) |
| `telegram` | Telegram संदेश |
| `kakao` | Kakao संदेश |
| `line` | LINE संदेश |
| `viber` | Viber संदेश |
| `whatsapp` | WhatsApp संदेश |
| `sms` | SMS संदेश |

## सामान्य पुश फ़ील्ड

ये फ़ील्ड `ios`, `android`, `huawei_android`, `baidu_android`, `mac_os`, `amazon`, `safari`, `chrome`, और `firefox` ब्लॉक द्वारा साझा किए जाते हैं (समर्थन भिन्न होता है। अप्रयुक्त फ़ील्ड संबंधित प्लेटफ़ॉर्म द्वारा अनदेखा कर दिए जाते हैं)।

- `title` (स्ट्रिंग): अधिसूचना शीर्षक।
- `body` (स्ट्रिंग): अधिसूचना बॉडी।
- `time_to_live` (अवधि, जैसे `"3600s"`): पुश सर्वर को ऑफ़लाइन डिवाइस के लिए अधिसूचना को कितने समय तक बनाए रखना चाहिए।
- `sound` (स्ट्रिंग): ध्वनि फ़ाइल का नाम।
- `sound_enabled` (बूल): ध्वनि सक्षम या दबाएं।
- `badges` (स्ट्रिंग): बैज गणना (iOS) या एनालॉग।
- `root_params` (ऑब्जेक्ट): रॉ प्लेटफ़ॉर्म-विशिष्ट पेलोड ओवरराइड।
- `inbox` ([`Inbox`](#inbox)): [संदेश इनबॉक्स](/hi/developer/guides/message-inbox/mobile-message-inbox/) प्रविष्टि।

```json
{
  "android": {
    "title": "Hello",
    "body": "Tap to view",
    "time_to_live": "3600s",
    "sound": "default",
    "sound_enabled": true,
    "badges": "+1"
  }
}
```

## iOS (`ios`)

- `subtitle` (स्ट्रिंग): iOS अधिसूचना उपशीर्षक।
- `is_critical` (बूल): महत्वपूर्ण अलर्ट (पात्रता की आवश्यकता है)।
- `attachment` (स्ट्रिंग): मीडिया अटैचमेंट का URL।
- `thread_id` (स्ट्रिंग): समूहीकृत सूचनाओं के लिए थ्रेड पहचानकर्ता।
- `trim_content` (बूल): फिट होने के लिए सामग्री को ट्रिम करें।
- `category_id` (स्ट्रिंग): इंटरैक्टिव क्रियाओं के लिए `UNNotificationCategory` पहचानकर्ता।
- `interruption_level` (स्ट्रिंग): `passive`, `active`, `time-sensitive`, या `critical`।
- `collapse_id` (स्ट्रिंग): APNs कोलैप्स पहचानकर्ता। समान `collapse_id` वाली सूचनाएं डिवाइस पर एक दूसरे को प्रतिस्थापित करती हैं।

```json
{
  "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`, `baidu_android`)

- `icon` (स्ट्रिंग): अधिसूचना छोटा आइकन।
- `banner` (स्ट्रिंग): बिग-पिक्चर URL।
- `delivery_priority` (`NORMAL` | `HIGH`): FCM डिलीवरी प्राथमिकता।
- `vibration` (बूल): प्राप्त होने पर कंपन।
- `led_color` (स्ट्रिंग, हेक्स): अधिसूचना LED रंग।
- `icon_background_color` (स्ट्रिंग, हेक्स): आइकन पृष्ठभूमि रंग।
- `show_on_lockscreen` (बूल): लॉक स्क्रीन पर दिखाएं।
- `custom_icon` (स्ट्रिंग): कस्टम आइकन का URL।
- `priority` ([`NotificationPriority`](#notificationpriority-enum)): इन-ट्रे प्राथमिकता।
- `group_id` (स्ट्रिंग): अधिसूचना समूह कुंजी।
- `collapse_key` (स्ट्रिंग): FCM कोलैप्स कुंजी। समान `collapse_key` वाली सूचनाएं डिवाइस ऑफ़लाइन होने पर एक दूसरे को प्रतिस्थापित करती हैं।

```json
{
  "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`)

सामान्य पुश फ़ील्ड के साथ-साथ `subtitle` और `action` (URL जो उपयोगकर्ता द्वारा अधिसूचना पर क्लिक करने पर खुलता है) का उपयोग करता है।

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

## Amazon (`amazon`)

सामान्य पुश फ़ील्ड के साथ-साथ `custom_icon` और `priority` ([`NotificationPriority`](#notificationpriority-enum)) का उपयोग करता है।

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

## Safari (`safari`)

- `action` (स्ट्रिंग): URL जो उपयोगकर्ता द्वारा अधिसूचना पर क्लिक करने पर खुलता है।
- `url_arguments` (स्ट्रिंग की सरणी): Safari URL तर्क जो वेब पुश URL टेम्पलेट में प्रतिस्थापित किए जाते हैं।

```json
{
  "safari": {
    "title": "Hello",
    "body": "Tap to view",
    "action": "https://example.com/promo",
    "url_arguments": ["promo", "2026"]
  }
}
```

## Chrome (`chrome`)

- `icon`, `image` (स्ट्रिंग): छोटे आइकन और बड़े छवि URL।
- `duration` (अवधि): ऑटो-क्लोज टाइमर।
- `button_text1` / `button_url1`, `button_text2` / `button_url2`: दो एक्शन बटन तक।

```json
{
  "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`)

केवल `title`, `body`, `icon`, `root_params`, और `inbox` का उपयोग करता है।

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

## Windows (`windows`)

विंडोज एक अलग आकार का उपयोग करता है:

```json
{
  "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`)

- `body` (स्ट्रिंग): संदेश पाठ।
- `content_variables` (स्ट्रिंग): बॉट-साइड टेम्पलेट के लिए JSON-स्ट्रिंगिफाइड चर।

```json
{
  "telegram": {
    "body": "Hello from Pushwoosh",
    "content_variables": "{\"name\":\"John\"}"
  }
}
```

## Kakao (`kakao`)

- `content` (स्ट्रिंग): संदेश सामग्री।
- `template` (स्ट्रिंग): स्वीकृत टेम्पलेट कोड।
- `content_variables` (स्ट्रिंग): JSON-स्ट्रिंगिफाइड टेम्पलेट चर बाइंडिंग।

```json
{
  "kakao": {
    "content": "Hello from Pushwoosh",
    "template": "welcome_v1",
    "content_variables": "{\"name\":\"John\"}"
  }
}
```

## LINE (`line`)

- `content` (स्ट्रिंग): सादा पाठ बॉडी।
- `template` (स्ट्रिंग): Pushwoosh कंट्रोल पैनल में कॉन्फ़िगर किए गए LINE टेम्पलेट का कोड (छवि, हिंडोला, या फ्लेक्स संदेश भेजने के लिए उपयोग किया जाता है)। समृद्ध सामग्री के लिए, कंट्रोल पैनल में टेम्पलेट को पूर्व-कॉन्फ़िगर करें और इसे यहां संदर्भित करें।

`content` या `template` में से कम से कम एक सेट होना चाहिए।

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

## Viber (`viber`)

एक Viber संदेश या तो एक फ्री-टेक्स्ट बॉडी होता है या एक पूर्व-अनुमोदित लेनदेन संबंधी टेम्पलेट (ओमनी मैसेजिंग / MStat) होता है जिसे आईडी और भाषा द्वारा संदर्भित किया जाता है।

- `body` (स्ट्रिंग): सादा पाठ संदेश। जब `template_id` सेट नहीं होता है तो आवश्यक है।
- `template_id` (स्ट्रिंग): एक पूर्व-अनुमोदित लेनदेन संबंधी टेम्पलेट की आईडी। जब सेट किया जाता है, तो यह `body` पर प्राथमिकता लेता है।
- `template_lang` (स्ट्रिंग): टेम्पलेट लोकेल। जब `template_id` सेट होता है तो आवश्यक है।
- `template_params` (मैप&lt;स्ट्रिंग, स्ट्रिंग&gt;): कुंजी/मान बाइंडिंग जो टेम्पलेट में प्रतिस्थापित की जाती हैं, जैसे `{ "name": "John", "code": "123456" }`।
- `all_devices` (बूल): `false` (डिफ़ॉल्ट) केवल उपयोगकर्ता के प्राथमिक डिवाइस पर वितरित करता है; `true` उपयोगकर्ता के सभी उपकरणों पर वितरित करता है।

`body` या `template_id` में से कम से कम एक सेट होना चाहिए। जब `template_id` सेट होता है, तो `template_lang` आवश्यक होता है।

Viber प्राप्तकर्ताओं को `viber:<phone>` (E.164) के रूप में hwids के रूप में संबोधित करें, उदाहरण के लिए `viber:+1234567890`।

सादा पाठ:

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

लेनदेन संबंधी टेम्पलेट:

```json
{
  "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`)

व्हाट्सएप संदेश मेटा के माध्यम से जाते हैं और मेटा के संदेश नियमों के अधीन होते हैं। मुख्य विभाजन फ्री-फॉर्म टेक्स्ट (केवल उपयोगकर्ता से आने वाले संदेश द्वारा खोले गए 24-घंटे के ग्राहक सेवा विंडो के अंदर वितरित) और स्वीकृत टेम्पलेट्स (आउटबाउंड दीक्षा के लिए और 24-घंटे की खिड़की के बाहर किसी भी संदेश के लिए आवश्यक) के बीच है।

- `content` (स्ट्रिंग): फ्री-फॉर्म संदेश पाठ। मेटा द्वारा केवल 24-घंटे की खिड़की के अंदर वितरित किया जाता है।
- `content_id` (स्ट्रिंग): एक पूर्व-अनुमोदित मेटा टेम्पलेट का नाम (जैसे `"hello_world"`)। आउटबाउंड दीक्षा या 24-घंटे की खिड़की के बाहर किसी भी संदेश के लिए आवश्यक है।
- `language` (स्ट्रिंग): टेम्पलेट लोकेल जो मेटा में स्वीकृत लोकेल से बिल्कुल मेल खाना चाहिए (जैसे `"en_US"`, `"en_GB"`)। केवल `content_id` के साथ ही सार्थक है। यह बाहरी `LocalizedContent` कुंजी से स्वतंत्र है। बाहरी कुंजी एक डिवाइस के लिए सामग्री का चयन करती है, और `language` उस सामग्री के लिए मेटा-टेम्पलेट लोकेल का चयन करती है।
- `content_variables` (स्ट्रिंग): JSON ऑब्जेक्ट जो बॉडी प्लेसहोल्डर्स को मैप करता है, जैसे `"{\"1\":\"John\"}"`।
- `button_url_variables` (स्ट्रिंग): JSON ऑब्जेक्ट जो बटन-URL प्लेसहोल्डर्स को बटन इंडेक्स द्वारा कुंजीबद्ध करता है, जैसे `"{\"0\":\"https://...\"}"`।
- `header_variables` (स्ट्रिंग): JSON ऑब्जेक्ट जो हेडर प्लेसहोल्डर्स को प्रकार द्वारा कुंजीबद्ध करता है, जैसे `"{\"image\":\"https://...\"}"`।

`content` या `content_id` में से कम से कम एक सेट होना चाहिए।

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

## SMS (`sms`)

SMS का प्रत्येक लोकेल के [`Content`](#localizedcontent) के अंदर अपना प्लेटफ़ॉर्म ब्लॉक होता है, `ios`, `android`, और अन्य मैसेजिंग चैनलों के साथ।

- `body` (स्ट्रिंग): लोकेल के लिए SMS टेक्स्ट। जब `sms` ब्लॉक मौजूद होता है तो आवश्यक है।

टेक्स्ट प्रदान करने के दो तरीके हैं:

- **इनलाइन** — `localized_content` में प्रति लोकेल `sms.body` सेट करें।
- **एक प्रीसेट से** — पेलोड-स्तरीय [`sms_preset`](#payload) को सहेजे गए [SMS प्रीसेट](/hi/product/content/sms-presets/) के कोड (प्रारूप `XXXXX-XXXXX`) पर सेट करें। इसकी प्रति-लोकेल सामग्री प्रत्येक लोकेल के लिए `sms.body` में हल हो जाती है जिसे प्रीसेट परिभाषित करता है। एक लोकेल के लिए एक इनलाइन `sms.body` उस लोकेल के लिए प्रीसेट को ओवरराइड करता है, इसलिए आप एक प्रीसेट का पुन: उपयोग कर सकते हैं और फिर भी व्यक्तिगत भाषाओं को बदल सकते हैं।

```json
{
  "payload": {
    "sms_preset": "XXXXX-XXXXX",
    "content": {
      "localized_content": {
        "default": { "sms": { "body": "Your order has shipped." } },
        "es":      { "sms": { "body": "Tu pedido ha sido enviado." } }
      }
    }
  }
}
```

## OpenAction
उपयोगकर्ता द्वारा संदेश खोलने पर की जाने वाली क्रिया को परिभाषित करता है।

ठीक एक:

- `rich_media` ([`RichMedia`](#richmedia)): एक [रिच मीडिया](/hi/product/content/in-apps/) पृष्ठ खोलें।
- `deep_link`: एक डीप लिंक खोलें: `{ "code": "flow-code", "params": { "key": "value" } }`।
- `link` ([`Link`](#link)): एक URL खोलें।

```json
{
  "open_action": {
    "deep_link": { "code": "flow-code", "params": { "promo": "summer" } }
  }
}
```

डीपलिंक URL और `params` मान [लिक्विड वैयक्तिकरण](/hi/developer/guides/personalization/liquid-templates/) सिंटैक्स का समर्थन करते हैं — डीप लिंक खोले जाने से पहले अभिव्यक्तियों को हल किया जाता है।

### RichMedia


```json
{ "code": "XXXXX-XXXXX" }        // रिच मीडिया कोड द्वारा
{ "url":  "https://..." }        // रिमोट URL द्वारा
```

### Link


```json
{
  "url": "https://example.com/promo",
  "shortener": "BITLY"
}
```

`shortener` `NONE` (डिफ़ॉल्ट) या `BITLY` है।

## इनबॉक्स

संदेश इनबॉक्स में संदेश कैसे दिखाई देता है, इसे कॉन्फ़िगर करता है।

```json
{
  "image_url": "https://cdn.example.com/inbox.png",
  "expiration_date": "2026-05-15T00:00:00Z"
}
```

- `image_url` (स्ट्रिंग): इनबॉक्स प्रविष्टि में दिखाई गई छवि।
- `expiration_date` (टाइमस्टैम्प): जब प्रविष्टि इनबॉक्स से हटा दी जाती है।

## NotificationPriority एनम
लक्ष्य डिवाइस पर अधिसूचना प्राथमिकता को नियंत्रित करता है, `PRIORITY_MIN` (सबसे कम) से `PRIORITY_MAX` (उच्चतम) तक।

- `PRIORITY_UNSPECIFIED`
- `PRIORITY_MIN`
- `PRIORITY_LOW`
- `PRIORITY_DEFAULT`
- `PRIORITY_HIGH`
- `PRIORITY_MAX`

<Aside type="caution">
हमेशा `priority` को उपरोक्त स्ट्रिंग मानों में से एक के रूप में भेजें। API एनम के संख्यात्मक समकक्षों (1-5, उपरोक्त क्रम से मेल खाते हुए) को भी स्वीकार करता है, लेकिन वह मैपिंग एक आंतरिक प्रोटॉबफ विवरण है, न कि एक समर्थित अनुबंध — इस पर भरोसा न करें।

एक अपरिचित `priority` मान (एक गलत वर्तनी वाला स्ट्रिंग या एक आउट-ऑफ-रेंज संख्या) को अस्वीकार नहीं किया जाता है: API इसे चुपचाप छोड़ देता है, और अधिसूचना को एक त्रुटि वापस करने के बजाय बिना किसी `priority` फ़ील्ड के भेजा जाता है।
</Aside>

## उदाहरण: एक सेगमेंट को पुश भेजें

```bash
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"
    }
  }'
```

## उदाहरण: उपयोगकर्ता आईडी द्वारा लेनदेन संबंधी पुश

```bash
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"
    }
  }'
```