Skip to content

Presets API

A push preset is a reusable push notification template — the same object you build in the Control Panel’s push editor. This API manages push presets only; SMS, WhatsApp, Kakao, LINE, and Viber presets each have their own dedicated preset service, not covered here.

Use a preset’s code to send it through Notify (payload preset) or a Customer Journey Send push point.

https://rpc-api.svc-nue.pushwoosh.com

All endpoints are served over HTTPS. Requests and responses use application/json unless noted otherwise.

Authentication

Anchor link to

Every request must include an Authorization header with your Server API token:

Authorization: Api YOUR_API_TOKEN

Conventions

Anchor link to
  • Field naming: request bodies and query/path parameters accept lowerCamelCase (for example, sendType, localizedProperties, searchByName) — the server unmarshals either casing. Responses are always marshaled using the proto field names, in snake_case (localized_properties, platform_properties, per_page, and so on). The response examples and the Preset object reference below use that casing.
  • code: every preset response carries its own code, generated on Create. Pass this code to Get, Update, UpdatePartial, Delete, Clone, and to the messaging/journey APIs above.
  • Platform keys: the platforms and open_actions maps are keyed by the numeric device type code (1 for iOS, 3 for Android, and so on). platform_properties is keyed by the platform’s enum name instead (IOS, ANDROID, BAIDU_ANDROID, HUAWEI_ANDROID, OSX — the only five platforms it covers).
  • Unpopulated fields: Get, Create, and Clone responses include every field of the Preset object, even when empty or zero-valued. List returns a reduced field set — see List below. Update and UpdatePartial return no preset fields at all — see the caution in their sections.

Error responses

Anchor link to
HTTP statusMeaning
400 Bad RequestInvalid argument — a required field is missing or malformed, or a precondition failed (for example, cloning without a name).
401 UnauthorizedMissing or invalid Authorization header.
403 ForbiddenThe application or preset does not belong to the caller’s account.
404 Not FoundThe preset or application was not found.
500 Internal Server ErrorUnexpected server-side failure.

Delete on a preset still used by a running or paused journey’s Send push point also returns 400 Bad Request (a FailedPrecondition on the wire) — not 409. Remove the preset from the journey first.

MethodPathDescription
POST/api/presetsCreate a new push preset
GET/api/presetsList an application’s push presets
GET/api/presets/{code}Get a single push preset
PUT/api/presets/{code}Update a push preset (full overwrite)
PUT/api/presets/{code}:partialUpdate a push preset (partial)
POST/api/presets/{code}:cloneClone a push preset
DELETE/api/presets/{code}Delete a push preset

Creates a new push preset in an application and returns it with its generated code.

POST /api/presets

Request body

Anchor link to
ParameterTypeRequiredDescription
applicationstringYesThe application code to create the preset in.
namestringYesPreset name.
sendTypestringNoChannel of the preset (for example push).
isV2booleanNoPins the preset’s origin flag. Omit to default to true (v2); set false only when reproducing a legacy v1 preset.

All other fields — localized content, platforms, deep link, inbox, categories, and so on — are shared with Update and documented once in the Preset object reference below.

Request example
Anchor link to
{
"application": "XXXXX-XXXXX",
"name": "20% discount",
"platforms": { "1": true, "3": true },
"localizedContent": {
"default": "Get your 20% discount right now",
"es": "Consigue tu 20% de descuento ahora mismo"
},
"localizedTitle": { "default": "Hi there" },
"openAction": { "link": { "url": "https://example.com" } },
"categories": ["promo"]
}

Returns { "preset": { ... } }, the created Preset object.

Lists an application’s push presets — a reduced field set, not the full object — with paging, ordering, and filtering by name or category.

GET /api/presets

Query parameters

