Dokumentacja rozszerzeniaextension.yaml

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

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

podstawowe informacje i informacje umożliwiające identyfikację;

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/
Pola podstawowe
name
string
(wymagany)

Identyfikator rozszerzenia.

Może zawierać tylko małe litery, cyfry i łączniki; limit 40 znaków.

Uwaga: ta wartość służy do generowania identyfikatora instancji rozszerzenia (który służy do generowania nazw konta usługi rozszerzenia oraz zasobów związanych z tym rozszerzeniem).

version
string
(wymagany)

Wersja rozszerzenia.

Musi być zgodna z wersją semver (np. 1.2.0).

specVersion
string
(wymagany)

Wersja specyfikacji Rozszerzeń w Firebase.

Bieżąca wartość: v1beta

license
string
(opcjonalnie)

Licencja na rozszerzenie.

Rozszerzenie musi mieć licencję uzyskaną za pomocą Apache-2.0.

billingRequired
boolean
(opcjonalna)

Czy usługi używane przez rozszerzenie wymagają płatnego konta rozliczeniowego Firebase.

Zawsze ustawiona na true.

displayName
string
(opcjonalnie)

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

Limit znaków: 40.

description
ciąg znaków
(opcjonalnie)
Krótki opis zadania wykonywanego przez rozszerzenie (ok. 1 zdanie).
icon
string
(opcjonalnie)

Plik do użycia jako ikona rozszerzenia w extensions.dev i na konsoli Firebase.

Plik musi być kwadratowym obrazem PNG o rozmiarach od 512 x 512 do 1024 x 1024 piksele. Umieść plik w tym samym katalogu co extension.yaml. Nie możesz podać podkatalogu.

Podczas projektowania ikony rozszerzenia pamiętaj o tych wytycznych:

  • Wybierz kolory tła i elementów graficznych odpowiednie dla Twojej marki.
  • Używaj prostych kolorów ikon, używając tylko 2 kolorów. Użycie wielu kolorów może sprawić, że ikona będzie przytłaczająca.
  • Z tego samego powodu nie używaj w niej gradientów. Gradienty są trudne do rozróżnienia w małej skali i sprawiają, że ikona jest wizualnie skomplikowana.
  • Używaj prostych, unikalnych obrazów, które informują o funkcjonalności rozszerzenia.
  • Jeśli Twoja firma tworzy wiele rozszerzeń, nie używaj logo jako ikony. Użytkownicy będą mieli trudności z odróżnieniem Twoich rozszerzeń.
  • Upewnij się, że grafika jest wyrazista i czytelna. Nie używaj delikatnych lub skomplikowanych grafik, które nie będą dobrze wyglądać w mniejszych rozmiarach.
  • Nie używaj słów, które opisują działanie rozszerzenia. Tekst jest często nieczytelny w mniejszych rozmiarach.
tags
lista ciągów znaków
(opcjonalnie)
tagi, które ułatwiają użytkownikom znalezienie rozszerzenia; Te tagi są mapowane na kategorie w Centrum rozszerzeń: marketing, messaging, payments, search, shipping, social, utilities, ai
sourceUrl
string
(opcjonalnie)
Publiczny adres URL, pod którym można uzyskać dostęp do katalogu rozszerzeń.
releaseNotesUrl
ciąg znaków
(opcjonalnie)
Publiczny adres URL, pod którym można znaleźć informacje o wersji rozszerzenia.
author
jeden obiekt author
(opcjonalnie)

Główny autor i osoba kontaktowa rozszerzenia.

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

Imię i nazwisko autora.

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

email
ciąg znaków
(opcjonalnie)
Adres e-mail autora.
url
ciąg znaków
(opcjonalnie)
Publiczny adres URL, pod którym można uzyskać dostęp do informacji o autorze.
contributors
lista obiektów autor
(opcjonalnie)

Dodatkowych autorów pracujących nad rozszerzeniem.

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

Imię i nazwisko autora.

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

email
ciąg znaków
(opcjonalnie)
Adres e-mail autora.
url
ciąg znaków
(opcjonalnie)
Publiczny adres URL, pod którym można uzyskać dostęp do informacji o autorze.

Firebase i interfejsy Google Cloud API

Te pola określają interfejsy Firebase i Google, których używa rozszerzenie. Po zainstalowaniu rozszerzenia użytkownicy mogą automatycznie włączyć te interfejsy 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 interfejsu API
apiName
ciąg znaków
(wymagany)

