Passer au contenu

API des Préréglages

Un préréglage push est un modèle de notification push réutilisable — le même objet que vous construisez dans l’éditeur de push du Panneau de Contrôle. Cette API gère uniquement les préréglages push ; les préréglages SMS, WhatsApp, Kakao, LINE et Viber ont chacun leur propre service de préréglage dédié, non couvert ici.

Utilisez le code d’un préréglage pour l’envoyer via Notify (charge utile preset) ou un point Envoyer un push d’un Customer Journey.

URL de base

Anchor link to
https://rpc-api.svc-nue.pushwoosh.com

Tous les points de terminaison sont servis via HTTPS. Les requêtes et les réponses utilisent application/json sauf indication contraire.

Authentification

Anchor link to

Chaque requête doit inclure un en-tête Authorization avec votre jeton d’API Serveur :

Authorization: Api VOTRE_JETON_API

Conventions

Anchor link to
  • Nommage des champs : les corps de requête et les paramètres de chemin/requête acceptent le lowerCamelCase (par exemple, sendType, localizedProperties, searchByName) — le serveur décode l’une ou l’autre casse. Les réponses sont toujours encodées en utilisant les noms de champs proto, en snake_case (localized_properties, platform_properties, per_page, etc.). Les exemples de réponse et la référence de l’Objet Préréglage ci-dessous utilisent cette casse.
  • code : chaque réponse de préréglage contient son propre code, généré lors de la Création. Transmettez ce code à Get, Update, UpdatePartial, Delete, Clone, et aux API de messagerie/journey mentionnées ci-dessus.
  • Clés de plateforme : les maps platforms et open_actions sont indexées par le code de type d’appareil numérique (1 pour iOS, 3 pour Android, etc.). platform_properties est indexé par le nom de l’énumération de la plateforme à la place (IOS, ANDROID, HUAWEI_ANDROID, OSX — les seules quatre plateformes qu’il couvre).
  • Champs non remplis : les réponses de Get, Create et Clone incluent chaque champ de l’Objet Préréglage, même lorsqu’ils sont vides ou nuls. List renvoie un ensemble de champs réduit — voir Lister ci-dessous. Update et UpdatePartial ne renvoient aucun champ de préréglage — voir l’avertissement dans leurs sections.

Réponses d’erreur

Anchor link to
Statut HTTPSignification
400 Bad RequestArgument invalide — un champ obligatoire est manquant ou malformé, ou une précondition a échoué (par exemple, cloner sans nom).
401 UnauthorizedEn-tête Authorization manquant ou invalide.
403 ForbiddenL’application ou le préréglage n’appartient pas au compte de l’appelant.
404 Not FoundLe préréglage ou l’application n’a pas été trouvé.
500 Internal Server ErrorÉchec inattendu côté serveur.

Delete sur un préréglage encore utilisé par un point Envoyer un push d’un journey en cours d’exécution ou en pause renvoie également 400 Bad Request (un FailedPrecondition sur le réseau) — et non 409. Retirez d’abord le préréglage du journey.

Create, Update, et UpdatePartial renvoient également 400 Bad Request pour un jeton de personnalisation non résolvable — voir ci-dessous.

Jetons de personnalisation

Anchor link to

Create, Update, et UpdatePartial valident chaque jeton de personnalisation ({name|modifier|default}) dans localizedTitle, localizedSubtitle, et localizedContent (pour chaque langue dans la requête), et dans les champs de contenu riche par plateforme que l’expéditeur substitue (titre, contenu, bannière, icône, URL, paramètres de lien profond, etc., pour chaque plateforme). Les champs en dehors de cet ensemble, tels que richmedia, campaignCode, deeplink, ou filterCode, conservent un jeton exactement tel qu’il est écrit — Pushwoosh n’analyse pas la syntaxe de personnalisation à cet endroit.

Un jeton a besoin d’un modificateur que Pushwoosh reconnaît, car un jeton non modifié ou mal orthographié ne peut pas être formaté et atteindrait les utilisateurs sous forme d’accolades littérales. Un jeton avec un modificateur manquant ou inconnu ({Tag|}, {Tag|typo}) fait échouer l’appel avec 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]"
}

Modificateurs acceptés

Anchor link to

