REST API กลุ่มผู้ใช้

สร้างกลุ่มแบบรายการที่อัปเดตด้วยตนเอง และเขียนทับ เพิ่ม หรือลบสมาชิกตาม ID กลุ่ม

ทั่วไป

  • คำขอและการตอบกลับใช้ JSON ที่เข้ารหัส UTF-8
  • URL endpoint เต็มคือ Base URL ของศูนย์ข้อมูลบวก path ของ API ดู ภาพรวม REST API สำหรับวิธีรับ Base URL และ API Key / API Secret
  • ใช้ HTTP Basic Authentication: Authorization: Basic ${base64(api_key:api_secret)} แหล่งข้อมูล API ที่ผูกกับ API Key กำหนดโปรเจกต์ ผู้เรียกไม่ต้องส่ง ID โปรเจกต์ใน body คำขอ
  • การตอบกลับที่สำเร็จมีโครงสร้างร่วมกัน: code 0 หมายถึงสำเร็จ message อธิบายผลลัพธ์ และ data เป็น payload การจัดการ batch สำหรับการเขียนสมาชิกขึ้นกับการดำเนินการ: OVERRIDE ทำงานหลังจากได้รับ batch ทั้งหมด แต่ละ batch ของ APPEND และ REMOVE ใช้แยกกัน data.status และ data.complete ในการตอบกลับบอกสถานะการประมวลผล

สร้างกลุ่มแบบรายการ

สร้างกลุ่มที่มีโหมดอัปเดตแบบ manual และอัปโหลดรายการเป็นวิธีสร้าง หลังสร้างกลุ่มจะไม่มีสมาชิก ใช้ อัปเดตสมาชิกกลุ่ม เพื่ออัปโหลดรายการ

Endpoint

POST /v1/segments

ตัวอย่างคำขอ

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

            
โค้ดนี้โชว์เป็นหน้าต่างลอย

พารามิเตอร์คำขอ

ฟิลด์ ประเภท จำเป็น คำอธิบาย
name String ใช่ ชื่อกลุ่ม ต้องไม่ว่าง สูงสุด 50 ตัวอักษร ต้องไม่ซ้ำภายในโปรเจกต์ ตัดช่องว่างหน้าและหลัง
description String ไม่ คำอธิบายกลุ่ม สูงสุด 200 ตัวอักษร

ตัวอย่างการตอบกลับ

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

            
โค้ดนี้โชว์เป็นหน้าต่างลอย
ฟิลด์ ประเภท คำอธิบาย
segmentId Long ID กลุ่มใหม่ ใช้สำหรับอัปโหลดรายการครั้งถัดไป
name String ชื่อกลุ่ม
generation String ตัวระบุ generation สมาชิกปัจจุบัน กลุ่มที่สร้างใหม่ไม่มีสมาชิก

อัปเดตสมาชิกกลุ่ม

endpoint เดียวเขียนทับ เพิ่ม หรือลบสมาชิกในรายการ รับเฉพาะกลุ่มในโปรเจกต์ปัจจุบันที่สร้างด้วยการอัปโหลดรายการ ใช้การอัปเดต manual และอยู่ในสถานะ active ตัวระบุผู้ใช้ต้องตรงกับผู้ใช้ active ที่มีอยู่ในโปรเจกต์ API ไม่สร้าง asset ผู้ใช้ เมื่อกลุ่มไม่เข้าเงื่อนไข จะคืน error 55210–55214 (ดู การตอบกลับ error)

Endpoint

POST /v1/segments/{segmentId}/members

ตัวอย่างคำขอ

ตัวอย่างต่อไปนี้แบ่งการดำเนินการ OVERRIDE หนึ่งครั้งเป็นสอง batch แต่ละ batchId แทนการดำเนินการรายการหนึ่งครั้ง batch ทั้งหมดต้องใช้ batchId operation และ batchCount เดียวกัน OVERRIDE ใช้การเปลี่ยนรายการหลังจากได้รับ batch ทั้งหมด APPEND และ REMOVE มีผลทันทีที่คำขอ batch สำเร็จ

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"}
    ]
  }'

            