Nazwa interfejsu API Google

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

reason
string
(wymagany)
krótki opis, dlaczego rozszerzenie musi używać tego interfejsu API;

Role uprawnień

Te pola określają role Cloud IAM wymagane przez rozszerzenie. Te role są przypisywane do konta usługi utworzonego dla rozszerzenia.

Możesz 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 roli
role
string
(wymagany)

Nazwa roli uprawnień, która jest wymagana do działania rozszerzenia

Musi być jedną z obsługiwanych ról

reason
ciąg znaków
(wymagany)
Krótki opis, dlaczego rozszerzenie potrzebuje dostępu przyznanego przez tę rolę
resource
string
(opcjonalnie)

Ogranicz zakres roli do tego zasobu.

Jeśli pominiesz ten parametr, zostanie użyta wartość domyślna projects/${project_id}. Zapoznaj się z artykułem Ograniczanie zakresu ról.

Usługi zewnętrzne

Te pola określają usługi inne niż Firebase i inne niż Google, których używa rozszerzenie (zwykle interfejsy API REST). Platforma Firebase Extensions nie udostępnia żadnych środków do automatycznego włączania ani autoryzacji tych usług.

externalServices:
  - name: Example API
    pricingUri: https://developers.example.com/pricing
  - name: Another Example API
    pricingUri: https://developers.example.com/pricing
Pola dotyczące usług zewnętrznych
name
string
(wymagany)
Nazwa usługi zewnętrznej, która jest wymagana do działania rozszerzenia.
pricingUri
string
(wymagany)
Identyfikator URI informacji o cenach usługi

Parametry konfigurowalne przez użytkownika

Te pola określają 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
string
(wymagany)
Nazwa parametru. Ta nazwa służy do odwoływania się do wartości parametru w kodzie.
label
string
(wymagany)
Krótki opis parametru. Wyświetla się użytkownikowi, gdy zostanie poproszony o podanie wartości parametru.
description
string
(opcjonalnie)

Szczegółowy opis parametru. Wyświetla się użytkownikowi, gdy wyświetli się prośba o podanie wartości parametru.

Obsługuje Markdown.

example
string
(opcjonalnie)
Przykładowa wartość parametru.
default
string
(opcjonalnie)
wartość domyślna parametru, jeśli użytkownik pozostawi jego wartość pustą;
validationRegex
string
(opcjonalnie)
Wyrażenie regularne do weryfikacji wartości parametru skonfigurowanej przez użytkownika. składnia Google RE2.
validationErrorMessage
string
(opcjonalnie)
Komunikat o błędzie, który ma się wyświetlić, jeśli weryfikacja wyrażenia regularnego się nie powiedzie.
required
boolean
(opcjonalnie)
Określa, czy użytkownik może przesłać pusty ciąg znaków, gdy pojawi się prośba o podanie wartości parametru. Domyślna wartość to true.
immutable
boolean
(opcjonalna)

Określa, czy użytkownik może zmienić wartość parametru po instalacji (np. jeśli zmodyfikuje konfigurację rozszerzenia). Domyślna wartość to false.

Uwaga: jeśli określisz parametr „lokalizacja” dla wdrożonych funkcji rozszerzenia, ustaw w tym polu wartość true.

type
string
(opcjonalnie)
Typ parametru. Specjalne typy parametrów mogą mieć dodatkowe wymagania lub inną prezentację w interfejsie. Zapoznaj się z sekcjami poniżej.

Parametry do wyboru i wielokrotnego wyboru

Parametry do wyboru lub do wyboru informują użytkownika o wyborze opcji z listy wstępnie zdefiniowanych 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 jednokrotnego wyboru
type
ciąg znaków

select lub multiselect

Określa, że parametr może mieć jedną wartość (select) lub kilka wartości (multiselect) wybranych z zestawu wstępnie zdefiniowanych opcji.

options
list of options
(wymagany)

opcje, które użytkownik może wybrać;

Pola opcji
value
string
(wymagany)
Jedna z wartości, które może wybrać użytkownik. Jest to wartość, którą otrzymujesz, gdy odczytasz wartość parametru w kodzie.
label
ciąg znaków
(opcjonalnie)
Krótki opis opcji do wyboru. Jeśli go pominiesz, domyślnie tag będzie w wersji VAST 2.0.

