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: code 0 berarti sukses, message menjelaskan hasil, dan data membawa payload. Penanganan batch untuk penulisan anggota bergantung pada operasi: OVERRIDE dijalankan hanya setelah semua batch diterima; setiap batch APPEND dan REMOVE diterapkan secara independen. data.status dan data.complete dalam 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" }'
              
              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"
  }'

            
Tampilkan blok kode ini di jendela mengambang

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" } }
              
              {
  "code": 0,
  "message": "success",
  "data": {
    "segmentId": 123456789,
    "name": "High-value users",
    "generation": "generation-1"
  }
}

            
Tampilkan blok kode ini di jendela mengambang
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"} ] }'
              
              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"}
    ]
  }'

            
Tampilkan blok kode ini di jendela mengambang

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 } }
              
              {
  "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
  }
}

            
Tampilkan blok kode ini di jendela mengambang

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 } }
              
              {
  "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
  }
}

            
Tampilkan blok kode ini di jendela mengambang

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 } }
              
              {
  "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
  }
}

            
Tampilkan blok kode ini di jendela mengambang
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 OVERRIDE ketika tidak ada pengguna yang cocok; lihat 55214). Respons mengembalikan jumlah dan hingga 100 sampel pengenal. Sampel dapat menyertakan identityValue; lindungi data respons sesuai kebutuhan.

Icon Solid Transparent White Qiyu
Hubungi Sales