Zum Inhalt springen

Presets-API

Ein Push-Preset ist eine wiederverwendbare Vorlage für Push-Benachrichtigungen – dasselbe Objekt, das Sie im Push-Editor des Control Panels erstellen. Diese API verwaltet nur Push-Presets; SMS-, WhatsApp-, Kakao-, LINE- und Viber-Presets haben jeweils ihren eigenen dedizierten Preset-Dienst, der hier nicht behandelt wird.

Verwenden Sie den code eines Presets, um es über Notify (Payload preset) oder einen „Push senden“-Knotenpunkt einer Customer Journey zu senden.

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

Alle Endpunkte werden über HTTPS bereitgestellt. Anfragen und Antworten verwenden application/json, sofern nicht anders angegeben.

Authentifizierung

Anchor link to

Jede Anfrage muss einen Authorization-Header mit Ihrem Server-API-Token enthalten:

Authorization: Api IHR_API_TOKEN

Konventionen

Anchor link to
  • Feldnamen: Anfrage-Bodys und Abfrage-/Pfadparameter akzeptieren lowerCamelCase (zum Beispiel sendType, localizedProperties, searchByName) – der Server verarbeitet beide Schreibweisen. Antworten werden immer mit den Proto-Feldnamen in snake_case formatiert (localized_properties, platform_properties, per_page usw.). Die Antwortbeispiele und die Referenz zum Preset-Objekt unten verwenden diese Schreibweise.
  • code: Jede Preset-Antwort enthält ihren eigenen Code, der bei Create generiert wird. Übergeben Sie diesen Code an Get, Update, UpdatePartial, Delete, Clone und an die oben genannten Messaging-/Journey-APIs.
  • Plattform-Schlüssel: Die Maps platforms und open_actions verwenden den numerischen Gerätetyp-Code als Schlüssel (1 für iOS, 3 für Android usw.). platform_properties verwendet stattdessen den Enum-Namen der Plattform als Schlüssel (IOS, ANDROID, HUAWEI_ANDROID, OSX – die einzigen vier Plattformen, die es abdeckt).
  • Nicht gefüllte Felder: Die Antworten von Get, Create und Clone enthalten jedes Feld des Preset-Objekts, auch wenn es leer ist oder den Wert null hat. List gibt einen reduzierten Feldsatz zurück – siehe Auflisten unten. Update und UpdatePartial geben überhaupt keine Preset-Felder zurück – siehe die Warnung in ihren Abschnitten.

Fehlerantworten

Anchor link to
HTTP-StatusBedeutung
400 Bad RequestUngültiges Argument – ein erforderliches Feld fehlt oder ist fehlerhaft, oder eine Vorbedingung ist fehlgeschlagen (z. B. Klonen ohne name).
401 UnauthorizedFehlender oder ungültiger Authorization-Header.
403 ForbiddenDie Anwendung oder das Preset gehört nicht zum Konto des Aufrufers.
404 Not FoundDas Preset oder die Anwendung wurde nicht gefunden.
500 Internal Server ErrorUnerwarteter serverseitiger Fehler.

Ein Delete-Aufruf für ein Preset, das noch von einem „Push senden“-Knotenpunkt in einer laufenden oder pausierten Journey verwendet wird, gibt ebenfalls 400 Bad Request zurück (ein FailedPrecondition auf der Leitung) – nicht 409. Entfernen Sie das Preset zuerst aus der Journey.

Create, Update und UpdatePartial geben ebenfalls 400 Bad Request für ein nicht auflösbares Personalisierungs-Token zurück – siehe unten.

Personalisierungs-Token

Anchor link to

Create, Update und UpdatePartial validieren jedes Personalisierungs-Token ({name|modifier|default}) in localizedTitle, localizedSubtitle und localizedContent (für jede Sprache in der Anfrage) und in den Rich-Content-Feldern pro Plattform, die der Absender ersetzt (Titel, Inhalt, Banner, Symbol, URL, Deep-Link-Parameter usw. für jede Plattform). Felder außerhalb dieses Satzes, wie richmedia, campaignCode, deeplink oder filterCode, behalten ein Token genau wie geschrieben – Pushwoosh parst dort keine Personalisierungssyntax.