Le sélecteur de personnalisation du Panneau de Contrôle propose déjà tous les modificateurs ci-dessous pour les tags INTEGER/PRICE (y compris les formats de date) et pour les tags de chaîne, à l’exception de base64 — celui-ci n’est accessible que via l’API. gitlab.corp.pushwoosh.com/channels/sdk/pkg/dynamiccontent est la source de vérité que le Panneau de Contrôle et cette API utilisent pour la validation.

ModificateurType de tagNotes
capitalizefirstchaîneInsensible à la casse
capitalizeallfirstchaîneInsensible à la casse
uppercasechaîneInsensible à la casse
lowercasechaîneInsensible à la casse
regularchaîne ou entierInsensible à la casse, aucun formatage appliqué
base64chaîneInsensible à la casse, API uniquement — non proposé par le sélecteur du PC
cent / dollar / comma / euro / jpy / liraentierInsensible à la casse
M-d-y, m-d-y, M d y, M d Y, l, M d, H:i, m-d-y H:ientierModificateurs de format de date, correspondance exacte telle qu’écrite, casse incluse

Points de terminaison

Anchor link to
MéthodeCheminDescription
POST/api/presetsCréer un nouveau préréglage push
GET/api/presetsLister les préréglages push d’une application
GET/api/presets/{code}Obtenir un seul préréglage push
PUT/api/presets/{code}Mettre à jour un préréglage push (écrasement complet)
PUT/api/presets/{code}:partialMettre à jour un préréglage push (partiel)
POST/api/presets/{code}:cloneCloner un préréglage push
DELETE/api/presets/{code}Supprimer un préréglage push

Crée un nouveau préréglage push dans une application et le renvoie avec son code généré.

POST /api/presets

Corps de la requête

Anchor link to
ParamètreTypeRequisDescription
applicationchaîneOuiLe code d’application dans lequel créer le préréglage.
namechaîneOuiNom du préréglage.
sendTypechaîneNonCanal du préréglage (par exemple push).
isV2booléenNonÉpingle l’indicateur d’origine du préréglage. Omettre pour utiliser la valeur par défaut true (v2) ; définir à false uniquement lors de la reproduction d’un préréglage v1 hérité.

Tous les autres champs — contenu localisé, plateformes, lien profond, boîte de réception, catégories, etc. — sont partagés avec Update et documentés une seule fois dans la référence de l’Objet Préréglage ci-dessous.

Exemple de requête
Anchor link to
{
"application": "XXXXX-XXXXX",
"name": "20% de réduction",
"platforms": { "1": true, "3": true },
"localizedContent": {
"default": "Obtenez votre réduction de 20% dès maintenant",
"es": "Consigue tu 20% de descuento ahora mismo"
},
"localizedTitle": { "default": "Bonjour" },
"openAction": { "link": { "url": "https://example.com" } },
"categories": ["promo"]
}

Renvoie { "preset": { ... } }, l’Objet Préréglage créé.

Liste les préréglages push d’une application — un ensemble de champs réduit, pas l’objet complet — avec pagination, tri et filtrage par nom ou catégorie.

GET /api/presets

Paramètres de la requête

Anchor link to
ParamètreTypeRequisDescription
applicationchaîneOuiLe code d’application pour lequel lister les préréglages.
orderBychaîneNonNAME (par défaut), CREATED, ou UPDATED.
orderDirectionchaîneNonASC (par défaut) ou DESC.
pageentierNonIndex de page basé sur zéro.
perPageentierNonTaille de la page. Par défaut à 100 si omis ou 0.
searchByNamechaîneNonCorrespondance de sous-chaîne insensible à la casse sur le nom ou le code du préréglage (ILIKE %value%).
searchByCategorytableau de chaînesNonRépétez le paramètre pour filtrer par plusieurs catégories, ex. ?searchByCategory=promo&searchByCategory=lifecycle.
showHiddenbooléenNonInclure les préréglages marqués comme cachés.

Chaque élément ne contient que : name, code, platforms, localized_content (texte brut par locale — pas localized_properties), localized_title, localized_subtitle, banner, icon, categories, journey_uuid, custom_data, is_v2, created, updated. Tous les autres champs de l’Objet Préréglagelocalized_properties, platform_properties, deeplink, richmedia, url, etc. — sont omis, même s’ils sont définis sur le préréglage.

ChampTypeDescription
presetstableau d’objetsLa page actuelle de préréglages, dans la forme réduite décrite ci-dessus.
pageentierL’index de page retourné.
per_pageentierLa taille de page utilisée pour cette réponse.
totalentierNombre total de préréglages correspondant aux filtres, sur toutes les pages.
Exemple de réponse
Anchor link to
{
"presets": [
{ "name": "20% de réduction", "code": "AAAAA-BBBBB", "platforms": { "1": true, "3": true }, "categories": ["promo"] }
],
"page": 0,
"per_page": 100,
"total": 1
}

