ข้ามไปยังเนื้อหา

API ลบข้อมูล

Data Erasure API คือวิธี self-serve สำหรับลบข้อมูลส่วนบุคคลของหัวเรื่องออกจาก Pushwoosh (สิทธิ์การลบข้อมูลตาม GDPR) การลบไม่สามารถยกเลิกได้: ใช้เพื่อจำลองหน้า คำขอข้อมูล ของ Control Panel และการดำเนินการ ลบข้อมูลส่วนบุคคล บนการ์ดของผู้สมัครสมาชิกจากระบบของคุณเอง

URL พื้นฐาน

Anchor link to
https://rpc-api.svc-nue.pushwoosh.com

Endpoints ทั้งหมดให้บริการผ่าน HTTPS คำขอและการตอบกลับใช้ application/json ยกเว้น Upload ซึ่งใช้ multipart/form-data

การยืนยันตัวตน

Anchor link to

ทุกคำขอต้องมีเฮดเดอร์ Authorization พร้อมกับ โทเค็น Server API ของคุณ:

Authorization: Api YOUR_API_TOKEN

โทเค็นต้องมีสิทธิ์แก้ไขสำหรับทุกแอปพลิเคชันที่ระบุใน application_codes ซึ่งเป็นสิทธิ์เดียวกับที่โทเค็นต้องใช้ในการเขียนข้อมูลอุปกรณ์บนแอปพลิเคชันเหล่านั้น

ข้อตกลง

Anchor link to
  • การตั้งชื่อฟิลด์: request bodies ยอมรับ lowerCamelCase (ตัวอย่างเช่น applicationCodes, identifierType) การตอบกลับจะถูก marshal โดยใช้ชื่อฟิลด์ของ proto เสมอ ในรูปแบบ snake_case (task_id, identifier_hash และอื่นๆ) ตัวอย่างและข้อมูลอ้างอิงออบเจ็กต์ด้านล่างใช้รูปแบบตัวพิมพ์นั้น
  • ตัวระบุ (Identifiers): หัวเรื่องจะถูกระบุด้วย identifier_type (SUBJECT_IDENTIFIER_USER_ID, SUBJECT_IDENTIFIER_HWID หรือ SUBJECT_IDENTIFIER_EMAIL) ร่วมกับรายการ identifiers ของประเภทนั้นเพียงประเภทเดียว ตัวระบุแบบอีเมลจะจับคู่แบบไม่สนตัวพิมพ์เล็ก-ใหญ่
  • Dry run ก่อน แล้วค่อยอ้างอิง: Create ด้วย dry_run: true จะนับเฉพาะสิ่งที่จะถูกลบเท่านั้นและไม่เขียนข้อมูลใดๆ การอ้างอิง task_id ของ dry run นั้นเป็น confirmation_dry_run_task_id ในการเรียกจริงเป็นทางเลือก แต่หากคุณอ้างอิง ต้องตรงกับแอปพลิเคชันและตัวระบุของ dry run นั้นทุกประการ และต้องเรียกภายใน 15 นาทีหลังจาก dry run เสร็จสิ้น มิฉะนั้นคำขอจะถูกปฏิเสธ
  • รายงานจะไม่มีตัวระบุแบบข้อความธรรมดาปรากฏอยู่เลย ทั้ง GetTaskReport และ GetJournalReport จะรายงานตัวระบุแต่ละตัวเป็นค่า sha256 hash (identifier_hash) และเนื้อหารายงานเป็น CSV ที่เข้ารหัสแบบ base64 อยู่ในการตอบกลับแบบ JSON

การตอบกลับข้อผิดพลาด

