ফিচার ফ্ল্যাগ API
একটি ফিচার ফ্ল্যাগ হলো প্রপার্টিসহ একটি রিমোট সুইচ, যা SDK প্রতিটি ডিভাইসের জন্য পড়ে। এই API একটি অ্যাপ্লিকেশনের ফ্ল্যাগগুলো পরিচালনা করে: কন্ট্রোল প্যানেলের Audience → Feature Flags-এর মতো একই অপারেশন। কোনো ওয়েবসাইটে বা মোবাইল অ্যাপে ফ্ল্যাগ পড়তে Web SDK, Android SDK বা iOS SDK ব্যবহার করুন।
বেস 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বাsnake_caseগ্রহণ করে। প্রতিক্রিয়াsnake_caseব্যবহার করে, যেমনটি ফিচার ফ্ল্যাগ অবজেক্ট-এ রয়েছে। - শতাংশ বেসিস পয়েন্টে প্রকাশ করা হয়:
percent_bp0থেকে10000পর্যন্ত, যেখানে2000মানে 20%। - ভার্সন: প্রতিটি ফ্ল্যাগের একটি
versionথাকে।Update,SetRulePercentএবংReshuffleআপনার সর্বশেষ পড়া ভার্সনটি নেয় এবং তারপর থেকে ফ্ল্যাগ পরিবর্তিত হলেVERSION_CONFLICTসহ ব্যর্থ হয়, ফলে একযোগে করা সম্পাদনা কখনো একে অপরকে ওভাররাইট করে না। ফ্ল্যাগটি আবার পড়ুন এবং পুনরায় চেষ্টা করুন। - স্ট্যাটাস:
active,killedবাarchived।Kill,Unkill,ArchiveএবংRestoreশুধুমাত্র স্ট্যাটাস পরিবর্তন করে এবং কোনো ভার্সন নেয় না।
এন্ডপয়েন্টস
Anchor link toপ্রতিটি REST এন্ডপয়েন্টের একই প্যারামিটারসহ একটি MCP টুল রয়েছে:
| পদ্ধতি | পাথ | বর্ণনা | MCP টুল |
|---|---|---|---|
GET | /api/applications/{application_code}/feature_flags | অ্যাপ্লিকেশনের ফ্ল্যাগগুলোর তালিকা | list_feature_flags |
GET | /api/applications/{application_code}/feature_flags/{key} | একটি ফ্ল্যাগ পান | get_feature_flag |
POST | /api/applications/{application_code}/feature_flags | একটি ফ্ল্যাগ তৈরি করুন | create_feature_flag |
POST | /api/applications/{application_code}/feature_flags/{key} | নাম, বর্ণনা, প্রপার্টি এবং নিয়ম প্রতিস্থাপন করুন | update_feature_flag |
POST | /api/applications/{application_code}/feature_flags/{key}/rules/{rule_id}/percent | একটি নিয়মের রোলআউট পরিবর্তন করুন | set_feature_flag_rule_percent |
POST | /api/applications/{application_code}/feature_flags/{key}/kill | সবার জন্য ফ্ল্যাগ বন্ধ করুন | kill_feature_flag |
POST | /api/applications/{application_code}/feature_flags/{key}/unkill | বন্ধ করা ফ্ল্যাগ আবার চালু করুন | unkill_feature_flag |
POST | /api/applications/{application_code}/feature_flags/{key}/archive | একটি ফ্ল্যাগ আর্কাইভ করুন | archive_feature_flag |
POST | /api/applications/{application_code}/feature_flags/{key}/restore | আর্কাইভ করা ফ্ল্যাগ পুনরুদ্ধার করুন | restore_feature_flag |
POST | /api/applications/{application_code}/feature_flags/{key}/reshuffle | ব্যবহারকারীদের একটি নতুন নমুনা বেছে নিন | reshuffle_feature_flag |
GET | /api/applications/{application_code}/feature_flags/{key}/history | একটি ফ্ল্যাগের পরিবর্তনগুলোর তালিকা দেখুন | list_feature_flag_history |
List এবং History ছাড়া প্রতিটি এন্ডপয়েন্ট { "flag": { ... } } রিটার্ন করে, অর্থাৎ অপারেশনের পরের ফিচার ফ্ল্যাগ অবজেক্ট।
তালিকা
Anchor link toGET /api/applications/{application_code}/feature_flags
অনুরোধটি এই প্যারামিটারগুলো নেয়:
| প্যারামিটার | অবস্থান | টাইপ | বর্ণনা |
|---|---|---|---|
application_code | path | string | অ্যাপ্লিকেশন কোড। |
status | query | string | ঐচ্ছিক। active, killed বা archived। সমস্ত ফ্ল্যাগের তালিকা পেতে এটি বাদ দিন। |
{ "flags": [ ... ] } রিটার্ন করে, অর্থাৎ ফিচার ফ্ল্যাগ অবজেক্টের একটি অ্যারে।
GET /api/applications/{application_code}/feature_flags/{key}
একটি ফ্ল্যাগ তার প্রপার্টি, নিয়ম এবং বর্তমান version সহ রিটার্ন করে।
তৈরি করুন
Anchor link toএকটি active ফ্ল্যাগ তৈরি করে। সার্ভার প্রতিটি নিয়মের rule_id জেনারেট করে।
POST /api/applications/{application_code}/feature_flags
অনুরোধের বডিতে এই ফিল্ডগুলো থাকে:
| প্যারামিটার | টাইপ | প্রয়োজনীয় | বর্ণনা |
|---|---|---|---|
key | string | হ্যাঁ | ^[A-Za-z0-9_.-]{1,58}$-এর সাথে মেলে। অ্যাপ্লিকেশনে অনন্য, আর্কাইভ করা ফ্ল্যাগসহ, এবং কেস-ইনসেনসিটিভভাবে তুলনা করা হয়। পরে পরিবর্তন করা যায় না। |
name | string | না | প্রদর্শন নাম, সর্বোচ্চ 255 অক্ষর। |
description | string | না | বর্ণনা। |
properties | প্রপার্টি অবজেক্টের অ্যারে | না | সর্বোচ্চ 50টি প্রপার্টি। |
defaults | object | হ্যাঁ, যদি প্রপার্টি থাকে | যেসব ডিভাইসের জন্য ফ্ল্যাগ বন্ধ, তাদের জন্য প্রতিটি প্রপার্টির মান, প্রপার্টি কী অনুযায়ী। প্রতিটি মান অবশ্যই প্রপার্টির টাইপের সাথে মিলতে হবে। |
rules | নিয়ম অবজেক্টের অ্যারে | না | ক্রমানুসারে সাজানো নিয়ম, সর্বোচ্চ 10টি। যে প্রথম নিয়মের সেগমেন্ট ডিভাইসের সাথে মেলে, সেটিই সিদ্ধান্ত নেয়। |
অনুরোধের উদাহরণ
Anchor link to{ "key": "new_checkout", "name": "New checkout", "properties": [ { "key": "button_color", "type": "string" }, { "key": "show_apple_pay", "type": "boolean" } ], "defaults": { "button_color": "blue", "show_apple_pay": false }, "rules": [ { "name": "Beta testers", "filter_code": "XXXXX-XXXXX", "percent_bp": 10000, "overrides": { "button_color": "green", "show_apple_pay": true } }, { "name": "Everyone else", "filter_code": "", "percent_bp": 2000, "overrides": { "button_color": "orange" } } ]}আপডেট করুন
Anchor link toএকটি ফ্ল্যাগের নাম, বর্ণনা, প্রপার্টি, ডিফল্ট এবং নিয়ম প্রতিস্থাপন করে। এখানে স্ট্যাটাস কখনো পরিবর্তিত হয় না। শুধু পরিবর্তিত ফিল্ড নয়, সমস্ত ফিল্ড পাঠান।
POST /api/applications/{application_code}/feature_flags/{key}
তৈরি করুন-এর মতো একই বডি নেয়, key ছাড়া, সাথে আপনার সর্বশেষ পড়া version। প্রতিটি বিদ্যমান নিয়মের rule_id বজায় রাখুন। rule_id ছাড়া একটি নিয়ম নতুন হিসেবে তৈরি হয়। প্রপার্টি তৈরি হওয়ার পর তার টাইপ পরিবর্তন করা যায় না।
SetRulePercent
Anchor link toএকটি নিয়মের রোলআউট পরিবর্তন করে। শতাংশ বাড়লে যেসব ব্যবহারকারীর কাছে ইতিমধ্যে ফ্ল্যাগটি আছে, তারা সেটি ধরে রাখেন।
POST /api/applications/{application_code}/feature_flags/{key}/rules/{rule_id}/percent
{ "percentBp": 5000, "version": 3 }Kill এবং Unkill
Anchor link toPOST .../feature_flags/{key}/kill প্রতিটি ডিভাইসের জন্য ফ্ল্যাগ বন্ধ করে, এরপর ডিভাইসগুলো ডিফল্ট প্রপার্টি মান পায়। নিয়ম এবং প্রপার্টি রেখে দেওয়া হয়।
POST .../feature_flags/{key}/unkill বন্ধ করা ফ্ল্যাগ তার আগের নিয়মসহ আবার চালু করে।
উভয়ই একটি খালি বডি {} নেয়।
Archive এবং Restore
Anchor link toPOST .../feature_flags/{key}/archive ডিভাইসে ফ্ল্যাগ পাঠানো বন্ধ করে। আর্কাইভ করা ফ্ল্যাগ প্ল্যানের প্রতি অ্যাপ্লিকেশন ফ্ল্যাগ সীমার মধ্যে গণনা হয় না, এবং এর কী সংরক্ষিত থাকে।
POST .../feature_flags/{key}/restore আর্কাইভ করা ফ্ল্যাগকে killed হিসেবে ফিরিয়ে আনে, ফলে এটি কখনো নিজে থেকে চালু হয় না। আবার রোল আউট করতে unkill কল করুন।
উভয়ই একটি খালি বডি {} নেয়।
Reshuffle
Anchor link toপ্রতিটি ব্যবহারকারীকে একটি নতুন বাকেটে রাখে, ফলে একই শতাংশ ব্যবহারকারীদের একটি ভিন্ন নমুনা নির্বাচন করে। যাদের জন্য ফ্ল্যাগ চালু ছিল তাদের কেউ কেউ এটি হারান, এবং অন্যরা এটি পান।
POST /api/applications/{application_code}/feature_flags/{key}/reshuffle
{ "confirm": true, "version": 3 }confirm অবশ্যই true হতে হবে। অন্যথায় অনুরোধটি CONFIRM_REQUIRED সহ ব্যর্থ হয়।
ইতিহাস
Anchor link toএকটি ফ্ল্যাগের পরিবর্তনগুলো রিটার্ন করে, সবচেয়ে নতুনটি আগে: প্রতিটি পরিবর্তন কে করেছেন, কখন করেছেন এবং কোন ফিল্ডগুলো বদলেছে। Get-এর মতো এর জন্যও অ্যাপ্লিকেশনে অ্যাক্সেস প্রয়োজন, এবং অ্যাপ্লিকেশন বা ফ্ল্যাগ না থাকলে এটি 404 রিটার্ন করে।
GET /api/applications/{application_code}/feature_flags/{key}/history
অনুরোধটি এই প্যারামিটারগুলো নেয়:
| প্যারামিটার | অবস্থান | টাইপ | বর্ণনা |
|---|---|---|---|
application_code | path | string | অ্যাপ্লিকেশন কোড। |
key | path | string | ফ্ল্যাগের কী। |
page | query | integer | ঐচ্ছিক। পৃষ্ঠা নম্বর, 0 থেকে শুরু। |
per_page | query | integer | ঐচ্ছিক। প্রতি পৃষ্ঠায় এন্ট্রির সংখ্যা, ডিফল্টভাবে 20, সর্বোচ্চ 100। |
{ "entries": [ ... ], "total": N } রিটার্ন করে, যেখানে total হলো সব পৃষ্ঠা মিলিয়ে মোট এন্ট্রির সংখ্যা। প্রতিটি এন্ট্রিতে এই ফিল্ডগুলো থাকে:
| ফিল্ড | টাইপ | বর্ণনা |
|---|---|---|
version | integer | এই পরিবর্তনের ফলে তৈরি ফ্ল্যাগ সংস্করণ। |
action | string | create, update, set_percent, kill, unkill, archive, restore বা reshuffle। |
user_id | string | যে কন্ট্রোল প্যানেল ব্যবহারকারী পরিবর্তনটি করেছেন তাঁর ID। API টোকেন দিয়ে বা কোনো Pushwoosh সার্ভিসের মাধ্যমে করা পরিবর্তনের জন্য 0। |
user_email | string | সেই ব্যবহারকারীর ইমেল। ব্যবহারকারী মুছে ফেলা হলে বা user_id 0 হলে খালি। |
by_api_token | boolean | পরিবর্তনটি API টোকেন দিয়ে করা হলে true। কোনো ব্যবহারকারী বা Pushwoosh সার্ভিসের করা পরিবর্তনের জন্য false। |
api_token_name | string | পরিবর্তনের সময় API টোকেনের যে নাম ছিল। টোকেন মুছে ফেলার পরেও এটি থেকে যায়। টোকেনের কোনো নাম না থাকলে বা by_api_token false হলে খালি। |
created | string | পরিবর্তনের সময়, RFC 3339। |
flag | ফিচার ফ্ল্যাগ অবজেক্ট | পরিবর্তনের পরের ফ্ল্যাগ। |
changes | array | যে ফিল্ডগুলো আগের সংস্করণ থেকে আলাদা। create ও reshuffle-এর জন্য খালি, এবং ইতিহাস রেকর্ড শুরু হওয়ার আগে তৈরি ফ্ল্যাগের সবচেয়ে পুরোনো এন্ট্রির জন্যও খালি, কারণ তুলনা করার মতো আগের কোনো সংস্করণ নেই। |
changes-এর প্রতিটি আইটেমে field, before এবং after থাকে। before ও after-এ মানগুলো JSON স্ট্রিং হিসেবে এনকোড করা থাকে, তাই স্ট্রিং মান উদ্ধৃতিচিহ্নের মধ্যে আসে। field এই মানগুলো নেয়:
field | কী বদলেছে |
|---|---|
name, description, status | এই নামের ফ্ল্যাগ ফিল্ড। |
properties | প্রপার্টি এবং সেগুলোর ডিফল্ট মান। |
rules[<rule_id>] | একটি নিয়ম। যোগ করা নিয়মের জন্য before খালি থাকে। সরানো নিয়মের জন্য after খালি থাকে। |
rules.order | নিয়মগুলোর ক্রম। |
প্রতিক্রিয়ার উদাহরণ
Anchor link to{ "entries": [ { "version": 4, "action": "set_percent", "user_id": "12345", "user_email": "owner@example.com", "by_api_token": false, "api_token_name": "", "created": "2026-10-14T09:30:00Z", "flag": { "key": "new_checkout", "status": "active", "version": 4 }, "changes": [ { "field": "rules[r_1a2b3c4d]", "before": "{\"rule_id\":\"r_1a2b3c4d\",\"name\":\"Beta testers\",\"filter_code\":\"XXXXX-XXXXX\",\"percent_bp\":2000,\"overrides\":{\"button_color\":\"green\"}}", "after": "{\"rule_id\":\"r_1a2b3c4d\",\"name\":\"Beta testers\",\"filter_code\":\"XXXXX-XXXXX\",\"percent_bp\":5000,\"overrides\":{\"button_color\":\"green\"}}" } ] } ], "total": 4}উদাহরণের flag অবজেক্টটি সংক্ষিপ্ত করা হয়েছে। ইতিহাস 13 অক্টোবর 2026 থেকে হওয়া পরিবর্তনগুলোর জন্য রেকর্ড করা হয়। রেকর্ড করা পরিবর্তন নেই এমন ফ্ল্যাগের জন্য কোনো এন্ট্রি রিটার্ন হয় না।
একটি ডিভাইসের জন্য ফ্ল্যাগ পড়ুন
Anchor link toSDK-গুলো একটি আলাদা এন্ডপয়েন্ট থেকে ফ্ল্যাগ পড়ে। Web SDK, Android SDK বা iOS SDK ব্যবহার করলে এটি কল করার দরকার নেই, কারণ সেগুলো নিজেরাই হোস্ট বেছে নেয় এবং উত্তর ক্যাশ করে।
POST https://api.pushwoosh.com/api/v2/device-api/getFeatureFlags
অনুরোধের বডিতে এই ফিল্ডগুলো থাকে:
| ফিল্ড | টাইপ | বর্ণনা |
|---|---|---|
application | string | অ্যাপ্লিকেশন কোড। |
hwid | string | ডিভাইসের HWID। |
etag | string | ঐচ্ছিক। ডিভাইসের কাছে থাকা সর্বশেষ উত্তরের etag। |
প্রতিক্রিয়ায় এই ফিল্ডগুলো থাকে:
| ফিল্ড | টাইপ | বর্ণনা |
|---|---|---|
flags | object | ফ্ল্যাগ কী অনুযায়ী ফ্ল্যাগগুলো। প্রতিটিতে enabled, rule_id এবং properties থাকে। কোনো নিয়ম না মিললে rule_id হয় default, এবং বন্ধ করা ফ্ল্যাগের জন্য খালি। আর্কাইভ করা ফ্ল্যাগ অন্তর্ভুক্ত থাকে না। |
etag | string | পরের অনুরোধের সাথে এটি পাঠান। |
not_modified | boolean | পাঠানো etag হালনাগাদ থাকলে true। তখন flags বাদ দেওয়া হয় এবং ডিভাইস তার কপি রেখে দেয়। |
partial | boolean | ডিভাইসের সেগমেন্টগুলো সময়মতো মেলানো না গেলে true। এই উত্তর ক্যাশ করবেন না। |
ফিচার ফ্ল্যাগ ছাড়া প্ল্যানে প্রতিক্রিয়া খালি থাকে।
অবজেক্ট
Anchor link toফিচার ফ্ল্যাগ অবজেক্ট
Anchor link toপ্রতিটি এন্ডপয়েন্ট ফ্ল্যাগটি এই আকারে রিটার্ন করে:
| ফিল্ড | টাইপ | বর্ণনা |
|---|---|---|
application_code | string | যে অ্যাপ্লিকেশনের অন্তর্গত ফ্ল্যাগটি। |
key | string | ফ্ল্যাগের কী। |
name | string | প্রদর্শন নাম। |
description | string | বর্ণনা। |
status | string | active, killed বা archived। |
properties | প্রপার্টি অবজেক্টের অ্যারে | ফ্ল্যাগের প্রপার্টি। |
defaults | object | যেসব ডিভাইসের জন্য ফ্ল্যাগ বন্ধ, তাদের জন্য প্রতিটি প্রপার্টির মান। |
rules | নিয়ম অবজেক্টের অ্যারে | ক্রমানুসারে সাজানো নিয়ম। |
version | integer | এটি Update, SetRulePercent এবং Reshuffle-এর সাথে ফেরত পাঠান। |
created | string | তৈরির সময়, RFC 3339। |
updated | string | সর্বশেষ পরিবর্তনের সময়, RFC 3339। |
last_modified_by_user_id | string | কন্ট্রোল প্যানেলের যে ব্যবহারকারী সর্বশেষ ফ্ল্যাগটি পরিবর্তন করেছেন। শেষ পরিবর্তনটি API টোকেন দিয়ে বা কোনো Pushwoosh সার্ভিসের মাধ্যমে করা হলে 0। |
প্রপার্টি অবজেক্ট
Anchor link toএকটি প্রপার্টি এমন একটি মান বর্ণনা করে যা SDK ফ্ল্যাগ থেকে পড়ে:
| ফিল্ড | টাইপ | বর্ণনা |
|---|---|---|
key | string | ^[A-Za-z0-9_]{1,64}$-এর সাথে মেলে, ফ্ল্যাগের মধ্যে অনন্য। |
type | string | string, number, boolean বা json। প্রপার্টি তৈরি হওয়ার পর পরিবর্তন করা যায় না। |
নিয়ম অবজেক্ট
Anchor link toএকটি নিয়ম নির্ধারণ করে কার জন্য ফ্ল্যাগ চালু হবে এবং কোন মানসহ:
| ফিল্ড | টাইপ | বর্ণনা |
|---|---|---|
rule_id | string | সার্ভার দ্বারা জেনারেট করা, r_-এর পরে 8টি হেক্স অঙ্ক, এবং আপডেটের মধ্যে স্থির থাকে। নতুন নিয়মের জন্য এটি খালি রাখুন। |
name | string | নিয়মের নাম। |
filter_code | string | যে সেগমেন্টের সাথে ডিভাইসকে অবশ্যই মিলতে হবে। খালি থাকলে প্রতিটি ডিভাইসের সাথে মেলে। সেগমেন্টে শুধুমাত্র ট্যাগ, লোকেশন, অ্যাপ্লিকেশন এবং লিস্ট শর্ত থাকতে পারে। |
percent_bp | integer | মিলে যাওয়া ব্যবহারকারীদের যে অংশের জন্য ফ্ল্যাগ চালু, 0–10000। সেগমেন্টের সাথে মেলে এমন ডিভাইস শতাংশের বাইরে পড়লেও এই নিয়মেই থেমে যায়। |
overrides | object | প্রপার্টি মান যা এই নিয়ম যেসব ডিভাইসের জন্য চালু করে তাদের ডিফল্ট প্রতিস্থাপন করে, প্রপার্টি কী অনুযায়ী। |
ত্রুটি
Anchor link toপ্রত্যাখ্যাত অনুরোধ এই HTTP স্ট্যাটাস কোডগুলোর একটি রিটার্ন করে:
| HTTP স্ট্যাটাস | অর্থ |
|---|---|
400 Bad Request | অনুরোধটি অবৈধ (field_violations) অথবা ফ্ল্যাগের অবস্থা বা প্ল্যান এটির অনুমতি দেয় না (Type)। নিচে বডির ফরম্যাট এবং কারণগুলো দেখুন। |
401 Unauthorized | Authorization হেডার অনুপস্থিত অথবা টোকেনটি অবৈধ। |
403 Forbidden | টোকেনটি অ্যাপ্লিকেশনটি পরিচালনা করতে পারে না, অথবা অ্যাপ্লিকেশনটি একটি সিস্টেম অ্যাপ্লিকেশন। |
404 Not Found | অ্যাপ্লিকেশন বা ফ্ল্যাগটি বিদ্যমান নেই। |
409 Conflict | এই মুহূর্তে অন্য একটি অনুরোধ একই ফ্ল্যাগ পরিবর্তন করছে। অনুরোধটি পুনরায় চেষ্টা করুন। |
500 Internal Server Error | অপ্রত্যাশিত সার্ভার ব্যর্থতা। বডি হলো {"message": "Sorry, an unexpected error occurred"}। |
একটি অবৈধ অনুরোধ ফিল্ড লঙ্ঘনের তালিকাসহ 400 রিটার্ন করে। প্রতিটি লঙ্ঘন ফিল্ড, কারণ এবং কারণের আর্গুমেন্ট উল্লেখ করে:
{ "code": 3, "message": "validation failed", "details": [ { "@type": "type.googleapis.com/pushwoosh.rpc.errors.v3.BadRequest", "field_violations": [ { "field": "key", "description": "a feature flag with this key already exists in the application", "reason": "KEY_TAKEN", "args": { "key": "new_checkout" } } ] } ]}ফ্ল্যাগের অবস্থা বা প্ল্যান যে অনুরোধের অনুমতি দেয় না, তা একটি ব্যর্থ পূর্বশর্তসহ 400 রিটার্ন করে। এর Type এবং Description ফিল্ড বড় হাতের অক্ষরে শুরু হয়:
{ "code": 9, "message": "precondition failed", "details": [ { "@type": "type.googleapis.com/pushwoosh.rpc.errors.v3.FailedPrecondition", "Type": "VERSION_CONFLICT", "Description": "feature flag was changed: version 3 was sent, the current one is 4" } ]}ফিল্ড লঙ্ঘনের reason এবং ব্যর্থ পূর্বশর্তের Type এই মানগুলো নেয়:
| কারণ | উৎস |
|---|---|
KEY_INVALID | কী ^[A-Za-z0-9_.-]{1,58}$-এর সাথে মেলে না। |
KEY_TAKEN | অ্যাপ্লিকেশনের অন্য একটি ফ্ল্যাগে, আর্কাইভ করা ফ্ল্যাগসহ, এই কী রয়েছে। |
TEXT_INVALID | নাম বা বর্ণনা খুব দীর্ঘ অথবা নিষিদ্ধ অক্ষর রয়েছে। |
PROPERTIES_LIMIT | 50টির বেশি প্রপার্টি। |
PROPERTY_KEY_INVALID | একটি প্রপার্টি কী অবৈধ বা পুনরাবৃত্ত। |
PROPERTY_TYPE_INVALID | একটি প্রপার্টির টাইপ string, number, boolean বা json নয়। |
PROPERTY_TYPE_IMMUTABLE | অনুরোধটি একটি বিদ্যমান প্রপার্টির টাইপ পরিবর্তন করে। |
VALUE_INVALID | একটি ডিফল্ট বা ওভাররাইড অনুপস্থিত, প্রপার্টির টাইপের সাথে মেলে না, অথবা 5 স্তরের বেশি গভীরে নেস্টেড। |
PROPERTIES_TOO_LARGE | ফ্ল্যাগের প্রপার্টি মান 10,000 বাইট ছাড়িয়ে যায়। |
RULES_LIMIT | 10টির বেশি নিয়ম। |
RULE_NOT_FOUND | rule_id ফ্ল্যাগের নিয়মগুলোর একটি নয়। |
PERCENT_INVALID | percent_bp 0–10000-এর বাইরে। |
OVERRIDE_UNKNOWN_PROPERTY | একটি ওভাররাইড এমন প্রপার্টির নাম উল্লেখ করে যা ফ্ল্যাগে নেই। |
SEGMENT_NOT_FOUND | নিয়মের সেগমেন্ট বিদ্যমান নেই অথবা অন্য অ্যাপ্লিকেশনের অন্তর্গত। |
INVALID_SEGMENT_TYPE | নিয়মের সেগমেন্টে এমন একটি শর্ত আছে যা ফ্ল্যাগ মূল্যায়ন করতে পারে না: ইভেন্ট, স্ট্যাটিক, এক্সটার্নাল, লাস্ট আপডেট বা বেস্ট টাইম টু সেন্ড। |
FLAG_DEPENDENCY | নিয়মের সেগমেন্টে একটি ফিচার ফ্ল্যাগ শর্ত আছে, আর একটি ফ্ল্যাগ অন্য ফ্ল্যাগের ওপর নির্ভর করতে পারে না। Create, Update এবং Restore এটি রিটার্ন করে, সেগমেন্ট কোড থাকে filter_code-এ। |
CONFIRM_REQUIRED | Reshuffle confirm: true ছাড়া পাঠানো হয়েছে। |
TAG_CONFLICT | অ্যাকাউন্টে PW_FF_-এর পরে ফ্ল্যাগ কী নামে একটি কাস্টম ট্যাগ রয়েছে। |
FEATURE_FLAGS_NOT_ALLOWED | অ্যাকাউন্টের প্ল্যানে ফিচার ফ্ল্যাগ অন্তর্ভুক্ত নেই। |
FLAGS_LIMIT | অ্যাপ্লিকেশনে প্ল্যানের অনুমোদিত সংখ্যক নন-আর্কাইভ ফ্ল্যাগ রয়েছে। |
VERSION_CONFLICT | আপনার পাঠানো version-এর পর থেকে ফ্ল্যাগটি পরিবর্তিত হয়েছে। |
PAYLOAD_TOO_LARGE | অ্যাপ্লিকেশনের ফ্ল্যাগগুলো একটি ডিভাইসের উত্তরে 64 KB-এর বেশি জায়গা নেবে। |
STATUS_CONFLICT | স্ট্যাটাস অপারেশনটির অনুমতি দেয় না, যেমন একটি আর্কাইভ করা ফ্ল্যাগ বন্ধ করা। |