Renvoie un seul préréglage push par son code, avec chaque champ de l’Objet Préréglage rempli.

GET /api/presets/{code}

Paramètres de chemin

Anchor link to
ParamètreTypeDescription
codechaîneLe code du préréglage.

Renvoie { "preset": { ... } }, l’Objet Préréglage complet.

Mettre à jour

Anchor link to

Écrase un préréglage push existant par son code avec les champs fournis.

PUT /api/presets/{code}

Paramètres de chemin

Anchor link to
ParamètreTypeDescription
codechaîneLe code du préréglage à écraser.

Corps de la requête

Anchor link to

Mêmes champs que pour Créer (moins application), plus le reste des champs de l’Objet Préréglage. sendType est accepté mais ignoré — le canal d’un préréglage ne peut pas être modifié après sa création.

Un objet vide en cas de succès : {}.

Mise à jour partielle

Anchor link to

Met à jour uniquement les champs fournis d’un préréglage push existant par son code, laissant les champs non définis inchangés.

PUT /api/presets/{code}:partial

Paramètres de chemin

Anchor link to
ParamètreTypeDescription
codechaîneLe code du préréglage à patcher.

Corps de la requête

Anchor link to

Mêmes champs que pour Mettre à jour, moins application. Contrairement à Update, chaque champ ici — y compris localizedProperties, platformProperties, categories, et le reste du groupe de propriétés de contenu listé dans l’avertissement de Mettre à jour — est laissé inchangé si omis, et n’est modifié que lorsque vous l’envoyez (un champ de type map/array que vous envoyez remplace toujours entièrement la valeur existante pour ce champ, mais n’affecte rien que vous n’ayez pas inclus). sendType est également accepté mais ignoré.

Exemple de requête
Anchor link to
{
"sendRate": 500,
"cappingCount": 3,
"cappingDays": 7
}

Également un objet vide — voir l’avertissement ci-dessus.

Duplique un préréglage push existant, sous un nouveau nom, dans la même application.

POST /api/presets/{code}:clone

Corps de la requête

Anchor link to
ParamètreTypeRequisDescription
codechaîneOuiCode du préréglage source à dupliquer.
namechaîneOuiNom du nouveau préréglage.
Exemple de requête
Anchor link to
{ "code": "AAAAA-BBBBB", "name": "20% de réduction (copie)" }

Renvoie { "preset": { ... } }, le nouvel Objet Préréglage.

Supprime définitivement un préréglage push par son code.

DELETE /api/presets/{code}

Paramètres de chemin

Anchor link to
ParamètreTypeDescription
codechaîneLe code du préréglage à supprimer.

Un objet vide en cas de succès : {}.

Référence de l’objet

Anchor link to

Les noms de champs ci-dessous correspondent à ce que Get, Create, Update et Clone renvoient réellement — les noms de champs proto en snake_case (voir Conventions). La forme lowerCamelCase utilisée dans les exemples de requête ci-dessus fonctionne de la même manière en entrée.

Objet Préréglage

Anchor link to
ChampTypeDescription
codechaîneGénéré lors de la Création. Identifie ce préréglage partout ailleurs dans l’API.
namechaîneNom du préréglage.
send_typechaîneCanal du préréglage (par exemple push).
is_v2booléentrue pour les préréglages créés ou migrés vers le modèle de contenu v2.
systembooléenMarque le préréglage comme un préréglage système/interne.
hiddenbooléenCache le préréglage des résultats de List (envoyez showHidden: true pour l’inclure).
createdchaîne (RFC 3339)Horodatage de la création.
updatedchaîne (RFC 3339)Horodatage de la dernière mise à jour.

Ciblage & contenu