Anchor link to
สถานะ HTTPความหมาย
400 Bad Requestอาร์กิวเมนต์ไม่ถูกต้อง เช่น identifier_type, identifiers หรือ application_codes ว่างเปล่า, ตัวระบุมากกว่า 10,000 รายการ, แอปพลิเคชันมากกว่า 50 รายการ, ตัวระบุ × แอปพลิเคชันเกิน 50,000, สตริงตัวระบุว่างเปล่า หรือ (เฉพาะ Upload) ไฟล์ CSV หายไป/ไม่สามารถอ่านได้ นอกจากนี้ยังส่งคืนเป็น FailedPrecondition บน wire เมื่อ confirmation_dry_run_task_id ที่อ้างอิงไม่ตรงกับ dry run ที่เสร็จสิ้นซึ่งระบุไว้, เก่าเกินไป (มากกว่า 15 นาที) หรือไม่ใช่ dry run ที่เสร็จสิ้นเลย
401 Unauthorizedเฮดเดอร์ Authorization หายไปหรือไม่ถูกต้อง
403 Forbiddenโทเค็นไม่มีสิทธิ์ modify/device-data บนแอปพลิเคชันที่ร้องขอรายการใดรายการหนึ่ง หรือผู้เรียกไม่มีสิทธิ์อ่าน task/report ที่ร้องขอ
404 Not Foundไม่พบ task หรือ task ไม่ได้เป็นของบัญชีของผู้เรียก
413 Payload Too Large(เฉพาะ Upload) ไฟล์ที่อัปโหลดมีขนาดเกิน 5 MB
429 Too Many Requestsบัญชีเริ่มงานลบข้อมูลไปแล้ว 20 งาน (รวม dry run) ใน 24 ชั่วโมงที่ผ่านมา
เมธอดเส้นทางคำอธิบาย
POST/api/data_erasure/tasksสร้างงานลบข้อมูล (หรือ dry-run)
POST/api/data_erasure/uploadสร้างงานลบข้อมูลจากไฟล์ CSV ของตัวระบุที่อัปโหลด
GET/api/data_erasure/tasksแสดงรายการงานลบข้อมูลของบัญชี
GET/api/data_erasure/tasks/{task_id}รับงานลบข้อมูลหนึ่งงาน
GET/api/data_erasure/tasks/{task_id}/rowsแสดงรายการผลลัพธ์รายตัวระบุของงานหนึ่งงาน
GET/api/data_erasure/tasks/{task_id}/reportดาวน์โหลดรายงานของงานหนึ่งงานเป็น CSV
GET/api/data_erasure/reportดาวน์โหลดทุกงานของช่วงเวลาหนึ่งเป็น CSV ไฟล์เดียว

เริ่มลบข้อมูลส่วนบุคคลของหัวเรื่องที่ระบุไว้ในแอปพลิเคชันที่ระบุไว้ ด้วย dry_run: true งานจะนับเฉพาะสิ่งที่จะถูกลบเท่านั้น

POST /api/data_erasure/tasks

เนื้อหาของคำขอ

Anchor link to
พารามิเตอร์ประเภทจำเป็นคำอธิบาย
identifierTypestringใช่SUBJECT_IDENTIFIER_USER_ID, SUBJECT_IDENTIFIER_HWID หรือ SUBJECT_IDENTIFIER_EMAIL
identifiersarray of stringsใช่ตัวระบุหัวเรื่องของประเภทนั้นเพียงประเภทเดียว สูงสุด 10,000 รายการต่องาน ห้ามมีค่าว่างเปล่า
applicationCodesarray of stringsใช่รหัสแอปพลิเคชัน ที่จะลบข้อมูลออก สูงสุด 50 รายการ ไม่มีวิธีลบข้อมูลจากทุกแอปพลิเคชันของบัญชีในการเรียกครั้งเดียว จึงต้องระบุแต่ละรายการอย่างชัดเจน identifiers.length × applicationCodes.length ต้องไม่เกิน 50,000 เนื่องจากรายงานมีหนึ่งแถวต่อตัวระบุต่อแอปพลิเคชัน
dryRunbooleanไม่นับสิ่งที่จะถูกลบและไม่เขียนข้อมูลใดๆ ค่าเริ่มต้นคือ false
confirmationDryRunTaskIdintegerไม่task_id ของ dry run ที่เสร็จสิ้นแล้วซึ่งวัดผลการลบนี้ไว้ตรงกัน ดูที่ ข้อตกลง
ตัวอย่างคำขอ
Anchor link to
{
"identifierType": "SUBJECT_IDENTIFIER_EMAIL",
"identifiers": ["subject@example.com"],
"applicationCodes": ["XXXXX-XXXXX"],
"dryRun": true
}

การตอบกลับ

Anchor link to
ฟิลด์ประเภทคำอธิบาย
task_idintegerId ของงานที่สร้างขึ้น ใช้ค่านี้กับ endpoint อื่นๆ ทั้งหมดในหน้านี้

สร้างงานประเภทเดียวกับ Create แต่ตัวระบุมาจากไฟล์ CSV ที่อัปโหลดแทนที่จะเป็นอาร์เรย์ JSON ใช้วิธีนี้สำหรับรายการหัวเรื่องจำนวนมาก

POST /api/data_erasure/upload

คำขอ (multipart/form-data)