Parametry zasobów do wyboru

Parametry zasobów do wyboru umożliwiają użytkownikom wybranie zasobu (instancja bazy danych, zasobnik danych itp.) z ich 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
ciąg znaków

selectresource

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

resourceType
string
(wymagany)

Typ zasobu, który użytkownik ma wybrać.

Prawidłowe wartości:

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

Obecnie interfejs wyboru mają tylko zasobniki Cloud Storage (inne typy zasobów są przedstawiane jako pola tekstowe do wprowadzania dowolnego tekstu).

Parametry obiektu tajnego

Wartości tajne podawane przez użytkownika (np. klucze interfejsu API) są obsługiwane inaczej:

  • Wartości tajne są przechowywane w usłudze Cloud Secret Manager. Dostęp do tych wartości mają tylko autoryzowani klienci (np. zainstalowana instancja rozszerzenia).
  • Gdy użytkownicy są proszeni o podanie tych wartości, ich dane nie są wyświetlane.
params:
  - param: PARAM_ID
    label: Short description of the parameter
    description: >-
      What is the secret value?
    type: secret
Pola parametrów tajnych
type
ciąg znaków

secret

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

Zasoby w Cloud Functions

Te pola deklarują funkcje Cloud Functions zawarte w rozszerzeniu. Składnia deklaracji zasobów różni się nieco w przypadku funkcji 1 generacji i 2 generacji, które mogą współistnieć w rozszerzeniu.

Funkcje w Cloud Functions 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
string
(wymagany)

Przyjazna dla użytkownika nazwa wyeksportowanej funkcji.

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

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

type
ciąg znaków
(wymagany)
W przypadku zasobu funkcji 1 generacji:firebaseextensions.v1beta.function
description
string
(wymagany)

Krótki opis zadania wykonywanego przez funkcję w przypadku rozszerzenia.

properties
(wymagane)

Właściwości Cloud Functions pierwszej generacji. Najważniejsze właściwości są wymienione poniżej. Pełną listę znajdziesz w dokumentacji Cloud Functions.

Usługi
location
(opcjonalnie)

Miejsce, w którym chcesz wdrożyć funkcję. Domyślna wartość to:us-central1

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

Katalog, który zawiera plik package.json w katalogu głównym. Plik z kodem źródłowym funkcji musi znajdować się w tym katalogu. Domyślna wartość to functions

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

timeout
(opcjonalnie)

Maksymalny czas wykonania funkcji.

  • Domyślnie: 60s
  • Maksymalna wartość: 540s
availableMemoryMb
(opcjonalnie)

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

  • Domyślnie: 256
  • Prawidłowe wartości to: 128, 256, 512, 1024 i 2048.
runtime
(zalecane)

Środowisko wykonawcze funkcji.

httpsTrigger
lub
eventTrigger
lub
scheduleTrigger
lub
taskQueueTrigger
(wymagany jest jeden z tych typów reguł funkcji)
Szczegółowe informacje o poszczególnych typach reguł znajdziesz w artykule Tworzenie funkcji Cloud Functions dla rozszerzenia.

Cloud Functions 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
string
(wymagany)

Przyjazna dla użytkownika nazwa wyeksportowanej funkcji.

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

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

type
string
(wymagany)
W przypadku zasobu funkcji 2 generacji:firebaseextensions.v1beta.v2function
description
string
(wymagany)

Krótki opis zadania wykonywanego przez funkcję w przypadku rozszerzenia.

properties
(wymagane)

Właściwości Cloud Functions (2 generacji). Najważniejsze właściwości wymieniono poniżej, ale ich pełną listę znajdziesz w dokumentacji funkcji Cloud Functions.

Usługi
location
(opcjonalnie)

Miejsce, w którym chcesz wdrożyć funkcję. Domyślna wartość to:us-central1

sourceDirectory
(opcjonalnie)

Katalog, który zawiera plik package.json w katalogu głównym. Plik z kodem źródłowym funkcji musi znajdować się w tym katalogu. Domyślna wartość to functions

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

Istnieją też 3 pola typu obiektu z własnymi właściwościami:

Właściwości buildConfig
buildConfig.runtime
(zalecane)

Środowisko wykonawcze funkcji.