Anchor link to
ChampTypeDescription
platformsmap<string, boolean>Quelles plateformes le préréglage cible, indexées par code de type d’appareil (ex. "1" pour iOS).
localized_propertiesmap<string, object>Locale → contenu riche par plateforme. Même forme que LocalizedContent sur la charge utile Notify — une entrée par bloc de plateforme (ios, android, etc.). C’est la principale façon de définir un contenu push spécifique à la plateforme.
localized_title / localized_subtitle / localized_contentmap<string, string>Locale → texte brut. Une alternative plus simple à localized_properties pour le titre, le sous-titre et le corps lorsque vous n’avez pas besoin de surcharges par plateforme.
platform_propertiesmap<string, object>Surcharges héritées par plateforme, indexées par le nom de l’énumération de la plateforme (IOS, ANDROID, HUAWEI_ANDROID, OSX). Voir Objet PlatformProperties ci-dessous.
open_actionOpenActionAction déclenchée lorsque l’utilisateur ouvre la notification, appliquée à chaque plateforme. Mutuellement exclusif avec open_actions — la réponse en définit exactement un.
open_actionsmap<string, OpenAction>Surcharge par plateforme de open_action, indexée par code de type d’appareil.
deeplinkchaîneCode de Lien Profond.
deeplink_paramsmap<string, string>Paramètres passés au lien profond.
richmediachaîneCode de Média Riche ouvert par la notification.
urlchaîneURL ouverte par la notification, si vous n’utilisez pas de lien profond ou de Média Riche.

Boîte de réception

Anchor link to
ChampTypeDescription
inbox_imagechaîneURL de l’image affichée dans l’entrée de la Boîte de réception des messages.
inbox_iconchaîneURL de l’icône affichée dans l’entrée de la Boîte de réception des messages.
inbox_daysentierNombre de jours pendant lesquels l’entrée reste dans la Boîte de réception des messages.
inbox_datechaîne (RFC 3339)Date d’expiration explicite pour l’entrée de la Boîte de réception des messages, comme alternative à inbox_days.

Organisation & métadonnées

Anchor link to
ChampTypeDescription
categoriestableau de chaînesNoms de catégorie avec lesquels le préréglage est étiqueté.
campaign_codechaîneCode de campagne auquel ce préréglage est attribué.
filter_codechaîneCode de Segment / Filtre que ce préréglage cible par défaut.
geo_zoneschaîneCiblage par Géozone, si le préréglage est déclenché par la géolocalisation.
journey_uuidchaîneUUID du Customer Journey qui possède ce préréglage, s’il a été créé à partir d’un point Envoyer un push d’un journey.
custom_dataobjetJSON de forme libre transmis au SDK client en tant que paramètre u.
bannerchaîneURL de l’image en grand format / pièce jointe.
iconchaîneURL de l’icône de notification personnalisée.

Limites de livraison

Anchor link to
ChampTypeDescription
send_rateentierLimitation pour les envois utilisant ce préréglage, en messages/seconde — l’équivalent au niveau du préréglage de SendRate de Notify.
capping_count / capping_daysentierLimite de fréquence par utilisateur pour ce préréglage — l’équivalent au niveau du préréglage de count / days de FrequencyCapping de Notify.
ChampTypeDescription
notification_sent_urlchaîneURL de rappel demandée lorsqu’une notification utilisant ce préréglage est envoyée.
notification_delivered_urlchaîneURL de rappel demandée lorsqu’une notification utilisant ce préréglage est livrée.
notification_click_urlchaîneURL de rappel demandée lorsqu’une notification utilisant ce préréglage est cliquée.

Champs hérités

Anchor link to

Ceux-ci proviennent du modèle de préréglage v1. Ils sont remplis pour la compatibilité avec le Panneau de Contrôle plutôt que pour de nouvelles intégrations.

ChampTypeDescription
remote_pagechaîneRéférence de page distante héritée.
wns_contentchaîneJSON de modèle de toast Windows hérité, tel qu’accepté par les méthodes v1 createPreset/getPreset.
original_urlchaîneLa valeur de url avant raccourcissement, lorsque url a été remplacé par un lien raccourci.
ios_silent / android_silent / huawei_android_silentbooléenIndicateurs de push silencieux (données uniquement) par plateforme.

Objet PlatformProperties

Anchor link to

Champs disponibles dans chaque entrée platform_properties (IOS, ANDROID, HUAWEI_ANDROID, OSX) :

ChampTypeDescription
badgechaîneSurcharge du nombre de badges.
soundchaîneNom du fichier son.
sound_offbooléenCouper le son de la notification.
prioritychaînePriorité dans la barre de notifications (Android/Huawei uniquement).
delivery_prioritychaînePriorité de livraison NORMAL ou HIGH (Android/Huawei uniquement).
ios_interruption_levelchaînepassive, active, time-sensitive, ou critical (iOS uniquement).

Sujets connexes

Anchor link to