Statistik-API
info Dies ist die neueste Version der Statistik-API. Verbesserungen in v4:
- Zugriffsauthorisierung erfolgt über HTTP Basic Authentication. Dadurch kann die gesamte API-Anfrage mit gängigen HTTP-Tools wie curl oder Browser-Plugins durchgeführt werden.
- Push-Inhalte werden vollständig im JSON-Format übertragen.
Überblick
Die Statistik-API v4 bietet verschiedene Funktionen zur Abfrage statistischer Daten.
Authentifizierung
Details zur Authentifizierung finden Sie in der Übersicht zur REST-API: Authentifizierungsmethode
Nachrichtenstatistiken
- Abfrage der Statistiken zu jedem Status im Lebenszyklus einer Nachricht.
- Die statistischen Daten jeder Push-Nachricht werden maximal einen Monat lang gespeichert.
API-URL
GET v4/status/detail
Anfragebeispiel
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==
Anfrageparameter
| Schlüsselwort | Typ | Erforderlich | Beschreibung |
|---|---|---|---|
| message_ids | String | Ja | message_id. Bei mehreren message_ids werden diese durch „,“ getrennt. Bis zu 100 message_ids werden unterstützt. |
Antwortbeispiel
< 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": {}
},
...
}
Antwortparameter
Die erfolgreiche Antwort ist ein JSON-Objekt, wobei der Schlüssel die message_id ist. Jede Nachricht enthält Lebenszyklus-Statistiken für jede Phase:
| Schlüsselwort | Typ | Erforderlich | Bedeutung |
|---|---|---|---|
| targets | Int64 | Ja | Gültige Zielgeräte. Anzahl der Geräte nach Filterung der Zielgruppe auf Gültigkeit. |
| sent | Int64 | Ja | Anzahl der gesendeten Nachrichten. Anzahl der Geräte, für die der EngageLab-Server erfolgreich eine Sendeaufgabe erstellt hat. |
| delivered | Int64 | Ja | Anzahl der zugestellten Nachrichten. Anzahl der Geräte, an die die Benachrichtigung tatsächlich zugestellt wurde. Zustellungen nach 5 Tagen werden nicht gezählt. Für Huawei, Meizu und iOS ist eine Callback-Konfiguration für mehr Genauigkeit erforderlich. |
| impressions | Int64 | Ja | Anzahl der Impressionen. Anzahl der Geräte, auf denen die Benachrichtigung erfolgreich angezeigt wurde. Impressionen nach 5 Tagen werden nicht gezählt. |
| clicks | Int64 | Ja | Anzahl der Klicks. Wie oft die Benachrichtigung nach erfolgreicher Anzeige von Nutzer:innen angeklickt wurde. Klicks nach 5 Tagen werden nicht gezählt. |
| sub | Objekt | Ja | Detaillierte Metriken der Statistik, siehe Tabelle unten. notification: Zusammengefasste Statistik der Benachrichtigungsleiste. message: Zusammengefasste Statistik für benutzerdefinierte Nachrichten. live_activity: Statistik für Echtzeit-Aktivitätsnachrichten. voip: Statistik für VoIP-Nachrichten. |
| plan_id | String | Ja | Push-Plan-ID, die den Typ des Push-Plans identifiziert, zu dem die Nachricht gehört. |
| pushContent | Objekt | Ja | Details zum Push-Inhalt, einschließlich Informationen für verschiedene Plattformen: - android: Android-Push-Inhalt (z. B. Titel und Inhalt) - ios: iOS-Push-Inhalt (z. B. Titel, Inhalt, Untertitel) - message: Benutzerdefinierter Nachrichteninhalt (z. B. Titel und Inhalt) |
Indikatoren
| Schlüsselwort | Typ | Erforderlich | Beschreibung |
|---|---|---|---|
| sub_android | Objekt | Optional | Datenzusammenfassung und Statistik der Android-Push-Kanäle |
| engageLab_android | Objekt | Optional | Datenzusammenfassung und Statistik des Android EngageLab-Kanals |
| huawei | Objekt | Optional | Datenzusammenfassung und Statistik der Huawei-Kanäle |
| honor | Objekt | Optional | Datenzusammenfassung und Statistik der Honor-Kanäle |
| xiaomi | Objekt | Optional | Datenzusammenfassung und Statistik des Xiaomi-Kanals |
| oppo | Objekt | Optional | Datenzusammenfassung und Statistik des OPPO-Kanals |
| vivo | Objekt | Optional | Zusammenfassung und Statistik der vivo-Kanaldaten |
| meizu | Objekt | Optional | Datenzusammenfassung und Statistik der Meizu-Kanäle |
| fcm | Objekt | Optional | Datenzusammenfassung und Statistik des FCM-Kanals |
| sub_ios | Objekt | Optional | Datenzusammenfassung und Statistik der Apple-Push-Kanäle |
| engageLab_ios | Objekt | Optional | Datenzusammenfassung und Statistik des iOS EngageLab-Kanals |
| apns | Objekt | Optional | Datenzusammenfassung und Statistik der iOS-APNs-Kanäle |
| sub_hmos | Objekt | Optional | Datenzusammenfassung und Statistik der Harmony-Push-Kanäle |
| engageLab_hmos | Objekt | Optional | Datenzusammenfassung und Statistik des Harmony EngageLab-Kanals |
| harmonyos | Objekt | Optional | Datenzusammenfassung und Statistik des HarmonyOS-Kanals |
Push-Plan-Statistiken
- Dieses Interface dient dazu, detaillierte statistische Kennzahlen eines Push-Plans abzurufen. Es unterstützt die Batch-Abfrage von vollständigen Lebenszyklusdaten mehrerer Pläne im angegebenen Zeitraum, einschließlich multidimensionaler Unterteilungen (Plattform/Hersteller/Nachrichtentyp).
API-URL
GET v4/status/plan/detail
Anfragebeispiel
GET /v4/status/plan/detail?plan_ids=push_20231101,push_20231102&start_date=2023-11-01&end_date=2023-11-07
Anfrageparameter
| Schlüsselwort | Typ | Erforderlich | Beschreibung |
|---|---|---|---|
| plan_ids | String | Ja | Liste der Push-Plan-IDs, mehrere IDs durch Kommas getrennt. Bis zu 100 werden unterstützt. |
| start_date | String | Ja | Statistischer Startzeitpunkt (Format: JJJJ-MM-TT). Bedingungen: 1. Enddatum ≥ Startdatum 2. Zeitraum ≤ 31 Tage |
| end_date | String | Ja | Statistisches Enddatum (Format: JJJJ-MM-TT) |
Rückgabeparameter
Erfolgreiche Antwort
- Das zurückgegebene Objekt ist ein Key-Value-Paar, wobei der Key die angefragte plan_id ist.
- Jedes Objekt zu einer plan_id enthält folgende Felder:
| Schlüsselwort | Typ | Beschreibung |
|---|---|---|
| targets | Int64 | Anzahl der gültigen Zielgeräte (nach Dubletten- und Gültigkeitsfilterung) |
| sent | Int64 | Anzahl der Geräte, für die tatsächlich eine Sendeaufgabe erstellt wurde |
| delivered | Int64 | Anzahl der tatsächlich zugestellten Geräte (nur Daten innerhalb von 5 Tagen werden gezählt) |
| impressions | Int64 | Anzahl der Impressionen (nur Daten innerhalb von 5 Tagen werden gezählt) |
| clicks | Int64 | Anzahl der Nutzer:innen-Klicks (nur Daten innerhalb von 5 Tagen werden gezählt) |
| sub | Objekt | Unterteilung der Statistiken nach Nachrichtentyp (Struktur siehe unten) |
- Struktur des sub-Objekts
| Nachrichtentyp | Beschreibung | Unterstruktur |
|---|---|---|
| notification | Statistik der Benachrichtigungsleiste | Enthält sub_android (Android-Herstellerstatistik) / sub_ios (iOS-Statistik) |
| message | Statistik der benutzerdefinierten Nachrichten | Enthält sub_android / sub_ios |
| live_activity | Statistik der Live-Aktivitätsnachrichten | Enthält nur sub_ios |
| voip | Statistik der VoIP-Nachrichten | Enthält nur sub_ios |
- Felder der Plattform-/Herstellerstatistik
| Schlüsselwort | Typ | Beschreibung |
|---|---|---|
| targets | Int64 | Anzahl der gültigen Zielgeräte für den jeweiligen Hersteller |
| sent | Int64 | Tatsächlich gesendete Nachrichten über den Herstellerkanal |
| delivered | Int64 | Tatsächlich zugestellte Nachrichten über den Herstellerkanal |
| impressions | Int64 | Anzahl der Impressionen über den Herstellerkanal |
| clicks | Int64 | Anzahl der Klicks über den Herstellerkanal |
Antwortbeispiel
Erfolgreiche Antwort
{
"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 }
}
}
}
}
}
Fehlgeschlagene Antwort
{
"error": {
"code": 21003,
"message": "Parameterwert ist ungültig"
}
}
Nutzerstatistiken
- Bietet nutzerbezogene Statistiken für einen bestimmten Zeitraum der letzten zwei Monate: Dazu zählen neue Nutzer:innen, Online-Nutzer:innen und aktive Nutzer:innen.
- Zeiteinheit: HOUR, DAY, MONTH.
API-URL
GET v4/status/users
Anfragebeispiel
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==
Anfrageparameter
| Schlüsselwort | Typ | Erforderlich | Beschreibung |
|---|---|---|---|
| time_unit | String | Ja | Zeiteinheit: HOUR, DAY, MONTH |
| start | String | Ja | Startzeitpunkt. - Bei Einheit Stunde: Startzeit im Format Tag und Stunde (ggf. mit führender Null), z. B. 2022-06-11 09 - Bei Einheit Tag: Startdatum im Format Tag, z. B. 2022-06-11 - Bei Einheit Monat: Startdatum im Format Monat, z. B. 2022-06 |
| duration | String | Ja | Zeitraum. - Bei Einheit Tag: Anzahl aufeinanderfolgender Tage usw. - Es können nur Nutzerinformationen der letzten 60 Tage abgefragt werden. Bei Zeiteinheit HOUR werden nur Ergebnisse des aktuellen Tages ausgegeben. |
Antwortbeispiel
< 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
}
}]
}
Antwortparameter
Die erfolgreiche Antwort ist ein JSON-Objekt:
| Schlüsselwort | Typ | Erforderlich | Beschreibung |
|---|---|---|---|
| time_unit | String | Ja | Zeiteinheit: HOUR, DAY, MONTH |
| start | String | Ja | Startzeitpunkt. - Bei Einheit Stunde: Startzeit im Format Tag und Stunde (ggf. mit führender Null), z. B. 2022-06-11 09 - Bei Einheit Tag: Startdatum im Format Tag, z. B. 2022-06-11 - Bei Einheit Monat: Startdatum im Format Monat, z. B. 2022-06 |
| duration | String | Ja | Zeitraum. - Bei Einheit Tag: Anzahl aufeinanderfolgender Tage usw. - Es können nur Nutzerinformationen der letzten 60 Tage abgefragt werden. Bei Zeiteinheit HOUR werden nur Ergebnisse des aktuellen Tages ausgegeben. |
| items | Array | Ja | Statistische Ergebnisse im Abfragezeitraum nach Zeitraum |
- Beschreibung des items-Felds:
- android: Zusammengefasste Statistikdaten der Android-Plattform.
- ios: Zusammengefasste Statistikdaten der Apple-Plattform.
- hmos: Zusammengefasste Statistikdaten der HarmonyOS-Plattform.
| Schlüsselwort | Typ | Optional | Beschreibung |
|---|---|---|---|
| new | Int64 | Ja | Neue Nutzer:innen |
| active | Int64 | Ja | Aktive Nutzer:innen |
| online | Int64 | Ja | Online-Nutzer:innen |
Abfrage des Nachrichten-Lebenszyklusstatus
- Abfrage des Lebenszyklusstatus einer Nachricht für das Gerät mit der angegebenen message_id.
- Statistiken jeder Push-Nachricht werden bis zu einem Monat gespeichert.
API-Endpunkt
GET v4/status/message
Anfragebeispiel
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==
Anfrageparameter
| Schlüsselwort | Typ | Erforderlich | Beschreibung |
|---|---|---|---|
| message_id | String | Ja | Nachrichten-ID |
| registration_ids | String | Ja | Geräte-ID. Bei mehreren registration_ids durch „,“ trennen. Bis zu 1.000 registration_ids werden unterstützt. |
Antwortparameter
Eine erfolgreiche Antwort ist ein JSON-Objekt mit dem aktuellen Status der Nachricht für jede registration_id. Bei Fehlern sind Informationen in error_message enthalten.
| Schlüsselwort | Typ | Optional | Bedeutung |
|---|---|---|---|
| status | String | Ja | Werte: plan, target_valid, target_invalid, sent, sent_failed, delivered, delivered_failed, Impression, click |
| error_message | String | Ja | Fehlermeldung, nur bei bestimmten Status verfügbar. |
| error_code | Int64 | Ja | Fehlercode, nur bei bestimmten Status verfügbar. |
| itime | Int64 | Ja | Zeitpunkt der Statusaktualisierung (Sekundengenauigkeit). |
| channel | String | Ja | Informationen zum verwendeten Push-Kanal. |
Antwortbeispiel
Erfolgreiche Antwort
< HTTP/1.1 200 OK
< Content-Type: application/json
{
"1507bfd3a7c568d4761": {
"itime": 1762331775,
"channel": "FCM",
"status": "delivered"
},
"17259fd3a7c568d4371": {
"error_code": 21003,
"error_message": "Die registration_id gehört nicht zum appkey"
},
...
}
Fehlgeschlagene Antwort
{
"error": {
"code": 21003,
"message": "Parameterwert ist ungültig"
}
}
Batch-Abfrage des Nachrichten-Lebenszyklusstatus
- Batch-Abfrage des Nachrichtenstatus für eine einzelne registration_id unter jeder message_id. Bei mehreren registration_ids unter derselben message_id werden die entsprechenden message_ids in multi_regid_message_ids zurückgegeben.
- Statistiken jeder Push-Nachricht werden bis zu einem Monat gespeichert.
API-Endpunkt
GET v4/status/batch/message
Anfragebeispiel
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==
Anfrageparameter
| Schlüsselwort | Typ | Erforderlich | Beschreibung |
|---|---|---|---|
| message_ids | String | Ja | Nachrichten-IDs. Bei mehreren message_ids durch „,“ trennen. Bis zu 100 message_ids werden unterstützt. |
Antwortparameter
Die erfolgreiche Antwort ist ein Array-Objekt. Jeder Eintrag repräsentiert den aktuellen Status unter einer einzelnen message_id (und ggf. einer einzelnen registration_id). Bei Fehlern wird dies in error_message angegeben.
| Schlüsselwort | Typ | Optional | Bedeutung |
|---|---|---|---|
| message_id | String | Ja | Die Nachrichten-ID. |
| registration_id | String | Ja | Die abgefragte einzelne registration_id. |
| status | String | Ja | Werte: plan, target_valid, target_invalid, sent, sent_failed, delivered, delivered_failed, Impression, click |
| itime | Int64 | Ja | Zeitpunkt der Statusaktualisierung (Sekundengenauigkeit). |
| channel | String | Ja | Informationen zum verwendeten Push-Kanal. |
| error_message | String | Ja | Fehlermeldung, nur bei bestimmten Status verfügbar. |
| error_code | Int64 | Ja | Fehlercode, nur bei bestimmten Status verfügbar. |
Antwortbeispiel
Erfolgreiche Antwort
< HTTP/1.1 200 OK
< Content-Type: application/json
[
{
"message_id": "261585110",
"error_message": "Mehrere registration_id unter derselben message_id gefunden.",
"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": "Die message_id ist ungültig oder existiert nicht.",
"error_code": 21003
},
{
"message_id": "1613113585",
"error_message": "kein effektiver Status",
"error_code": 21061
}
]
Fehlgeschlagene Antwort
{
"error": {
"code": 21003,
"message": "Parameterwert ist ungültig"
}
}
Antwortcodes
HTTP-Statuscodes
Referenzdokumente: HTTP-Status-Code
Rückgabecodes
| Fehlercode | Beschreibung | Detailbeschreibung | HTTP-Statuscode |
|---|---|---|---|
| 0 | Erfolg | Anfrage erfolgreich | 200 |
| 21001 | Methode nicht unterstützt oder URL-Fehler | Fehlerhafte Anfragemethode (GET/POST) oder URL-Fehler (Schnittstelle existiert nicht) | 404 |
| 21003 | Parameterwert ist ungültig | Ungültiger Parameterwert | 400 |
| 23001 | HTTP-Basisauthentifizierung fehlgeschlagen | HTTP Basic Authentication fehlgeschlagen | 401 |
| 23002 | Fehlender Parameter! | Notwendiger Parameter fehlt! | 400 |
| 23004 | time_unit stimmt nicht mit start überein | Die Werte von time_unit und start passen nicht zusammen | 400 |
| 23007 | Es können nur message_id innerhalb von 30 Tagen abgefragt werden! | Es können nur Nachrichten der letzten 30 Tage abgefragt werden | 400 |
| 23100 | Serverfehler | Interner Systemfehler | 500 |
| 27000 | Server-Antwortzeit überschritten, bitte später erneut versuchen | Interner Systemfehler | 500 |
| 27201 | msgid existiert nicht oder gehört nicht zu dieser App | msgid existiert nicht oder gehört nicht zu dieser App | 400 |

