আপনার এক্সটেনশনের স্পেসিফিকেশন ফাইলে ( extension.yaml ) আপনার এক্সটেনশনের মেটাডেটা থাকে, এক্সটেনশন দ্বারা তৈরি রিসোর্সসমূহ, প্রয়োজনীয় এপিআই ও অ্যাক্সেস ঘোষণা করা হয় এবং এক্সটেনশন দ্বারা প্রদত্ত ব্যবহারকারী-কনফিগার করা যেকোনো প্যারামিটার সংজ্ঞায়িত করা হয়।
এই পৃষ্ঠার সারণিগুলোতে 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স্ট্রিং (প্রয়োজনীয়) | এক্সটেনশনটির সংস্করণ। অবশ্যই সেমভার ভার্সনিং অনুসরণ করতে হবে (উদাহরণস্বরূপ, ১.২.০)। | ||||||||
specVersionস্ট্রিং (প্রয়োজনীয়) | ফায়ারবেস এক্সটেনশন স্পেসিফিকেশনের সংস্করণ। বর্তমান মান: | ||||||||
licenseস্ট্রিং (ঐচ্ছিক) | এক্সটেনশনটির লাইসেন্স। আপনার এক্সটেনশনটি অবশ্যই | ||||||||
billingRequiredবুলিয়ান (ঐচ্ছিক) | এক্সটেনশনটি দ্বারা ব্যবহৃত পরিষেবাগুলির জন্য একটি পেইড-টিয়ার ফায়ারবেস বিলিং অ্যাকাউন্টের প্রয়োজন আছে কিনা। সর্বদা | ||||||||
displayNameস্ট্রিং (ঐচ্ছিক) | এক্সটেনশনটির জন্য একটি ব্যবহারবান্ধব প্রদর্শন নাম (৩-৫ শব্দ)। ৪০ অক্ষরের সীমা। | ||||||||
descriptionস্ট্রিং (ঐচ্ছিক) | আপনার এক্সটেনশনটি যে কাজটি করে তার সংক্ষিপ্ত বিবরণ (~১ বাক্য)। | ||||||||
iconস্ট্রিং (ঐচ্ছিক) | এই ফাইলটি অবশ্যই 512x512 থেকে 1024x1024 পিক্সেলের মধ্যে একটি বর্গাকার PNG হতে হবে। ফাইলটি আপনার এক্সটেনশনের জন্য আইকন ডিজাইন করার সময় নিম্নলিখিত নির্দেশিকাগুলো মনে রাখবেন:
| ||||||||
tagsস্ট্রিংগুলির তালিকা (ঐচ্ছিক) | ব্যবহারকারীদের আপনার এক্সটেনশন খুঁজে পেতে সাহায্য করার জন্য ট্যাগ। নিম্নলিখিত ট্যাগগুলি এক্সটেনশনস হাব-এর বিভিন্ন ক্যাটাগরির সাথে সম্পর্কিত: marketing , messaging , payments , search , shipping , social , utilities , ai | ||||||||
sourceUrlস্ট্রিং (ঐচ্ছিক) | পাবলিক ইউআরএল যেখান থেকে এক্সটেনশন ডিরেক্টরিটি অ্যাক্সেস করা যাবে। | ||||||||
releaseNotesUrlস্ট্রিং (ঐচ্ছিক) | পাবলিক ইউআরএল যেখানে এক্সটেনশনটির রিলিজ নোট পাওয়া যাবে। | ||||||||
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/
| ||||||||
ফায়ারবেস এবং গুগল ক্লাউড এপিআই
এই ফিল্ডগুলো এক্সটেনশনটির ব্যবহৃত ফায়ারবেস এবং গুগল এপিআইগুলো নির্দিষ্ট করে। ব্যবহারকারীরা এক্সটেনশনটি ইনস্টল করার সময়, তাদের প্রোজেক্টে এই এপিআইগুলো স্বয়ংক্রিয়ভাবে সক্রিয় করার বিকল্পটি বেছে নিতে পারেন।
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
| এপিআই ক্ষেত্রগুলি | |
|---|---|
apiNameস্ট্রিং (প্রয়োজনীয়) | গুগল এপিআই এর নাম গুগল ক্লাউড এপিআই লাইব্রেরিতে প্রতিটি এপিআই-এর ওভারভিউ পৃষ্ঠায় ( উদাহরণ ) তালিকাভুক্ত 'সার্ভিস নেম' ফিল্ডের সাথে অবশ্যই মিলতে হবে। |
reasonস্ট্রিং (প্রয়োজনীয়) | এক্সটেনশনটির কেন এই এপিআই ব্যবহার করা প্রয়োজন তার সংক্ষিপ্ত বিবরণ |
আইএএম ভূমিকা
এই ফিল্ডগুলো এক্সটেনশনটির জন্য প্রয়োজনীয় ক্লাউড আইএএম রোলগুলো নির্দিষ্ট করে। এক্সটেনশনটির জন্য প্রোভিশন করা সার্ভিস অ্যাকাউন্টকে এই রোলগুলো প্রদান করা হয়।
আপনি সমর্থিত ভূমিকাগুলোর মধ্যে কেবল একটি নির্দিষ্ট করতে পারবেন।
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স্ট্রিং (ঐচ্ছিক) | প্যারামিটারের ব্যবহারকারী-নির্ধারিত মান যাচাই করার জন্য রেগুলার এক্সপ্রেশন। গুগল 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 রয়েছে (অন্যান্য রিসোর্স টাইপগুলো ফ্রি-ফর্ম টেক্সট ইনপুট ফিল্ড হিসেবে প্রদর্শিত হয়)। |
গোপন পরামিতি
ব্যবহারকারীর দেওয়া গোপনীয় মান (যেমন এপিআই কী) ভিন্নভাবে পরিচালনা করা হয়:
- ক্লাউড সিক্রেট ম্যানেজার ব্যবহার করে গোপনীয় মানগুলো সংরক্ষণ করা হয়। শুধুমাত্র অনুমোদিত ক্লায়েন্টরাই (যেমন কোনো এক্সটেনশনের ইনস্টল করা ইনস্ট্যান্স) এই মানগুলো অ্যাক্সেস করতে পারে।
- যখন ব্যবহারকারীদের এই মানগুলি প্রদান করতে বলা হয়, তখন তাদের দেওয়া ইনপুট প্রদর্শিত হয় না।
params:
- param: PARAM_ID
label: Short description of the parameter
description: >-
What is the secret value?
type: secret
| গোপন প্যারামিটার ক্ষেত্রগুলি | |
|---|---|
typeস্ট্রিং | নির্দিষ্ট করে যে প্যারামিটারটি একটি গোপন মান। |
ক্লাউড ফাংশন রিসোর্স
এই ফিল্ডগুলো একটি এক্সটেনশনে অন্তর্ভুক্ত ক্লাউড ফাংশনগুলোকে ঘোষণা করে। প্রথম-প্রজন্ম এবং দ্বিতীয়-প্রজন্মের ফাংশনগুলোর ক্ষেত্রে রিসোর্স ঘোষণার সিনট্যাক্স কিছুটা ভিন্ন দেখায়, যেগুলো একটি এক্সটেনশনে সহাবস্থান করতে পারে।
প্রথম প্রজন্মের ক্লাউড ফাংশন
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স্ট্রিং (প্রয়োজনীয়) | ঘটনাটির বিবরণ। |