প্রিসেট API
একটি পুশ প্রিসেট হল একটি পুনরায় ব্যবহারযোগ্য পুশ নোটিফিকেশন টেমপ্লেট — কন্ট্রোল প্যানেলের পুশ এডিটরে আপনি যে অবজেক্টটি তৈরি করেন সেটিই। এই API শুধুমাত্র পুশ প্রিসেট পরিচালনা করে; SMS, WhatsApp, Kakao, LINE, এবং Viber প্রিসেটগুলির প্রত্যেকের নিজস্ব ডেডিকেটেড প্রিসেট পরিষেবা রয়েছে, যা এখানে আলোচনা করা হয়নি।
একটি প্রিসেটের code ব্যবহার করে এটি Notify (পেলোড preset) অথবা একটি কাস্টমার জার্নি Send push point এর মাধ্যমে পাঠান।
বেস URL
Anchor link tohttps://rpc-api.svc-nue.pushwoosh.comসমস্ত এন্ডপয়েন্ট HTTPS এর মাধ্যমে পরিবেশন করা হয়। অনুরোধ এবং প্রতিক্রিয়া application/json ব্যবহার করে, যদি না অন্যভাবে উল্লেখ করা হয়।
প্রমাণীকরণ
Anchor link toপ্রতিটি অনুরোধে আপনার সার্ভার API টোকেন সহ একটি Authorization হেডার অন্তর্ভুক্ত করতে হবে:
Authorization: Api YOUR_API_TOKENপ্রচলিত নিয়ম
Anchor link to- ফিল্ডের নামকরণ: অনুরোধের বডি এবং ক্যোয়ারী/পাথ প্যারামিটার
lowerCamelCaseগ্রহণ করে (উদাহরণস্বরূপ,sendType,localizedProperties,searchByName) — সার্ভার উভয় কেসিং আনমার্শাল করে। প্রতিক্রিয়া সবসময় প্রোটো ফিল্ডের নাম ব্যবহার করেsnake_case-এ মার্শালিং করা হয় (localized_properties,platform_properties,per_page, ইত্যাদি)। নীচের প্রতিক্রিয়ার উদাহরণ এবং প্রিসেট অবজেক্ট রেফারেন্স সেই কেসিং ব্যবহার করে। code: প্রতিটি প্রিসেট প্রতিক্রিয়া তার নিজস্ব কোড বহন করে, যাCreateএ তৈরি হয়। এই কোডটিGet,Update,UpdatePartial,Delete,Cloneএবং উপরের মেসেজিং/জার্নি API-গুলিতে পাস করুন।- প্ল্যাটফর্ম কী:
platformsএবংopen_actionsম্যাপগুলি সাংখ্যিক ডিভাইস টাইপ কোড (1iOS-এর জন্য,3Android-এর জন্য, ইত্যাদি) দ্বারা কী করা হয়।platform_propertiesপ্ল্যাটফর্মের enum নাম দ্বারা কী করা হয় (IOS,ANDROID,HUAWEI_ANDROID,OSX— শুধুমাত্র এই চারটি প্ল্যাটফর্ম এটি কভার করে)। - অপূরণকৃত ফিল্ড:
Get,Create, এবংCloneপ্রতিক্রিয়া প্রিসেট অবজেক্ট-এর প্রতিটি ফিল্ড অন্তর্ভুক্ত করে, এমনকি খালি বা শূন্য-মানের হলেও।Listএকটি সংক্ষিপ্ত ফিল্ড সেট প্রদান করে — নীচের তালিকা দেখুন।UpdateএবংUpdatePartialকোনো প্রিসেট ফিল্ড প্রদান করে না — তাদের বিভাগে সতর্কতা দেখুন।
ত্রুটির প্রতিক্রিয়া
Anchor link to| HTTP স্ট্যাটাস | অর্থ |
|---|---|
400 Bad Request | অবৈধ আর্গুমেন্ট — একটি প্রয়োজনীয় ফিল্ড অনুপস্থিত বা ভুল ফর্ম্যাটে আছে, অথবা একটি পূর্বশর্ত ব্যর্থ হয়েছে (উদাহরণস্বরূপ, name ছাড়া ক্লোনিং)। |
401 Unauthorized | Authorization হেডার অনুপস্থিত বা অবৈধ। |
403 Forbidden | অ্যাপ্লিকেশন বা প্রিসেটটি কলারের অ্যাকাউন্টের অন্তর্গত নয়। |
404 Not Found | প্রিসেট বা অ্যাপ্লিকেশনটি পাওয়া যায়নি। |
500 Internal Server Error | অপ্রত্যাশিত সার্ভার-সাইড ব্যর্থতা। |
একটি চলমান বা পজ করা জার্নির Send push point দ্বারা ব্যবহৃত একটি প্রিসেটে Delete করলে 400 Bad Request (ওয়্যারে একটি FailedPrecondition) ফেরত আসে — 409 নয়। প্রথমে জার্নি থেকে প্রিসেটটি সরিয়ে ফেলুন।
এন্ডপয়েন্ট
Anchor link to| পদ্ধতি | পাথ | বিবরণ |
|---|---|---|
POST | /api/presets | একটি নতুন পুশ প্রিসেট তৈরি করুন |
GET | /api/presets | একটি অ্যাপ্লিকেশনের পুশ প্রিসেট তালিকাভুক্ত করুন |
GET | /api/presets/{code} | একটি একক পুশ প্রিসেট পান |
PUT | /api/presets/{code} | একটি পুশ প্রিসেট আপডেট করুন (সম্পূর্ণ ওভাররাইট) |
PUT | /api/presets/{code}:partial | একটি পুশ প্রিসেট আপডেট করুন (আংশিক) |
POST | /api/presets/{code}:clone | একটি পুশ প্রিসেট ক্লোন করুন |
DELETE | /api/presets/{code} | একটি পুশ প্রিসেট মুছে ফেলুন |
তৈরি করুন
Anchor link toএকটি অ্যাপ্লিকেশনে একটি নতুন পুশ প্রিসেট তৈরি করে এবং তার জেনারেটেড কোড সহ এটি ফেরত দেয়।
POST /api/presets
অনুরোধের বডি
Anchor link to| প্যারামিটার | টাইপ | প্রয়োজনীয় | বিবরণ |
|---|---|---|---|
application | string | হ্যাঁ | যে অ্যাপ্লিকেশন কোড-এ প্রিসেট তৈরি করতে হবে। |
name | string | হ্যাঁ | প্রিসেটের নাম। |
sendType | string | না | প্রিসেটের চ্যানেল (উদাহরণস্বরূপ push)। |
isV2 | boolean | না | প্রিসেটের অরিজিন ফ্ল্যাগ পিন করে। ডিফল্ট true (v2) করতে বাদ দিন; শুধুমাত্র একটি লিগ্যাসি v1 প্রিসেট পুনরুৎপাদন করার সময় false সেট করুন। |
অন্যান্য সমস্ত ফিল্ড — স্থানীয়করণ করা কন্টেন্ট, প্ল্যাটফর্ম, ডিপ লিঙ্ক, ইনবক্স, বিভাগ ইত্যাদি — Update এর সাথে শেয়ার করা হয় এবং নীচের প্রিসেট অবজেক্ট রেফারেন্সে একবার নথিভুক্ত করা হয়েছে।
অনুরোধের উদাহরণ
Anchor link to{ "application": "XXXXX-XXXXX", "name": "20% discount", "platforms": { "1": true, "3": true }, "localizedContent": { "default": "Get your 20% discount right now", "es": "Consigue tu 20% de descuento ahora mismo" }, "localizedTitle": { "default": "Hi there" }, "openAction": { "link": { "url": "https://example.com" } }, "categories": ["promo"]}প্রতিক্রিয়া
Anchor link to{ "preset": { ... } } ফেরত দেয়, যা তৈরি করা প্রিসেট অবজেক্ট।
তালিকা
Anchor link toএকটি অ্যাপ্লিকেশনের পুশ প্রিসেট তালিকাভুক্ত করে — একটি সংক্ষিপ্ত ফিল্ড সেট, সম্পূর্ণ অবজেক্ট নয় — পেজিং, অর্ডারিং, এবং নাম বা বিভাগ দ্বারা ফিল্টারিং সহ।
GET /api/presets
ক্যোয়ারী প্যারামিটার
Anchor link to| প্যারামিটার | টাইপ | প্রয়োজনীয় | বিবরণ |
|---|---|---|---|
application | string | হ্যাঁ | যে অ্যাপ্লিকেশন কোডের জন্য প্রিসেট তালিকাভুক্ত করতে হবে। |
orderBy | string | না | NAME (ডিফল্ট), CREATED, বা UPDATED। |
orderDirection | string | না | ASC (ডিফল্ট) বা DESC। |
page | integer | না | শূন্য-ভিত্তিক পেজ ইনডেক্স। |
perPage | integer | না | পেজের আকার। বাদ দিলে বা 0 হলে ডিফল্ট 100। |
searchByName | string | না | প্রিসেটের নাম বা কোডে কেস-ইনসেনসিটিভ সাবস্ট্রিং ম্যাচ (ILIKE %value%)। |
searchByCategory | array of strings | না | বিভিন্ন বিভাগের যেকোনো একটি দ্বারা ফিল্টার করতে প্যারামিটারটি পুনরাবৃত্তি করুন, যেমন ?searchByCategory=promo&searchByCategory=lifecycle। |
showHidden | boolean | না | hidden হিসাবে চিহ্নিত প্রিসেট অন্তর্ভুক্ত করুন। |
প্রতিক্রিয়া
Anchor link toপ্রতিটি আইটেম শুধুমাত্র বহন করে: name, code, platforms, localized_content (প্রতি লোকেল প্লেইন টেক্সট — localized_properties নয়), localized_title, localized_subtitle, banner, icon, categories, journey_uuid, custom_data, is_v2, created, updated। প্রিসেট অবজেক্ট-এর অন্য প্রতিটি ফিল্ড — localized_properties, platform_properties, deeplink, richmedia, url, ইত্যাদি — বাদ দেওয়া হয়, এমনকি যদি প্রিসেটে সেট করা থাকে।
| ফিল্ড | টাইপ | বিবরণ |
|---|---|---|
presets | array of objects | প্রিসেটের বর্তমান পেজ, উপরে বর্ণিত সংক্ষিপ্ত আকারে। |
page | integer | ফেরত দেওয়া পেজ ইনডেক্স। |
per_page | integer | এই প্রতিক্রিয়ার জন্য ব্যবহৃত পেজের আকার। |
total | integer | ফিল্টারগুলির সাথে মিলে যাওয়া প্রিসেটের মোট সংখ্যা, সমস্ত পেজ জুড়ে। |
প্রতিক্রিয়ার উদাহরণ
Anchor link to{ "presets": [ { "name": "20% discount", "code": "AAAAA-BBBBB", "platforms": { "1": true, "3": true }, "categories": ["promo"] } ], "page": 0, "per_page": 100, "total": 1}একটি একক পুশ প্রিসেট তার কোড দ্বারা ফেরত দেয়, যেখানে প্রিসেট অবজেক্ট-এর প্রতিটি ফিল্ড পূরণ করা থাকে।
GET /api/presets/{code}
পাথ প্যারামিটার
Anchor link to| প্যারামিটার | টাইপ | বিবরণ |
|---|---|---|
code | string | প্রিসেটের কোড। |
প্রতিক্রিয়া
Anchor link to{ "preset": { ... } } ফেরত দেয়, যা সম্পূর্ণ প্রিসেট অবজেক্ট।
আপডেট করুন
Anchor link toএকটি বিদ্যমান পুশ প্রিসেটকে কোড দ্বারা সরবরাহ করা ফিল্ডগুলির সাথে ওভাররাইট করে।
PUT /api/presets/{code}
পাথ প্যারামিটার
Anchor link to| প্যারামিটার | টাইপ | বিবরণ |
|---|---|---|
code | string | যে প্রিসেটের কোড ওভাররাইট করতে হবে। |
অনুরোধের বডি
Anchor link toতৈরি করুন এর মতো একই ফিল্ড ( application ছাড়া), এবং প্রিসেট অবজেক্ট এর বাকি ফিল্ডগুলি। sendType গ্রহণ করা হয় কিন্তু উপেক্ষা করা হয় — একটি প্রিসেটের চ্যানেল তৈরির পরে পরিবর্তন করা যায় না।
প্রতিক্রিয়া
Anchor link toসফল হলে একটি খালি অবজেক্ট: {}।
আংশিক আপডেট করুন
Anchor link toএকটি বিদ্যমান পুশ প্রিসেটের শুধুমাত্র সরবরাহ করা ফিল্ডগুলি কোড দ্বারা আপডেট করে, সেট না করা ফিল্ডগুলি অপরিবর্তিত রাখে।
PUT /api/presets/{code}:partial
পাথ প্যারামিটার
Anchor link to| প্যারামিটার | টাইপ | বিবরণ |
|---|---|---|
code | string | যে প্রিসেটের কোড প্যাচ করতে হবে। |
অনুরোধের বডি
Anchor link toআপডেট এর মতো একই ফিল্ড, application ছাড়া। Update এর বিপরীতে, এখানে প্রতিটি ফিল্ড — localizedProperties, platformProperties, categories, এবং আপডেটের সতর্কতায় তালিকাভুক্ত বাকি কন্টেন্ট-প্রপার্টি গ্রুপ সহ — বাদ দিলে অপরিবর্তিত থাকে, এবং শুধুমাত্র তখনই স্পর্শ করা হয় যখন আপনি এটি পাঠান (একটি ম্যাপ/অ্যারে ফিল্ড যা আপনি পাঠান তা এখনও সেই ফিল্ডের জন্য বিদ্যমান মানকে সম্পূর্ণরূপে প্রতিস্থাপন করে, এটি কেবল আপনার অন্তর্ভুক্ত না করা কোনো কিছুকে প্রভাবিত করে না)। sendType একইভাবে গ্রহণ করা হয় কিন্তু উপেক্ষা করা হয়।
অনুরোধের উদাহরণ
Anchor link to{ "sendRate": 500, "cappingCount": 3, "cappingDays": 7}প্রতিক্রিয়া
Anchor link toএটিও একটি খালি অবজেক্ট — উপরের সতর্কতা দেখুন।
ক্লোন করুন
Anchor link toএকটি বিদ্যমান পুশ প্রিসেটকে একটি নতুন নামে একই অ্যাপ্লিকেশনে ডুপ্লিকেট করে।
POST /api/presets/{code}:clone
অনুরোধের বডি
Anchor link to| প্যারামিটার | টাইপ | প্রয়োজনীয় | বিবরণ |
|---|---|---|---|
code | string | হ্যাঁ | ডুপ্লিকেট করার জন্য সোর্স প্রিসেটের কোড। |
name | string | হ্যাঁ | নতুন প্রিসেটের জন্য নাম। |
অনুরোধের উদাহরণ
Anchor link to{ "code": "AAAAA-BBBBB", "name": "20% discount (copy)" }প্রতিক্রিয়া
Anchor link to{ "preset": { ... } } ফেরত দেয়, যা নতুন প্রিসেট অবজেক্ট।
মুছে ফেলুন
Anchor link toএকটি পুশ প্রিসেটকে কোড দ্বারা স্থায়ীভাবে মুছে ফেলে।
DELETE /api/presets/{code}
পাথ প্যারামিটার
Anchor link to| প্যারামিটার | টাইপ | বিবরণ |
|---|---|---|
code | string | যে প্রিসেটের কোড মুছে ফেলতে হবে। |
প্রতিক্রিয়া
Anchor link toসফল হলে একটি খালি অবজেক্ট: {}।
অবজেক্ট রেফারেন্স
Anchor link toনীচের ফিল্ডের নামগুলি Get, Create, Update, এবং Clone যা আসলে ফেরত দেয় তার সাথে মিলে যায় — snake_case প্রোটো ফিল্ডের নাম (প্রচলিত নিয়ম দেখুন)। উপরের অনুরোধের উদাহরণগুলিতে ব্যবহৃত lowerCamelCase ফর্মটি ইনপুটে একইভাবে কাজ করে।
প্রিসেট অবজেক্ট
Anchor link toপরিচয়
Anchor link to| ফিল্ড | টাইপ | বিবরণ |
|---|---|---|
code | string | Create এ তৈরি হয়। API-এর অন্য সব জায়গায় এই প্রিসেটটিকে চিহ্নিত করে। |
name | string | প্রিসেটের নাম। |
send_type | string | প্রিসেটের চ্যানেল (উদাহরণস্বরূপ push)। |
is_v2 | boolean | v2 কন্টেন্ট মডেলে তৈরি বা মাইগ্রেট করা প্রিসেটের জন্য true। |
system | boolean | প্রিসেটটিকে একটি সিস্টেম/অভ্যন্তরীণ প্রিসেট হিসাবে চিহ্নিত করে। |
hidden | boolean | List ফলাফল থেকে প্রিসেটটি লুকিয়ে রাখে (showHidden: true পাঠিয়ে এটি অন্তর্ভুক্ত করুন)। |
created | string (RFC 3339) | তৈরির টাইমস্ট্যাম্প। |
updated | string (RFC 3339) | শেষ আপডেটের টাইমস্ট্যাম্প। |
টার্গেটিং এবং কন্টেন্ট
Anchor link to| ফিল্ড | টাইপ | বিবরণ |
|---|---|---|
platforms | map<string, boolean> | কোন প্ল্যাটফর্মগুলি প্রিসেট টার্গেট করে, ডিভাইস টাইপ কোড দ্বারা কী করা (যেমন iOS-এর জন্য "1")। |
localized_properties | map<string, object> | লোকেল → সমৃদ্ধ প্রতি-প্ল্যাটফর্ম কন্টেন্ট। Notify পেলোডে LocalizedContent এর মতো একই আকার — প্রতি প্ল্যাটফর্ম ব্লকের জন্য একটি এন্ট্রি (ios, android, ইত্যাদি)। এটি প্ল্যাটফর্ম-নির্দিষ্ট পুশ কন্টেন্ট সেট করার প্রাথমিক উপায়। |
localized_title / localized_subtitle / localized_content | map<string, string> | লোকেল → প্লেইন টেক্সট। localized_properties এর একটি সহজ বিকল্প শিরোনাম, উপশিরোনাম এবং বডির জন্য যখন আপনার প্রতি-প্ল্যাটফর্ম ওভাররাইডের প্রয়োজন নেই। |
platform_properties | map<string, object> | লিগ্যাসি প্রতি-প্ল্যাটফর্ম ওভাররাইড, প্ল্যাটফর্ম enum নাম দ্বারা কী করা (IOS, ANDROID, HUAWEI_ANDROID, OSX)। নীচের প্ল্যাটফর্মপ্রপার্টিজ অবজেক্ট দেখুন। |
open_action | OpenAction | ব্যবহারকারী নোটিফিকেশন খুললে ট্রিগার হওয়া অ্যাকশন, প্রতিটি প্ল্যাটফর্মে প্রয়োগ করা হয়। open_actions এর সাথে পারস্পরিকভাবে এক্সক্লুসিভ — প্রতিক্রিয়া ঠিক একটি সেট করে। |
open_actions | map<string, OpenAction> | open_action এর প্রতি-প্ল্যাটফর্ম ওভাররাইড, ডিভাইস টাইপ কোড দ্বারা কী করা। |
deeplink | string | ডিপ লিঙ্ক কোড। |
deeplink_params | map<string, string> | ডিপ লিঙ্কে পাস করা প্যারামিটার। |
richmedia | string | নোটিফিকেশন দ্বারা খোলা রিচ মিডিয়া কোড। |
url | string | নোটিফিকেশন দ্বারা খোলা URL, যদি ডিপ লিঙ্ক বা রিচ মিডিয়া ব্যবহার না করা হয়। |
ইনবক্স
Anchor link to| ফিল্ড | টাইপ | বিবরণ |
|---|---|---|
inbox_image | string | মেসেজ ইনবক্স এন্ট্রিতে দেখানো ছবির URL। |
inbox_icon | string | মেসেজ ইনবক্স এন্ট্রিতে দেখানো আইকনের URL। |
inbox_days | integer | মেসেজ ইনবক্সে এন্ট্রিটি কত দিন থাকবে। |
inbox_date | string (RFC 3339) | মেসেজ ইনবক্স এন্ট্রির জন্য সুস্পষ্ট মেয়াদ শেষ হওয়ার তারিখ, inbox_days এর বিকল্প হিসাবে। |
সংগঠন এবং মেটাডেটা
Anchor link to| ফিল্ড | টাইপ | বিবরণ |
|---|---|---|
categories | array of strings | যে বিভাগের নামগুলির সাথে প্রিসেটটি ট্যাগ করা হয়েছে। |
campaign_code | string | এই প্রিসেটটি যে ক্যাম্পেইন কোড-এর সাথে সম্পর্কিত। |
filter_code | string | এই প্রিসেটটি ডিফল্টরূপে যে সেগমেন্ট / ফিল্টার কোড টার্গেট করে। |
geo_zones | string | জিওজোন টার্গেটিং, যদি প্রিসেটটি জিও-ট্রিগারড হয়। |
journey_uuid | string | এই প্রিসেটের মালিক কাস্টমার জার্নির UUID, যদি এটি একটি জার্নির Send push point থেকে তৈরি করা হয়। |
custom_data | object | ক্লায়েন্ট SDK-তে u প্যারামিটার হিসাবে ফরোয়ার্ড করা ফ্রি-ফর্ম JSON। |
banner | string | বড় ছবি / সংযুক্তি ছবির URL। |
icon | string | কাস্টম নোটিফিকেশন আইকনের URL। |
ডেলিভারি সীমা
Anchor link to| ফিল্ড | টাইপ | বিবরণ |
|---|---|---|
send_rate | integer | এই প্রিসেট ব্যবহার করে পাঠানোর জন্য থ্রটলিং, মেসেজ/সেকেন্ডে — Notify-এর SendRate এর প্রিসেট-স্তরের সমতুল্য। |
capping_count / capping_days | integer | এই প্রিসেটের জন্য প্রতি-ব্যবহারকারী ফ্রিকোয়েন্সি সীমা — Notify-এর FrequencyCapping count / days এর প্রিসেট-স্তরের সমতুল্য। |
ওয়েবহুক
Anchor link to| ফিল্ড | টাইপ | বিবরণ |
|---|---|---|
notification_sent_url | string | এই প্রিসেট ব্যবহার করে একটি নোটিফিকেশন পাঠানো হলে অনুরোধ করা কলব্যাক URL। |
notification_delivered_url | string | এই প্রিসেট ব্যবহার করে একটি নোটিফিকেশন ডেলিভার করা হলে অনুরোধ করা কলব্যাক URL। |
notification_click_url | string | এই প্রিসেট ব্যবহার করে একটি নোটিফিকেশনে ক্লিক করা হলে অনুরোধ করা কলব্যাক URL। |
লিগ্যাসি ফিল্ড
Anchor link toএগুলি v1 প্রিসেট মডেল থেকে নিয়ে আসা হয়েছে। এগুলি নতুন ইন্টিগ্রেশনের পরিবর্তে কন্ট্রোল প্যানেলের সামঞ্জস্যের জন্য পূরণ করা হয়।
| ফিল্ড | টাইপ | বিবরণ |
|---|---|---|
remote_page | string | লিগ্যাসি রিমোট পেজ রেফারেন্স। |
wns_content | string | লিগ্যাসি উইন্ডোজ টোস্ট টেমপ্লেট JSON, যা v1 createPreset/getPreset পদ্ধতি দ্বারা গৃহীত হয়। |
original_url | string | url-এর প্রি-শর্টেনিং মান, যখন url একটি সংক্ষিপ্ত লিঙ্ক দ্বারা প্রতিস্থাপিত হয়েছিল। |
ios_silent / android_silent / huawei_android_silent | boolean | প্রতি-প্ল্যাটফর্ম সাইলেন্ট (শুধুমাত্র ডেটা) পুশ ফ্ল্যাগ। |
প্ল্যাটফর্মপ্রপার্টিজ অবজেক্ট
Anchor link toপ্রতিটি platform_properties এন্ট্রিতে উপলব্ধ ফিল্ড (IOS, ANDROID, HUAWEI_ANDROID, OSX):
| ফিল্ড | টাইপ | বিবরণ |
|---|---|---|
badge | string | ব্যাজ কাউন্ট ওভাররাইড। |
sound | string | সাউন্ড ফাইলের নাম। |
sound_off | boolean | নোটিফিকেশন সাউন্ড মিউট করুন। |
priority | string | ইন-ট্রে অগ্রাধিকার (শুধুমাত্র Android/Huawei)। |
delivery_priority | string | NORMAL বা HIGH ডেলিভারি অগ্রাধিকার (শুধুমাত্র Android/Huawei)। |
ios_interruption_level | string | passive, active, time-sensitive, বা critical (শুধুমাত্র iOS)। |