আপনার এক্সটেনশনের স্পেসিফিকেশন ফাইল ( extension.yaml ) আপনার এক্সটেনশনের মেটাডেটা ধারণ করে, এক্সটেনশন দ্বারা তৈরি রিসোর্স এবং API এবং এক্সটেনশনের জন্য প্রয়োজনীয় অ্যাক্সেস ঘোষণা করে এবং এক্সটেনশন দ্বারা প্রদত্ত যেকোনো ব্যবহারকারী-কনফিগার করা প্যারামিটার সংজ্ঞায়িত করে।
এই পৃষ্ঠার টেবিলগুলি একটি extension.yaml ফাইলের জন্য উপলব্ধ ক্ষেত্রগুলি বর্ণনা করে।
মৌলিক এবং শনাক্তকারী তথ্য
name: your-extension-name
version: 1.0.0 # Semantic versioning (semver)
specVersion: v1beta # Always "v1beta"
license: Apache-2.0 # Always "Apache-2.0" (required to publish on extensions.dev)
billingRequired: true # Always "true"
displayName: Your extension name
description: >-
Description of the extension. (One or two
sentences.)
icon: icon.png
tags: [tag, anothertag]
sourceUrl: https://github.com/your-org/your-repo # GitHub repo URL
releaseNotesUrl: https://github.com/your-org/your-repo/blob/main/CHANGELOG.md
author:
authorName: Your Company
email: extensions@example.com
url: https://example.com/
contributors:
- authorName: Your Name
- authorName: Another Contributor
email: colleague@example.net
url: https://github.com/their-org/
| মৌলিক ক্ষেত্র | |||||||||
|---|---|---|---|---|---|---|---|---|---|
nameস্ট্রিং (প্রয়োজনীয়) | এক্সটেনশনের জন্য শনাক্তকারী। শুধুমাত্র ছোট হাতের অক্ষর, সংখ্যা এবং ড্যাশ থাকতে পারে; ৪০ অক্ষরের সীমা। দ্রষ্টব্য: এই মানটি এক্সটেনশনের ইনস্ট্যান্স আইডি তৈরি করতে ব্যবহৃত হয় (যা পরে এক্সটেনশনের পরিষেবা অ্যাকাউন্ট এবং এক্সটেনশন-নির্দিষ্ট সংস্থানগুলির নাম তৈরি করতে ব্যবহৃত হয়)। | ||||||||
versionস্ট্রিং (প্রয়োজনীয়) | এক্সটেনশনের সংস্করণ। সেমভার ভার্সনিং অনুসরণ করতে হবে (উদাহরণস্বরূপ, 1.2.0)। | ||||||||
specVersionস্ট্রিং (প্রয়োজনীয়) | ফায়ারবেস এক্সটেনশন স্পেসিফিকেশনের সংস্করণ। বর্তমান মান: | ||||||||
licenseস্ট্রিং (ঐচ্ছিক) | এক্সটেনশনের জন্য লাইসেন্স। আপনার এক্সটেনশনটি | ||||||||
billingRequiredবুলিয়ান (ঐচ্ছিক) | এক্সটেনশন দ্বারা ব্যবহৃত পরিষেবাগুলির জন্য একটি পেইড-টায়ার ফায়ারবেস বিলিং অ্যাকাউন্টের প্রয়োজন কিনা। সর্বদা | ||||||||
displayNameস্ট্রিং (ঐচ্ছিক) | এক্সটেনশনটির জন্য বন্ধুত্বপূর্ণ প্রদর্শন নাম (৩-৫ শব্দ)। ৪০ অক্ষরের সীমা। | ||||||||
descriptionস্ট্রিং (ঐচ্ছিক) | আপনার এক্সটেনশন যে কাজটি সম্পাদন করে তার সংক্ষিপ্ত বিবরণ (~১ বাক্য)। | ||||||||
iconস্ট্রিং (ঐচ্ছিক) | এই ফাইলটি অবশ্যই 512x512 এবং 1024x1024 পিক্সেলের মধ্যে একটি বর্গাকার PNG হতে হবে। ফাইলটি আপনার এক্সটেনশনের জন্য আইকন ডিজাইন করার সময় নিম্নলিখিত নির্দেশিকাগুলি মনে রাখবেন:
| ||||||||
tagsস্ট্রিং এর তালিকা (ঐচ্ছিক) | ব্যবহারকারীদের আপনার এক্সটেনশন আবিষ্কার করতে সাহায্য করার জন্য ট্যাগ। নিম্নলিখিত ট্যাগগুলি এক্সটেনশন হাবের বিভাগগুলিতে ম্যাপ করে: marketing , messaging , payments , search , shipping , social , utilities , ai | ||||||||
sourceUrlস্ট্রিং (ঐচ্ছিক) | পাবলিক URL যেখানে এক্সটেনশন ডিরেক্টরি অ্যাক্সেস করা যেতে পারে। | ||||||||
releaseNotesUrlস্ট্রিং (ঐচ্ছিক) | পাবলিক URL যেখানে এক্সটেনশনের রিলিজ নোট অ্যাক্সেস করা যেতে পারে। | ||||||||
authorএকটি লেখকের বস্তু (ঐচ্ছিক) | এক্সটেনশনের জন্য প্রাথমিক লেখক এবং যোগাযোগের ব্যক্তি। author: authorName: Your Company email: extensions@example.com url: https://example.com/
| ||||||||
contributorsলেখকের বস্তুর তালিকা (ঐচ্ছিক) | এক্সটেনশনের জন্য কোনও অতিরিক্ত অবদানকারী লেখক। contributors: - authorName: Your Name - authorName: Another Contributor email: colleague@example.net url: https://github.com/their-org/
| ||||||||
ফায়ারবেস এবং গুগল ক্লাউড এপিআই
এই ক্ষেত্রগুলি এক্সটেনশনটি ব্যবহার করে এমন Firebase এবং Google API গুলি নির্দিষ্ট করে। ব্যবহারকারীরা যখন এক্সটেনশনটি ইনস্টল করেন, তখন তারা তাদের প্রকল্পে এই API গুলি স্বয়ংক্রিয়ভাবে সক্ষম করতে পারেন।
apis:
- apiName: apiname.googleapis.com
reason: Explanation of why the extension uses this API
- apiName: anotherapiname.googleapis.com
reason: Explanation of why the extension uses this API
| API ক্ষেত্রগুলি | |
|---|---|
apiNameস্ট্রিং (প্রয়োজনীয়) | গুগল এপিআই এর নাম গুগল ক্লাউড এপিআই লাইব্রেরিতে প্রতিটি এপিআই-এর ওভারভিউ পৃষ্ঠায় ( উদাহরণস্বরূপ ) তালিকাভুক্ত পরিষেবার নাম ক্ষেত্রের সাথে সঙ্গতিপূর্ণ হতে হবে। |
reasonস্ট্রিং (প্রয়োজনীয়) | এক্সটেনশনটির কেন এই API ব্যবহার করা প্রয়োজন তার সংক্ষিপ্ত বিবরণ |
আইএএম ভূমিকা
এই ক্ষেত্রগুলি এক্সটেনশনটির জন্য প্রয়োজনীয় ক্লাউড IAM ভূমিকাগুলি নির্দিষ্ট করে। এক্সটেনশনের জন্য প্রভিশন করা পরিষেবা অ্যাকাউন্টটি এই ভূমিকাগুলি মঞ্জুর করে।
আপনি শুধুমাত্র সমর্থিত ভূমিকাগুলির মধ্যে একটি নির্দিষ্ট করতে পারেন।
roles:
- role: product.role
reason: Explanation of why the extension needs this level of access
- role: anotherproduct.role
resource: projects/${project_id}/resource_type/*
reason: Explanation of why the extension needs this level of access
| ভূমিকা ক্ষেত্র | |
|---|---|
roleস্ট্রিং (প্রয়োজনীয়) | এক্সটেনশনটি পরিচালনা করার জন্য প্রয়োজনীয় IAM ভূমিকার নাম সমর্থিত ভূমিকাগুলির মধ্যে একটি হতে হবে |
reasonস্ট্রিং (প্রয়োজনীয়) | এই ভূমিকার মাধ্যমে এক্সটেনশনটির কেন অ্যাক্সেস প্রয়োজন তার সংক্ষিপ্ত বিবরণ |
resourceস্ট্রিং (ঐচ্ছিক) | এই সম্পদের মধ্যে ভূমিকার পরিধি সীমাবদ্ধ রাখুন। বাদ দেওয়া হলে, ডিফল্টভাবে |
বহিরাগত পরিষেবা
এই ক্ষেত্রগুলি এক্সটেনশনটি যে নন-ফায়ারবেস এবং নন-গুগল পরিষেবাগুলি ব্যবহার করে (সাধারণত REST API) তা নির্দিষ্ট করে। ফায়ারবেস এক্সটেনশন প্ল্যাটফর্ম এই পরিষেবাগুলির জন্য স্বয়ংক্রিয়ভাবে সক্ষম বা অনুমোদন সম্পাদনের কোনও উপায় প্রদান করে না।
externalServices:
- name: Example API
pricingUri: https://developers.example.com/pricing
- name: Another Example API
pricingUri: https://developers.example.com/pricing
| বহিরাগত পরিষেবা ক্ষেত্র | |
|---|---|
nameস্ট্রিং (প্রয়োজনীয়) | এক্সটেনশনটি পরিচালনা করার জন্য প্রয়োজনীয় বহিরাগত পরিষেবার নাম |
pricingUriস্ট্রিং (প্রয়োজনীয়) | পরিষেবার মূল্য নির্ধারণের তথ্যের URI |
ব্যবহারকারী-কনফিগারযোগ্য পরামিতি
এই ক্ষেত্রগুলি ব্যবহারকারীদের কনফিগার করার জন্য এক্সটেনশনটি যে প্যারামিটারগুলি উপলব্ধ করে তা সংজ্ঞায়িত করে।
params:
- param: PARAM_ID
label: Short description of the parameter
description: >-
What do you want to set PARAM_ID to?
This is a longer description of the parameter, often phrased as a prompt
to the user.
- param: ANOTHER_PARAM_ID
label: Short description of the parameter
description: >
What do you want to set ANOTHER_PARAM_ID to?
This is a longer description of the parameter.
example: example-input
validationRegex: "^[a-zA-Z][a-zA-Z-]*[a-zA-Z]?$"
validationErrorMessage:
Must be a hyphen-delimited string of alphabetic characters
default: default-value
required: false
immutable: true
| প্যারামিটার ক্ষেত্র | |
|---|---|
paramস্ট্রিং (প্রয়োজনীয়) | প্যারামিটারের নাম। কোডে প্যারামিটারের মান উল্লেখ করার জন্য আপনি এই নামটি ব্যবহার করেন। |
labelস্ট্রিং (প্রয়োজনীয়) | প্যারামিটারের সংক্ষিপ্ত বিবরণ। ব্যবহারকারীকে প্যারামিটারের মান জিজ্ঞাসা করা হলে তা প্রদর্শিত হয়। |
descriptionস্ট্রিং (ঐচ্ছিক) | প্যারামিটারের বিস্তারিত বিবরণ। ব্যবহারকারীকে প্যারামিটারের মান জিজ্ঞাসা করা হলে তা প্রদর্শিত হয়। মার্কডাউন সমর্থন করে। |
exampleস্ট্রিং (ঐচ্ছিক) | প্যারামিটারের উদাহরণ মান। |
defaultস্ট্রিং (ঐচ্ছিক) | ব্যবহারকারী যদি প্যারামিটারের মান খালি রাখে, তাহলে প্যারামিটারের ডিফল্ট মান। |
validationRegexস্ট্রিং (ঐচ্ছিক) | প্যারামিটারের ব্যবহারকারী-কনফিগার করা মানের বৈধতার জন্য নিয়মিত অভিব্যক্তি। Google RE2 সিনট্যাক্স । |
validationErrorMessageস্ট্রিং (ঐচ্ছিক) | রেজেক্স যাচাইকরণ ব্যর্থ হলে ত্রুটি বার্তা প্রদর্শন করা হবে। |
requiredবুলিয়ান (ঐচ্ছিক) | ব্যবহারকারীকে প্যারামিটারের মান জিজ্ঞাসা করা হলে তারা একটি খালি স্ট্রিং জমা দিতে পারবে কিনা তা নির্ধারণ করে। ডিফল্টভাবে true থাকে। |
immutableবুলিয়ান (ঐচ্ছিক) | ইনস্টলেশনের পরে ব্যবহারকারী প্যারামিটারের মান পরিবর্তন করতে পারবে কিনা তা নির্ধারণ করে (যেমন যদি তারা এক্সটেনশনটি পুনরায় কনফিগার করে)। ডিফল্টভাবে দ্রষ্টব্য: যদি আপনি আপনার এক্সটেনশনের ডিপ্লয় করা ফাংশনের জন্য একটি "location" প্যারামিটার সংজ্ঞায়িত করেন, তাহলে এই ক্ষেত্রটিকে |
typeস্ট্রিং (ঐচ্ছিক) | প্যারামিটারের ধরণ। বিশেষ প্যারামিটারের ধরণগুলির অতিরিক্ত প্রয়োজনীয়তা বা ভিন্ন UI উপস্থাপনা থাকতে পারে। নিম্নলিখিত বিভাগগুলি দেখুন। |
নির্বাচনযোগ্য এবং বহু-নির্বাচনযোগ্য পরামিতি
নির্বাচনযোগ্য এবং বহু-নির্বাচনযোগ্য পরামিতি ব্যবহারকারীদের পূর্বনির্ধারিত বিকল্পগুলির তালিকা থেকে নির্বাচন করতে প্ররোচিত করে।
params:
- param: PARAM_ID
label: Short description of the parameter
description: >-
Do you want to enable the option?
type: select
options:
- label: Yes
value: true
- label: No
value: false
- param: ANOTHER_PARAM_ID
label: Short description of the parameter
description: >-
Which options do you want to enable?
type: multiSelect
options:
- value: red
- value: green
- value: blue
| বহুনির্বাচনী প্যারামিটার ক্ষেত্র | |||||||
|---|---|---|---|---|---|---|---|
typeস্ট্রিং | নির্দিষ্ট করে যে প্যারামিটারটি পূর্বনির্ধারিত পছন্দের একটি সেট থেকে নির্বাচিত একটি মান ( | ||||||
optionsবিকল্পগুলির তালিকা (প্রয়োজনীয়) | ব্যবহারকারী যে বিকল্পগুলি থেকে বেছে নিতে পারেন
| ||||||
নির্বাচনযোগ্য রিসোর্স প্যারামিটার
নির্বাচনযোগ্য রিসোর্স প্যারামিটার ব্যবহারকারীদের তাদের প্রকল্প থেকে একটি রিসোর্স (ডাটাবেস ইনস্ট্যান্স, স্টোরেজ বাকেট, ইত্যাদি) নির্বাচন করতে অনুরোধ করে।
params:
- param: PARAM_ID
label: Short description of the parameter
description: >-
Which resource do you want to use?
type: selectresource
resourceType: product.googleapis.com/ResourceType
| রিসোর্স প্যারামিটার ক্ষেত্র | |
|---|---|
typeস্ট্রিং | নির্দিষ্ট করে যে প্যারামিটারটি একটি প্রকল্প সম্পদের প্রতিনিধিত্ব করে। |
resourceTypeস্ট্রিং (প্রয়োজনীয়) | ব্যবহারকারীকে যে ধরণের রিসোর্স নির্বাচন করতে বলা হবে। বৈধ মান:
তবে, বর্তমানে শুধুমাত্র ক্লাউড স্টোরেজ বাকেটগুলিতে একটি নির্বাচন UI রয়েছে (অন্যান্য রিসোর্সের ধরণগুলি ফ্রি-ফর্ম টেক্সট ইনপুট ক্ষেত্র হিসাবে উপস্থাপিত হয়)। |
গোপন পরামিতি
ব্যবহারকারীর দ্বারা প্রদত্ত গোপন মান (যেমন API কী) ভিন্নভাবে পরিচালনা করা হয়:
- গোপন মানগুলি ক্লাউড সিক্রেট ম্যানেজার ব্যবহার করে সংরক্ষণ করা হয়। কেবলমাত্র অনুমোদিত ক্লায়েন্টরা (যেমন কোনও এক্সটেনশনের ইনস্টল করা উদাহরণ) এই মানগুলি অ্যাক্সেস করতে পারে।
- যখন ব্যবহারকারীদের এই মানগুলি প্রদান করতে বলা হয়, তখন তাদের ইনপুট প্রদর্শিত হয় না।
params:
- param: PARAM_ID
label: Short description of the parameter
description: >-
What is the secret value?
type: secret
| গোপন প্যারামিটার ক্ষেত্র | |
|---|---|
typeস্ট্রিং | প্যারামিটারটি একটি গোপন মান তা নির্দিষ্ট করে। |
ক্লাউড ফাংশন রিসোর্স
এই ক্ষেত্রগুলি একটি এক্সটেনশনে অন্তর্ভুক্ত ক্লাউড ফাংশনগুলি ঘোষণা করে। রিসোর্স ঘোষণার সিনট্যাক্সটি 1st-gen এবং 2nd-gen ফাংশনগুলির মধ্যে একটু আলাদা দেখায়, যা একটি এক্সটেনশনে সহাবস্থান করতে পারে।
প্রথম প্রজন্মের ক্লাউড ফাংশন
resources:
- name: functionName
type: firebaseextensions.v1beta.function
description: >-
Description of what the function does. (One or two
sentences.)
properties:
runtime: runtime-version
eventTrigger:
eventType: google.product.event
resource: projects/_/resource/specifier
| রিসোর্স ক্ষেত্র | |||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
nameস্ট্রিং (প্রয়োজনীয়) | এক্সপোর্ট করা ফাংশনের জন্য ব্যবহারকারী-বান্ধব নাম। যদি আপনি স্থাপন করা ফাংশনের চূড়ান্ত নাম নিম্নলিখিত বিন্যাসে হবে: | ||||||||||||||||
typeস্ট্রিং (প্রয়োজনীয়) | প্রথম প্রজন্মের ফাংশন রিসোর্সের জন্য: firebaseextensions.v1beta.function | ||||||||||||||||
descriptionস্ট্রিং (প্রয়োজনীয়) | এক্সটেনশনের জন্য ফাংশনটি কী কাজ সম্পাদন করে তার সংক্ষিপ্ত বিবরণ। | ||||||||||||||||
properties(প্রয়োজনীয়) | প্রথম প্রজন্মের ক্লাউড ফাংশন বৈশিষ্ট্য। সবচেয়ে গুরুত্বপূর্ণ বৈশিষ্ট্যগুলি নীচে তালিকাভুক্ত করা হয়েছে, তবে আপনি সম্পূর্ণ তালিকাটি ক্লাউড ফাংশন রেফারেন্সে খুঁজে পেতে পারেন।
| ||||||||||||||||
দ্বিতীয় প্রজন্মের ক্লাউড ফাংশন
resources:
- name: functionName
type: firebaseextensions.v1beta.v2function
description: >-
Description of what the function does. (One or two
sentences.)
properties:
buildConfig:
runtime: nodejs16
serviceConfig:
availableMemory: 512M
eventTrigger:
eventType: google.firebase.firebasealerts.alerts.v1.published
triggerRegion: global
eventFilters:
- attribute: alerttype
value: crashlytics.newFatalIssue
| রিসোর্স ক্ষেত্র | |||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
nameস্ট্রিং (প্রয়োজনীয়) | এক্সপোর্ট করা ফাংশনের জন্য ব্যবহারকারী-বান্ধব নাম। যদি আপনি স্থাপন করা ফাংশনের চূড়ান্ত নাম নিম্নলিখিত বিন্যাসে হবে: | ||||||||||||||||||||||||||||
typeস্ট্রিং (প্রয়োজনীয়) | দ্বিতীয় প্রজন্মের ফাংশন রিসোর্সের জন্য: firebaseextensions.v1beta.v2function | ||||||||||||||||||||||||||||
descriptionস্ট্রিং (প্রয়োজনীয়) | এক্সটেনশনের জন্য ফাংশনটি কী কাজ সম্পাদন করে তার সংক্ষিপ্ত বিবরণ। | ||||||||||||||||||||||||||||
properties(প্রয়োজনীয়) | দ্বিতীয় প্রজন্মের ক্লাউড ফাংশন বৈশিষ্ট্য। সবচেয়ে গুরুত্বপূর্ণ বৈশিষ্ট্যগুলি নীচে তালিকাভুক্ত করা হয়েছে, তবে আপনি সম্পূর্ণ তালিকাটি ক্লাউড ফাংশন রেফারেন্সে খুঁজে পেতে পারেন।
এছাড়াও তিনটি অবজেক্ট-টাইপ ক্ষেত্র রয়েছে যার নিজস্ব বৈশিষ্ট্য রয়েছে:
| ||||||||||||||||||||||||||||
জীবনচক্রের ইভেন্ট
লাইফসাইকেল ইভেন্টগুলি আপনাকে এমন ফাংশন নির্দিষ্ট করতে দেয় যা ব্যবহারকারী আপনার এক্সটেনশনের একটি ইনস্ট্যান্স ইনস্টল, আপডেট বা কনফিগার করার সময় চলবে। আপনার এক্সটেনশনের লাইফসাইকেল ইভেন্টগুলি পরিচালনা করুন দেখুন।
lifecycleEvents:
onInstall:
function: myTaskFunction
processingMessage: Describes the task being completed
onUpdate:
function: myOtherTaskFunction
processingMessage: Describes the task being completed
onConfigure:
function: myOtherTaskFunction
processingMessage: Describes the task being completed
| জীবনচক্র ইভেন্ট ক্ষেত্র | |||||||
|---|---|---|---|---|---|---|---|
onInstall(ঐচ্ছিক) | ব্যবহারকারী যখন এক্সটেনশনটি ইনস্টল করে তখন এমন একটি ফাংশন নির্দিষ্ট করে যা চলে।
| ||||||
onUpdate(ঐচ্ছিক) | ব্যবহারকারী যখন এক্সটেনশন আপডেট করে তখন যে ফাংশনটি চলে তা নির্দিষ্ট করে।
| ||||||
onConfigure(ঐচ্ছিক) | ব্যবহারকারী যখন এক্সটেনশনটি পুনরায় কনফিগার করেন তখন যে ফাংশনটি চলে তা নির্দিষ্ট করে।
| ||||||
কাস্টম ইভেন্ট (ইভেন্টার্ক)
কাস্টম ইভেন্ট হলো এমন ইভেন্ট যা আপনার এক্সটেনশন ব্যবহারকারীদের আপনার এক্সটেনশনে তাদের নিজস্ব লজিক সন্নিবেশ করার অনুমতি দেওয়ার জন্য নির্গত করে। অ্যাড ইউজার হুকস টু অ্যান এক্সটেনশনের Eventarc বিভাগটি দেখুন।
events:
- type: publisher-id.extension-name.version.event-name
description: Description of the event
- type: publisher-id.extension-name.version.another-event-name
description: Description of the other event
| কাস্টম ইভেন্ট ক্ষেত্র | |
|---|---|
typeস্ট্রিং (প্রয়োজনীয়) | ইভেন্টের ধরণ শনাক্তকারী। ৩-৪টি ডট-ডিলিমিটেড ফিল্ড থেকে শনাক্তকারী তৈরি করুন: প্রকাশক আইডি, এক্সটেনশনের নাম এবং ইভেন্টের নাম ফিল্ড প্রয়োজন; সংস্করণ ফিল্ডটি সুপারিশ করা হয়। আপনার প্রকাশিত প্রতিটি ইভেন্টের ধরণের জন্য একটি অনন্য এবং বর্ণনামূলক ইভেন্ট নাম চয়ন করুন। |
descriptionস্ট্রিং (প্রয়োজনীয়) | অনুষ্ঠানের বর্ণনা। |