buildConfig.entryPoint
(opcjonalnie)
Nazwa wyeksportowanej funkcji w kodzie źródłowym funkcji, której rozszerzenie powinno szukać. Domyślnie jest ustawiana wartość name (patrz wyżej).
Właściwości serviceConfig
serviceConfig.timeoutSeconds
(opcjonalnie)

Maksymalny czas wykonania funkcji.

  • Domyślnie: 60
  • Maksymalna wartość: 540
serviceConfig.availableMemory
(opcjonalnie)
Ilość pamięci dostępnej dla funkcji. Domyślna wartość to 256M. Obsługiwane jednostki to k, M, G, Mi i Gi. Jeśli nie podasz jednostki, wartość zostanie zinterpretowana jako bajty.
Właściwości eventTrigger
eventTrigger.eventType
(wymagane)
Typ zdarzenia, na które ma być nasłuchiwany. Typy zdarzeń dostępne w poszczególnych usługach znajdziesz w artykule Tworzenie funkcji Cloud Functions w rozszerzeniu.
eventTrigger.eventFilters
(opcjonalnie)
Filtry, które dodatkowo ograniczają zdarzenia do nasłuchiwania. Można na przykład nasłuchiwać tylko zdarzeń pasujących do określonego wzorca zasobów. Informacje o filtrowaniu poszczególnych typów zdarzeń znajdziesz w artykule Tworzenie funkcji Cloud Functions w rozszerzeniu.
eventTrigger.channel
(opcjonalnie)
Nazwa kanału powiązanego z aktywatorem w formacie projects/{project}/locations/{location}/channels/{channel}. Jeśli pominiesz tę właściwość, funkcja będzie nasłuchiwać zdarzeń na kanale domyślnym projektu.
eventTrigger.triggerRegion
(opcjonalnie)
Reguła będzie otrzymywać tylko zdarzenia pochodzące z tego regionu. Może to być ten sam region co funkcja, inny region, region wielostrefowy lub region globalny. Jeśli nie zostanie podany, zostanie użyty ten sam region co w przypadku funkcji.

Zdarzenia cyklu życia

Zdarzenia cyklu życia umożliwiają określenie funkcji, które będą wykonywane, gdy użytkownik zainstaluje, zaktualizuje lub skonfiguruje instancję rozszerzenia. Zobacz, jak obsługiwać zdarzenia 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 zdarzenia cyklu życia
onInstall
(opcjonalnie)

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

Specyfikacja funkcji
function
string
(wymagany)

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

Ta funkcja musi być zadeklarowana w sekcji resources i mieć zdefiniowaną taskQueue.

processingMessage
string
(wymagany)
Komunikat wyświetlany w konsoli Firebase, gdy zadanie jest w toku.
onUpdate
(opcjonalnie)

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

Specyfikacja funkcji
function
string
(wymagany)

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

Ta funkcja musi być zadeklarowana w sekcji resources i mieć zdefiniowaną taskQueue.

processingMessage
string
(wymagany)
Komunikat wyświetlany w konsoli Firebase, gdy zadanie jest w toku.
onConfigure
(opcjonalnie)

Określa funkcję, która jest wykonywana, gdy użytkownik ponownie skonfiguruje rozszerzenie.

Specyfikacja funkcji
function
string
(wymagany)

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

Ta funkcja musi być zadeklarowana w sekcji resources i mieć zdefiniowaną taskQueue.

processingMessage
string
(wymagany)
Komunikat wyświetlany w konsoli Firebase, gdy zadanie jest w toku.

Zdarzenia niestandardowe (Eventarc)

Zdarzenia niestandardowe to zdarzenia emitowane przez Twoje rozszerzenie, które umożliwiają użytkownikom wstawianie do niego własnej logiki. Zapoznaj się z sekcją Eventarc w artykule Dodawanie do rozszerzenia elementów łączących użytkowników.

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
Pola zdarzeń niestandardowych
type
ciąg znaków
(wymagany)
Identyfikator typu zdarzenia. Utwórz identyfikator z 3–4 oddzielonych kropką pól: pola identyfikatora wydawcy, nazwy rozszerzenia i nazwy zdarzenia są wymagane, pole wersji jest zalecane. Wybierz unikalną i opisową nazwę zdarzenia dla każdego publikowanego typu zdarzenia.
description
string
(wymagany)
Opis zdarzenia.