Ein Token benötigt einen von Pushwoosh erkannten Modifikator, da ein nicht modifiziertes oder falsch geschriebenes Token nicht formatiert werden kann und sonst die Benutzer als literale geschweifte Klammern erreichen würde. Ein Token mit einem fehlenden oder unbekannten Modifikator ({Tag|}, {Tag|typo}) führt zum Fehlschlagen des Aufrufs mit InvalidArgument:

{
"code": 3,
"message": "personalization token {Tag|} has no known modifier, so it would be delivered as text; expected one of [capitalizefirst capitalizeallfirst uppercase lowercase regular base64 cent dollar comma euro jpy lira M-d-y m-d-y M d y M d Y l M d H:i m-d-y H:i]"
}

Akzeptierte Modifikatoren

Anchor link to

Der Personalisierungs-Picker im Control Panel bietet bereits alle unten aufgeführten Modifikatoren für INTEGER/PRICE-Tags (einschließlich der Datumsformate) und für String-Tags an, außer base64 – dieser ist nur über die API erreichbar. gitlab.corp.pushwoosh.com/channels/sdk/pkg/dynamiccontent ist die Quelle der Wahrheit, gegen die sowohl das Control Panel als auch diese API validieren.

ModifikatorTag-TypAnmerkungen
capitalizefirststringGroß-/Kleinschreibung wird nicht beachtet
capitalizeallfirststringGroß-/Kleinschreibung wird nicht beachtet
uppercasestringGroß-/Kleinschreibung wird nicht beachtet
lowercasestringGroß-/Kleinschreibung wird nicht beachtet
regularstring oder integerGroß-/Kleinschreibung wird nicht beachtet, keine Formatierung angewendet
base64stringGroß-/Kleinschreibung wird nicht beachtet, nur API – wird nicht vom CP-Picker angeboten
cent / dollar / comma / euro / jpy / liraintegerGroß-/Kleinschreibung wird nicht beachtet
M-d-y, m-d-y, M d y, M d Y, l, M d, H:i, m-d-y H:iintegerDatumsformat-Modifikatoren, exakt wie geschrieben abgeglichen, einschließlich Groß-/Kleinschreibung
MethodePfadBeschreibung
POST/api/presetsEin neues Push-Preset erstellen
GET/api/presetsPush-Presets einer Anwendung auflisten
GET/api/presets/{code}Ein einzelnes Push-Preset abrufen
PUT/api/presets/{code}Ein Push-Preset aktualisieren (vollständiges Überschreiben)
PUT/api/presets/{code}:partialEin Push-Preset teilweise aktualisieren
POST/api/presets/{code}:cloneEin Push-Preset klonen
DELETE/api/presets/{code}Ein Push-Preset löschen

Erstellt ein neues Push-Preset in einer Anwendung und gibt es mit seinem generierten Code zurück.

POST /api/presets

Anfrage-Body

Anchor link to
ParameterTypErforderlichBeschreibung
applicationstringJaDer Anwendungscode, in dem das Preset erstellt werden soll.
namestringJaName des Presets.
sendTypestringNeinKanal des Presets (z. B. push).
isV2booleanNeinSetzt das Ursprungs-Flag des Presets. Weglassen, um den Standardwert true (v2) zu verwenden; setzen Sie false nur, wenn Sie ein altes v1-Preset reproduzieren.

Alle anderen Felder – lokalisierter Inhalt, Plattformen, Deep-Link, Inbox, Kategorien usw. – werden mit Update geteilt und sind einmalig in der Referenz zum Preset-Objekt unten dokumentiert.