Anchor link to
ฟิลด์จำเป็นคำอธิบาย
fileใช่ไฟล์ CSV ขนาดสูงสุด 5 MB หนึ่งตัวระบุต่อแถว ในคอลัมน์เดียว แถวแรกอาจตั้งชื่อคอลัมน์ (user_id, userid, user id, hwid, email, identifier หรือ subject โดยไม่สนตัวพิมพ์เล็ก-ใหญ่) แทนที่จะเก็บตัวระบุ แถวนั้นจะถูกข้ามในฐานะ header โดยไม่นับรวม แถวว่างจะถูกข้ามและนับแยกต่างหาก ตัวระบุที่ซ้ำกัน (ไม่สนตัวพิมพ์เล็ก-ใหญ่ สำหรับอีเมล) จะถูกรวมเป็นหนึ่งและนับแยกต่างหาก
identifier_typeใช่user_id, hwid หรือ email ตัวพิมพ์เล็กทั้งหมด ซึ่งเป็นรูปแบบตัวพิมพ์ที่ต่างจากค่า enum ของ identifierType แบบ JSON ที่ใช้ในที่อื่นของหน้านี้ หนึ่งประเภทจะใช้กับทั้งไฟล์
application_codesใช่รหัสแอปพลิเคชันคั่นด้วยจุลภาค
dry_runไม่true/false
confirmation_dry_run_task_idไม่เหมือนกับ Create

การตอบกลับ

Anchor link to
{
"task_id": 123,
"identifier_count": 480,
"duplicate_count": 3,
"skipped_rows": 1
}

แสดงรายการการลบข้อมูลของบัญชี เรียงจากล่าสุดก่อน: บันทึกการตรวจสอบว่าใครลบอะไรและเมื่อไร Dry run จะถูกละไว้เว้นแต่จะตั้งค่า includeDryRuns

GET /api/data_erasure/tasks

พารามิเตอร์ของ Query

Anchor link to
พารามิเตอร์ประเภทคำอธิบาย
limit / offsetintegerการแบ่งหน้า
includeDryRunsbooleanรวมงานแบบ dry-run (วัดผลอย่างเดียว) ด้วย
from / tostring (RFC 3339)เก็บเฉพาะงานที่เริ่มในช่วง [from, to)
applicationCodestringเก็บเฉพาะงานที่ครอบคลุมแอปพลิเคชันนี้
initiatorUserIdintegerเก็บเฉพาะงานที่เริ่มโดยผู้ใช้ Control Panel รายนี้ 0 (ค่าเริ่มต้น) จะเก็บทุกผู้เริ่มงาน
initiatorTokenIdintegerเก็บเฉพาะงานที่เริ่มโดย API token นี้ 0 (ค่าเริ่มต้น) จะเก็บทุกผู้เริ่มงาน
initiatorEmailstringเก็บเฉพาะงานที่เริ่มโดยผู้ใช้ Control Panel รายนี้ จับคู่ด้วยอีเมล โดยไม่สนตัวพิมพ์เล็ก-ใหญ่

การตอบกลับ

Anchor link to
ฟิลด์ประเภทคำอธิบาย
tasksarray of ออบเจ็กต์ Data erasure taskงานที่ตรงกัน

ส่งคืนงานลบข้อมูลหนึ่งงานพร้อมสถานะและตัวนับ ใช้เพื่อติดตามงานที่เริ่มโดย Create หรือ Upload

GET /api/data_erasure/tasks/{task_id}

การตอบกลับ

Anchor link to
ฟิลด์ประเภทคำอธิบาย
taskออบเจ็กต์ Data erasure taskงานที่ร้องขอ

ListTaskRows

Anchor link to

ส่งคืนผลลัพธ์รายตัวระบุของงานหนึ่งงาน: อะไรถูกลบ ไม่พบ ข้าม หรือล้มเหลว ตัวระบุจะถูกรายงานเป็นค่า sha256 hash

GET /api/data_erasure/tasks/{task_id}/rows

พารามิเตอร์ของ Query

Anchor link to
พารามิเตอร์ประเภทคำอธิบาย
limit / offsetintegerการแบ่งหน้า

การตอบกลับ

Anchor link to
ฟิลด์ประเภทคำอธิบาย
rowsarray of ออบเจ็กต์แถวของ Data erasure taskผลลัพธ์หน้านี้

GetTaskReport

Anchor link to

ส่งคืนรายงานทั้งหมดของงานหนึ่งงานเป็นไฟล์ CSV: หนึ่งแถวต่อตัวระบุต่อแอปพลิเคชัน พร้อมผลลัพธ์ ListTaskRows แสดงแถวเดียวกันแบบแบ่งหน้าแทน

