Odniesienie do extension.yaml

Plik specyfikacji rozszerzenia ( extension.yaml ) zawiera metadane rozszerzenia, deklaruje zasoby utworzone przez rozszerzenie oraz interfejsy API i dostęp wymagany przez rozszerzenie, a także definiuje wszelkie parametry konfigurowane przez użytkownika udostępniane przez rozszerzenie.

Tabele na tej stronie opisują pola dostępne dla pliku extension.yaml .

Informacje podstawowe i identyfikacyjne

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/
Podstawowe pola
name
strunowy
(wymagany)

Identyfikator rozszerzenia.

Może zawierać tylko małe litery, cyfry i myślniki; Limit 40 znaków.

Uwaga: ta wartość służy do generowania identyfikatora instancji rozszerzenia (który jest następnie używany do generowania nazw kont usługi rozszerzenia i zasobów specyficznych dla rozszerzenia).

version
strunowy
(wymagany)

Wersja rozszerzenia.

Musi być zgodna z wersją semver (na przykład 1.2.0).

specVersion
strunowy
(wymagany)

Wersja specyfikacji rozszerzeń Firebase.

Obecna wartość: v1beta

license
strunowy
(opcjonalny)

Licencja na rozszerzenie.

Twoje rozszerzenie musi być licencjonowane przy użyciu Apache-2.0 .

billingRequired
wartość logiczna
(opcjonalny)

Określa, czy usługi używane przez rozszerzenie wymagają płatnego konta rozliczeniowego Firebase.

Zawsze ustawione na true .

displayName
strunowy
(opcjonalny)

Przyjazna wyświetlana nazwa rozszerzenia (3-5 słów).

Limit 40 znaków.

description
strunowy
(opcjonalny)
Krótki opis zadania, które wykonuje Twoje rozszerzenie (~1 zdanie).
icon
strunowy
(opcjonalny)

Plik, który będzie używany jako ikona rozszerzenia w extensions.dev i konsoli Firebase.

Ten plik musi mieć postać kwadratowego pliku PNG o wymiarach od 512 x 512 do 1024 x 1024 pikseli. Umieść plik w tym samym katalogu co extension.yaml ; nie można określić podkatalogu.

Projektując ikonę rozszerzenia, należy pamiętać o następujących wskazówkach:

  • Wybierz kolory tła i grafiki odpowiednie dla Twojej marki.
  • Zachowaj proste kolory ikon, używając tylko 2 kolorów. Wiele kolorów może sprawić, że ikona będzie przytłaczająca wizualnie.
  • Z tego samego powodu nie używaj gradientów w swojej ikonie. Gradienty są trudne do rozróżnienia przy małych rozmiarach i sprawiają, że ikona jest wizualnie złożona.
  • Użyj prostych, unikalnych obrazów, które komunikują funkcjonalność Twojego rozszerzenia.
  • Jeśli Twoja firma tworzy wiele rozszerzeń, nie używaj swojego logo jako ikony. Użytkownicy będą mieli trudności z rozróżnieniem Twoich rozszerzeń.
  • Spraw, aby grafika była graficzna i odważna. Nie używaj delikatnej lub wyszukanej grafiki, która nie będzie dobrze wyświetlana w mniejszych rozmiarach.
  • Nie podawaj słów wyjaśniających, do czego służy Twoje rozszerzenie. Tekst jest często nieczytelny przy mniejszych rozmiarach.
tags
lista ciągów
(opcjonalny)
Tagi pomagające użytkownikom odkryć Twoje rozszerzenie. Następujące tagi odpowiadają kategoriom w Extensions Hub: marketing , messaging , payments , search , shipping , social , utilities , ai
sourceUrl
strunowy
(opcjonalny)
Publiczny adres URL, pod którym można uzyskać dostęp do katalogu rozszerzenia.
releaseNotesUrl
strunowy
(opcjonalny)
Publiczny adres URL, pod którym można uzyskać dostęp do informacji o wersji rozszerzenia.
author
jeden obiekt autorski
(opcjonalny)

Główny autor i osoba kontaktowa w sprawie rozszerzenia.