Anfragebeispiel
Anchor link to
{
"application": "XXXXX-XXXXX",
"name": "20% Rabatt",
"platforms": { "1": true, "3": true },
"localizedContent": {
"default": "Holen Sie sich jetzt Ihren 20% Rabatt",
"es": "Consigue tu 20% de descuento ahora mismo"
},
"localizedTitle": { "default": "Hallo" },
"openAction": { "link": { "url": "https://example.com" } },
"categories": ["promo"]
}

Gibt { "preset": { ... } } zurück, das erstellte Preset-Objekt.

Listet die Push-Presets einer Anwendung auf – ein reduzierter Feldsatz, nicht das vollständige Objekt – mit Paginierung, Sortierung und Filterung nach Name oder Kategorie.

GET /api/presets

Abfrageparameter

Anchor link to
ParameterTypErforderlichBeschreibung
applicationstringJaDer Anwendungscode, für den Presets aufgelistet werden sollen.
orderBystringNeinNAME (Standard), CREATED oder UPDATED.
orderDirectionstringNeinASC (Standard) oder DESC.
pageintegerNeinNullbasierter Seitenindex.
perPageintegerNeinSeitengröße. Standardmäßig 100, wenn weggelassen oder 0.
searchByNamestringNeinGroß-/kleinschreibungsunabhängige Teilstring-Suche nach Preset-Name oder Code (ILIKE %value%).
searchByCategoryarray of stringsNeinWiederholen Sie den Parameter, um nach mehreren Kategorien zu filtern, z. B. ?searchByCategory=promo&searchByCategory=lifecycle.
showHiddenbooleanNeinSchließt als hidden markierte Presets ein.

Jeder Eintrag enthält nur: name, code, platforms, localized_content (einfacher Text pro Locale – nicht localized_properties), localized_title, localized_subtitle, banner, icon, categories, journey_uuid, custom_data, is_v2, created, updated. Jedes andere Feld des Preset-Objekts – localized_properties, platform_properties, deeplink, richmedia, url usw. – wird weggelassen, auch wenn es im Preset gesetzt ist.

FeldTypBeschreibung
presetsarray of objectsDie aktuelle Seite der Presets in der oben beschriebenen reduzierten Form.
pageintegerDer zurückgegebene Seitenindex.
per_pageintegerDie für diese Antwort verwendete Seitengröße.
totalintegerGesamtzahl der Presets, die den Filtern entsprechen, über alle Seiten hinweg.
Antwortbeispiel
Anchor link to
{
"presets": [
{ "name": "20% Rabatt", "code": "AAAAA-BBBBB", "platforms": { "1": true, "3": true }, "categories": ["promo"] }
],
"page": 0,
"per_page": 100,
"total": 1
}

Gibt ein einzelnes Push-Preset anhand seines Codes zurück, wobei jedes Feld des Preset-Objekts gefüllt ist.

GET /api/presets/{code}

Pfadparameter

Anchor link to
ParameterTypBeschreibung
codestringDer Code des Presets.

Gibt { "preset": { ... } } zurück, das vollständige Preset-Objekt.

Aktualisieren

Anchor link to

Überschreibt ein bestehendes Push-Preset anhand seines Codes mit den angegebenen Feldern.

PUT /api/presets/{code}

Pfadparameter

Anchor link to
ParameterTypBeschreibung
codestringDer Code des zu überschreibenden Presets.

Anfrage-Body

Anchor link to

Dieselben Felder wie bei Erstellen (ohne application), plus die restlichen Felder des Preset-Objekts. sendType wird akzeptiert, aber ignoriert – der Kanal eines Presets kann nach der Erstellung nicht geändert werden.

Ein leeres Objekt bei Erfolg: {}.

Teilweise aktualisieren (UpdatePartial)

Anchor link to

Aktualisiert nur die angegebenen Felder eines bestehenden Push-Presets anhand seines Codes und lässt nicht gesetzte Felder unverändert.

PUT /api/presets/{code}:partial

Pfadparameter

Anchor link to
ParameterTypBeschreibung
codestringDer Code des zu patchenden Presets.

Anfrage-Body

Anchor link to

