API de Statistiques
info Ceci est la dernière version de l'API de Statistiques. Quelques améliorations dans la v4 :
- Utilisation de l'authentification HTTP Basic pour l'autorisation d'accès. Ainsi, toute la requête API peut être réalisée à l'aide d'outils HTTP courants, comme : curl, extensions de navigateur.
- Le contenu push utilise entièrement le format JSON.
Aperçu
L'API de Statistiques v4 fournit diverses fonctions de requête de données statistiques.
Authentification
Voir la présentation de l'API REST pour plus de détails Méthode d'authentification
Statistiques des messages
- Interrogez les statistiques de chaque état dans le cycle de vie du message.
- Les données statistiques de chaque message push peuvent être conservées pendant un mois maximum.
URL de l'API
GET v4/status/detail
Exemple de requête
curl -v https://pushapi-sgp.engagelab.com/v4/messages/details?message_ids=1613113584,1229760629 -u "7d431e42dfa6a6d693ac2d04:5e987ac6d2e04d95a9d8f0d1"
< GET /v4/messages/details?message_ids=1613113584,1229760629 HTTP/1.1
< Authorization: Basic N2Q0MzFlNDJkZmE2YTZkNjkzYWMyZDA0OjVlOTg3YWM2ZDJlMDRkOTVhOWQ4ZjBkMQ==
Paramètres de la requête
| Mots-clés | Type | Option | Description |
|---|---|---|---|
| message_ids | String | requis |
Exemple de réponse
< HTTP/1.1 200 OK
< Content-Type: application/json
{
"1229760629": {
"targets": 11,
"sent": 11,
"delivered": 10,
"impressions": 8,
"clicks": 2,
"sub": {
"notification": {},
"message": {},
"live_activity": {},
"voip": {},
"inapp_message": {}
},
"plan_id": "",
"pushContent": {}
},
"1613113584": {
"targets": 11,
"sent": 11,
"delivered": 10,
"impressions": 8,
"clicks": 2,
"sub": {
"notification": {
"target": 1600,
"sent": 1440,
"delivered": 1280,
"impressions": 1120,
"click": 0,
"sub_android": {
"engageLab_android": {
"targets": 100,
"sent": 90,
"delivered": 80,
"impressions": 70,
"clicks": 0
},
"huawei": {
"targets": 100,
"sent": 90,
"delivered": 80,
"impressions": 70,
"clicks": 0
},
"xiaomi": {
"targets": 100,
"sent": 90,
"delivered": 80,
"impressions": 70,
"clicks": 0
},
"oppo": {
"targets": 100,
"sent": 90,
"delivered": 80,
"impressions": 70,
"clicks": 0
},
"vivo": {
"targets": 100,
"sent": 90,
"delivered": 80,
"impressions": 70,
"clicks": 0
},
"meizu": {
"targets": 100,
"sent": 90,
"delivered": 80,
"impressions": 70,
"clicks": 0
},
"fcm": {
"targets": 100,
"sent": 90,
"delivered": 80,
"impressions": 70,
"clicks": 0
},
"honor": {
"targets": 100,
"sent": 90,
"delivered": 80,
"impressions": 70,
"clicks": 0
}
},
"sub_ios": {
"engageLab_ios": {
"targets": 100,
"sent": 90,
"delivered": 80,
"impressions": 70,
"clicks": 0
},
"apns": {
"targets": 100,
"sent": 90,
"delivered": 80,
"impressions": 70,
"clicks": 0
}
},
"sub_hmos": {
"engageLab_hmos": {
"targets": 100,
"sent": 90,
"delivered": 80,
"impressions": 70,
"clicks": 0
},
"harmonyos": {
"targets": 100,
"sent": 90,
"delivered": 80,
"impressions": 70,
"clicks": 0
}
}
},
"message": {
"targets": 100,
"sent": 90,
"delivered": 80,
"impressions": 70,
"clicks": 0,
"sub_android": {},
"sub_ios": {}
},
"live_activity": {
"targets": 1,
"sent": 1,
"delivered": 1,
"impressions": 0,
"clicks": 0,
"sub_ios": {
"engageLab_ios": {
"targets": 0,
"sent": 0,
"delivered": 0,
"impressions": 0,
"clicks": 0
},
"apns": {
"targets": 1,
"sent": 1,
"delivered": 1,
"impressions": 0,
"clicks": 0
}
}
}
},
"plan_id": "engageLab_notification",
"pushContent": {
"android": {
"title": "push",
"content": "hello, Push!"
},
"ios": {
"title": "ios",
"content": "pushContent",
"subtitle": "engageLab_push"
}
}
},
"1613113554": {
"targets": 2,
"sent": 0,
"delivered": 0,
"impressions": 0,
"clicks": 0,
"sub": {
"notification": {
"targets": 0,
"sent": 0,
"delivered": 0,
"impressions": 0,
"clicks": 0
},
"message": {
"targets": 2,
"sent": 0,
"delivered": 0,
"impressions": 0,
"clicks": 0,
"sub_android": {
"engageLab_android": {
"targets": 1,
"sent": 0,
"delivered": 0,
"impressions": 0,
"clicks": 0
},
"huawei": {
"targets": 0,
"sent": 0,
"delivered": 0,
"impressions": 0,
"clicks": 0
},
"xiaomi": {
"targets": 0,
"sent": 0,
"delivered": 0,
"impressions": 0,
"clicks": 0
},
"oppo": {
"targets": 0,
"sent": 0,
"delivered": 0,
"impressions": 0,
"clicks": 0
},
"vivo": {
"targets": 0,
"sent": 0,
"delivered": 0,
"impressions": 0,
"clicks": 0
},
"meizu": {
"targets": 0,
"sent": 0,
"delivered": 0,
"impressions": 0,
"clicks": 0
},
"fcm": {
"targets": 0,
"sent": 0,
"delivered": 0,
"impressions": 0,
"clicks": 0
},
"honor": {
"targets": 0,
"sent": 0,
"delivered": 0,
"impressions": 0,
"clicks": 0
}
},
"sub_ios": {
"engageLab_ios": {
"targets": 1,
"sent": 0,
"delivered": 0,
"impressions": 0,
"clicks": 0
},
"apns": {
"targets": 0,
"sent": 0,
"delivered": 0,
"impressions": 0,
"clicks": 0
}
}
},
"live_activity": {
"targets": 0,
"sent": 0,
"delivered": 0,
"impressions": 0,
"clicks": 0
},
"voip": {
"targets": 0,
"sent": 0,
"delivered": 0,
"impressions": 0,
"clicks": 0
},
"inapp_message": {
"targets": 0,
"sent": 0,
"delivered": 0,
"impressions": 0,
"clicks": 0
}
},
"plan_id": "engageLab_msg",
"pushContent": {
"message": {
"title": "msg",
"content": "push"
}
}
}
}
Paramètres de la réponse
La réponse réussie est un objet JSON, la clé étant le message_id. Chaque message doit inclure les statistiques du cycle de vie pour chaque phase :
| Mots-clés | Type | Option | Description |
| Mots-clés | Type | Options | Signification |
|---|---|---|---|
| targets | Int64 | Requis | Cibles valides. Nombre d'appareils cibles après filtrage du public cible sélectionné pour validité. |
| sent | Int64 | Requis | Nombre d'envois. Nombre d'appareils pour lesquels le serveur EngageLab a créé avec succès une tâche d'envoi parmi les appareils cibles valides. |
| delivered | Int64 | Requis | Nombre de livraisons. Nombre d'appareils auxquels le message de notification a été effectivement livré. Les livraisons après 5 jours ne sont pas comptabilisées. Pour Huawei, Meizu et iOS, une configuration de callback est nécessaire pour plus de précision. |
| impressions | Int64 | Requis | Nombre d'impressions. Nombre d'appareils sur lesquels le message de notification a été affiché avec succès. Les impressions après 5 jours ne sont pas comptabilisées. |
| clicks | Int64 | Requis | Nombre de clics. Nombre de fois où le message de notification a été cliqué par les utilisateurs après affichage réussi. Les clics après 5 jours ne sont pas comptabilisés. |
| sub | Object | Requis | Indicateurs détaillés des données statistiques, voir tableau ci-dessous. |
| plan_id | String | Requis | ID du plan push, identifie le type de plan push auquel appartient le message |
| pushContent | Object | Requis | Détails du contenu push, incluant les informations de contenu push pour différentes plateformes : - android : contenu push pour Android (champs tels que title et content) - ios : contenu push pour iOS (champs tels que title, content et subtitle) - message : contenu de message personnalisé (champs tels que title et content) |
indicateur
| Mots-clés | Type | Option | Description |
|---|---|---|---|
| sub_android | Object | optionnel | Statistiques et synthèse des canaux push Android |
| engageLab_android | Object | optionnel | Statistiques et synthèse du canal Android EngageLab |
| huawei | Object | optionnel | Statistiques et synthèse des canaux Huawei |
| honor | Object | optionnel | Statistiques et synthèse des canaux Honor |
| xiaomi | Object | optionnel | Statistiques et synthèse du canal Xiaomi |
| oppo | Object | optionnel | Statistiques et synthèse du canal OPPO |
| vivo | Object | optionnel | Statistiques et synthèse du canal vivo |
| meizu | Object | optionnel | Statistiques et synthèse du canal Meizu |
| fcm | Object | optionnel | Statistiques et synthèse du canal FCM |
| sub_ios | Object | optionnel | Statistiques et synthèse des canaux push Apple |
| engageLab_ios | Object | optionnel | Statistiques et synthèse du canal iOS EngageLab |
| apns | Object | optionnel | Statistiques et synthèse du canal APNs iOS |
| sub_hmos | Object | optionnel | Statistiques et synthèse des canaux push Harmony |
| engageLab_hmos | Object | optionnel | Statistiques et synthèse du canal Harmony EngageLab |
| harmonyos | Object | optionnel | Statistiques et synthèse du canal HarmonyOS |
Statistiques des plans push
- Cette interface permet d'obtenir des indicateurs statistiques détaillés du plan push. Elle prend en charge la requête par lot des données du cycle de vie complet de plusieurs plans sur la plage de dates spécifiée, incluant des indicateurs de subdivision multi-dimensionnels (plateforme/fabricant/type de message).
Adresse d'appel
GET v4/status/plan/detail
Exemple de requête
GET /v4/status/plan/detail?plan_ids=push_20231101,push_20231102&start_date=2023-11-01&end_date=2023-11-07
Paramètres de la requête
| Nom du paramètre | Type | Requis | Description |
|---|---|---|---|
| plan_ids | string | Oui | Liste des IDs de plans push, séparés par des virgules pour plusieurs IDs. Jusqu'à 100 IDs sont pris en charge. |
| start_date | string | Oui | Date de début des statistiques (Format : yyyy-MM-dd). Doit respecter : |
| end_date | string | Oui | Date de fin des statistiques (Format : yyyy-MM-dd) |
Description des paramètres de retour
Réponse réussie
- L'objet retourné est une paire clé-valeur, et le nom de la clé est le plan_id demandé.
- Chaque objet correspondant à un plan_id contient les champs suivants :
| Nom du paramètre | Type | Description |
|---|---|---|
| targets | int64 | Nombre d'appareils cibles valides (total après déduplication et filtrage de validité) |
| sent | int64 | Nombre d'appareils pour lesquels la tâche d'envoi a été effectivement créée |
| delivered | int64 | Nombre d'appareils effectivement livrés (seules les données dans les 5 jours sont comptabilisées) |
| impressions | int64 | Nombre d'impressions du message (seules les données dans les 5 jours sont comptabilisées) |
| clicks | int64 | Nombre de clics utilisateurs (seules les données dans les 5 jours sont comptabilisées) |
| sub | object | Statistiques de subdivision par type de message (structure ci-dessous) |
Structure de l'objet sub
Type de message Description Sous-structure notification Statistiques des messages barre de notification Contient sub_android(statistiques fabricants Android)/sub_ios(statistiques iOS)message Statistiques des messages personnalisés Contient sub_android/sub_ioslive_activity Statistiques des messages d'activité en direct Contient uniquement sub_iosvoip Statistiques des messages VOIP Contient uniquement sub_iosChamps statistiques des fabricants de plateforme
Nom du paramètre Type Description targets int64 Nombre d'appareils cibles valides pour le fabricant correspondant sent int64 Nombre réel d'envois via le canal du fabricant delivered int64 Nombre réel de livraisons via le canal du fabricant impressions int64 Nombre d'impressions via le canal du fabricant clicks int64 Nombre de clics via le canal du fabricant
Exemple de réponse
Réponse réussie
{
"push_20231101": {
"targets": 1500,
"sent": 1450,
"delivered": 1400,
"impressions": 1350,
"clicks": 120,
"sub": {
"notification": {
"sub_android": {
"huawei": { "targets":200, "sent":190, "delivered":185, "impressions":180, "clicks":15 },
"xiaomi": { "targets":180, "sent":175, "delivered":170, "impressions":165, "clicks":10 }
},
"sub_ios": {
"apns": { "targets":300, "sent":295, "delivered":290, "impressions":285, "clicks":25 }
}
},
"live_activity": {
"sub_ios": {
"apns": { "targets":50, "sent":48, "delivered":45, "impressions":40, "clicks":5 }
}
}
}
}
}
Réponse échouée
{
"error": {
"code": 21003,
"message": "La valeur du paramètre est invalide"
}
}
Statistiques des utilisateurs
- Fournit les données statistiques des utilisateurs sur une certaine période des deux derniers mois : Inclut les nouveaux utilisateurs, utilisateurs en ligne et utilisateurs actifs.
- Unité de temps : HOUR, DAY, MONTH.
URL de l'API de requête
GET v4/status/users
Exemple de requête
curl -v https://pushapi-sgp.engagelab.com/v4/status/users?time_unit=DAY&start=2014-06-10&duration=3 -u "7d431e42dfa6a6d693ac2d04:5e987ac6d2e04d95a9d8f0d1"
< GET /v4/users?time_unit=DAY&start=2014-06-10&duration=3 HTTP/1.1
< Authorization: Basic N2Q0MzFlNDJkZmE2YTZkNjkzYWMyZDA0OjVlOTg3YWM2ZDJlMDRkOTVhOWQ4ZjBkMQ==
Paramètres de la requête
| Mots-clés | Type | Option | Description |
|---|---|---|---|
| time_unit | String | requis | unité de temps : |
| start | String | requis | Heure de début |
| duration | String | requis | Durée |
Exemple de réponse
< HTTP/1.1 200 OK
< Content-Type: application/json
{
"time_unit": "DAY",
"start": "2014-06-10",
"duration": 3,
"items": [{
"time": "2014-06-12",
"android": {
"new": 1,
"active": 1,
"online": 2
},
"ios": {
"new": 1,
"active": 1,
"online": 2
},
"hmos": {
"new": 1,
"active": 1,
"online": 2
}
}]
}
Paramètres de la réponse
La réponse réussie est un objet JSON :
| Mots-clés | Type | Options | Description |
|---|---|---|---|
| time_unit | String | requis | unité de temps |
| start | String | requis | Heure de début. |
| duration | String | requis | Durée |
| items | JSON Array | requis | Résultats statistiques sur la plage de requête par durée |
- Description du champ items :
- android : Statistiques de synthèse des données de la plateforme Android.
- ios : Statistiques de synthèse des données de la plateforme Apple.
- hmos : Statistiques de synthèse des données de la plateforme HarmonyOS.
| Mots-clés | Type | Option | Description |
|---|---|---|---|
| new | Int64 | optionnel | Nouveaux utilisateurs |
| active | Int64 | optionnel | Utilisateurs actifs |
Interroger le statut du cycle de vie du message
- Interrogez le statut du cycle de vie du message pour l'appareil correspondant au
message_id. - Les statistiques de chaque message push sont conservées jusqu'à un mois.
Point de terminaison de l'API
GET v4/status/message
Exemple de requête
curl -v https://pushapi-sgp.engagelab.com/v4/status/message?message_id=1613113584®istration_ids=1507bfd3a7c568d4761,1618cfd3a7c568d4761,17259fd3a7c568d4371 -u "7d431e42dfa6a6d693ac2d04:5e987ac6d2e04d95a9d8f0d1"
< GET /v4/status/message?message_id=1613113584®istration_ids=1507bfd3a7c568d4761,1618cfd3a7c568d4761,17259fd3a7c568d4371 HTTP/1.1
< Authorization: Basic N2Q0MzFlNDJkZmE2YTZkNjkzYWMyZDA0OjVlOTg3YWM2ZDJlMDRkOTVhOWQ4ZjBkMQ==
Paramètres de la requête
| Mots-clés | Type | Option | Description |
|---|---|---|---|
| message_id | String | Requis | ID du message |
| registration_ids | String | Requis | registration_id, séparez-les par ",".registration_id sont pris en charge. |
Description des paramètres de la réponse
Une réponse réussie est un objet JSON contenant le statut actuel du message pour chaque registration_id. En cas d'erreur, l'information sera incluse dans error_message.
| Mots-clés | Type | Options | Signification |
|---|---|---|---|
| status | String | Optionnel | Valeurs possibles : |
| error_message | String | Optionnel | Message d'erreur, disponible uniquement pour certains statuts. |
| error_code | Int64 | Optionnel | Code d'état d'erreur, disponible uniquement pour certains statuts. |
| itime | Int64 | Optionnel | Heure de mise à jour du statut, en secondes. |
| channel | String | Optionnel | Informations sur le canal via lequel le message est poussé. |
Exemple de réponse
Réponse réussie
< HTTP/1.1 200 OK
< Content-Type: application/json
{
"1507bfd3a7c568d4761": {
"itime": 1762331775,
"channel": "FCM",
"status": "delivered"
},
"17259fd3a7c568d4371": {
"error_code": 21003,
"error_message": "Le `registration_id` n'appartient pas à l'appkey"
},
"17259fd3a7c568d4787":{
"itime": 1762331775,
"status": "sent_failed",
"error_code": 401,
"error_message": "token invalide",
"channel": "FCM"
},
"17259fd3a7c568d4372": {
"error_code": 21061,
"error_message": "aucun statut effectif"
}
}
Réponse échouée
{
"error": {
"code": 21003,
"message": "La valeur du paramètre est invalide"
}
}
Requête par lot du statut du cycle de vie du message
- Requête par lot du statut du cycle de vie du message pour un seul
registration_idsous chaquemessage_id. Si plusieursregistration_idexistent sous le mêmemessage_id, lesmessage_idcorrespondants seront retournés dansmulti_regid_message_ids. - Les statistiques de chaque message push sont conservées jusqu'à un mois.
Point de terminaison de l'API
GET v4/status/batch/message
Exemple de requête
curl -v https://pushapi-sgp.engagelab.com/v4/status/batch/message?message_ids=1613113584,1613113585,1613113586 -u "7d431e42dfa6a6d693ac2d04:5e987ac6d2e04d95a9d8f0d1"
< GET /v4/status/batch/message?message_ids=1613113584,1613113585,1613113586 HTTP/1.1
< Authorization: Basic N2Q0MzFlNDJkZmE2YTZkNjkzYWMyZDA0OjVlOTg3YWM2ZDJlMDRkOTVhOWQ4ZjBkMQ==
Paramètres de la requête
| Mots-clés | Type | Option | Description |
|---|---|---|---|
| message_ids | String | Requis | message_id, séparez-les par ",".message_id sont pris en charge. |
Description des paramètres de la réponse
La réponse réussie est un tableau d'objets ; chaque élément représente le statut actuel sous un seul message_id (et éventuellement un seul registration_id). En cas d'exception, elle sera incluse dans error_message.
| Mots-clés | Type | Options | Signification |
|---|---|---|---|
| message_id | String | Requis | Le message_id du message. |
| registration_id | String | Optionnel | Le seul registration_id interrogé. |
| status | String | Optionnel | Valeurs possibles : |
| itime | Int64 | Optionnel | Heure de mise à jour du statut, en secondes. |
| channel | String | Optionnel | Informations sur le canal via lequel le message est poussé. |
| error_message | String | Optionnel | Message d'erreur, disponible uniquement pour certains statuts. |
| error_code | Int64 | Optionnel | Code d'état d'erreur, disponible uniquement pour certains statuts. |
Exemple de réponse
Réponse réussie
< HTTP/1.1 200 OK
< Content-Type: application/json
[
{
"message_id": "261585110",
"error_message": "Plusieurs `registration_id` trouvés sous le même `message_id`.",
"error_code": 21003
},
{
"message_id": "261585111",
"registration_id": "170976fa8ab73279b2f",
"status": "sent",
"itime": 1766042841,
"channel": "XiaoMi"
},
{
"message_id": "261585123",
"registration_id": "170976fa8ab73279b2f",
"status": "click",
"itime": 1766047747,
"channel": "EngageLab"
},
{
"message_id": "1613113585",
"error_message": "Le `message_id` est invalide ou n'existe pas.",
"error_code": 21003
},
{
"message_id": "1613113585",
"error_message": "aucun statut effectif",
"error_code": 21061
}
]
Réponse échouée
{
"error": {
"code": 21003,
"message": "La valeur du paramètre est invalide"
}
}
Code de réponse
Code d'état HTTP
Documents de référence : HTTP-Status-Code
Codes de retour
| Code | Description | Description détaillée | Code d'état HTTP |
|---|---|---|---|
| 0 | succès | requête réussie | 200 |
| 21001 | La méthode n'est pas prise en charge ou url erronée | Erreur de méthode de requête (GET/POST) ou url erronée (interface inexistante) | 404 |
| 21003 | La valeur du paramètre est invalide | Valeur du paramètre illégale | 400 |
| 23001 | Échec de l'authentification de base | Échec de l'autorisation HTTP Basic | 401 |
| 23002 | Paramètre manquant ! | Paramètre nécessaire manquant ! | 400 |
| 23004 | La valeur de time_unit ne correspond pas à start ! | Les valeurs de time_unit et du paramètre start ne correspondent pas | 400 |
| 23007 | Seule la requête des message_id dans les 30 jours est prise en charge ! | Seuls les messages des 30 derniers jours peuvent être interrogés | 400 |
| 23100 | Erreur serveur | Erreur interne du système | 500 |
| 27000 | Délai de réponse du serveur, veuillez réessayer plus tard | Erreur interne du système | 500 |
| 27201 | msgid inexistant ou n'appartient pas à cette app | Msgid inexistant ou n'appartient pas à cette app | 400 |