author:
  authorName: Your Company
  email: extensions@example.com
  url: https://example.com/
Pola autora
authorName
strunowy
(wymagany)

Imię i nazwisko autora.

Może to być osoba, firma, organizacja itp.

email
strunowy
(opcjonalny)
Adres e-mail autora.
url
strunowy
(opcjonalny)
Publiczny adres URL, pod którym można uzyskać dostęp do informacji o autorze.
contributors
lista obiektów autorskich
(opcjonalny)

Dodatkowi autorzy współpracujący z rozszerzeniem.

contributors:
  - authorName: Your Name
  - authorName: Another Contributor
    email: colleague@example.net
    url: https://github.com/their-org/
Pola autora
authorName
strunowy
(wymagany)

Imię i nazwisko autora.

Może to być osoba, firma, organizacja itp.

email
strunowy
(opcjonalny)
Adres e-mail autora.
url
strunowy
(opcjonalny)
Publiczny adres URL, pod którym można uzyskać dostęp do informacji o autorze.

Interfejsy API Firebase i Google Cloud

Te pola określają interfejsy API Firebase i Google, z których korzysta rozszerzenie. Gdy użytkownicy instalują rozszerzenie, mogą wybrać automatyczne włączenie tych interfejsów API w swoim projekcie.

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
Pola API
apiName
strunowy
(wymagany)

Nazwa interfejsu API Google

Musi odpowiadać polu Nazwa usługi wymienionemu na stronie przeglądu każdego interfejsu API ( przykład ) w bibliotece Google Cloud API

reason
strunowy
(wymagany)
Krótki opis, dlaczego rozszerzenie musi korzystać z tego interfejsu API

Role IAM

Te pola określają role Cloud IAM wymagane przez rozszerzenie. Konto usługi udostępnione dla rozszerzenia otrzymuje te role.

Można określić tylko jedną z obsługiwanych ról .

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
Pola ról
role
strunowy
(wymagany)

Nazwa roli IAM potrzebnej do działania rozszerzenia

Musi to być jedna z obsługiwanych ról

reason
strunowy
(wymagany)
Krótki opis, dlaczego rozszerzenie potrzebuje dostępu zapewnianego przez tę rolę
resource
strunowy
(opcjonalny)

Ogranicz zakres roli do tego zasobu.

Jeśli pominięto, domyślnie jest to projects/${project_id} . Zobacz Ograniczanie zakresu ról .

Usługi zewnętrzne

Te pola określają usługi inne niż Firebase i inne niż Google, z których korzysta rozszerzenie (zwykle interfejsy API REST). Platforma Firebase Extensions nie zapewnia żadnych możliwości automatycznego włączania lub wykonywania autoryzacji dla tych usług.

externalServices:
  - name: Example API
    pricingUri: https://developers.example.com/pricing
  - name: Another Example API
    pricingUri: https://developers.example.com/pricing
Pola usług zewnętrznych
name
strunowy
(wymagany)
Nazwa usługi zewnętrznej potrzebnej do działania rozszerzenia
pricingUri
strunowy
(wymagany)
URI informacji o cenach usługi

Parametry konfigurowane przez użytkownika

Pola te definiują parametry, które rozszerzenie udostępnia użytkownikom do konfiguracji.

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
Pola parametrów
param
strunowy
(wymagany)
Nazwa parametru. Tej nazwy używasz do odwoływania się do wartości parametru w kodzie.
label
strunowy
(wymagany)
Krótki opis parametru. Wyświetlane użytkownikowi, gdy zostanie poproszony o podanie wartości parametru.
description
strunowy
(opcjonalny)

Szczegółowy opis parametru. Wyświetlane użytkownikowi, gdy zostanie poproszony o podanie wartości parametru.

Obsługuje Markdown.

