| APIs / Push API | |
The Localytics Push API currently exposes push as a single endpoint at https://messaging.localytics.com/v2/push/:app_id, which accepts the HTTP POST method.
POST /v2/push/:app_id
The payload is defined with a top level key of messages. Within messages is an array of one or more comma separated message objects.
You can send transactional messages to four types of user targets: audience_id, profile, customer_id, or broadcast. To locate the audience_id, export your audience files.
| Target type | Description |
|---|---|
| audience_id | Must be an integer. Sends a push notification to a specific audience |
| customer_id | Must be a string. Sends a push message to a specific customer ID |
| profile | Sends a push message to a user who has specific profile attributes, defined as a JSON object |
| broadcast | Must be the string "broadcast". Sends a broadcast push message to all of your app users |
Here's an example of the general payload structure.
{
request_id: “1234-1234-1234-1234”, // Optional
campaign_key: null, // Required. Specify "null" if you don't want to use a campaign key.
target_type: "customer_id" // Replace with “customer_id” or "audience_id" or "profile" or
"broadcast"
messages: [
{
alert: "Mohana, your pizza is on its way!",
target: "XYZ" // Replace with the customer ID, the audience ID, or { … profile rules… }
ios : { // Optional block specific to iOS
sound: "default.wav" // Optional
badge: 1 // Optional
extra: {} // Optional field for any custom key/value data that your app is configured to interpret
}
android : { // Optional block specific to android
extra: {} // Optional field for any custom key/value data that your app is configured to interpret
}
]}
Here's an example of a payload targeting all users with specific profile information. You will need to specify the type of each profile attribute as a string, an integer, or a date. Dates should be formatted yyyy-mm-dd. You can use logical operators to join profile values based on the profile data type.
{ "profile": {
criteria: [{
key: "cats", // Profile key
scope: "Organization" // Profile scope: "LocalyticsApplication" or "Organization"
type: "string", // Data: "string", "int", or "date"
op: "in", // Operator. Reference the table below for choices
values: ["Ofelia", "Simba"] // Profile values
},
<another criteria>],
op: "and" // Outer operator for additional Profile attributes: "and" or "or
}
}
| Data type | Operators available |
|---|---|
| string | ['in'] |
| int | [ 'in', '<', '<=', '>', '>=', 'between' ] |
| date | [ 'in', '<=', '>=', 'between' ] |
Here's an example broadcast payload.
{
request_id: “1234-1234-1234-1234”, // Optional
campaign_key: null, // Required, but specify null if you want no campaign key
target_type: "broadcast"
messages: [
{
alert: “The Bruins win the Stanley Cup!"
}
]
}
The following limits apply to data uploaded to the Localytics Push API:
| Property | Description |
|---|---|
| messages | An array of message payloads which specify the push messages that should be delivered |
| message_attributes(optional) | Optional, platform-specific attributes to be added to the message request body. |
| target_type | "audience_id", "profile", or "broadcast" |
| app_id | The Localytics application ID for the application sending the message |
| campaign_key | Specifies the campaign identifier and creates a performance report in your account’s dashboard. Set as null if no performance report is needed. |
| request_id | Specify to uniquely identify your request. Typically, you will send a GUID/UUID in this field. Localytics will handle automatically de-duping messages that are received for the same request_id. |
| Property | Description |
|---|---|
| target | The specific Customer ID, Audience ID, or profile rules you want to target. If your target is broadcast, pass "null" or do not specify a target. |
| alert | The text of the push message to send |
| iOS | Optional. Use to include iOS-specific information |
| android | Optional. Use to include Android-specific information |
| sound (optional) | iOS only. The name of the sound file to play. This file must be part of the app package |
| badge (optional) | iOS only. The unread ‘badge’ number to show |
| extra (optional) | Any additional key value data to send along to the app. Your app must be configured to understand how to parse the key/value information. This can be useful for things like deep-linking into particular parts of the app |