קובץ עזר ל-extension.yaml

קובץ המפרט של התוסף (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
מחרוזת
(חובה)

מזהה התוסף.

אפשר להזין רק אותיות קטנות, מספרים ומקפים. המגבלה היא 40 תווים.

הערה: הערך הזה משמש ליצירת מזהה המופע של התוסף (שמשמש לאחר מכן ליצירת השמות של חשבון השירות של התוסף והמשאבים הספציפיים לתוסף).

version
מחרוזת
(חובה)

גרסת התוסף.

חייב להיות לפי גרסת semver (לדוגמה, 1.2.0).

specVersion
מחרוזת
(חובה)

הגרסה של מפרט התוספים ל-Firebase.

הערך הנוכחי: v1beta

license
string
(אופציונלי)

רישיון לתוסף.

התוסף צריך להיות מורשה באמצעות Apache-2.0.

billingRequired
boolean
(אופציונלי)

האם השירותים שבהם נעשה שימוש בתוסף דורשים חשבון לחיוב ב-Firebase ברמה בתשלום.

הערך תמיד יהיה true.

displayName
string
(אופציונלי)

שם תצוגה ידידותי לתוסף (3-5 מילים).

מגבלה של 40 תווים.

description
string
(אופציונלי)
תיאור קצר של המשימה שהתוסף מבצע (משפט אחד בערך).
icon
string
(אופציונלי)

קובץ לשימוש כסמל התוסף ב-extensions.dev ובמסוף Firebase.

הקובץ צריך להיות PNG מרובע בגודל שבין 512x512 ל-1,024x1,024 פיקסלים. צריך לשים את הקובץ באותה ספרייה שבה נמצא extension.yaml. אי אפשר לציין ספריית משנה.

כשמעצבים סמל לתוסף, חשוב להקפיד על ההנחיות הבאות:

  • בוחרים צבעים לרקע ולגרפיקה שמתאימים למותג שלכם.
  • הצבעים של הסמל צריכים להיות פשוטים, ומוגבלים ל-2 צבעים בלבד. שימוש בכמה צבעים עלול להפוך את הסמל לעמוס מדי.
  • מאותה סיבה, אין להשתמש בהדרגות צבע בסמל. קשה להבחין במעברי צבעים בגדלים קטנים, והם יוצרים סמל מורכב מבחינה ויזואלית.
  • משתמשים בתמונות פשוטות וייחודיות שמציגות את הפונקציונליות של התוסף.
  • אם החברה שלכם יוצרת כמה תוספים, אל תשתמשו בלוגו שלכם כסמל. למשתמשים יהיה קשה להבחין בין התוספים שלכם.
  • היצירה צריכה להיות גרפית ובולטת. לא להשתמש באומנות עדינה או מורכבת, שלא תוצג בצורה טובה בגדלים קטנים יותר.
  • אל תכללו מילים שמסבירות מה התוסף עושה. בדרך כלל אי אפשר לקרוא את הטקסט כשהגודל קטן יותר.
tags
רשימה של מחרוזות
(אופציונלי)
תגים שיעזרו למשתמשים לגלות את התוסף. התגים הבאים ממופים לקטגוריות במרכז התוספים: marketing, messaging, payments, search, shipping, social, utilities, ai
sourceUrl
string
(אופציונלי)
כתובת URL ציבורית שאפשר לגשת אליה לספריית התוספים.
releaseNotesUrl
string
(אופציונלי)
כתובת URL ציבורית שאפשר לגשת דרכה להערות על הגרסה של התוסף.
author
אובייקט מחבר אחד
(אופציונלי)

המחבר הראשי ואיש הקשר של התוסף.

author:
  authorName: Your Company
  email: extensions@example.com
  url: https://example.com/
שדות של מחברים
authorName
מחרוזת
(חובה)

שם המחבר.

יכול להיות אדם, חברה, ארגון וכו'.

email
מחרוזת
(אופציונלי)
כתובת האימייל של המחבר.
url
מחרוזת
(אופציונלי)
כתובת URL ציבורית שדרכה אפשר לגשת למידע על המחבר.
contributors
רשימה של אובייקטים של מחברים
(אופציונלי)

כל מחבר נוסף שתרם לתוסף.

contributors:
  - authorName: Your Name
  - authorName: Another Contributor
    email: colleague@example.net
    url: https://github.com/their-org/
שדות של מחברים
authorName
מחרוזת
(חובה)

שם המחבר.

יכול להיות אדם, חברה, ארגון וכו'.

email
מחרוזת
(אופציונלי)
כתובת האימייל של המחבר.
url
מחרוזת
(אופציונלי)
כתובת URL ציבורית שדרכה אפשר לגשת למידע על המחבר.

ממשקי API של Firebase ו-Google Cloud

בשדות האלה מצוינים ממשקי ה-API של Firebase ושל Google שבהם התוסף משתמש. כשהמשתמשים מתקינים את התוסף, הם יכולים לבחור להפעיל את ממשקי ה-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
מחרוזת
(חובה)

שם ה-API של Google

הערך צריך להיות זהה לערך בשדה שם השירות שמופיע בדף הסקירה הכללית של כל API (דוגמה) בספריית ה-API של Google Cloud.

reason
מחרוזת
(חובה)
תיאור קצר של הסיבה שבגללה התוסף צריך להשתמש ב-API הזה

תפקידי IAM

בשדות האלה מצוינים תפקידי Cloud 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
string
(אופציונלי)

הגבלת ההיקף של התפקיד למשאב הזה.

אם לא מציינים ערך, ברירת המחדל היא projects/${project_id}. איך מצמצמים את היקף התפקידים

שירותים חיצוניים

בשדות האלה מצוינים שירותים שאינם של Firebase או Google שבהם התוסף משתמש (בדרך כלל ממשקי REST API). פלטפורמת Firebase Extensions לא מספקת אמצעים להפעלה אוטומטית של השירותים האלה או לביצוע הרשאה עבורם.

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
string
(אופציונלי)

תיאור מפורט של הפרמטר. הערך מוצג למשתמש כשמוצגת לו בקשה להזין את הערך של הפרמטר.

תמיכה ב-Markdown.

example
string
(אופציונלי)
ערך לדוגמה של הפרמטר.
default
string
(אופציונלי)
ערך ברירת המחדל של הפרמטר אם המשתמש משאיר את הערך של הפרמטר ריק.
validationRegex
string
(אופציונלי)
ביטוי רגולרי לאימות הערך שהמשתמש הגדיר לפרמטר. תחביר של Google RE2.
validationErrorMessage
string
(אופציונלי)
הודעת השגיאה שתוצג אם האימות באמצעות ביטוי רגולרי ייכשל.
required
boolean
(אופציונלי)
ההגדרה הזו קובעת אם המשתמש יכול לשלוח מחרוזת ריקה כשהוא מתבקש להזין את הערך של הפרמטר. ברירת המחדל היא true.
immutable
boolean
(אופציונלי)

ההגדרה הזו קובעת אם המשתמש יכול לשנות את ערך הפרמטר אחרי ההתקנה (למשל, אם הוא מגדיר מחדש את התוסף). ברירת המחדל היא false.

הערה: אם מגדירים פרמטר של מיקום לפונקציות של התוסף שהופעלו, צריך להגדיר את השדה הזה ל-true.

type
string
(אופציונלי)
סוג הפרמטר. יכול להיות שלסוגים מיוחדים של פרמטרים יהיו דרישות נוספות או שהם יוצגו בממשק משתמש באופן שונה. מידע נוסף מופיע בקטעים הבאים.

פרמטרים שאפשר לבחור ופרמטרים שאפשר לבחור כמה מהם

פרמטרים שניתן לבחור מהם ופרמטרים שניתן לבחור מהם כמה אפשרויות מציגים למשתמשים רשימה של אפשרויות מוגדרות מראש.

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
string

select או multiSelect

מציין שהפרמטר יכול להיות ערך אחד (select) או כמה ערכים (multiSelect) שנבחרו מתוך קבוצה של אפשרויות מוגדרות מראש.

options
רשימת אפשרויות
(חובה)

האפשרויות שהמשתמש יכול לבחור מתוכן

שדות אפשרויות
value
מחרוזת
(חובה)
אחד מהערכים שהמשתמש יכול לבחור. זה הערך שמתקבל כשקוראים את ערך הפרמטר בקוד.
label
מחרוזת
(אופציונלי)
תיאור קצר של האפשרות לבחירה. אם לא מציינים ערך, ברירת המחדל היא value.

פרמטרים של משאבים שאפשר לבחור

פרמטרים של משאבים שניתנים לבחירה מאפשרים למשתמשים לבחור משאב (מופע של מסד נתונים, קטגוריית אחסון וכו') מהפרויקט שלהם.

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
string

selectresource

מציין שהפרמטר מייצג משאב בפרויקט

resourceType
מחרוזת
(חובה)

סוג המשאב שיוצג למשתמש לבחירה.

הערכים האפשריים:

  • storage.googleapis.com/Bucket
  • firestore.googleapis.com/Database
  • firebasedatabase.googleapis.com/DatabaseInstance

עם זאת, רק לקטגוריות של Cloud Storage יש כרגע ממשק משתמש לבחירה (סוגים אחרים של משאבים מוצגים כשדות להזנת טקסט חופשי).

פרמטרים סודיים

ערכים סודיים שהמשתמשים מספקים (כמו מפתחות API) מטופלים באופן שונה:

  • ערכי הסודות מאוחסנים באמצעות Cloud Secret Manager. רק לקוחות מורשים (כמו מופע מותקן של תוסף) יכולים לגשת לערכים האלה.
  • כשמוצגת למשתמשים בקשה להזין את הערכים האלה, הקלט שלהם לא מוצג.
params:
  - param: PARAM_ID
    label: Short description of the parameter
    description: >-
      What is the secret value?
    type: secret
שדות של פרמטרים סודיים
type
string

secret

מציין שהפרמטר הוא ערך סודי

משאבים של Cloud Functions

בשדות האלה מצהירים על הפונקציות ב-Cloud Functions שכלולות בתוסף. התחביר של הצהרת המשאב שונה קצת בין פונקציות מדור ראשון לפונקציות מדור שני, שיכולות להתקיים יחד בתוסף.

Cloud Functions מדור ראשון

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
מחרוזת
(חובה)

שם ידידותי למשתמש של הפונקציה המיוצאת.

אם לא מציינים את מאפיין entryPoint (ראו בהמשך), הערך הזה חייב להיות זהה לשם הפונקציה בקוד המקור של הפונקציות.

השם הסופי של הפונקציה שנפרסה יהיה בפורמט הבא: ext-extension-instance-id-name.

type
מחרוזת
(חובה)
למשאב פונקציה מדור ראשון: firebaseextensions.v1beta.function
description
מחרוזת
(חובה)

תיאור קצר של המשימה שהפונקציה מבצעת עבור התוסף.

properties
(חובה)

מאפיינים של Cloud Functions מדור ראשון. בהמשך מפורטות התכונות הכי חשובות, אבל אפשר למצוא את הרשימה המלאה בהפניה ל-Cloud Functions.

נכסים
location
(אופציונלי)

המיקום שבו רוצים לפרוס את הפונקציה. ברירת המחדל היא us-central1

entryPoint
(אופציונלי)
השם של הפונקציה שמיוצאת בקוד המקור של הפונקציות, שהתוסף צריך לחפש. ברירת המחדל היא הערך של name שמופיע למעלה.
sourceDirectory
(אופציונלי)

ספרייה שמכילה את package.json ברמה הבסיסית שלה. הקובץ של קוד המקור של הפונקציות צריך להיות בספרייה הזו. ברירת המחדל היא functions

הערה: השדה main של package.json מציין את הקובץ של קוד המקור של הפונקציות (למשל index.js).

timeout
(אופציונלי)

משך ההפעלה המקסימלי של הפונקציה.

  • ברירת מחדל: 60s
  • ערך מקסימלי: 540s
availableMemoryMb
(אופציונלי)

נפח הזיכרון ב-MB שזמין לפונקציה.

  • ברירת מחדל: 256
  • ערכים תקינים: 128,‏ 256,‏ 512,‏ 1024 ו-2048
runtime
(מומלץ)

סביבת זמן הריצה של הפונקציה.

  • ברירת המחדל היא הגרסה העדכנית ביותר של Node.js Cloud Functions שנתמכת כרגע.
  • ערכים תקינים: nodejs14, nodejs16, nodejs18
httpsTrigger
או
eventTrigger
או
scheduleTrigger
או
taskQueueTrigger
(חובה להשתמש באחד מסוגי הטריגרים האלה של הפונקציות)
מידע ספציפי על כל סוג של טריגר מופיע במאמר כתיבת Cloud Functions לתוסף.

Cloud Functions מדור שני

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
מחרוזת
(חובה)

שם ידידותי למשתמש של הפונקציה המיוצאת.

אם לא מציינים את מאפיין entryPoint (ראו בהמשך), הערך הזה חייב להיות זהה לשם הפונקציה בקוד המקור של הפונקציות.

השם הסופי של הפונקציה שנפרסה יהיה בפורמט הבא: ext-extension-instance-id-name.

type
מחרוזת
(חובה)
למשאב פונקציה מדור שני: firebaseextensions.v1beta.v2function
description
מחרוזת
(חובה)

תיאור קצר של המשימה שהפונקציה מבצעת עבור התוסף.

properties
(חובה)

מאפיינים של Cloud Functions מדור שני. בהמשך מפורטות התכונות הכי חשובות, אבל אפשר למצוא את הרשימה המלאה בהפניה ל-Cloud Functions.

נכסים
location
(אופציונלי)

המיקום שבו רוצים לפרוס את הפונקציה. ברירת המחדל היא us-central1

sourceDirectory
(אופציונלי)

ספרייה שמכילה את package.json ברמה הבסיסית שלה. הקובץ של קוד המקור של הפונקציות צריך להיות בספרייה הזו. ברירת המחדל היא functions

הערה: השדה main של package.json מציין את הקובץ של קוד המקור של הפונקציות (למשל index.js).

יש גם שלושה שדות מסוג אובייקט עם מאפיינים משלהם:

מאפייני buildConfig
buildConfig.runtime
(מומלץ)

סביבת זמן הריצה של הפונקציה.

  • ברירת המחדל היא הגרסה העדכנית ביותר של Node.js Cloud Functions שנתמכת כרגע.
  • ערכים תקינים: nodejs14, nodejs16, nodejs18
buildConfig.entryPoint
(אופציונלי)
השם של הפונקציה שמיוצאת בקוד המקור של הפונקציות, שהתוסף צריך לחפש. ברירת המחדל היא הערך של name שמופיע למעלה.
מאפייני serviceConfig
serviceConfig.timeoutSeconds
(אופציונלי)

משך ההפעלה המקסימלי של הפונקציה.

  • ברירת מחדל: 60
  • ערך מקסימלי: 540
serviceConfig.availableMemory
(אופציונלי)
נפח הזיכרון שזמין לפונקציה. ברירת המחדל היא 256M. היחידות הנתמכות הן k, M, G, Mi, Gi. אם לא מציינים יחידה, הערך מתפרש כבייט.
מאפייני eventTrigger
eventTrigger.eventType
(חובה)
סוג האירוע להאזנה. במאמר כתיבת פונקציות Cloud לתוסף מפורטים סוגי האירועים שזמינים לכל מוצר.
eventTrigger.eventFilters
(אופציונלי)
מסננים שמגבילים עוד יותר את האירועים להאזנה. לדוגמה, אפשר להאזין רק לאירועים שתואמים לתבנית משאב ספציפית. מידע על סינון כל סוג של אירוע זמין במאמר כתיבת פונקציות של Cloud Functions לתוסף.
eventTrigger.channel
(אופציונלי)
השם של הערוץ שמשויך לטריגר בפורמט projects/{project}/locations/{location}/channels/{channel}. אם לא מציינים את הנכס הזה, הפונקציה תקשיב לאירועים בערוץ ברירת המחדל של הפרויקט.
eventTrigger.triggerRegion
(אופציונלי)
הטריגר יקבל רק אירועים שמקורם באזור הזה. יכול להיות באותו אזור כמו הפונקציה, באזור אחר, במספר אזורים או באזור הגלובלי. אם לא מציינים אזור, ברירת המחדל היא אותו אזור כמו הפונקציה.

אירועים במחזור החיים

אירועים של מחזור חיים מאפשרים לכם לציין פונקציות שיפעלו כשמשתמש מתקין, מעדכן או מגדיר מופע של התוסף. אפשר לעיין במאמר בנושא טיפול באירועים במחזור החיים של התוסף.

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
(אופציונלי)

מציינת פונקציה שמופעלת כשמשתמש מתקין את התוסף.

מפרט הפונקציה
function
מחרוזת
(חובה)

השם של הפונקציה שמופעלת על ידי תור המשימות, שתטפל באירוע.

צריך להצהיר על הפונקציה הזו בקטע resources ולהגדיר את taskQueue.

processingMessage
מחרוזת
(חובה)
ההודעה שתוצג במסוף Firebase בזמן שהמשימה מתבצעת.
onUpdate
(אופציונלי)

מציינת פונקציה שמופעלת כשמשתמש מעדכן את התוסף.

מפרט הפונקציה
function
מחרוזת
(חובה)

השם של הפונקציה שמופעלת על ידי תור המשימות, שתטפל באירוע.

צריך להצהיר על הפונקציה הזו בקטע resources ולהגדיר את taskQueue.

processingMessage
מחרוזת
(חובה)
ההודעה שתוצג במסוף Firebase בזמן שהמשימה מתבצעת.
onConfigure
(אופציונלי)

מציינת פונקציה שמופעלת כשמשתמש מגדיר מחדש את התוסף.

מפרט הפונקציה
function
מחרוזת
(חובה)

השם של הפונקציה שמופעלת על ידי תור המשימות, שתטפל באירוע.

צריך להצהיר על הפונקציה הזו בקטע resources ולהגדיר את taskQueue.

processingMessage
מחרוזת
(חובה)
ההודעה שתוצג במסוף Firebase בזמן שהמשימה מתבצעת.

אירועים מותאמים אישית (Eventarc)

אירועים מותאמים אישית הם אירועים שהתוסף שולח כדי לאפשר למשתמשים להוסיף לוגיקה משלהם לתוסף. אפשר לעיין בקטע בנושא 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
מחרוזת
(חובה)
מזהה הסוג של האירוע. יוצרים את המזהה מ-3 עד 4 שדות מופרדים בנקודות: השדות של מזהה בעל האתר, שם התוסף ושם האירוע הם שדות חובה; מומלץ להשתמש בשדה של הגרסה. צריך לבחור שם אירוע ייחודי ותיאורי לכל סוג אירוע שמפרסמים.
description
מחרוזת
(חובה)
תיאור האירוע.