REST API Segmen Pengguna
Buat segmen berbasis daftar yang diperbarui manual dan timpa, tambahkan, atau hapus anggota berdasarkan ID segmen.
Umum
- Permintaan dan respons menggunakan JSON yang dienkode UTF-8.
- URL endpoint lengkap adalah Base URL pusat data ditambah path API. Lihat Ikhtisar REST API untuk cara mendapatkan Base URL dan API Key / API Secret.
- Gunakan HTTP Basic Authentication:
Authorization: Basic ${base64(api_key:api_secret)}. Sumber data API yang terikat ke API Key menentukan proyek; pemanggil tidak perlu meneruskan ID proyek di body permintaan. - Respons sukses memiliki struktur umum:
code0berarti sukses,messagemenjelaskan hasil, dandatamembawa payload. Penanganan batch untuk penulisan anggota bergantung pada operasi:OVERRIDEdijalankan hanya setelah semua batch diterima; setiap batchAPPENDdanREMOVEditerapkan secara independen.data.statusdandata.completedalam respons menunjukkan status pemrosesan.
Membuat segmen berbasis daftar
Membuat segmen dengan mode pembaruan manual dan unggah daftar sebagai metode pembuatan. Segmen tidak memiliki anggota setelah dibuat; gunakan Perbarui anggota segmen untuk mengunggah daftar.
Endpoint
POST /v1/segments
Contoh permintaan
curl -X POST 'https://ma-api.engagelab.com/v1/segments' \
-H 'Authorization: Basic {base64(api_key:api_secret)}' \
-H 'Content-Type: application/json' \
-d '{
"name": "High-value users",
"description": "High-value user list synced from the order system"
}'
Parameter permintaan
| Field | Tipe | Wajib | Deskripsi |
|---|---|---|---|
name |
String | Ya | Nama segmen. Tidak boleh kosong, maksimal 50 karakter; harus unik dalam proyek. Spasi di awal dan akhir dihapus. |
description |
String | Tidak | Deskripsi segmen, maksimal 200 karakter. |
Contoh respons
{
"code": 0,
"message": "success",
"data": {
"segmentId": 123456789,
"name": "High-value users",
"generation": "generation-1"
}
}
| Field | Tipe | Deskripsi |
|---|---|---|
segmentId |
Long | ID segmen baru, digunakan untuk unggah daftar berikutnya. |
name |
String | Nama segmen. |
generation |
String | Pengenal generasi anggota saat ini. Segmen yang baru dibuat tidak memiliki anggota. |
Perbarui anggota segmen
Satu endpoint menimpa, menambahkan, atau menghapus anggota daftar. Hanya segmen di proyek saat ini yang dibuat melalui unggah daftar, menggunakan pembaruan manual, dan aktif yang diterima. Pengenal pengguna harus cocok dengan pengguna aktif yang ada di proyek; API tidak membuat aset pengguna. Jika segmen tidak memenuhi syarat, error 55210–55214 dikembalikan (lihat Respons error).
Endpoint
POST /v1/segments/{segmentId}/members
Contoh permintaan
Contoh berikut membagi satu operasi OVERRIDE menjadi dua batch. Setiap batchId mewakili satu operasi daftar; semua batch harus menggunakan batchId, operation, dan batchCount yang sama. OVERRIDE menerapkan perubahan daftar hanya setelah semua batch diterima. APPEND dan REMOVE berlaku segera setelah setiap permintaan batch berhasil.
curl -X POST 'https://ma-api.engagelab.com/v1/segments/123456789/members' \
-H 'Authorization: Basic {base64(api_key:api_secret)}' \
-H 'Content-Type: application/json' \
-d '{
"batchId": "crm-sync-20260915-001",
"operation": "OVERRIDE",
"batchIndex": 0,
"batchCount": 2,
"members": [
{"euid": "100001"},
{"identityName": "user_id", "identityValue": "user-002"}
]
}'
Ketika batch OVERRIDE pertama diterima, status dalam respons adalah RECEIVING dan complete adalah false. Kirim batch sisanya dengan batchId yang sama dan set batchIndex ke 1.
Parameter permintaan
| Field | Tipe | Wajib | Deskripsi |
|---|---|---|---|
segmentId |
Long | Ya | Parameter path: ID segmen target. |
batchId |
String | Ya | ID batch untuk satu operasi daftar lengkap, maksimal 128 karakter, hanya huruf, digit, titik, underscore, titik dua, dan tanda hubung. Digunakan sebagai kunci idempotensi per proyek dan segmen dalam 24 jam. |
operation |
String | Ya | Operasi daftar: OVERRIDE (ganti), APPEND (tambah), REMOVE (hapus). |
batchIndex |
Integer | Ya | Indeks batch saat ini, dimulai dari 0, dan harus kurang dari batchCount. |
batchCount |
Integer | Ya | Jumlah total batch untuk operasi ini, 1–10. Semua batch digabung paling banyak 10.000 pengenal anggota. |
members |
Array<Object> |
Ya | Pengenal anggota dalam batch saat ini. Tidak boleh kosong; maksimal 1.000 per batch. Setiap elemen menggunakan salah satu format pada tabel di bawah. |
Elemen members mendukung dua format berikut; euid tidak boleh dikirim bersama identityName / identityValue:
| Field | Tipe | Deskripsi |
|---|---|---|
euid |
String | EUID proyek; harus string bilangan bulat positif, mis. "100001". |
identityName |
String | Nama identitas pengguna yang dikonfigurasi di proyek. Tidak boleh kosong, maksimal 128 karakter. |
identityValue |
String | Nilai identitas. Tidak boleh kosong, maksimal 256 karakter; digunakan dengan identityName. Nilai lebih dari 256 karakter tidak gagalkan seluruh permintaan; baris dihitung dalam invalidCount. |
Operasi daftar
| Operasi | Deskripsi |
|---|---|
OVERRIDE |
Setelah semua batch diterima, ganti daftar saat ini dengan pengguna yang cocok dalam pengiriman ini. Jika tidak ada pengguna aktif yang cocok, permintaan ditolak dengan 55214 dan daftar yang ada tidak berubah. |
APPEND |
Setelah batch saat ini berhasil, tambahkan pengguna yang cocok ke daftar; pengguna yang sudah ada di segmen tidak diduplikasi. Batch lain tidak ditunggu. |
REMOVE |
Setelah batch saat ini berhasil, hapus pengguna yang cocok dari daftar; pengguna yang tidak ada di segmen tidak menyebabkan perubahan tambahan. Batch lain tidak ditunggu. |
Percobaan ulang dengan batchId yang sama harus menggunakan operasi, batchCount, dan konten batch yang sama; batchId dan batchIndex yang sama tidak boleh membawa konten berbeda. Hasil idempoten disimpan selama 24 jam.
Batch OVERRIDE ditahan hingga semua diterima, lalu diterapkan; data yang ditahan kedaluwarsa setelah TTL 24 jam, dan daftar tidak berubah jika batch belum lengkap sebelum kedaluwarsa. Setiap batch APPEND dan REMOVE diterapkan secara independen; batchCount dan batchIndex tetap mengidentifikasi batch, mendukung idempotensi, dan melacak progres tanpa memblokir batch saat ini.
Setiap perubahan daftar yang berhasil dicatat dalam riwayat pembaruan segmen dengan sumber REST API. OVERRIDE dicatat per batch selesai; APPEND dan REMOVE per batch berhasil. Catatan audit tidak menyertakan sampel pengenal yang tidak cocok atau tidak valid.
Contoh respons
Batch belum lengkap:
{
"code": 0,
"message": "success",
"data": {
"batchId": "crm-sync-20260915-001",
"operation": "OVERRIDE",
"status": "RECEIVING",
"complete": false,
"expectedBatchCount": 2,
"receivedBatchCount": 1,
"inputCount": 2,
"matchedCount": 2,
"unmatchedCount": 0,
"unmatchedSamples": [],
"unmatchedSamplesTruncated": false,
"invalidCount": 0,
"invalidSamples": [],
"invalidSamplesTruncated": false,
"enterCount": 0,
"exitCount": 0
}
}
Batch OVERRIDE selesai:
{
"code": 0,
"message": "success",
"data": {
"batchId": "crm-sync-20260915-001",
"operation": "OVERRIDE",
"status": "COMPLETED",
"complete": true,
"expectedBatchCount": 2,
"receivedBatchCount": 2,
"inputCount": 3,
"matchedCount": 2,
"unmatchedCount": 1,
"unmatchedSamples": [
{"identityName": "user_id", "identityValue": "user-not-found"}
],
"unmatchedSamplesTruncated": false,
"invalidCount": 1,
"invalidSamples": [
{"identityName": "not_configured", "identityValue": "example"}
],
"invalidSamplesTruncated": false,
"enterCount": 2,
"exitCount": 1
}
}
Ketika batch APPEND atau REMOVE berhasil, batch saat ini langsung diterapkan dan mengembalikan complete: true meskipun batchCount lebih besar dari jumlah batch yang diterima sejauh ini. Misalnya, dengan batchCount 2 dan hanya batch pertama diterima, receivedBatchCount adalah 1 dan status adalah COMPLETED.
{
"code": 0,
"message": "success",
"data": {
"batchId": "crm-sync-20260915-append",
"operation": "APPEND",
"status": "COMPLETED",
"complete": true,
"expectedBatchCount": 2,
"receivedBatchCount": 1,
"inputCount": 2,
"matchedCount": 1,
"unmatchedCount": 1,
"unmatchedSamples": [
{"identityName": "user_id", "identityValue": "user-not-found"}
],
"unmatchedSamplesTruncated": false,
"invalidCount": 0,
"invalidSamples": [],
"invalidSamplesTruncated": false,
"enterCount": 1,
"exitCount": 0
}
}
| Field | Tipe | Deskripsi |
|---|---|---|
batchId |
String | ID batch untuk operasi daftar ini. |
operation |
String | Operasi daftar untuk permintaan ini. |
status |
String | RECEIVING: OVERRIDE menunggu batch; PROCESSING: menunggu kunci perubahan daftar; COMPLETED: operasi saat ini selesai. |
complete |
Boolean | Untuk OVERRIDE, semua batch diterapkan; untuk APPEND/REMOVE, batch saat ini diterapkan—tidak semua batch harus dikirim. |
expectedBatchCount |
Integer | Jumlah total batch yang diharapkan. |
receivedBatchCount |
Integer | Jumlah indeks batch berbeda yang diterima; untuk APPEND/REMOVE, hanya untuk statistik dan tidak memblokir batch saat ini. |
inputCount |
Integer | Baris input valid = matchedCount + unmatchedCount, tidak termasuk pengenal tidak valid. OVERRIDE menghitung batch yang diterima (batch penuh saat selesai); APPEND/REMOVE menghitung batch saat ini. |
matchedCount |
Integer | Pengenal yang cocok dengan pengguna aktif. |
unmatchedCount |
Integer | Pengenal yang tidak cocok dengan pengguna aktif. |
unmatchedSamples |
Array<Object> |
Sampel pengenal tidak cocok, struktur sama dengan anggota permintaan, maksimal 100. |
unmatchedSamplesTruncated |
Boolean | Apakah sampel tidak cocok dipotong pada 100. |
invalidCount |
Integer | Pengenal tidak valid, tidak termasuk dalam inputCount. Termasuk: euid bukan bilangan bulat positif, euid dikirim dengan field identitas, identityName/identityValue kosong atau tidak cocok, identityName lebih dari 128 karakter, identityValue lebih dari 256 karakter, nama identitas tidak dikonfigurasi, satu identitas cocok dengan beberapa pengguna aktif. |
invalidSamples |
Array<Object> |
Sampel pengenal tidak valid, struktur sama dengan anggota permintaan, maksimal 100. |
invalidSamplesTruncated |
Boolean | Apakah sampel tidak valid dipotong pada 100. |
enterCount |
Integer | Pengguna yang benar-benar ditambahkan ke segmen dalam eksekusi ini. |
exitCount |
Integer | Pengguna yang benar-benar dihapus dari segmen dalam eksekusi ini. |
Sampel mengikuti struktur objek pengenal anggota dari permintaan dan dapat menyertakan identityValue yang dikirim. Server menyimpan sampel hanya di cache idempotensi 24 jam, bukan di catatan audit; tangani respons dan log sesuai persyaratan kepatuhan data Anda.
Jika respons adalah PROCESSING, coba lagi dengan batchId, batchIndex, dan konten batch asli yang sama untuk hasil idempoten. Tidak ada API kueri progres batch terpisah.
Respons error
Error menggunakan code dan message; lihat Kode Status HTTP untuk kode status HTTP dan kode return umum.
| Status HTTP | Kode | Deskripsi |
|---|---|---|
| 401 | 40050 |
Autentikasi API Key / API Secret gagal, atau sumber data API dinonaktifkan. |
| 400 | 40026 |
Segmen pengguna dengan nama yang sama sudah ada di proyek (path buat, passthrough Metadata). |
| 400 | 40032 |
Batas jumlah segmen pengguna tercapai (path buat, passthrough Metadata). |
| 400 | 55201 |
Segmen pengguna tidak ada (path unggah daftar). |
| 400 | 55210 |
Metode pembuatan segmen tidak mendukung unggah daftar REST API: segmen target tidak dibuat melalui unggah daftar (mis. segmen berbasis aturan). |
| 400 | 55211 |
Mode pembaruan segmen tidak mendukung unggah daftar REST API: segmen target tidak diperbarui manual. |
| 400 | 55212 |
Status siklus hidup segmen tidak mendukung unggah daftar REST API: segmen target tidak aktif. |
| 400 | 55213 |
Segmen tidak memiliki generasi anggota yang tersedia; unggah daftar REST API sementara tidak didukung. |
| 400 | 55214 |
Timpa daftar kosong tidak diizinkan: setelah semua batch OVERRIDE, tidak ada pengguna aktif yang cocok. |
| 400 | 55004 |
Field permintaan atau parameter batch daftar tidak valid. |
| 503 | 55207 |
Metadata segmen sementara tidak tersedia. |
| 500 | 55000 |
Error server internal. |
Saat membuat segmen, kode error bisnis dan message dari Metadata diteruskan ke pemanggil, mis. nama duplikat 40026, batas 40032. Pada path unggah daftar, «segmen tidak ada» mengembalikan 55201 alih-alih 40027.
Pengenal anggota yang tidak cocok atau tidak valid tidak gagalkan seluruh operasi daftar (kecuali
OVERRIDEketika tidak ada pengguna yang cocok; lihat55214). Respons mengembalikan jumlah dan hingga 100 sampel pengenal. Sampel dapat menyertakanidentityValue; lindungi data respons sesuai kebutuhan.