โค้ดนี้โชว์เป็นหน้าต่างลอย

เมื่อได้รับ batch OVERRIDE แรก status ในการตอบกลับคือ RECEIVING และ complete เป็น false ส่ง batch ที่เหลือด้วย batchId เดียวกัน และตั้ง batchIndex เป็น 1

พารามิเตอร์คำขอ

ฟิลด์ ประเภท จำเป็น คำอธิบาย
segmentId Long ใช่ พารามิเตอร์ path: ID กลุ่มเป้าหมาย
batchId String ใช่ ID batch สำหรับการดำเนินการรายการครบหนึ่งครั้ง สูงสุด 128 ตัวอักษร ใช้ได้เฉพาะตัวอักษร ตัวเลข จุด underscore โคลอน และขีด ใช้เป็น idempotency key ต่อโปรเจกต์และกลุ่มภายใน 24 ชั่วโมง
operation String ใช่ การดำเนินการรายการ: OVERRIDE (แทนที่) APPEND (เพิ่ม) REMOVE (ลบ)
batchIndex Integer ใช่ ดัชนี batch ปัจจุบัน เริ่มที่ 0 และต้องน้อยกว่า batchCount
batchCount Integer ใช่ จำนวน batch ทั้งหมดของการดำเนินการนี้ 1–10 batch รวมกันสูงสุด 10,000 ตัวระบุสมาชิก
members Array<Object> ใช่ ตัวระบุสมาชิกใน batch ปัจจุบัน ต้องไม่ว่าง สูงสุด 1,000 ต่อ batch แต่ละองค์ประกอบใช้หนึ่งในรูปแบบในตารางด้านล่าง

องค์ประกอบ members รองรับสองรูปแบบต่อไปนี้ ไม่ส่ง euid พร้อม identityName / identityValue:

ฟิลด์ ประเภท คำอธิบาย
euid String EUID ของโปรเจกต์ ต้องเป็นสตริงจำนวนเต็มบวก เช่น "100001"
identityName String ชื่อ identity ผู้ใช้ที่ตั้งค่าในโปรเจกต์ ต้องไม่ว่าง สูงสุด 128 ตัวอักษร
identityValue String ค่า identity ต้องไม่ว่าง สูงสุด 256 ตัวอักษร ใช้คู่กับ identityName ค่าเกิน 256 ตัวอักษรไม่ทำให้คำขอทั้งหมดล้มเหลว แถวนั้นนับใน invalidCount

การดำเนินการรายการ

การดำเนินการ คำอธิบาย
OVERRIDE หลังได้รับ batch ทั้งหมด แทนที่รายการปัจจุบันด้วยผู้ใช้ที่ match ในการส่งครั้งนี้ หากไม่มีผู้ใช้ active ที่ match คำขอถูกปฏิเสธด้วย 55214 และรายการเดิมไม่เปลี่ยน
APPEND หลัง batch ปัจจุบันสำเร็จ เพิ่มผู้ใช้ที่ match เข้ารายการ ผู้ใช้ที่อยู่ในกลุ่มแล้วไม่ซ้ำ ไม่รอ batch อื่น
REMOVE หลัง batch ปัจจุบันสำเร็จ ลบผู้ใช้ที่ match ออกจากรายการ ผู้ใช้ที่ไม่อยู่ในกลุ่มไม่เกิดการเปลี่ยนแปลงเพิ่ม ไม่รอ batch อื่น

การลองใหม่ด้วย batchId เดียวกันต้องใช้ operation batchCount และเนื้อหา batch เดียวกัน batchId และ batchIndex เดียวกันไม่ส่งเนื้อหาต่างกัน เก็บผล idempotent 24 ชั่วโมง