example
strunowy
(opcjonalny)
Przykładowa wartość parametru.
default
strunowy
(opcjonalny)
Wartość domyślna parametru, jeśli użytkownik pozostawi wartość parametru pustą.
validationRegex
strunowy
(opcjonalny)
Wyrażenie regularne służące do sprawdzania wartości parametru skonfigurowanej przez użytkownika. Składnia Google RE2 .
validationErrorMessage
strunowy
(opcjonalny)
Komunikat o błędzie wyświetlany w przypadku niepowodzenia sprawdzania poprawności wyrażenia regularnego.
required
wartość logiczna
(opcjonalny)
Określa, czy użytkownik może przesłać pusty ciąg znaków, gdy zostanie poproszony o podanie wartości parametru. Domyślnie jest to true .
immutable
wartość logiczna
(opcjonalny)

Określa, czy użytkownik może zmienić wartość parametru po instalacji (np. w przypadku ponownej konfiguracji rozszerzenia). Domyślnie jest to false .

Uwaga: jeśli zdefiniujesz parametr „lokalizacja” dla wdrożonych funkcji rozszerzenia, ustaw to pole na wartość true .

type
strunowy
(opcjonalny)
Typ parametru. Specjalne typy parametrów mogą mieć dodatkowe wymagania lub inną prezentację interfejsu użytkownika. Zobacz poniższe sekcje.

Parametry do wyboru i wielokrotnego wyboru

Parametry do wyboru i wielokrotnego wyboru zachęcają użytkowników do wyboru z listy predefiniowanych opcji.

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
Pola parametrów wielokrotnego wyboru
type
strunowy

select lub multiselect

Określa, że ​​parametrem może być jedna wartość ( select ) lub kilka wartości ( multiselect ) wybranych z zestawu predefiniowanych opcji

options
lista opcji
(wymagany)

Opcje, spośród których może wybierać użytkownik

Pola opcji
value
strunowy
(wymagany)
Jedna z wartości, którą może wybrać użytkownik. Jest to wartość, którą otrzymasz, czytając wartość parametru w kodzie.
label
strunowy
(opcjonalny)
Krótki opis opcji do wyboru. Jeśli pominięto, domyślnie przyjmuje value .

Możliwość wyboru parametrów zasobów

Możliwość wyboru parametrów zasobów zachęca użytkowników do wybrania zasobu (instancji bazy danych, zasobnika pamięci itp.) z projektu.

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
Pola parametrów zasobu
type
strunowy

selectresource

Określa, że ​​parametr reprezentuje zasób projektu

resourceType
strunowy
(wymagany)

Typ zasobu, o wybranie którego użytkownik ma zostać poproszony.

Prawidłowe wartości:

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

Jednak obecnie tylko zasobniki Cloud Storage mają interfejs wyboru (inne typy zasobów są przedstawiane jako pola do wprowadzania tekstu w dowolnej formie).

Tajne parametry

Tajne wartości podane przez użytkownika (takie jak klucze API) są obsługiwane w różny sposób:

  • Wartości tajne są przechowywane przy użyciu Cloud Secret Manager. Dostęp do tych wartości mają tylko autoryzowani klienci (tacy jak zainstalowana instancja rozszerzenia).
  • Gdy użytkownicy zostaną poproszeni o podanie tych wartości, wprowadzone przez nich dane nie będą wyświetlane.
params:
  - param: PARAM_ID
    label: Short description of the parameter
    description: >-
      What is the secret value?
    type: secret
Tajne pola parametrów
type
strunowy

secret

Określa, że ​​parametr jest wartością tajną

Zasoby funkcji chmury

W tych polach deklarowane są funkcje chmury zawarte w rozszerzeniu. Składnia deklaracji zasobów wygląda nieco inaczej w przypadku funkcji pierwszej i drugiej generacji, które mogą współistnieć w rozszerzeniu.

Funkcje chmury pierwszej generacji

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
Pola zasobów
name
strunowy
(wymagany)

Przyjazna dla użytkownika nazwa eksportowanej funkcji.

Jeśli nie określisz właściwości entryPoint (patrz poniżej), ta wartość musi odpowiadać nazwie funkcji w kodzie źródłowym funkcji.

Ostateczna nazwa wdrożonej funkcji będzie miała następujący format: ext- extension-instance-id - name .

type
strunowy
(wymagany)
W przypadku zasobu funkcji pierwszej generacji: firebaseextensions.v1beta.function
description
strunowy
(wymagany)