Dieselben Felder wie bei Aktualisieren, ohne application. Im Gegensatz zu Update bleibt hier jedes Feld – einschließlich localizedProperties, platformProperties, categories und der restlichen Gruppe von Inhaltseigenschaften, die in der Warnung von Update aufgeführt sind – unverändert, wenn es weggelassen wird, und wird nur berührt, wenn Sie es senden (ein Map-/Array-Feld, das Sie senden, ersetzt immer noch den bestehenden Wert für dieses Feld vollständig, es beeinflusst jedoch nichts, was Sie nicht eingeschlossen haben). sendType wird ebenfalls akzeptiert, aber ignoriert.

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

Ebenfalls ein leeres Objekt – siehe die Warnung oben.

Dupliziert ein bestehendes Push-Preset unter einem neuen Namen in die gleiche Anwendung.

POST /api/presets/{code}:clone

Anfrage-Body

Anchor link to
ParameterTypErforderlichBeschreibung
codestringJaCode des zu duplizierenden Quell-Presets.
namestringJaName für das neue Preset.
Anfragebeispiel
Anchor link to
{ "code": "AAAAA-BBBBB", "name": "20% Rabatt (Kopie)" }

Gibt { "preset": { ... } } zurück, das neue Preset-Objekt.

Löscht ein Push-Preset anhand seines Codes endgültig.

DELETE /api/presets/{code}

Pfadparameter

Anchor link to
ParameterTypBeschreibung
codestringDer Code des zu löschenden Presets.

Ein leeres Objekt bei Erfolg: {}.

Objektreferenz

Anchor link to

Die unten stehenden Feldnamen entsprechen dem, was Get, Create, Update und Clone tatsächlich zurückgeben – snake_case-Proto-Feldnamen (siehe Konventionen). Die in den obigen Anfragebeispielen verwendete lowerCamelCase-Form funktioniert bei der Eingabe auf die gleiche Weise.

Preset-Objekt

Anchor link to

Identität

Anchor link to
FeldTypBeschreibung
codestringWird bei Create generiert. Identifiziert dieses Preset überall sonst in der API.
namestringName des Presets.
send_typestringKanal des Presets (z. B. push).
is_v2booleantrue für Presets, die mit dem v2-Inhaltsmodell erstellt oder dorthin migriert wurden.
systembooleanMarkiert das Preset als System-/internes Preset.
hiddenbooleanVerbirgt das Preset in den List-Ergebnissen (senden Sie showHidden: true, um es einzuschließen).
createdstring (RFC 3339)Zeitstempel der Erstellung.
updatedstring (RFC 3339)Zeitstempel der letzten Aktualisierung.

Targeting & Inhalt

Anchor link to
FeldTypBeschreibung
platformsmap<string, boolean>Welche Plattformen das Preset anspricht, als Schlüssel wird der Gerätetyp-Code verwendet (z. B. "1" für iOS).
localized_propertiesmap<string, object>Locale → Rich-Content pro Plattform. Gleiche Form wie LocalizedContent in der Notify-Payload – ein Eintrag pro Plattformblock (ios, android usw.). Dies ist die primäre Methode, um plattformspezifischen Push-Inhalt festzulegen.
localized_title / localized_subtitle / localized_contentmap<string, string>Locale → einfacher Text. Eine einfachere Alternative zu localized_properties für Titel, Untertitel und Textkörper, wenn Sie keine plattformspezifischen Überschreibungen benötigen.
platform_propertiesmap<string, object>Legacy-Überschreibungen pro Plattform, als Schlüssel wird der Plattform-Enum-Name verwendet (IOS, ANDROID, HUAWEI_ANDROID, OSX). Siehe PlatformProperties-Objekt unten.
open_actionOpenActionAktion, die ausgelöst wird, wenn der Benutzer die Benachrichtigung öffnet, angewendet auf jede Plattform. Schließt sich gegenseitig mit open_actions aus – die Antwort setzt genau eines von beiden.
open_actionsmap<string, OpenAction>Plattformspezifische Überschreibung von open_action, als Schlüssel wird der Gerätetyp-Code verwendet.
deeplinkstringDeep-Link-Code.
deeplink_paramsmap<string, string>Parameter, die an den Deep-Link übergeben werden.
richmediastringRich-Media-Code, der durch die Benachrichtigung geöffnet wird.
urlstringURL, die durch die Benachrichtigung geöffnet wird, wenn kein Deep-Link oder Rich Media verwendet wird.
FeldTypBeschreibung
inbox_imagestringBild-URL, die im Message-Inbox-Eintrag angezeigt wird.
inbox_iconstringSymbol-URL, die im Message-Inbox-Eintrag angezeigt wird.
inbox_daysintegerTage, die der Eintrag in der Message Inbox verbleibt.
inbox_datestring (RFC 3339)Explizites Ablaufdatum für den Message-Inbox-Eintrag, als Alternative zu inbox_days.