Anchor link to
ParameterTypeRequiredDescription
applicationstringYesThe application code to list presets for.
orderBystringNoNAME (default), CREATED, or UPDATED.
orderDirectionstringNoASC (default) or DESC.
pageintegerNoZero-based page index.
perPageintegerNoPage size. Defaults to 100 when omitted or 0.
searchByNamestringNoCase-insensitive substring match on preset name or code (ILIKE %value%).
searchByCategoryarray of stringsNoRepeat the parameter to filter by any of several categories, e.g. ?searchByCategory=promo&searchByCategory=lifecycle.
showHiddenbooleanNoInclude presets marked hidden.

Each item carries only: name, code, platforms, localized_content (plain per-locale text — not localized_properties), localized_title, localized_subtitle, banner, icon, categories, journey_uuid, custom_data, is_v2, created, updated. Every other field of the Preset objectlocalized_properties, platform_properties, deeplink, richmedia, url, and so on — is omitted, even if set on the preset.

FieldTypeDescription
presetsarray of objectsThe current page of presets, in the reduced shape described above.
pageintegerThe returned page index.
per_pageintegerThe page size used for this response.
totalintegerTotal number of presets matching the filters, across all pages.
Response example
Anchor link to
{
"presets": [
{ "name": "20% discount", "code": "AAAAA-BBBBB", "platforms": { "1": true, "3": true }, "categories": ["promo"] }
],
"page": 0,
"per_page": 100,
"total": 1
}

Returns a single push preset by its code, with every field of the Preset object populated.

GET /api/presets/{code}

Path parameters

Anchor link to
ParameterTypeDescription
codestringThe preset’s code.

Returns { "preset": { ... } }, the full Preset object.

Overwrites an existing push preset by code with the supplied fields.

PUT /api/presets/{code}

Path parameters

Anchor link to
ParameterTypeDescription
codestringThe preset’s code to overwrite.

Request body

Anchor link to

Same fields as Create (minus application), plus the rest of the Preset object fields. sendType is accepted but ignored — a preset’s channel can’t be changed after creation.

An empty object on success: {}.

UpdatePartial

Anchor link to

Updates only the supplied fields of an existing push preset by code, leaving unset fields unchanged.

PUT /api/presets/{code}:partial

Path parameters

Anchor link to
ParameterTypeDescription
codestringThe preset’s code to patch.

Request body

Anchor link to

Same fields as Update, minus application. Unlike Update, every field here — including localizedProperties, platformProperties, categories, and the rest of the content-properties group listed in Update’s caution — is left unchanged when omitted, and only touched when you send it (a map/array field you send still fully replaces the existing value for that field, it just doesn’t affect anything you didn’t include). sendType is likewise accepted but ignored.

Request example
Anchor link to
{
"sendRate": 500,
"cappingCount": 3,
"cappingDays": 7
}

Also an empty object — see the caution above.

Duplicates an existing push preset, under a new name, into the same application.

POST /api/presets/{code}:clone

Request body

Anchor link to
ParameterTypeRequiredDescription
codestringYesCode of the source preset to duplicate.
namestringYesName for the new preset.
Request example
Anchor link to
{ "code": "AAAAA-BBBBB", "name": "20% discount (copy)" }

Returns { "preset": { ... } }, the new Preset object.

Permanently deletes a push preset by code.

DELETE /api/presets/{code}

Path parameters

Anchor link to
ParameterTypeDescription
codestringThe preset’s code to delete.

An empty object on success: {}.

Object reference

Anchor link to

Field names below match what Get, Create, Update, and Clone actually return — snake_case proto field names (see Conventions). The lowerCamelCase form used in the request examples above works the same way on input.

Preset object

Anchor link to
FieldTypeDescription
codestringGenerated on Create. Identifies this preset everywhere else in the API.
namestringPreset name.
send_typestringChannel of the preset (for example push).
is_v2booleantrue for presets created or migrated to the v2 content model.
systembooleanMarks the preset as a system/internal preset.
hiddenbooleanHides the preset from List results (send showHidden: true to include it).
createdstring (RFC 3339)Creation timestamp.
updatedstring (RFC 3339)Last update timestamp.