batch OVERRIDE ถูกเก็บจนได้รับครบแล้วจึงใช้ ข้อมูลที่เก็บหมดอายุหลัง TTL 24 ชั่วโมง และรายการไม่เปลี่ยนหาก batch ไม่ครบก่อนหมดอายุ แต่ละ batch APPEND และ REMOVE ใช้แยกกัน batchCount และ batchIndex ยังระบุ batch รองรับ idempotency และติดตามความคืบหน้าโดยไม่บล็อก batch ปัจจุบัน

การเปลี่ยนรายการที่สำเร็จแต่ละครั้งบันทึกในประวัติอัปเดตกลุ่ม แหล่งที่มา REST API OVERRIDE บันทึกต่อ batch ที่เสร็จ APPEND และ REMOVE ต่อ batch ที่สำเร็จ บันทึก audit ไม่รวมตัวอย่างตัวระบุที่ไม่ match หรือไม่ valid

ตัวอย่างการตอบกลับ

batch ยังไม่ครบ:

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

            
โค้ดนี้โชว์เป็นหน้าต่างลอย

batch OVERRIDE เสร็จสมบูรณ์:

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

            
โค้ดนี้โชว์เป็นหน้าต่างลอย

เมื่อ batch APPEND หรือ REMOVE สำเร็จ batch ปัจจุบันใช้ทันทีและคืน complete: true แม้ batchCount มากกว่าจำนวน batch ที่ได้รับจนถึงตอนนี้ ตัวอย่างเช่น batchCount เป็น 2 และได้รับแค่ batch แรก receivedBatchCount เป็น 1 และ status เป็น 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
  }
}

            
โค้ดนี้โชว์เป็นหน้าต่างลอย
ฟิลด์ ประเภท คำอธิบาย
batchId String ID batch ของการดำเนินการรายการนี้
operation String การดำเนินการรายการของคำขอนี้
status String RECEIVING: OVERRIDE รอ batch PROCESSING: รอ lock การเปลี่ยนรายการ COMPLETED: การดำเนินการปัจจุบันเสร็จ
complete Boolean สำหรับ OVERRIDE ใช้ batch ทั้งหมดแล้ว สำหรับ APPEND/REMOVE ใช้ batch ปัจจุบันแล้ว—ไม่จำเป็นต้องส่ง batch ทั้งหมด
expectedBatchCount Integer จำนวน batch ทั้งหมดที่คาดหวัง
receivedBatchCount Integer จำนวนดัชนี batch ที่แตกต่างที่ได้รับ สำหรับ APPEND/REMOVE ใช้สำหรับสถิติเท่านั้นและไม่บล็อก batch ปัจจุบัน
inputCount Integer แถว input ที่ valid = matchedCount + unmatchedCount ไม่รวม ตัวระบุที่ไม่ valid OVERRIDE นับ batch ที่ได้รับ (batch เต็มเมื่อเสร็จ) APPEND/REMOVE นับ batch ปัจจุบัน
matchedCount Integer ตัวระบุที่ match กับผู้ใช้ active
unmatchedCount Integer ตัวระบุที่ไม่ match กับผู้ใช้ active
unmatchedSamples Array<Object> ตัวอย่างตัวระบุที่ไม่ match โครงสร้างเดียวกับสมาชิกในคำขอ สูงสุด 100
unmatchedSamplesTruncated Boolean ตัวอย่างที่ไม่ match ถูกตัดที่ 100 หรือไม่
invalidCount Integer ตัวระบุที่ไม่ valid ไม่รวมใน inputCount รวมถึง: euid ไม่เป็นจำนวนเต็มบวก ส่ง euid พร้อมฟิลด์ identity identityName/identityValue ว่างหรือไม่ตรงกัน identityName เกิน 128 ตัวอักษร identityValue เกิน 256 ตัวอักษร ชื่อ identity ไม่ได้ตั้งค่า identity หนึ่ง match ผู้ใช้ active หลายคน
invalidSamples Array<Object> ตัวอย่างตัวระบุที่ไม่ valid โครงสร้างเดียวกับสมาชิกในคำขอ สูงสุด 100
invalidSamplesTruncated Boolean ตัวอย่างที่ไม่ valid ถูกตัดที่ 100 หรือไม่
enterCount Integer ผู้ใช้ที่เพิ่มเข้ากลุ่มจริงในการรันครั้งนี้
exitCount Integer ผู้ใช้ที่ลบออกจากกลุ่มจริงในการรันครั้งนี้