Organisation & Metadaten

Anchor link to
FeldTypBeschreibung
categoriesarray of stringsKategorienamen, mit denen das Preset getaggt ist.
campaign_codestringKampagnencode, dem dieses Preset zugeordnet ist.
filter_codestringSegment-/Filtercode, den dieses Preset standardmäßig anspricht.
geo_zonesstringGeozone-Targeting, wenn das Preset geo-getriggert ist.
journey_uuidstringUUID der Customer Journey, der dieses Preset gehört, falls es aus einem „Push senden“-Knotenpunkt einer Journey erstellt wurde.
custom_dataobjectFreiform-JSON, das als u-Parameter an das Client-SDK weitergeleitet wird.
bannerstringURL des großen Bildes / Anhangs.
iconstringURL des benutzerdefinierten Benachrichtigungssymbols.

Zustellungsgrenzen

Anchor link to
FeldTypBeschreibung
send_rateintegerDrosselung für Sendungen, die dieses Preset verwenden, in Nachrichten/Sekunde – das Äquivalent auf Preset-Ebene zu Notifys SendRate.
capping_count / capping_daysintegerFrequenzlimit pro Benutzer für dieses Preset – das Äquivalent auf Preset-Ebene zu Notifys FrequencyCapping count / days.
FeldTypBeschreibung
notification_sent_urlstringCallback-URL, die angefordert wird, wenn eine Benachrichtigung mit diesem Preset gesendet wird.
notification_delivered_urlstringCallback-URL, die angefordert wird, wenn eine Benachrichtigung mit diesem Preset zugestellt wird.
notification_click_urlstringCallback-URL, die angefordert wird, wenn eine Benachrichtigung mit diesem Preset angeklickt wird.

Legacy-Felder

Anchor link to

Diese werden aus dem v1-Preset-Modell übernommen. Sie werden eher aus Kompatibilitätsgründen mit dem Control Panel gefüllt als für neue Integrationen.

FeldTypBeschreibung
remote_pagestringLegacy-Referenz auf eine Remote-Seite.
wns_contentstringLegacy-Windows-Toast-Template-JSON, wie es von den v1-Methoden createPreset/getPreset akzeptiert wird.
original_urlstringDer Wert von url vor der Verkürzung, wenn url durch einen verkürzten Link ersetzt wurde.
ios_silent / android_silent / huawei_android_silentbooleanPlattformspezifische Flags für stille (nur Daten) Push-Benachrichtigungen.

PlatformProperties-Objekt

Anchor link to

Felder, die in jedem platform_properties-Eintrag verfügbar sind (IOS, ANDROID, HUAWEI_ANDROID, OSX):

FeldTypBeschreibung
badgestringÜberschreibung der Badge-Anzahl.
soundstringName der Sounddatei.
sound_offbooleanStummschalten des Benachrichtigungstons.
prioritystringPriorität in der Benachrichtigungsleiste (nur Android/Huawei).
delivery_prioritystringNORMAL oder HIGH Zustellpriorität (nur Android/Huawei).
ios_interruption_levelstringpassive, active, time-sensitive oder critical (nur iOS).

Verwandte Themen

Anchor link to