Targeting & content

Anchor link to
FieldTypeDescription
platformsmap<string, boolean>Which platforms the preset targets, keyed by device type code (e.g. "1" for iOS).
localized_propertiesmap<string, object>Locale → rich per-platform content. Same shape as LocalizedContent on the Notify payload — one entry per platform block (ios, android, and so on). This is the primary way to set platform-specific push content.
localized_title / localized_subtitle / localized_contentmap<string, string>Locale → plain text. A simpler alternative to localized_properties for title, subtitle, and body when you don’t need per-platform overrides.
platform_propertiesmap<string, object>Legacy per-platform overrides, keyed by platform enum name (IOS, ANDROID, BAIDU_ANDROID, HUAWEI_ANDROID, OSX). See PlatformProperties object below.
open_actionOpenActionAction triggered when the user opens the notification, applied to every platform. Mutually exclusive with open_actions — the response sets exactly one.
open_actionsmap<string, OpenAction>Per-platform override of open_action, keyed by device type code.
deeplinkstringDeep Link code.
deeplink_paramsmap<string, string>Parameters passed to the deep link.
richmediastringRich Media code opened by the notification.
urlstringURL opened by the notification, if not using a deep link or Rich Media.
FieldTypeDescription
inbox_imagestringImage URL shown in the Message Inbox entry.
inbox_iconstringIcon URL shown in the Message Inbox entry.
inbox_daysintegerDays the entry stays in the Message Inbox.
inbox_datestring (RFC 3339)Explicit expiration date for the Message Inbox entry, as an alternative to inbox_days.

Organization & metadata

Anchor link to
FieldTypeDescription
categoriesarray of stringsCategory names the preset is tagged with.
campaign_codestringCampaign code this preset is attributed to.
filter_codestringSegment / Filter code this preset targets by default.
geo_zonesstringGeozone targeting, if the preset is geo-triggered.
journey_uuidstringUUID of the Customer Journey that owns this preset, if it was created from a journey’s Send push point.
custom_dataobjectFree-form JSON forwarded to the client SDK as the u parameter.
bannerstringBig-picture / attachment image URL.
iconstringCustom notification icon URL.

Delivery limits

Anchor link to
FieldTypeDescription
send_rateintegerThrottling for sends using this preset, in messages/second — the preset-level equivalent of Notify’s SendRate.
capping_count / capping_daysintegerPer-user frequency limit for this preset — the preset-level equivalent of Notify’s FrequencyCapping count / days.
FieldTypeDescription
notification_sent_urlstringCallback URL requested when a notification using this preset is sent.
notification_delivered_urlstringCallback URL requested when a notification using this preset is delivered.
notification_click_urlstringCallback URL requested when a notification using this preset is clicked.

Legacy fields

Anchor link to

These carry over from the v1 preset model. They’re populated for Control Panel compatibility rather than for new integrations.

FieldTypeDescription
remote_pagestringLegacy remote page reference.
wns_contentstringLegacy Windows toast template JSON, as accepted by the v1 createPreset/getPreset methods.
original_urlstringThe pre-shortening value of url, when url was replaced by a shortened link.
ios_silent / android_silent / baidu_android_silent / huawei_android_silentbooleanPer-platform silent (data-only) push flags.

PlatformProperties object

Anchor link to

Fields available in each platform_properties entry (IOS, ANDROID, BAIDU_ANDROID, HUAWEI_ANDROID, OSX):

FieldTypeDescription
badgestringBadge count override.
soundstringSound file name.
sound_offbooleanMute the notification sound.
prioritystringIn-tray priority (Android/Baidu/Huawei only).
delivery_prioritystringNORMAL or HIGH delivery priority (Android/Baidu/Huawei only).
ios_interruption_levelstringpassive, active, time-sensitive, or critical (iOS only).