ตัวอย่างใช้โครงสร้าง object ตัวระบุสมาชิกจากคำขอ และอาจรวม identityValue ที่ส่ง เซิร์ฟเวอร์เก็บตัวอย่างเฉพาะใน cache idempotency 24 ชั่วโมง ไม่ใส่ในบันทึก audit จัดการการตอบกลับและ log ตามข้อกำหนด compliance ข้อมูลของคุณ

หากการตอบกลับเป็น PROCESSING ลองใหม่ด้วย batchId batchIndex และเนื้อหา batch เดิมเพื่อผล idempotent ไม่มี API แยกสำหรับสอบถามความคืบหน้า batch

การตอบกลับ error

error ใช้ code และ message ดู รหัสสถานะ HTTP สำหรับรหัสสถานะ HTTP และรหัส return ทั่วไป

สถานะ HTTP รหัส คำอธิบาย
401 40050 การยืนยันตัวตน API Key / API Secret ล้มเหลว หรือแหล่งข้อมูล API ถูกปิดใช้งาน
400 40026 มีกลุ่มผู้ใช้ชื่อเดียวกันในโปรเจกต์แล้ว (path สร้าง passthrough Metadata)
400 40032 ถึงขีดจำกัดจำนวนกลุ่มผู้ใช้แล้ว (path สร้าง passthrough Metadata)
400 55201 ไม่มีกลุ่มผู้ใช้ (path อัปโหลดรายการ)
400 55210 วิธีสร้างกลุ่มไม่รองรับการอัปโหลดรายการ REST API: กลุ่มเป้าหมายไม่ได้สร้างด้วยการอัปโหลดรายการ (เช่น กลุ่มตามกฎ)
400 55211 โหมดอัปเดตกลุ่มไม่รองรับการอัปโหลดรายการ REST API: กลุ่มเป้าหมายไม่ได้อัปเดต manual
400 55212 สถานะวงจรชีวิตกลุ่มไม่รองรับการอัปโหลดรายการ REST API: กลุ่มเป้าหมายไม่ active
400 55213 กลุ่มไม่มี generation สมาชิกที่ใช้ได้ ไม่รองรับการอัปโหลดรายการ REST API ชั่วคราว
400 55214 ไม่อนุญาตให้เขียนทับด้วยรายการว่าง: หลัง batch OVERRIDE ทั้งหมด ไม่มีผู้ใช้ active ที่ match
400 55004 ฟิลด์คำขอหรือพารามิเตอร์ batch รายการไม่ valid
503 55207 metadata กลุ่มไม่พร้อมใช้งานชั่วคราว
500 55000 error ภายในเซิร์ฟเวอร์

เมื่อสร้างกลุ่ม รหัส error ทางธุรกิจและ message จาก Metadata ส่งต่อให้ผู้เรียก เช่น ชื่อซ้ำ 40026 ถึงขีดจำกัด 40032 ใน path อัปโหลดรายการ «ไม่มีกลุ่ม» คืน 55201 แทน 40027

ตัวระบุสมาชิกที่ไม่ match หรือไม่ valid ไม่ทำให้การดำเนินการรายการทั้งหมดล้มเหลว (ยกเว้น OVERRIDE เมื่อไม่มีผู้ใช้ match ดู 55214) การตอบกลับคืนจำนวนและตัวอย่างตัวระบุสูงสุด 100 รายการ ตัวอย่างอาจมี identityValue ปกป้องข้อมูลการตอบกลับตามความเหมาะสม

Icon Solid Transparent White Qiyu
ติดต่อฝ่ายขาย