API Push v4
Envoyez une notification ou un message à un seul appareil ou à une liste d'appareils
Le contenu du push ne peut être qu'un seul objet push au format JSON
Pour les fonctions liées aux tags/alias, veuillez vous référer à AppPushAPI.
Ceci est la dernière version de l'API Push. Les améliorations de la version v4 sont les suivantes :
- Utilisez l'authentification HTTP Basic pour autoriser l'accès. Ainsi, toute la requête API peut être effectuée à l'aide d'outils HTTP courants, tels que curl et des extensions de navigateur.
- Le contenu du push est au format JSON.
Limites de fréquence des requêtes
Notre API impose des limites sur la fréquence des appels afin de garantir la stabilité et l'équité du service. Les limites QPS (requêtes par seconde) pour chaque AppKey sont les suivantes :
- Limite standard : 500 requêtes maximum par seconde.
- Limite avancée : Si vous êtes abonné à notre offre payante et que votre AppKey payante nécessite une limite QPS supérieure, veuillez contacter notre équipe commerciale : Sales@engagelab.com.
Validation des appels
Pour plus d'informations, consultez la méthode d'authentification
Adresse d'appel
POST v4/push
Exemples de requêtes
En-tête de la requête
> POST /v4/push HTTP/1.1
> Authorization: Basic N2Q0MzFlNDJkZmE2YTZkNjkzYWMyZDA0OjVlOTg3YWM2ZDJlMDRkOTVhOWQ4ZjBkMQ==
Corps de la requête
{
"from": "push",
"to": "all",
"body": {
"platform": "web",
"notification": {
"alert": "Hi,MTPush !",
"web": {
"alert": "web_push",
"title": "web_push",
"url": "http://www.google.com",
"extras": {
"web-key1": "web-value1"
}
}
}
},
"request_id": "12345678",
"custom_args": {
"business": "info"
}
}
Paramètres de la requête
La structure des paramètres du push, détaillée dans le tableau suivant.
| Mot-clé | Type | Option | Description |
|---|---|---|---|
| from | String | Optionnel | Expéditeur business actuel |
| to | String ou Objet JSON | Obligatoire | Cible d'envoi |
| body | Objet JSON | Obligatoire | Corps de la requête d'envoi |
| platform | String ou Tableau JSON | Obligatoire | Plateforme de push |
| notification | Objet JSON | Optionnel | |
| message | Objet JSON | Optionnel | |
| options | Objet JSON | Optionnel | Paramètres de push |
| request_id | String | Optionnel | Champ optionnel personnalisé utilisé par le client pour identifier la requête et retourné dans la réponse. |
| custom_args | Objet JSON | Optionnel | Champs optionnels personnalisés par le client, retournés lors du callback. |
from
L'expéditeur du business actuel. La valeur est de type String et est optionnelle.
Exemples de requêtes
{
"from": "push"
}
to
Objet de l'appareil cible du push, indiquant la liste des appareils à qui le push peut être envoyé. Confirmez l'objet de l'appareil cible. MTPush propose deux méthodes : Registration ID et diffusion.
Cible du push
| Mot-clé | Type | Signification | Description | Remarque |
|---|---|---|---|---|
| all | String | Diffusion | Push à tous les appareils | Push vers les appareils actifs dans les 30 derniers jours. |
| registration_id | Tableau JSON | Registration ID | Tableau. La relation entre plusieurs registration_id est OU, c'est-à-dire l'union. | L'ID de l'appareil. Maximum de 1 000 messages par envoi. |
| tag | Tableau JSON | Tag | Tableaux. La relation entre plusieurs tags est OU, c'est-à-dire la concaténation. | Utilisez des tags pour effectuer des sous-groupes d'attributs d'appareils ou d'utilisateurs. |
| tag_and | Tableau JSON | Tag AND | Tableau. Plusieurs tags sont en relation ET, c'est-à-dire l'intersection. | À distinguer des tags, jusqu'à 20 à la fois. |
| tag_not | Tableau JSON | Tag NOT | Tableau. Pour plusieurs tags, l'ensemble fusionné est d'abord calculé, puis le complémentaire est pris. | Jusqu'à 20 par envoi. |
| alias | Tableau JSON | Alias | Tableau. Plusieurs alias sont en relation OU, c'est-à-dire concaténation. | Identifiez un utilisateur avec un alias. |
La relation implicite entre plusieurs valeurs dans un tableau est OU, c'est-à-dire la concaténation ; cependant, tag_and est différent car la relation entre plusieurs valeurs dans un tableau est ET, c'est-à-dire l'intersection.
Si tag_not est utilisé seul, nous effectuerons le traitement tag_not parmi les utilisateurs de diffusion.
Ces types peuvent coexister. La relation implicite entre plusieurs polynômes lors de la coexistence est ET, c'est-à-dire l'intersection. Par exemple :
"to" : {"tag" : [ "tag1", "tag2"],
"tag_and" : ["tag3", "tag4"],
"tag_not" : ["tag5", "tag6"]
}
Calculez d'abord le résultat du champ "tag" tag1 ou tag2 = A;
Puis calculez le résultat du champ "tag_and" tag3 et tag4 = B;
Puis calculez le résultat du champ "tag_not" non (tag5 ou tag6) = C;
Le résultat final de "to" est A et B et C.
Exemples de requêtes
- Push vers tous (diffusion):
{
"to": "all"
}
- Push vers plusieurs registration_id:
{
"to": {
"registration_id": [
"4312kjklfds2",
"8914afd2",
"45fdsa31"
]
}
}
body
Le corps de la requête. Les champs pris en charge sont les suivants:
| Mot-clé | Type | Option | Description |
|---|---|---|---|
| platform | String ou Tableau JSON | Obligatoire | Plateforme de push |
| notification | Objet JSON | Optionnel | |
| message | Objet JSON | Optionnel | |
| options | Objet JSON | Optionnel | Paramètres de push |
platform
MTPush prend actuellement en charge uniquement le push sur la plateforme Web, donc la valeur du mot-clé platform est "web".
{ "platform" : "web" }
notification
L'objet notification est l'un des objets de contenu de push (l'autre étant message) et est envoyé sur le web en tant que notification.
| Mot-clé | Type | Option | Signification | Description |
|---|---|---|---|---|
| web | Objet JSON | Obligatoire | Propriétés de la plateforme | Paramètres de push de la plateforme, voir web |
web
Notifications sur la plateforme Web
| Mot-clé | Type | Option | Signification | Description |
|---|---|---|---|---|
| alert | String ou Objet JSON | Obligatoire | Contenu | Le contenu du message lui-même, spécifié ici, écrase l'information alert spécifiée par le niveau supérieur. |
| url | String | Optionnel | URL push web | Adresse de redirection au clic sur la notification. Si elle est renseignée, elle doit être une URL valide. |
| title | String | Optionnel | Titre | Titre du message |
| extras | Objet JSON | Optionnel | Champs étendus | Vous pouvez personnaliser ici les informations Key/Value au format JSON pour un usage business. |
| icon | String | Optionnel | icône de notification | Recommandé 192*192px, pas de limite obligatoire ; taille maximale 1M, formats : JPG, PNG, GIF, support Chrome, Firefox (Safari et Edge ne permettent pas la personnalisation par défaut) |
| image | String | Optionnel | Grande image pour la notification | Recommandé 360*180px, pas de limite obligatoire ; taille maximale 1M, formats : JPG, PNG, GIF, Chrome, Edge supportés (Firefox et Safari non supportés) |
{
"notification": {
"web": {
"alert": "hello, Push!",
"title": "Test Push",
"url": "http://www.google.com",
"icon": "",
"image": "",
"extras": {
"news_id": 134,
"my_key": "une valeur"
}
}
}
}
message
Messages In-App ou messages personnalisés. Cette partie du contenu n'est pas affichée dans le navigateur. Après réception, le SDK le transmet au Web, qui traite la logique business.
Le message contient les champs suivants:
| Mot-clé | Type | Option | Description |
|---|---|---|---|
| msg_content | String ou Objet JSON | Obligatoire | Contenu du message |
| title | String | Optionnel | Titre du message |
| content_type | String | Optionnel | Type de contenu du message |
| extras | Objet JSON | Optionnel | Paramètres optionnels au format JSON |
Exemple:
{
"message": {
"msg_content": "Hi,Push",
"content_type": "text",
"title": "msg",
"extras": {
"key": "valeur"
}
}
}
options
Options de push. Les options suivantes sont disponibles:
| Mot-clé | Type | Option | Signification | Description |
|---|---|---|---|---|
| time_to_live | Int ou String | Optionnel | Durée de rétention du message hors ligne (secondes) | |
| override_msg_id | Long | Optionnel | ID du message à écraser | Si le push actuel doit écraser un push précédent, renseignez ici le msg_id du push précédent pour obtenir l'effet d'écrasement, c'est-à-dire : |
| big_push_duration | Int | Optionnel | Durée du push échelonné (minutes) | |
| web_buttons | Objet JSON | Optionnel | Ajouter des boutons aux notifications | |
| multi_language | Objet JSON | Optionnel | Paramètres de push multilingues | Paramètres d'adaptation multilingue pour le contenu du push. Voir multi_language. |
| third_party_channel | Objet JSON | Optionnel | Informations de configuration du canal système Web | Paramètre valide uniquement pour les utilisateurs configurés avec des canaux système. Voir third_party_channel. |
| plan_id | String | Optionnel | Identifiant du plan de push | Une valeur d'identifiant de plan doit être créée au préalable, via la console ou l'API. |
| cid | String | Optionnel | Identifiant de la requête de push pour éviter les doublons | Lettres, chiffres, underscores, tirets autorisés, 64 caractères max. Ce champ doit être unique pour un même AppKey. |
multi_language
Ce champ correspond à la fonction de push multilingue du service Push EngageLab. Il vous permet d'envoyer un contenu de notification personnalisé selon la langue de l'utilisateur. En spécifiant plusieurs langues et leur contenu, titre et sous-titre iOS dans la requête, vous pouvez envoyer la notification adaptée à la langue de l'utilisateur.
Paramètres de la requête
| Mot-clé | Type | Option | Signification | Description |
|---|---|---|---|---|
| en | string | Optionnel | Clé multilingue | Correspond à la langue de l'utilisateur, voir l'annexe pour les codes de langue |
| content | string | Optionnel | Contenu du message | Remplace notification.web.alert, message.msg_content selon la langue de l'utilisateur |
| title | string | Optionnel | Titre du message | Remplace notification.web.title, message.title selon la langue de l'utilisateur |
Exemple de requête
{
"options": {
"multi_language": {
"en": {
"content": "",
"title": ""
}
}
}
}
Exemple de réponse
En cas de succès :
{
}
En cas d'échec :
{
"code": 400,
"data": "",
"message": "Information d'erreur"
}
web_buttons
Utilisez le paramètre web_buttons pour décrire l'id, le texte, l'icône et l'url du bouton. Les descriptions des paramètres sont les suivantes :
| Mot-clé | Type | Options | Signification | Description |
|---|---|---|---|---|
| id | String | Obligatoire | ID du bouton | Pris en charge à partir de Chrome 48+ |
| text | String | Obligatoire | Texte du bouton | Pris en charge à partir de Chrome 48+ |
| icon | String | Optionnel | Icône du bouton | Pris en charge à partir de Chrome 50+ |
| url | String | Obligatoire | Lien de redirection du bouton | Pris en charge à partir de Chrome 48+. Si web_buttons est utilisé, le champ url dans web ne prend pas effet |
Exemple d'appel :
[
{
"id": "like-button",
"text": "Like",
"icon": "http://i.imgur.com/N8SN8ZS.png",
"url": "https://yoursite.com"
},
{
"id": "read-more-button",
"text": "Read more",
"icon": "http://i.imgur.com/MIxJp1L.png",
"url": "https://yoursite.com"
}
]
third_party_channel
Ce champ sert à renseigner l'information personnalisée du canal système Web. Le nom de la clé est w3push, la valeur est un Objet Json. L'Objet contient un seul champ distribution optionnel de type String
| Mot-clé | Type | Option | Signification | Description |
|---|---|---|---|---|
| distribution | Obligatoire | String | Lorsque Engagelab et le canal système coexistent, définissez la priorité de livraison. | La valeur ne peut pas être une chaîne vide. La valeur par défaut est first_ospush. |
Exemple :
{
"third_party_channel": {
"w3push": {
"distribution": "mtpush"
}
}
}
request_id
L'id de la requête. Le client identifie la requête et la réponse
Exemples de requêtes
{
"request_id": "12345678"
}
Exemple de réponse
custom_args
Champ optionnel défini par l'utilisateur. Non retourné dans la réponse, mais retourné lors du callback.
{
"custom_args": {
"business": "info"
}
}
Paramètres de réponse
Réponse de succès
| champ | type | option | description |
|---|---|---|---|
| request_id | String | Obligatoire | La propriété de réponse est toujours présente. L'ID personnalisé soumis dans la requête est renvoyé tel quel ; s'il est omis, il s'agit généralement d'une chaîne vide. |
| msg_id | String | Obligatoire | L'ID du message pour identifier de façon unique un message. |
< HTTP/1.1 200 OK
< Content-Type: application/json
{"request_id": "18", "msg_id": "1828256757"}
Réponse d'échec
Le code de statut http est 4xx ou 5xx et le corps de la réponse contient les champs suivants.
| Champ | Type | Option | Description |
|---|---|---|---|
| code | int | obligatoire | le code d'erreur. Pour plus d'informations, voir la description return-code |
| message | String | obligatoire | détails de l'erreur |
{
"code": 3002,
"message": "Le champ Push.template doit être correctement défini lorsque le type est template"
}
Réponse
Code de statut HTTP
Références : HTTP-Status-Code
Code de retour
| Code | Description | Explication détaillée | Code de statut HTTP |
|---|---|---|---|
| 20101 | Paramètres de push invalides | L'ID d'enregistrement est invalide ou n'appartient pas à l'appkey actuel | 400 |
| 21001 | Seule la méthode HTTP Post est prise en charge | La méthode Get n'est pas prise en charge | 405 |
| 21002 | Paramètre obligatoire manquant | Doit être corrigé | 400 |
| 21003 | Valeur de paramètre invalide | Doit être corrigé | 400 |
| 21004 | Vérification échouée | Doit être corrigé, voir : Vérification d'appel | 401 |
| 21005 | Corps du message trop volumineux | Doit être corrigé, limite de longueur Notification/Message est 4000 octets | 400 |
| 21007 | Paramètre d'entrée illégal | Le paramètre receiver_value est illégal | 400 |
| 21008 | Paramètre app_key invalide | Doit être corrigé. Vérifiez si l'appkey transmis est une chaîne de 24 caractères et s'il contient des espaces supplémentaires | 400 |
| 21009 | Erreur système interne | Veuillez contacter l'équipe de support | 400 |
| 21011 | Aucune cible de push appropriée trouvée | Vérifier le champ 'to' | 400 |
| 21015 | Validation des paramètres de requête échouée | Paramètres inattendus présents | 400 |
| 21016 | Validation des paramètres de requête échouée | Erreur de type de paramètre, ou longueur de paramètre dépasse la limite | 400 |
| 21030 | Délai d'attente du service interne | Réessayer plus tard | 503 |
| 21036 | Erreur de paramètre | Les messages de notification et les messages personnalisés ne peuvent pas être poussés simultanément | 400 |
| 21037 | group_key invalide | group_key n'est pas une chaîne de 24 caractères, ou le groupe d'applications correspondant n'existe pas | 400 |
| 21038 | Erreur de permission de push | VIP expiré ou non activé | 400 |
| 21039 | Erreur de paramètre Web Button | L'id, l'url ou le text du Web Button est vide | 400 |
| 21040 | Nombre de Web Button supérieur à la limite | Le nombre de Web Buttons ne peut pas dépasser 2 | 400 |
| 21041 | URL de Web Button invalide | Le format d'url du Web Button est invalide | 400 |
| 21042 | ID de Web Button en double | Les id de Web Button dans la même requête ne peuvent pas être dupliqués | 400 |
| 21043 | Erreur de permission de push | L'application a une facture impayée | 400 |
| 21061 | Échec de la validation du contenu ou de la configuration de callback | Le contenu du push contient des mots sensibles, ou le callback_url demandé n'est pas configuré dans les adresses de callback de l'application actuelle | 400 |
| 21062 | Le nombre de cibles de push du fichier dépasse la limite | Le nombre de cibles de push dans le fichier dépasse le quota de l'application ou la limite système | 400 |
| 23006 | Erreur de paramètre | big_push_duration du push à débit fixe dépasse la valeur maximale de 1440 | 400 |
| 23008 | Interface limitée en débit | QPS de l'interface push d'une seule application atteint la limite (500 qps) | 400 |
| 23009 | Erreur de permission de push | L'adresse IP de push actuelle n'est pas dans la liste blanche IP de l'application | 400 |
| 27000 | Erreur mémoire interne | Veuillez réessayer | 500 |
| 27001 | Informations d'authentification invalides | L'AppKey dans Basic Auth comporte 24 caractères mais l'application n'existe pas, ou les informations d'authentification de l'application sont invalides | 401 |
| 27006 | override_msg_id n'existe pas | Aucun enregistrement de push correspondant à override_msg_id n'a été trouvé | 400 |
| 27007 | Format de override_msg_id incorrect | override_msg_id est négatif ou a un format invalide | 400 |
| 27008 | Erreur de paramètre | Distribution dans third_party_channel n'est pas vide, mais le contenu alert de la notification est vide | 400 |
| 27009 | Erreur de paramètre | Format invalide ou vide pour distribution dans third_party_channel | 400 |
| 27104 | L'ID de segment n'existe pas | Le segment ID n'existe pas. Créez ou modifiez d'abord le segment | 400 |
| 27200 | msg_id invalide | Le format de msg_id est invalide | 400 |
| 27201 | msg_id n'existe pas ou n'appartient pas à l'application | Le msg_id n'existe pas, ou n'appartient pas à l'appkey actuel | 400 |
| 27202 | Le message a déjà été retiré | Le message correspondant à msg_id a déjà été retiré | 400 |
| 27203 | Erreur système | Erreur système, veuillez réessayer | 400 |
| 27204 | Délai de retrait du message dépassé | Le message a dépassé le délai de retrait autorisé | 400 |
| 27300 | ID de plan de push invalide | Le format de plan_id est invalide | 400 |
| 27301 | Description du plan de push invalide | La longueur de plan_description dépasse la limite | 400 |
| 27302 | Le nombre de plans de push dépasse la limite | Le nombre de plans de push disponibles a atteint la limite | 400 |
| 27303 | L'ID de plan de push est vide | plan_id ne peut pas être vide | 400 |
| 27304 | L'ID de plan de push est trop long | La longueur de plan_id dépasse la limite | 400 |
| 27305 | Le plan de push n'existe pas | Le plan_id fourni n'existe pas sous l'appkey actuel | 400 |
| 27306 | Le nombre d'ID de plan de push dépasse la limite | Le nombre de plan_ids dépasse la limite | 400 |
| 28100 | Paramètre de tâche planifiée invalide | Le paramètre schedule task est invalide | 400 |
| 28101 | Échec de l'authentification de la tâche planifiée | Basic Authentication a échoué | 401 |
| 28102 | Paramètre de push planifié invalide | Le paramètre push est vide ou invalide | 400 |
| 28103 | Heure de push planifié invalide | Le format de single time ou trigger time est incorrect | 400 |
| 28104 | La tâche planifiée n'existe pas | La schedule task demandée n'existe pas | 404 |
| 28105 | La tâche planifiée n'a pas de cible de push | Aucune cible de push ne correspond à l'heure planifiée | 400 |
| 28200 | Erreur système de la tâche planifiée | Une erreur interne inattendue s'est produite dans le service | 500 |
Restrictions de push
| Canal | Longueur du sujet | Longueur du contenu | Autres indications |
|---|---|---|---|
| Engagelab | Pas de limite, mais limite sur la taille totale du corps du message | Pas de limite, mais limite sur la taille totale du corps du message | La longueur de Notification MTPush est limitée à 4000 octets. |
| Canal système | <20 caractères (40 caractères anglais) | Aucun |
Code langue multi-langue
| Langue | Code |
|---|---|
| Anglais | en |
| Arabe | ar |
| Chinois (Simplifié) | zh-Hans |
| Chinois (Traditionnel) | zh-Hant |
| Tchèque | cs |
| Danois | da |
| Néerlandais | nl |
| Français | fr |
| Allemand | de |
| Hindi | hi |
| Italien | it |
| Japonais | ja |
| Coréen | ko |
| Malais | ms |
| Russe | ru |
| Espagnol | es |
| Thaï | th |
| Vietnamien | vi |
| Indonésien | id |
| Norvégien | no |
| Suédois | sv |
| Polonais | pl |
| Turc | tr |
| Hébreu | he |
| Portugais | pt |
| Roumain | ro |
| Hongrois | hu |
| Finnois | fi |
| Grec | el |
| Ukrainien | uk |
| Lao | lo |
| Portugais (Portugal) | pt_PT |
| Portugais (Brésil) | pt_BR |
| Espagnol (Argentine) | es_AR |
| Espagnol (Espagne) | es_ES |
| Espagnol (Amérique latine) | es_419 |










