ডেটা ইরেজার API
ডেটা ইরেজার API হল Pushwoosh থেকে একজন সাবজেক্টের ব্যক্তিগত ডেটা মুছে ফেলার (GDPR-এর মুছে ফেলার অধিকার) সেলফ-সার্ভ উপায়। মুছে ফেলা পূর্বাবস্থায় ফেরানো যায় না: আপনার নিজের সিস্টেম থেকে কন্ট্রোল প্যানেলের ডেটা অনুরোধ পেজ এবং একজন সাবস্ক্রাইবারের কার্ডে ব্যক্তিগত ডেটা মুছে ফেলুন অ্যাকশনের প্রতিরূপ তৈরি করতে এটি ব্যবহার করুন।
বেস URL
Anchor link tohttps://rpc-api.svc-nue.pushwoosh.comসমস্ত এন্ডপয়েন্ট HTTPS-এর মাধ্যমে পরিবেশিত হয়। অনুরোধ এবং প্রতিক্রিয়া application/json ব্যবহার করে, Upload ছাড়া, যা multipart/form-data নেয়।
প্রমাণীকরণ
Anchor link toপ্রতিটি অনুরোধে আপনার সার্ভার API টোকেন সহ একটি Authorization হেডার অন্তর্ভুক্ত করতে হবে:
Authorization: Api YOUR_API_TOKENটোকেনটির application_codes-এ নামযুক্ত প্রতিটি অ্যাপ্লিকেশনে মডিফাই অ্যাক্সেস থাকতে হবে। সেই অ্যাপ্লিকেশনগুলিতে ডিভাইস ডেটা লেখার জন্য একটি টোকেনের যে অ্যাক্সেস প্রয়োজন, এটি ঠিক তেমনই।
কনভেনশন
Anchor link to- ফিল্ডের নামকরণ: অনুরোধের বডি
lowerCamelCaseগ্রহণ করে (উদাহরণস্বরূপ,applicationCodes,identifierType)। প্রতিক্রিয়াগুলি প্রোটো ফিল্ডের নাম ব্যবহার করেsnake_case-এ মার্শাল করা হয় (task_id,identifier_hash, ইত্যাদি)। নীচের উদাহরণ এবং অবজেক্ট রেফারেন্সগুলি সেই কেসিং ব্যবহার করে। - শনাক্তকারী: একজন সাবজেক্টকে
identifier_type(SUBJECT_IDENTIFIER_USER_ID,SUBJECT_IDENTIFIER_HWID, বাSUBJECT_IDENTIFIER_EMAIL) এবং সেই একটি টাইপেরidentifiers-এর একটি তালিকা দিয়ে শনাক্ত করা হয়। একটি ইমেল শনাক্তকারী কেস-ইনসেনসিটিভভাবে মেলানো হয়। - প্রথমে ড্রাই রান, তারপর সেটি উল্লেখ করুন:
dry_run: trueসহ Create শুধুমাত্র কী মুছে ফেলা হবে তা গণনা করে এবং কিছুই লেখে না। আসল কলে সেই ড্রাই রানেরtask_id-কেconfirmation_dry_run_task_idহিসেবে উল্লেখ করা ঐচ্ছিক, কিন্তু আপনি যদি একটি উল্লেখ করেন, তবে এটি অবশ্যই সেই ড্রাই রানের নিজস্ব অ্যাপ্লিকেশন এবং শনাক্তকারীগুলির সাথে হুবহু মিলতে হবে, এবং এটি শেষ হওয়ার ১৫ মিনিটের মধ্যে কল করতে হবে। অন্যথায় কলটি প্রত্যাখ্যান করা হয়। - রিপোর্ট কখনও শনাক্তকারীটি সরাসরি বহন করে না। GetTaskReport এবং GetJournalReport উভয়ই প্রতিটি শনাক্তকারীকে তার sha256 হ্যাশ (
identifier_hash) হিসেবে রিপোর্ট করে, এবং রিপোর্টের বডি JSON প্রতিক্রিয়ার ভিতরে base64 হিসেবে CSV এনকোড করা থাকে।
ত্রুটি প্রতিক্রিয়া
Anchor link to| HTTP স্ট্যাটাস | অর্থ |
|---|---|
400 Bad Request | অবৈধ আর্গুমেন্ট, যেমন একটি খালি identifier_type, identifiers, বা application_codes, ১০,০০০-এর বেশি শনাক্তকারী, ৫০-এর বেশি অ্যাপ্লিকেশন, ৫০,০০০-এর বেশি শনাক্তকারী × অ্যাপ্লিকেশন, একটি খালি শনাক্তকারী স্ট্রিং, অথবা (শুধুমাত্র Upload-এ) একটি অনুপস্থিত/অপাঠযোগ্য CSV ফাইল। একটি উল্লিখিত confirmation_dry_run_task_id যখন এটি যে সমাপ্ত ড্রাই রানের নাম দেয় তার সাথে মেলে না, খুব পুরনো (১৫ মিনিটের বেশি), বা আদৌ একটি সমাপ্ত ড্রাই রান নয়, তখন এটি তারের উপর FailedPrecondition হিসেবেও ফেরত দেওয়া হয়। |
401 Unauthorized | অনুপস্থিত বা অবৈধ Authorization হেডার। |
403 Forbidden | টোকেনটির অনুরোধকৃত অ্যাপ্লিকেশনগুলির একটিতে মডিফাই/ডিভাইস-ডেটা অধিকার নেই, অথবা কলার অনুরোধকৃত টাস্ক/রিপোর্ট পড়তে পারেন না। |
404 Not Found | টাস্কটি পাওয়া যায়নি, অথবা এটি কলারের অ্যাকাউন্টের অন্তর্গত নয়। |
413 Payload Too Large | (শুধুমাত্র Upload-এ) আপলোড করা ফাইলটি 5 MB-এর বেশি। |
429 Too Many Requests | অ্যাকাউন্টটি ইতিমধ্যে গত ২৪ ঘণ্টায় ২০টি ডেটা ইরেজার টাস্ক (ড্রাই রান সহ) শুরু করেছে। |
এন্ডপয়েন্টস
Anchor link to| পদ্ধতি | পাথ | বর্ণনা |
|---|---|---|
POST | /api/data_erasure/tasks | একটি ইরেজার (বা ড্রাই-রান) টাস্ক তৈরি করুন |
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 হিসেবে ডাউনলোড করুন |
Create
Anchor link toতালিকাভুক্ত অ্যাপ্লিকেশনগুলিতে তালিকাভুক্ত সাবজেক্টদের ব্যক্তিগত ডেটা মুছে ফেলা শুরু করে। dry_run: true সহ টাস্কটি শুধুমাত্র কী মুছে ফেলা হবে তা গণনা করে।
POST /api/data_erasure/tasks
অনুরোধের বডি
Anchor link to| প্যারামিটার | টাইপ | প্রয়োজনীয় | বর্ণনা |
|---|---|---|---|
identifierType | string | হ্যাঁ | SUBJECT_IDENTIFIER_USER_ID, SUBJECT_IDENTIFIER_HWID, বা SUBJECT_IDENTIFIER_EMAIL। |
identifiers | array of strings | হ্যাঁ | সেই এক টাইপের সাবজেক্ট শনাক্তকারী, প্রতি টাস্কে ১০,০০০ পর্যন্ত, কোনো খালি মান নয়। |
applicationCodes | array of strings | হ্যাঁ | যেখান থেকে মুছে ফেলতে হবে সেই অ্যাপ্লিকেশন কোড, ৫০ পর্যন্ত। এক কলে অ্যাকাউন্টের প্রতিটি অ্যাপ্লিকেশন থেকে মুছে ফেলার কোনো উপায় নেই, তাই প্রতিটি স্পষ্টভাবে নাম দিন। identifiers.length × applicationCodes.length ৫০,০০০ ছাড়াতে পারবে না, কারণ রিপোর্টে প্রতি অ্যাপ্লিকেশনে প্রতি শনাক্তকারীতে একটি সারি থাকে। |
dryRun | boolean | না | কী মুছে ফেলা হবে তা গণনা করে এবং কিছুই লেখে না। ডিফল্ট false। |
confirmationDryRunTaskId | integer | না | একটি সমাপ্ত ড্রাই রানের task_id যা এই একই মুছে ফেলাটি পরিমাপ করেছিল। দেখুন কনভেনশন। |
অনুরোধের উদাহরণ
Anchor link to{ "identifierType": "SUBJECT_IDENTIFIER_EMAIL", "identifiers": ["subject@example.com"], "applicationCodes": ["XXXXX-XXXXX"], "dryRun": true}প্রতিক্রিয়া
Anchor link to| ফিল্ড | টাইপ | বর্ণনা |
|---|---|---|
task_id | integer | তৈরি করা টাস্কের আইডি। এই পৃষ্ঠার অন্য প্রতিটি এন্ডপয়েন্টে এটি ব্যবহার করুন। |
Upload
Anchor link toCreate-এর মতোই একই ধরনের টাস্ক তৈরি করে, কিন্তু শনাক্তকারীগুলি একটি JSON অ্যারের পরিবর্তে একটি আপলোড করা CSV থেকে আসে। একটি বাল্ক সাবজেক্ট তালিকার জন্য এটি ব্যবহার করুন।
POST /api/data_erasure/upload
অনুরোধ (multipart/form-data)
Anchor link to| ফিল্ড | প্রয়োজনীয় | বর্ণনা |
|---|---|---|
file | হ্যাঁ | CSV ফাইল, 5 MB পর্যন্ত, একক কলামে প্রতি সারিতে একটি শনাক্তকারী। প্রথম সারিতে একটি শনাক্তকারী রাখার পরিবর্তে কলামের নাম দেওয়া থাকতে পারে (user_id, userid, user id, hwid, email, identifier, বা subject, কেস-ইনসেনসিটিভভাবে)। সেই সারিটি তখন একটি হেডার হিসেবে বাদ দেওয়া হয়, গণনা করা হয় না। খালি সারিগুলি বাদ দেওয়া হয় এবং আলাদাভাবে গণনা করা হয়। ডুপ্লিকেট শনাক্তকারী (ইমেলের জন্য কেস-ইনসেনসিটিভভাবে) একটিতে একত্রিত করা হয় এবং আলাদাভাবে গণনা করা হয়। |
identifier_type | হ্যাঁ | user_id, hwid, বা email, ছোট হাতের অক্ষরে, এই পৃষ্ঠার অন্যত্র ব্যবহৃত JSON identifierType enum মানের থেকে ভিন্ন কেসিং। একটি টাইপ পুরো ফাইলে প্রযোজ্য। |
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}ListTasks
Anchor link toঅ্যাকাউন্টের ইরেজারগুলি তালিকাভুক্ত করে, নতুনতমটি প্রথমে: কে কী এবং কখন মুছে ফেলেছে তার অডিট জার্নাল। includeDryRuns সেট না থাকলে ড্রাই রানগুলি বাদ দেওয়া হয়।
GET /api/data_erasure/tasks
কোয়েরি প্যারামিটার
Anchor link to| প্যারামিটার | টাইপ | বর্ণনা |
|---|---|---|
limit / offset | integer | পেজিং। |
includeDryRuns | boolean | ড্রাই-রান (শুধুমাত্র-পরিমাপ) টাস্ক অন্তর্ভুক্ত করুন। |
from / to | string (RFC 3339) | [from, to)-তে শুরু হওয়া টাস্ক রাখুন। |
applicationCode | string | এই অ্যাপ্লিকেশন কভার করে এমন টাস্ক রাখুন। |
initiatorUserId | integer | এই কন্ট্রোল প্যানেল ব্যবহারকারীর শুরু করা টাস্ক রাখুন। 0 (ডিফল্ট) প্রতিটি সূচনাকারী রাখে। |
initiatorTokenId | integer | এই API টোকেনের শুরু করা টাস্ক রাখুন। 0 (ডিফল্ট) প্রতিটি সূচনাকারী রাখে। |
initiatorEmail | string | এই কন্ট্রোল প্যানেল ব্যবহারকারীর শুরু করা টাস্ক রাখুন, ইমেল দ্বারা মিলিয়ে, কেস-ইনসেনসিটিভভাবে। |
প্রতিক্রিয়া
Anchor link to| ফিল্ড | টাইপ | বর্ণনা |
|---|---|---|
tasks | ডেটা ইরেজার টাস্ক অবজেক্ট-এর অ্যারে | মিলে যাওয়া টাস্ক। |
GetTask
Anchor link toএকটি ইরেজার টাস্ক তার স্ট্যাটাস এবং কাউন্টার সহ ফেরত দেয়। Create বা Upload দ্বারা শুরু করা একটি টাস্ক অনুসরণ করতে এটি ব্যবহার করুন।
GET /api/data_erasure/tasks/{task_id}
প্রতিক্রিয়া
Anchor link to| ফিল্ড | টাইপ | বর্ণনা |
|---|---|---|
task | ডেটা ইরেজার টাস্ক অবজেক্ট | অনুরোধকৃত টাস্ক। |
ListTaskRows
Anchor link toএকটি টাস্কের প্রতি-শনাক্তকারী ফলাফল ফেরত দেয়: কী মুছে ফেলা হয়েছিল, পাওয়া যায়নি, বাদ দেওয়া হয়েছিল, বা ব্যর্থ হয়েছিল। শনাক্তকারীগুলি তাদের sha256 হ্যাশ হিসেবে রিপোর্ট করা হয়।
GET /api/data_erasure/tasks/{task_id}/rows
কোয়েরি প্যারামিটার
Anchor link to| প্যারামিটার | টাইপ | বর্ণনা |
|---|---|---|
limit / offset | integer | পেজিং। |
প্রতিক্রিয়া
Anchor link to| ফিল্ড | টাইপ | বর্ণনা |
|---|---|---|
rows | ডেটা ইরেজার টাস্ক সারি অবজেক্ট-এর অ্যারে | ফলাফলের এই পেজ। |
GetTaskReport
Anchor link toএকটি টাস্কের সম্পূর্ণ রিপোর্ট একটি CSV ফাইল হিসেবে ফেরত দেয়: প্রতি অ্যাপ্লিকেশনে প্রতি শনাক্তকারীতে একটি সারি, তার ফলাফল সহ। ListTaskRows একই সারিগুলি পেজ বাই পেজ দেখায়।
GET /api/data_erasure/tasks/{task_id}/report
প্রতিক্রিয়া
Anchor link to| ফিল্ড | টাইপ | বর্ণনা |
|---|---|---|
filename | string | প্রস্তাবিত ফাইলের নাম, উদাহরণস্বরূপ data-erasure-task-42.csv। |
content_type | string | text/csv। |
content | string (base64) | CSV ফাইল। কলাম: task_id, created, identifier_type, identifier_hash, application_code, result, detail। |
GetJournalReport
Anchor link toএকটি সময়কালের প্রতিটি ইরেজার একটি একক CSV ফাইল হিসেবে ফেরত দেয়: প্রতি অ্যাপ্লিকেশনে প্রতি শনাক্তকারীতে একটি সারি, প্রতিটি সারিতে টাস্ক এবং তার সূচনাকারী সহ। একজন অডিটরকে একটি অ্যাকাউন্ট এটিই হস্তান্তর করে।
GET /api/data_erasure/report
কোয়েরি প্যারামিটার
Anchor link to| প্যারামিটার | টাইপ | প্রয়োজনীয় | বর্ণনা |
|---|---|---|---|
from | string (RFC 3339) | হ্যাঁ | সময়কালের শুরু। |
to | string (RFC 3339) | না | সময়কালের শেষ। ডিফল্ট এখন। |
includeDryRuns | boolean | না | ড্রাই-রান টাস্ক অন্তর্ভুক্ত করুন। |
প্রতিক্রিয়া
Anchor link to| ফিল্ড | টাইপ | বর্ণনা |
|---|---|---|
filename | string | প্রস্তাবিত ফাইলের নাম, উদাহরণস্বরূপ data-erasure-2026-01-01-2026-04-01.csv। |
content_type | string | text/csv। |
content | string (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। |
ডেটা ইরেজার টাস্ক অবজেক্ট
Anchor link to| ফিল্ড | টাইপ | বর্ণনা |
|---|---|---|
task_id | integer | টাস্ক আইডি। |
identifier_type | string | SUBJECT_IDENTIFIER_USER_ID, SUBJECT_IDENTIFIER_HWID, বা SUBJECT_IDENTIFIER_EMAIL। |
application_codes | array of strings | টাস্কটি কভার করে এমন অ্যাপ্লিকেশন। |
dry_run | boolean | এই টাস্কটি শুধুমাত্র একটি ভলিউম পরিমাপ করেছিল কিনা। |
status | string | ERASURE_TASK_STATUS_PENDING, _IN_PROGRESS, _DONE, বা _FAILED। |
total_count | integer | এই টাস্কটি কভার করে এমন শনাক্তকারী × অ্যাপ্লিকেশন। |
deleted_count | integer | কতগুলি মুছে ফেলা হয়েছিল (অথবা, একটি ড্রাই রানের জন্য, ফেলা হত)। |
not_found_count | integer | কতগুলি কিছুর সাথে মেলেনি। |
failed_count | integer | কতগুলি ব্যর্থ হয়েছিল। কেন তা জানতে ListTaskRows বা রিপোর্ট দেখুন। |
fail_reason | string | status ERASURE_TASK_STATUS_FAILED হলে সেট করা হয়। |
initiator_user_id | integer | যে কন্ট্রোল প্যানেল ব্যবহারকারী টাস্কটি শুরু করেছিলেন। একটি API টোকেন করলে 0। |
initiator_token_id | integer | যে API টোকেন টাস্কটি শুরু করেছিল। একজন কন্ট্রোল প্যানেল ব্যবহারকারী করলে 0। |
initiator_email | string | যে কন্ট্রোল প্যানেল ব্যবহারকারী টাস্কটি শুরু করেছিলেন তার ইমেল। একটি API টোকেনের জন্য খালি। |
created | string (RFC 3339) | টাস্কটি কখন তৈরি হয়েছিল। |
started_at | string (RFC 3339) | মুছে ফেলার কাজ কখন শুরু হয়েছিল। |
finished_at | string (RFC 3339) | টাস্কটি কখন একটি চূড়ান্ত স্ট্যাটাসে পৌঁছেছিল। |
ডেটা ইরেজার টাস্ক সারি অবজেক্ট
Anchor link to| ফিল্ড | টাইপ | বর্ণনা |
|---|---|---|
identifier_hash | string | শনাক্তকারীর sha256। রিপোর্ট কখনও শনাক্তকারীটি নিজে সংরক্ষণ বা ফেরত দেয় না। |
application_code | string | এই সারির ফলাফল যে অ্যাপ্লিকেশনে প্রযোজ্য। |
result | string | ERASURE_ROW_RESULT_DELETED, _NOT_FOUND, _SKIPPED, বা _FAILED। |
detail | string | টেকনিক্যাল বিবরণ, মূলত ব্যর্থতার সময় সেট করা হয়। |
created | string (RFC 3339) | এই সারিটি কখন লেখা হয়েছিল। |