Statistik API
info Ini adalah versi terbaru dari Stats API. Beberapa peningkatan pada v4:
- Menggunakan HTTP Basic Authentication untuk otorisasi akses. Dengan cara ini, seluruh permintaan API dapat dilakukan menggunakan alat HTTP umum, seperti: curl, plugin browser.
- Konten push sepenuhnya menggunakan format JSON.
Ikhtisar
Stats API v4 menyediakan berbagai fungsi kueri data statistik.
Autentikasi
Lihat REST API Overview untuk detail Metode Autentikasi
Statistik Pesan
- Kueri statistik setiap status dalam siklus hidup pesan.
- Data statistik setiap pesan push dapat disimpan maksimal satu bulan.
API Url
GET v4/status/detail
Contoh Permintaan
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==
Parameter Permintaan
| Kata Kunci | Tipe | Opsi | Deskripsi |
|---|---|---|---|
| message_ids | String | wajib |
Contoh Respons
< 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"
}
}
}
}
Parameter Respons
Respons sukses berupa objek JSON, dan kunci adalah message_id. Setiap pesan harus menyertakan statistik siklus hidup pada setiap fase:
| Kata Kunci | Tipe | Opsi | Deskripsi |
| Kata Kunci | Tipe | Opsi | Makna |
|---|---|---|---|
| targets | Int64 | Wajib | Target valid. Jumlah perangkat target setelah audiens target pada tugas push difilter validitasnya. |
| sent | Int64 | Wajib | Jumlah pengiriman. Jumlah perangkat yang berhasil dibuatkan tugas pengiriman oleh server Engagelab dari perangkat target yang valid. |
| delivered | Int64 | Wajib | Jumlah pengiriman berhasil. Jumlah perangkat yang benar-benar menerima pesan notifikasi. Pengiriman setelah 5 hari tidak dihitung. Untuk Huawei, Meizu, dan iOS, konfigurasi callback diperlukan untuk akurasi lebih tinggi. |
| impressions | Int64 | Wajib | Jumlah tayangan. Jumlah perangkat yang berhasil menampilkan pesan notifikasi. Tayangan setelah 5 hari tidak dihitung. |
| clicks | Int64 | Wajib | Jumlah klik. Jumlah kali pesan notifikasi diklik oleh pengguna setelah berhasil ditampilkan. Klik setelah 5 hari tidak dihitung. |
| sub | Object | Wajib | Metrik detail dari data statistik, lihat tabel di bawah. |
| plan_id | String | Wajib | ID rencana push, mengidentifikasi tipe rencana push tempat pesan tersebut berada |
| pushContent | Object | Wajib | Detail konten push, termasuk informasi konten push untuk berbagai platform: - android: Konten push platform Android (termasuk field seperti title dan content) - ios: Konten push platform iOS (termasuk field seperti title, content, dan subtitle) - message: Konten pesan kustom (termasuk field seperti title dan content) |
indikator
| Kata Kunci | Tipe | Opsi | Deskripsi |
|---|---|---|---|
| sub_android | Object | opsional | Ringkasan data dan statistik saluran push Android |
| engageLab_android | Object | opsional | Ringkasan data dan statistik saluran Android Engagelab |
| huawei | Object | opsional | Ringkasan data dan statistik saluran Huawei |
| honor | Object | opsional | Ringkasan data dan statistik saluran Honor |
| xiaomi | Object | opsional | Ringkasan data dan statistik saluran Xiaomi |
| oppo | Object | opsional | Ringkasan data dan statistik saluran OPPO |
| vivo | Object | opsional | Ringkasan data dan statistik saluran vivo |
| meizu | Object | opsional | Ringkasan data dan statistik saluran Meizu |
| fcm | Object | opsional | Ringkasan data dan statistik saluran FCM |
| sub_ios | Object | opsional | Ringkasan data dan statistik saluran push Apple |
| engageLab_ios | Object | opsional | Ringkasan data dan statistik saluran iOS Engagelab |
| apns | Object | opsional | Ringkasan data dan statistik saluran iOS APNs |
| sub_hmos | Object | opsional | Ringkasan data dan statistik saluran push Harmony |
| engageLab_hmos | Object | opsional | Ringkasan data dan statistik saluran Harmony Engagelab |
| harmonyos | Object | opsional | Ringkasan data dan statistik saluran HarmonyOS |
Statistik Rencana Push
- Antarmuka ini digunakan untuk mendapatkan indikator statistik detail dari rencana push. Mendukung kueri batch data siklus hidup penuh dari beberapa rencana dalam rentang waktu yang ditentukan, termasuk indikator subdivisi multi-dimensi (platform/vendor/tipe pesan).
Alamat Panggilan
GET v4/status/plan/detail
Contoh Permintaan
GET /v4/status/plan/detail?plan_ids=push_20231101,push_20231102&start_date=2023-11-01&end_date=2023-11-07
Parameter Permintaan
| Nama Parameter | Tipe | Wajib | Deskripsi |
|---|---|---|---|
| plan_ids | string | Ya | Daftar ID rencana push, pisahkan dengan koma untuk beberapa ID. Maksimal 100 ID didukung. |
| start_date | string | Ya | Tanggal mulai statistik (Format: yyyy-MM-dd). Harus memenuhi: |
| end_date | string | Ya | Tanggal akhir statistik (Format: yyyy-MM-dd) |
Deskripsi Parameter Respons
Respons Sukses
- Objek yang dikembalikan berupa pasangan key-value, dan nama key adalah plan_id yang diminta.
- Setiap objek plan_id berisi field berikut:
| Nama Parameter | Tipe | Deskripsi |
|---|---|---|
| targets | int64 | Jumlah perangkat target valid (jumlah perangkat setelah deduplikasi dan filter validitas) |
| sent | int64 | Jumlah perangkat yang benar-benar dibuatkan tugas pengiriman |
| delivered | int64 | Jumlah perangkat yang benar-benar menerima (hanya data dalam 5 hari yang dihitung) |
| impressions | int64 | Jumlah tayangan pesan (hanya data dalam 5 hari yang dihitung) |
| clicks | int64 | Jumlah klik pengguna (hanya data dalam 5 hari yang dihitung) |
| sub | object | Statistik subdivisi tipe pesan (struktur seperti pada sub-tabel di bawah) |
Struktur objek sub
Tipe Pesan Deskripsi Sub-struktur notification Statistik pesan notifikasi bar Berisi sub_android(statistik vendor Android)/sub_ios(statistik iOS)message Statistik pesan kustom Berisi sub_android/sub_ioslive_activity Statistik pesan aktivitas langsung Hanya berisi sub_iosvoip Statistik pesan VOIP Hanya berisi sub_iosField Statistik Vendor Platform
Nama Parameter Tipe Deskripsi targets int64 Jumlah perangkat target valid untuk vendor terkait sent int64 Jumlah pengiriman aktual melalui saluran vendor delivered int64 Jumlah pengiriman berhasil melalui saluran vendor impressions int64 Jumlah tayangan melalui saluran vendor clicks int64 Jumlah klik melalui saluran vendor
Contoh Respons
Respons Sukses
{
"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 }
}
}
}
}
}
Respons Gagal
{
"error": {
"code": 21003,
"message": "Nilai parameter tidak valid"
}
}
Statistik Pengguna
- Menyediakan data statistik terkait pengguna pada periode tertentu dalam dua bulan terakhir: Termasuk pengguna baru, pengguna online, dan pengguna aktif.
- Satuan Waktu: HOUR, DAY, MONTH.
API Url Permintaan
GET v4/status/users
Contoh Permintaan
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==
Parameter Permintaan
| Kata Kunci | Tipe | Opsi | Deskripsi |
|---|---|---|---|
| time_unit | String | wajib | Satuan waktu: |
| start | String | wajib | Waktu mulai |
| duration | String | wajib | Durasi |
Contoh Respons
< 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
}
}]
}
Parameter Respons
Respons sukses berupa objek JSON:
| Kata Kunci | Tipe | Opsi | Deskripsi |
|---|---|---|---|
| time_unit | String | wajib | Satuan waktu |
| start | String | wajib | Waktu mulai. |
| duration | String | wajib | Durasi |
| items | JSON Array | wajib | Hasil statistik dalam rentang kueri berdasarkan durasi |
- Deskripsi field items:
- android: Statistik ringkasan data platform Android.
- ios: Statistik ringkasan data platform Apple.
- hmos: Statistik ringkasan data platform HarmonyOS.
| Kata Kunci | Tipe | Opsi | Deskripsi |
|---|---|---|---|
| new | Int64 | opsional | Pengguna Baru |
| active | Int64 | opsional | Pengguna Aktif |
Kueri Status Siklus Hidup Pesan
- Kueri status siklus hidup pesan pada perangkat yang sesuai dengan
message_id. - Statistik setiap pesan push disimpan hingga satu bulan.
Endpoint API
GET v4/status/message
Contoh Permintaan
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==
Parameter Permintaan
| Kata Kunci | Tipe | Opsi | Deskripsi |
|---|---|---|---|
| message_id | String | Wajib | ID Pesan |
| registration_ids | String | Wajib | registration_id, pisahkan dengan ",".registration_id. |
Deskripsi Parameter Respons
Respons sukses berupa objek JSON yang berisi status pesan saat ini untuk setiap registration_id. Jika terjadi error, informasi akan dimasukkan dalam error_message.
| Kata Kunci | Tipe | Opsi | Makna |
|---|---|---|---|
| status | String | Opsional | Nilai: |
| error_message | String | Opsional | Pesan error, hanya tersedia untuk status tertentu. |
| error_code | Int64 | Opsional | Kode status error, hanya tersedia untuk status tertentu. |
| itime | Int64 | Opsional | Waktu pembaruan status, akurat hingga detik. |
| channel | String | Opsional | Informasi tentang saluran pengiriman pesan. |
Contoh Respons
Respons Sukses
< HTTP/1.1 200 OK
< Content-Type: application/json
{
"1507bfd3a7c568d4761": {
"itime": 1762331775,
"channel": "FCM",
"status": "delivered"
},
"17259fd3a7c568d4371": {
"error_code": 21003,
"error_message": "`registration_id` tidak termasuk dalam appkey"
},
"17259fd3a7c568d4787":{
"itime": 1762331775,
"status": "sent_failed",
"error_code": 401,
"error_message": "token tidak valid",
"channel": "FCM"
},
"17259fd3a7c568d4372": {
"error_code": 21061,
"error_message": "tidak ada status yang berlaku"
}
}
Respons Gagal
{
"error": {
"code": 21003,
"message": "Nilai parameter tidak valid"
}
}
Kueri Status Siklus Hidup Pesan Batch
- Kueri batch status siklus hidup pesan untuk satu
registration_iddi setiapmessage_id. Jika terdapat beberaparegistration_iddi bawah satumessage_id,message_idterkait akan dikembalikan dalammulti_regid_message_ids. - Statistik setiap pesan push disimpan hingga satu bulan.
Endpoint API
GET v4/status/batch/message
Contoh Permintaan
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==
Parameter Permintaan
| Kata Kunci | Tipe | Opsi | Deskripsi |
|---|---|---|---|
| message_ids | String | Wajib | message_id, pisahkan dengan ",".message_id. |
Deskripsi Parameter Respons
Respons sukses berupa Array Object; setiap item mewakili status saat ini di bawah satu message_id (dan opsional satu registration_id). Jika ada pengecualian, akan dimasukkan dalam error_message.
| Kata Kunci | Tipe | Opsi | Makna |
|---|---|---|---|
| message_id | String | Wajib | message_id pesan. |
| registration_id | String | Opsional | registration_id tunggal yang dikueri. |
| status | String | Opsional | Nilai: |
| itime | Int64 | Opsional | Waktu pembaruan status, akurat hingga detik. |
| channel | String | Opsional | Informasi tentang saluran pengiriman pesan. |
| error_message | String | Opsional | Pesan error, hanya tersedia untuk status tertentu. |
| error_code | Int64 | Opsional | Kode status error, hanya tersedia untuk status tertentu. |
Contoh Respons
Respons Sukses
< HTTP/1.1 200 OK
< Content-Type: application/json
[
{
"message_id": "261585110",
"error_message": "Ditemukan beberapa `registration_id` di bawah satu `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": "`message_id` tidak valid atau tidak ada.",
"error_code": 21003
},
{
"message_id": "1613113585",
"error_message": "tidak ada status yang berlaku",
"error_code": 21061
}
]
Respons Gagal
{
"error": {
"code": 21003,
"message": "Nilai parameter tidak valid"
}
}
Kode Respons
Kode status HTTP
Dokumen Referensi: HTTP-Status-Code
Kode Pengembalian
| Kode | Deskripsi | Deskripsi detail | HTTP Status Code |
|---|---|---|---|
| 0 | sukses | permintaan berhasil | 200 |
| 21001 | Metode tidak didukung atau url salah | Kesalahan metode permintaan (GET/POST) atau url salah (antarmuka tidak ada) | 404 |
| 21003 | Nilai parameter tidak valid | Nilai parameter ilegal | 400 |
| 23001 | Autentikasi dasar gagal | HTTP Basic authorization gagal | 401 |
| 23002 | Parameter hilang! | Parameter wajib hilang! | 400 |
| 23004 | Nilai time_unit tidak sesuai dengan start! | Nilai parameter time_unit dan start tidak sesuai | 400 |
| 23007 | Hanya mendukung kueri message_id dalam 30 hari! | Hanya pesan dalam 30 hari yang dapat dikueri | 400 |
| 23100 | Kesalahan server | Kesalahan internal sistem | 500 |
| 27000 | Respons server time out, silakan coba lagi nanti | Kesalahan internal sistem | 500 |
| 27201 | msgid tidak ada atau tidak milik aplikasi ini | Msgid tidak ada atau tidak milik aplikasi ini | 400 |