Krótki opis zadania, jakie funkcja wykonuje dla rozszerzenia.

properties
(wymagany)

Właściwości Cloud Functions pierwszej generacji. Najważniejsze właściwości wymieniono poniżej, ale pełną listę można znaleźć w dokumentacji Cloud Functions .

Nieruchomości
location
(opcjonalny)

Lokalizacja, w której ma zostać wdrożona funkcja. Domyślnie us-central1

entryPoint
(opcjonalny)
Nazwa wyeksportowanej funkcji w kodzie źródłowym funkcji, której rozszerzenie powinno szukać. Domyślnie jest to wartość name powyżej.
sourceDirectory
(opcjonalny)

Katalog zawierający package.json w katalogu głównym. Plik kodu źródłowego funkcji musi znajdować się w tym katalogu. Domyślnie functions

Uwaga: main pole package.json określa plik kodu źródłowego funkcji (np index.js ).

timeout
(opcjonalny)

Maksymalny czas wykonania funkcji.

  • Wartość domyślna: 60s
  • Wartość maksymalna: 540s
availableMemoryMb
(opcjonalny)

Ilość pamięci w MB dostępna dla tej funkcji.

  • Wartość domyślna: 256
  • Prawidłowe wartości: 128 , 256 , 512 , 1024 i 2048
runtime
(Zalecana)

Środowisko uruchomieniowe funkcji.

httpsTrigger
Lub
eventTrigger
Lub
scheduleTrigger
Lub
taskQueueTrigger
(wymagany jest jeden z tych typów wyzwalania funkcji)
Zobacz temat Pisanie funkcji w chmurze, aby uzyskać szczegółowe informacje na temat każdego typu wyzwalacza.

Funkcje chmury drugiej generacji

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

Pola zasobów
name
strunowy
(wymagany)

Przyjazna dla użytkownika nazwa eksportowanej funkcji.

Jeśli nie określisz właściwości entryPoint (patrz poniżej), ta wartość musi odpowiadać nazwie funkcji w kodzie źródłowym funkcji.

Ostateczna nazwa wdrożonej funkcji będzie miała następujący format: ext- extension-instance-id - name .

type
strunowy
(wymagany)
W przypadku zasobu funkcji drugiej generacji: firebaseextensions.v1beta.v2function
description
strunowy
(wymagany)

Krótki opis zadania, jakie funkcja wykonuje dla rozszerzenia.

properties
(wymagany)

Właściwości Cloud Functions drugiej generacji. Najważniejsze właściwości wymieniono poniżej, ale pełną listę można znaleźć w dokumentacji Cloud Functions .

Nieruchomości
location
(opcjonalny)

Lokalizacja, w której ma zostać wdrożona funkcja. Domyślnie us-central1

sourceDirectory
(opcjonalny)

Katalog zawierający package.json w katalogu głównym. Plik kodu źródłowego funkcji musi znajdować się w tym katalogu. Domyślnie functions

Uwaga: main pole package.json określa plik kodu źródłowego funkcji (np index.js ).

Istnieją również trzy pola typu obiektowego z własnymi właściwościami:

właściwości buildConfig
buildConfig.runtime
(Zalecana)

Środowisko uruchomieniowe funkcji.

buildConfig.entryPoint
(opcjonalny)
Nazwa wyeksportowanej funkcji w kodzie źródłowym funkcji, której rozszerzenie powinno szukać. Domyślnie jest to wartość name powyżej.
właściwości konfiguracji usługi
serviceConfig.timeoutSeconds
(opcjonalny)

Maksymalny czas wykonania funkcji.

  • Wartość domyślna: 60
  • Maksymalna wartość: 540
