API Tugas Terjadwal
Ringkasan
API ini mendukung fungsi penjadwalan waktu.
Ini adalah modul eksekusi tugas yang relatif independen yang memelihara objek Schedule.
Catatan: Fungsi API hanya dapat digunakan untuk menanyakan, memperbarui, atau menghapus info Schedule.
Validasi Panggilan
Untuk informasi lebih lanjut, lihat Metode Autentikasi
Deskripsi Parameter Schedule
Setiap tugas terjadwal mencakup empat field: name, enabled, trigger, push.
| Kata Kunci | Tipe | Opsional | Deskripsi |
|---|---|---|---|
| name | string | wajib | Nama tugas terjadwal, maksimal 255 byte, terdiri dari karakter Tionghoa, huruf, angka, dan garis bawah. |
| enabled | bool | wajib | Status tugas saat ini. Harus true saat membuat tugas. |
| trigger | Objek JSON | wajib | Kondisi pemicu dan waktu tugas terjadwal. Mendukung tugas satu kali (single), tugas berkala (periodical), dan Pengiriman Cerdas (intelligent). |
| push | Objek JSON | wajib | Informasi konten push. |
Deskripsi Single
Menjelaskan kondisi pemicu untuk tugas terjadwal, termasuk waktu pemicu dan tipe tugas.
| Parameter | Tipe | Opsional | Deskripsi |
|---|---|---|---|
| time | String | Tidak | Waktu pemicu tugas terjadwal, format "yyyy-mm-dd hh:mm:ss", contoh "2014-02-15 13:16:59". Format tidak lengkap tidak diterima. Waktu tugas tidak boleh melebihi satu tahun. |
| zone_type | Int | Tidak | Jenis zona waktu: 1 untuk zona waktu utama, 2 untuk zona waktu pengguna. |
Deskripsi Periodical
| Parameter | Tipe | Opsional | Deskripsi |
|---|---|---|---|
| start | String | Tidak | Waktu mulai efektif, format "yyyy-MM-dd HH:mm:ss", wajib 24 jam. |
| end | String | Tidak | Waktu berakhir, format sama seperti start. Maksimal rentang satu tahun. |
| time | String | Tidak | Waktu spesifik pemicu, format "HH:mm:ss", wajib 24 jam. |
| time_unit | String | Tidak | Satuan waktu terkecil: "day", "week", atau "month". Tidak case sensitive. |
| point | String | Tidak | Daftar sesuai time_unit, lihat tabel di bawah. |
| zone_type | Int | Tidak | Jenis zona waktu: 1 utama, 2 pengguna. |
Detail parameter point:
| time_unit | point | Deskripsi |
|---|---|---|
| day | NULL | Untuk day, point tidak berlaku. |
| week | "MON","TUE","WED","THU","FRI","SAT","SUN" | Untuk week, point dapat satu atau lebih hari, tidak case sensitive. |
| month | "01","02","03" ... "31" | Untuk month, point sesuai tanggal valid dalam bulan, tidak akan memicu pada tanggal tidak valid. |
Deskripsi Intelligent
| Parameter | Tipe | Wajib/Opsional | Deskripsi |
|---|---|---|---|
| backup_time | String | Wajib | Pengiriman cerdas adalah fitur EngageLab untuk mengoptimalkan rasio klik notifikasi. Setiap pengguna yang mengakses layanan Anda melalui web atau aplikasi mobile dengan SDK EngageLab akan dicatat waktu aktif terakhirnya. Sistem akan mengirim notifikasi pada waktu yang sesuai menurut kebiasaan pengguna. Untuk pengguna tanpa data historis aktif, Anda bisa memilih kirim segera (now) atau waktu tertentu (format "yyyy-MM-dd HH:mm:ss", 24 jam). |
Membuat Tugas Terjadwal
request api task
POST v4/schedules
Batasan Panggilan
- Jumlah total tugas terjadwal yang valid (belum kedaluwarsa) maksimal 1000 secara default. Jika melebihi, tugas baru gagal dibuat.
- Rentang waktu maksimal tugas tidak terbatas, namun disarankan tidak melebihi 1 tahun.
Contoh Permintaan
request header
POST /v4/schedules
Authorization: Basic (base64 auth string)
Content-Type: application/json
Accept: application/json
request body
{
"name":"contoh push terjadwal",
"enabled":true,
"trigger":{
"single":{
"time":"2022-11-23 19:20:00",
"zone_type":1
}
},
"push":{
"from":"push",
"to":{
"registration_id":[
"1a0018970ab49abda3e",
"100d85590955c1d2793"
]
},
"body":{
"platform":"web",
"notification":{
"web": {
"alert": "selamat datang di engagelab",
"title": "selamat datang di engagelab",
"url": "https://www.engagelab.com/",
"extras": {
"key1": "value1"
}
}
},
"message":{
},
"options":{
"time_to_live":60
}
},
"request_id":"12345",
"custom_args":{
"Engagelab": "push untuk Anda"
}
}
}
deskripsi request body
- zone_type wajib, nilainya 1 atau 2, jika tidak, akan dipush sesuai zona waktu server
- enabled harus true saat pertama kali dibuat. Tidak dapat membuat tugas dengan enabled: false.
- push harus berupa aksi push yang valid dan legal.
Contoh Respons:
Return Sukses
< HTTP/1.1 200 OK
< Server: fasthttp
< Date: Thu, 01 Dec 2022 07:17:45 GMT
< Content-Type: application/json
< Content-Length: 85
{
"schedule_id": "a9b85590-6cec-4f91-b277-2d82b0e20ef6",
"name": "nama tugas terjadwal"
}
Return Error
HTTP/1.1 400 BAD REQUEST
Content-Type: application/json; charset=utf-8
{
"error": {
"code": 28400,
"message": "pesan error"
}
}
Contoh permintaan tugas terjadwal berulang
{
"name":"Contoh Push Terjadwal_periodical",
"enabled":true,
"trigger":{
"periodical": {
"start": "2024-01-01 00:00:00",
"end": "2024-02-10 00:00:00",
"time": "12:00:00",
"time_unit": "day",
"point": [],
"zone_type": 1
}
},
"push":{
"from":"push",
"to":{
"registration_id":[
"1a0018970ab49abda3e",
"100d85590955c1d2793"
]
},
"body":{
"platform":"web",
"notification":{
"web": {
"alert": "selamat datang di engagelab",
"title": "selamat datang di engagelab",
"url": "https://www.engagelab.com/",
"extras": {
"key1": "value1"
}
}
},
"message":{
},
"options":{
"time_to_live":60
}
},
"request_id":"67890",
"custom_args":{
"Engagelab": "push untuk Anda"
}
}
}
Mendapatkan Daftar Tugas Terjadwal yang Valid
- Mendapatkan daftar schedule yang saat ini valid (belum kedaluwarsa).
URL Request API
GET v4/schedules?page=
Contoh Permintaan
Request Header
GET /v4/schedules?page=
Authorization: Basic (base64 auth string)
Content-Type: application/json
Accept: application/json
- Mengembalikan daftar detail schedule-task pada halaman permintaan saat ini. Jika tidak ada halaman yang ditentukan, halaman adalah 1.
- Urutan: waktu pembuatan, diatur oleh schedule-service.
- Jika halaman permintaan > total halaman, halaman adalah nilai permintaan dan schedules kosong.
- Setiap halaman maksimal 50 tugas.
Contoh Respons
Return sukses
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
{
"total_count": 1000,
"total_pages": 5,
"page": 4,
"schedules": [
{
"schedule_id": "0eac1b80-c2ac-4b69-948b-c65b34b96512",
"name": "",
"enabled":true
}
]
}
- 1000 schedule-task, 5 total halaman, halaman saat ini adalah 4, termasuk info 50 schedule-task.
- Array schedules adalah daftar detail schedule-task
Mendapatkan Detail Tugas Terjadwal
- Mendapatkan detail tugas terjadwal dengan schedule_id milik pengguna saat ini {schedule_id}
URL Request API
GET v4/schedules/{schedule_id}
Contoh Permintaan
Request Header
GET /v4/schedules/{schedule_id}
Authorization: Basic (base64 auth string)
Content-Type: application/json
Accept: application/json
Contoh Respons
Return Sukses
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
Data Return
[{
"schedule_id": "0eac1b80-c2ac-4b69-948b-c65b34b96512",
"name": "contoh tugas terjadwal",
"enabled": true,
"trigger": {...},
"push": {...}
}]
- Jika schedule_id tidak ada, maka return 404.
Mendapatkan Semua ID Pesan dari Tugas Terjadwal
- Mendapatkan semua id pesan dari tugas terjadwal pengguna saat ini dengan id {schedule_id}
URL Request API
GET v4/schedules/{schedule_id}/msg-ids
Contoh Permintaan
Request Header
GET /v4/schedules/{schedule_id}/msg-ids
Authorization: Basic (base64 auth string)
Content-Type: application/json
Accept: application/json
Contoh Respons
Respons Sukses
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
Data Respons
Format data return diperbarui setelah fitur tugas terjadwal berulang online pada 22 Februari 2024, menambahkan data MsgIds untuk menggantikan msgids lama. Pastikan kode Anda kompatibel.
Field ts menunjukkan timestamp saat tugas terjadwal berhasil dijalankan, akurat hingga milidetik.
{
"count": 1,
"MsgIds": [
"{\"msg_id\":\"1088009\",\"error\":{\"code\":0,\"message\":\"\"},\"needRetry\":false,\"ts\":1707278411611}",
"{\"msg_id\":\"0\",\"error\":{\"code\":1011,\"message\":\"Tidak dapat menemukan target pengiriman\"},\"needRetry\":false,\"ts\":1707278411611}"
]
}
Memperbarui Tugas Terjadwal
- Memperbarui tugas terjadwal dengan id tertentu
URL Request API
PUT v4/schedules/{schedule_id}
Contoh Permintaan
PUT /v4/schedules/{schedule_id}
Authorization: Basic (base64 auth string)
Content-Type: application/x-www-form-urlencoded
Accept: application/json
{
"name": "tugas",
"enabled": true,
"trigger": {...},
"push": {...}
}
- Tidak dapat memperbarui tugas terjadwal yang sudah kedaluwarsa
- Tugas terjadwal berdasarkan zona waktu terminal dan zona waktu utama tidak dapat diperbarui satu sama lain.
- Dapat memperbarui satu atau beberapa field dalam array ["name", "enabled", "trigger", "push"]. Body update tidak bisa sebagian, harus seluruh body.
{
"name":"contoh tugas terjadwal",
"enabled":true,
"trigger":{
"single":{
"time":"2022-11-23 19:20:00",
"zone_type":1
}
},
"push":{
"from":"push",
"to":{
"registration_id":[
"1a0018970ab49abda3e",
"100d85590955c1d2793"
]
},
"body":{
"platform":"web",
"notification":{
"web": {
"alert": "selamat datang di engagelab",
"title": "selamat datang di engagelab",
"url": "https://www.engagelab.com/",
"extras": {
"key1": "value1"
}
}
},
"message":{
},
"options":{
"time_to_live":60
}
},
"request_id":"12345",
"custom_args":{
"Engagelab": "push untuk Anda"
}
}
}
- Contoh update salah dan benar:
## Salah: hanya update alert di field push:
{
"push": {
"alert": "tugas terjadwal web"
}
}
## Benar: update alert di field push:
{
"push":{
"from":"push",
"to":{
"registration_id":[
"1a0018970ab49abda3e",
"100d85590955c1d2793"
]
},
"body":{
"platform":"tugas terjadwal web",
"notification":{
"web": {
"alert": "selamat datang di engagelab",
"title": "selamat datang di engagelab",
"url": "https://www.engagelab.com/",
"extras": {
"key1": "value1"
}
}
},
"message":{
},
"options":{
"time_to_live":60
}
},
"request_id":"12345",
"custom_args":{
"Engagelab": "push untuk Anda"
}
}
}
field push harus valid, jika tidak update akan gagal
Contoh Respons
Return Sukses
HTTP/1.0 200 CREATED
Content-Type: application/json
{
"name":"Contoh push terjadwal",
"enabled":true,
"trigger":{
"single":{
"time":"2022-11-23 19:20:00",
"zone_type":1
}
},
"push":{
"from":"push",
"to":{
"registration_id":[
"1a0018970ab49abda3e",
"100d85590955c1d2793"
]
},
"body":{
"platform":"web",
"notification":{
"web": {
"alert": "selamat datang di engagelab",
"title": "selamat datang di engagelab",
"url": "https://www.engagelab.com/",
"extras": {
"key1": "value1"
}
}
},
"message":{
},
"options":{
"time_to_live":60
}
},
"request_id":"12345",
"custom_args":{
"Engagelab": "push untuk Anda"
}
}
}
Return Error
- schedule_id tidak valid
HTTP/1.0 404 Not Found
Content-Type: application/json
- Operasi update tidak sah
HTTP/1.0 400 BAD REQUEST
Content-Type: application/json
Menghapus Tugas Terjadwal
URL Request API
DELETE v4/schedules/{schedule_id}
schedule_idadalah id dari tugas terjadwal yang ada. Jikaschedule_idtidak valid, hasilnya error 404.
contoh permintaan
DELETE /v4/schedules/{schedule_id}
Authorization: Basic (base64 auth string)
Content-Type: application/json
Accept: application/json
contoh respons
Return Sukses
HTTP/1.0 200
Content-Type: application/json
Content-Length: 0
Return Error
HTTP/1.0 404 Not Found
Content-Type: application/json
Content-Length: 0
{
"error":{
"code":28404,
"message":"pesan error"
}
}
Kode Error
| Kode | HTTP | Deskripsi | Pesan Error | Penjelasan Detail |
|---|---|---|---|---|
| 28000 | 200 | Return Benar | - | Status sukses |
| 28100 | 400 | Parameter Tidak Valid | Tugas terjadwal tidak valid: bagian tidak valid; sudah habis masa berlaku; kedaluwarsa; data permintaan bukan JSON; update target tugas; hapus target tugas; permintaan schedule tidak ada | |
| 28101 | 401 | Autentikasi Gagal | Autentikasi Basic gagal. | appkey dan masterSecret tidak cocok. |
| 28102 | 400 | Parameter Push Tidak Valid | push param kosong atau tidak valid | Parameter push tidak valid, detail error dikembalikan. |
| 28103 | 400 | Parameter Waktu Push Tidak Valid | format waktu single atau trigger salah | Parameter waktu push tidak valid, detail error dikembalikan. |
| 28104 | 404 | Tugas Terjadwal Tidak Ada | Operasi schedule yang diminta tidak ada | Tugas sudah dikirim, atau schedule ID salah. |
| 28105 | 404 | Tidak Ada Target Push | Tugas push tidak valid. Tidak ada target push untuk waktu yang dijadwalkan | Parameter waktu push salah. |
| 28200 | 500 | Internal Server Error | Kesalahan Internal Server. | Terjadi error tak terduga. |
| 28203 | 503 | Internal Server Error, Coba Lagi Nanti | Timeout eksekusi aksi, coba lagi nanti | Error komunikasi dengan schedule-server. |