GET /api/data_erasure/tasks/{task_id}/report

การตอบกลับ

Anchor link to
ฟิลด์ประเภทคำอธิบาย
filenamestringชื่อไฟล์ที่แนะนำ ตัวอย่างเช่น data-erasure-task-42.csv
content_typestringtext/csv
contentstring (base64)ไฟล์ CSV คอลัมน์: task_id, created, identifier_type, identifier_hash, application_code, result, detail

GetJournalReport

Anchor link to

ส่งคืนการลบข้อมูลทั้งหมดของช่วงเวลาหนึ่งเป็นไฟล์ CSV ไฟล์เดียว: หนึ่งแถวต่อตัวระบุต่อแอปพลิเคชัน พร้อมงานและผู้เริ่มงานในแต่ละแถว นี่คือสิ่งที่บัญชีส่งมอบให้กับผู้ตรวจสอบ

GET /api/data_erasure/report

พารามิเตอร์ของ Query

Anchor link to
พารามิเตอร์ประเภทจำเป็นคำอธิบาย
fromstring (RFC 3339)ใช่จุดเริ่มต้นของช่วงเวลา
tostring (RFC 3339)ไม่จุดสิ้นสุดของช่วงเวลา ค่าเริ่มต้นคือปัจจุบัน
includeDryRunsbooleanไม่รวมงานแบบ dry-run ด้วย

การตอบกลับ

Anchor link to
ฟิลด์ประเภทคำอธิบาย
filenamestringชื่อไฟล์ที่แนะนำ ตัวอย่างเช่น data-erasure-2026-01-01-2026-04-01.csv
content_typestringtext/csv
contentstring (base64)ไฟล์ CSV คอลัมน์: task_id, task_created, initiator_user_id, initiator_email, initiator_token_id, dry_run, identifier_type, identifier_hash, application_code, result, detail, row_created

ออบเจ็กต์ Data erasure task

Anchor link to
ฟิลด์ประเภทคำอธิบาย
task_idintegerId ของงาน
identifier_typestringSUBJECT_IDENTIFIER_USER_ID, SUBJECT_IDENTIFIER_HWID หรือ SUBJECT_IDENTIFIER_EMAIL
application_codesarray of stringsแอปพลิเคชันที่งานนี้ครอบคลุม
dry_runbooleanงานนี้เป็นการวัดปริมาณเท่านั้นหรือไม่
statusstringERASURE_TASK_STATUS_PENDING, _IN_PROGRESS, _DONE หรือ _FAILED
total_countintegerตัวระบุ × แอปพลิเคชันที่งานนี้ครอบคลุม
deleted_countintegerจำนวนที่ถูกลบ (หรือสำหรับ dry run คือจำนวนที่จะถูกลบ)
not_found_countintegerจำนวนที่ไม่พบ
failed_countintegerจำนวนที่ล้มเหลว ดูสาเหตุใน ListTaskRows หรือในรายงาน
fail_reasonstringถูกตั้งค่าเมื่อ status เป็น ERASURE_TASK_STATUS_FAILED
initiator_user_idintegerผู้ใช้ Control Panel ที่เริ่มงาน 0 เมื่อ API token เป็นผู้เริ่ม
initiator_token_idintegerAPI token ที่เริ่มงาน 0 เมื่อผู้ใช้ Control Panel เป็นผู้เริ่ม
initiator_emailstringอีเมลของผู้ใช้ Control Panel ที่เริ่มงาน ว่างเปล่าสำหรับ API token
createdstring (RFC 3339)เวลาที่สร้างงาน
started_atstring (RFC 3339)เวลาที่งานลบเริ่มทำงาน
finished_atstring (RFC 3339)เวลาที่งานถึงสถานะสุดท้าย

ออบเจ็กต์แถวของ Data erasure task

Anchor link to
ฟิลด์ประเภทคำอธิบาย
identifier_hashstringsha256 ของตัวระบุ รายงานจะไม่จัดเก็บหรือส่งคืนตัวระบุจริงเลย
application_codestringแอปพลิเคชันที่ผลลัพธ์ของแถวนี้ใช้
resultstringERASURE_ROW_RESULT_DELETED, _NOT_FOUND, _SKIPPED หรือ _FAILED
detailstringรายละเอียดทางเทคนิค ส่วนใหญ่จะถูกตั้งค่าเมื่อล้มเหลว
createdstring (RFC 3339)เวลาที่เขียนแถวนี้

ที่เกี่ยวข้อง

Anchor link to