serviceConfig.availableMemory
(opcjonalny)
Ilość pamięci dostępnej dla funkcji. Domyślnie jest to 256M . Obsługiwane jednostki to k , M , G , Mi , Gi . Jeżeli nie podano żadnej jednostki, wartość jest interpretowana jako bajty.
właściwości eventTriggera
eventTrigger.eventType
(wymagany)
Typ zdarzenia, którego należy nasłuchiwać. Zobacz opcję Pisanie funkcji w chmurze, aby zapoznać się z rozszerzeniem typów zdarzeń dostępnych dla każdego produktu.
eventTrigger.eventFilters
(opcjonalny)
Filtry, które dodatkowo ograniczają zdarzenia do odsłuchania. Na przykład można nasłuchiwać tylko zdarzeń pasujących do określonego wzorca zasobu. Zobacz temat Pisanie funkcji w chmurze, aby zapoznać się z rozszerzeniem i uzyskać informacje na temat filtrowania każdego typu zdarzeń.
eventTrigger.channel
(opcjonalny)
Nazwa kanału powiązanego z wyzwalaczem w formacie projects/{project}/locations/{location}/channels/{channel} . Jeśli pominiesz tę właściwość, funkcja będzie nasłuchiwać zdarzeń na domyślnym kanale projektu.
eventTrigger.triggerRegion
(opcjonalny)
Wyzwalacz będzie odbierał tylko zdarzenia pochodzące z tego regionu. Może to być ten sam region co funkcja, inny region, wiele regionów lub region globalny. Jeśli nie zostanie podany, domyślnie znajduje się w tym samym regionie co funkcja.

Wydarzenia cyklu życia

Zdarzenia cyklu życia pozwalają określić funkcje, które będą uruchamiane, gdy użytkownik zainstaluje, zaktualizuje lub skonfiguruje wystąpienie Twojego rozszerzenia. Zobacz temat Obsługa zdarzeń cyklu życia rozszerzenia .

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
Pola zdarzeń cyklu życia
onInstall
(opcjonalny)

Określa funkcję uruchamianą, gdy użytkownik zainstaluje rozszerzenie.

Specyfikacja funkcji
function
strunowy
(wymagany)

Nazwa funkcji wyzwalanej przez kolejkę zadań, która obsłuży zdarzenie.

Ta funkcja musi być zadeklarowana w sekcji resources i mieć Zdefiniowano kolejkę zadań.

processingMessage
strunowy
(wymagany)
Komunikat wyświetlany w konsoli Firebase w trakcie wykonywania zadania.
onUpdate
(opcjonalny)

Określa funkcję uruchamianą, gdy użytkownik zaktualizuje rozszerzenie.

Specyfikacja funkcji
function
strunowy
(wymagany)

Nazwa funkcji wyzwalanej przez kolejkę zadań, która obsłuży zdarzenie.

Ta funkcja musi być zadeklarowana w sekcji resources i mieć Zdefiniowano kolejkę zadań.

processingMessage
strunowy
(wymagany)
Komunikat wyświetlany w konsoli Firebase w trakcie wykonywania zadania.
onConfigure
(opcjonalny)

Określa funkcję uruchamianą, gdy użytkownik ponownie skonfiguruje rozszerzenie.

Specyfikacja funkcji
function
strunowy
(wymagany)

Nazwa funkcji wyzwalanej przez kolejkę zadań, która obsłuży zdarzenie.

Ta funkcja musi być zadeklarowana w sekcji resources i mieć Zdefiniowano kolejkę zadań.

processingMessage
strunowy
(wymagany)
Komunikat wyświetlany w konsoli Firebase w trakcie wykonywania zadania.

Zdarzenia niestandardowe (Eventarc)

Zdarzenia niestandardowe to zdarzenia emitowane przez rozszerzenie, aby umożliwić użytkownikom wstawienie własnej logiki do rozszerzenia. Zobacz sekcję Eventarc w Dodawanie haków użytkownika do rozszerzenia .

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
Niestandardowe pola zdarzeń
type
strunowy
(wymagany)
Identyfikator typu zdarzenia. Utwórz identyfikator z 3–4 pól rozdzielanych kropkami: wymagane są pola identyfikatora wydawcy, nazwy rozszerzenia i nazwy wydarzenia; zalecane jest pole wersji. Wybierz unikalną i opisową nazwę wydarzenia dla każdego typu wydarzenia, które publikujesz.
description
strunowy
(wymagany)
Opis wydarzenia.