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.

W tabelach na tej stronie opisujemy pola dostępne w przypadku pliku extension.yaml.

Podstawowe 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
ciąg znaków
(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 konta usługi rozszerzenia oraz zasobów związanych z tym rozszerzeniem).

version
ciąg znaków
(wymagany)

Wersja rozszerzenia.

Musi być zgodna z obsługą wersji semver (np. 1.2.0).

specVersion
ciąg znaków
(wymagany)

Wersja specyfikacji rozszerzeń w Firebase.

Bieżąca wartość: v1beta

license
ciąg znaków
(opcjonalnie)

Licencja na rozszerzenie.

Rozszerzenie musi być licencjonowane przez: Apache-2.0.

billingRequired
boolean
(opcjonalnie)

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

Zawsze ustawiona na true.

displayName
ciąg znaków
(opcjonalnie)

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

Obowiązuje limit 40 znaków.

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

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

Ten plik musi być kwadratowym plikiem PNG o wymiarach od 512 x 512 do 1024 x 1024 pikseli. Umieść plik w tym samym katalogu co extension.yaml. Nie możesz określić podkatalogu.

Projektując ikonę rozszerzenia, pamiętaj o tych wskazówkach:

  • Wybierz kolory tła i grafiki, które są odpowiednie dla Twojej marki.
  • Używaj prostych kolorów ikon, używając tylko 2 kolorów. Wiele kolorów może sprawić, że Twoja ikona będzie przytłaczająca.
  • Z tego samego powodu nie używaj w niej gradientów. W małym rozmiarze gradienty są trudne do rozpoznania i sprawiają, że ikona jest skomplikowana.
  • Używaj prostych, unikalnych zdjęć prezentujących funkcje rozszerzenia.
  • Jeśli Twoja firma tworzy wiele rozszerzeń, nie używaj logo jako ikony. Użytkownicy będą mieć problem z odróżnieniem rozszerzeń.
  • Postaraj się, aby grafika była wyrazista i pogrubiona. Nie używaj delikatnych ani wyszukanych dzieł sztuki, które nie będą dobrze wyglądać w mniejszym rozmiarze.
  • Nie używaj słów, które opisują działanie rozszerzenia. Przy mniejszych rozmiarach tekst jest często nieczytelny.
tags
lista ciągó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
ciąg znaków
(opcjonalnie)
Publiczny adres URL, pod którym można uzyskać dostęp do katalogu rozszerzenia.
releaseNotesUrl
ciąg znaków
(opcjonalnie)
Publiczny adres URL, pod którym można uzyskać dostęp do informacji o wersji rozszerzenia.
author
1 obiekt autora
(opcjonalnie)

Główny autor i osoba kontaktowa ds. rozszerzenia.

author:
  authorName: Your Company
  email: extensions@example.com
  url: https://example.com/
Pola autora
authorName
ciąg znaków
(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 autora
(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
ciąg znaków
(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.

Interfejsy API Firebase i Google Cloud

Te pola określają interfejsy API Firebase i Google używane przez rozszerzenie. Gdy użytkownicy instalują to rozszerzenie, mogą automatycznie włączać 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
ciąg znaków
(wymagany)
Krótki opis tego, dlaczego rozszerzenie musi używać tego interfejsu API

Role uprawnień

Te pola określają role Cloud IAM wymagane przez rozszerzenie. Te role zostaną przypisane kontu usługi udostępnionemu rozszerzeniu.

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 ról
role
ciąg znaków
(wymagany)

Nazwa roli uprawnień niezbędnej do działania rozszerzenia

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

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

Ogranicz zakres roli do tego zasobu.

W przypadku pominięcia tej opcji stosowana jest domyślna wartość projects/${project_id}. Zobacz Zmniejszanie zakresu ról.

Usługi zewnętrzne

Te pola określają usługi spoza Firebase i Google, z których korzysta rozszerzenie (zwykle są to interfejsy API typu REST). Platforma Rozszerzenia w Firebase nie umożliwia automatycznego włączania tych usług ani przeprowadzania autoryzacji.

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
ciąg znaków
(wymagany)
Nazwa usługi zewnętrznej niezbędnej do działania rozszerzenia
pricingUri
ciąg znaków
(wymagany)
Identyfikator URI informacji o cenach usługi

Parametry konfigurowane przez użytkownika

Pola te określają parametry, które rozszerzenie udostępnia użytkownikom do skonfigurowania.

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

Szczegółowy opis parametru. Wyświetlany użytkownikowi, gdy zobaczy prośbę o podanie wartości parametru.

Obsługuje format Markdown.

example
ciąg znaków
(opcjonalnie)
Przykładowa wartość parametru.
default
ciąg znaków
(opcjonalnie)
Domyślna wartość parametru, gdy użytkownik pozostawi jego wartość pustą.
validationRegex
ciąg znaków
(opcjonalnie)
Wyrażenie regularne do weryfikacji wartości parametru skonfigurowanej przez użytkownika. składni Google RE2.
validationErrorMessage
ciąg znaków
(opcjonalnie)
Komunikat o błędzie wyświetlany w przypadku niepowodzenia weryfikacji wyrażenia regularnego.
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
(opcjonalnie)

Określa, czy użytkownik może zmienić wartość parametru po instalacji (np. jeśli ponownie skonfiguruje rozszerzenie). Domyślna wartość to false.

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

type
ciąg znaków
(opcjonalnie)
Typ parametru. Specjalne typy parametrów mogą mieć dodatkowe wymagania lub różnić się sposób prezentacji interfejsu. Więcej informacji znajdziesz w sekcjach poniżej.

Parametry, które można wybrać i w sposób umożliwiający ich wybór

Parametry do wyboru lub do wyboru informują użytkownika o wyborze 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 być 1 wartością (select) lub kilkoma wartościami (multiselect) z zestawu wstępnie zdefiniowanych opcji

options
Lista opcji
(wymagana)

Opcje, które użytkownik może wybrać

Pola opcji
value
ciąg znaków
(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, którą można wybrać. Jeśli go pominiesz, domyślna wartość to value.

Parametry zasobu do wyboru

Parametry zasobu do wyboru wyświetlają użytkownikom prośbę o wybranie zasobu (instancji bazy danych, zasobnika na dane 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 zasobów
type
ciąg znaków

selectresource

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

resourceType
ciąg znaków
(wymagany)

Typ zasobu, o który użytkownik prosi o wybranie.

Prawidłowe wartości:

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

Obecnie jednak tylko zasobniki Cloud Storage mają interfejs wyboru (inne typy zasobów są wyświetlane jako pola do wprowadzania tekstu).

Parametry obiektu tajnego

Wartości obiektów tajnych podanych przez użytkownika (na przykład kluczy interfejsu API) są obsługiwane w inny sposób:

  • Wartości obiektów tajnych są przechowywane przy użyciu usługi Cloud Secret Manager. Dostęp do tych wartości mają tylko autoryzowane klienty (takie jak zainstalowane wystąpienie rozszerzenia).
  • Gdy użytkownicy są proszeni o ich podanie, dane wejściowe 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 obiektu tajnego
type
ciąg znaków

secret

Określa, że parametr jest wartością obiektu tajnego

Zasoby w Cloud Functions

Te pola deklarują funkcje w Cloud Functions dostępne w rozszerzeniu. Składnia deklaracji zasobów wygląda nieco inaczej 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
ciąg znaków
(wymagany)

Przyjazna dla użytkownika nazwa wyeksportowanej funkcji.

Jeśli nie określisz właściwości entryPoint (zobacz 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 taki format: ext-extension-instance-id-name.

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

Krótki opis zadania wykonywanego przez funkcję na rozszerzeniu.

properties
(wymagane)

Usługi w 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)

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

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

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

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

timeout
(opcjonalnie)

Maksymalny czas wykonania funkcji.

  • Domyślnie: 60s
  • Wartość maksymalna: 540s
availableMemoryMb
(opcjonalnie)

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

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

Środowisko wykonawcze funkcji.

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

Funkcje w 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
ciąg znaków
(wymagany)

Przyjazna dla użytkownika nazwa wyeksportowanej funkcji.

Jeśli nie określisz właściwości entryPoint (zobacz 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 taki format: ext-extension-instance-id-name.

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

Krótki opis zadania wykonywanego przez funkcję na rozszerzeniu.

properties
(wymagane)

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

Usługi
location
(opcjonalnie)

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

sourceDirectory
(opcjonalnie)

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

Uwaga: pole main package.json określa plik z kodem źródłowym 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 powinno szukać rozszerzenie. Domyślnie jest to wartość podana powyżej (name).
właściwości serviceConfig
serviceConfig.timeoutSeconds
(opcjonalnie)

Maksymalny czas wykonania funkcji.

  • Domyślnie: 60
  • Wartość maksymalna: 540
serviceConfig.availableMemory
(opcjonalnie)
Ilość pamięci dostępnej dla funkcji. Domyślna wartość to 256M. Obsługiwane jednostki to k, M, G, Mi oraz Gi. Jeśli nie podasz żadnej jednostki, wartość zostanie zinterpretowana jako bajty.
właściwości eventTrigger
eventTrigger.eventType
(wymagane)
Typ nasłuchiwanego zdarzenia. Informacje o typach zdarzeń dostępnych w poszczególnych usługach znajdziesz w sekcji Zapisywanie funkcji w Cloud Functions dla rozszerzenia.
eventTrigger.eventFilters
(opcjonalnie)
Filtry, które jeszcze bardziej ograniczają nasłuchiwane zdarzenia. 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 sekcji Zapisywanie funkcji w Cloud Functions dla rozszerzenia.
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ń w domyślnym kanale 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 lub wiele regionów albo region globalny. Jeśli region nie zostanie podany, domyślnie jest używany ten sam region co funkcja.

Zdarzenia cyklu życia

Zdarzenia cyklu życia pozwalają określić funkcje, które będą uruchamiane, gdy użytkownik zainstaluje, zaktualizuje lub skonfiguruje instancję rozszerzenia. Zapoznaj się z sekcją 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
(opcjonalnie)

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

Specyfikacja funkcji
function
ciąg znaków
(wymagany)

Nazwa funkcji aktywowanej przez kolejkę zadań, która obsługuje zdarzenie.

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

processingMessage
ciąg znaków
(wymagany)
Komunikat wyświetlany w konsoli Firebase w trakcie wykonywania zadania.
onUpdate
(opcjonalnie)

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

Specyfikacja funkcji
function
ciąg znaków
(wymagany)

Nazwa funkcji aktywowanej przez kolejkę zadań, która obsługuje zdarzenie.

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

processingMessage
ciąg znaków
(wymagany)
Komunikat wyświetlany w konsoli Firebase w trakcie wykonywania zadania.
onConfigure
(opcjonalnie)

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

Specyfikacja funkcji
function
ciąg znaków
(wymagany)

Nazwa funkcji aktywowanej przez kolejkę zadań, która obsługuje zdarzenie.

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

processingMessage
ciąg znaków
(wymagany)
Komunikat wyświetlany w konsoli Firebase w trakcie wykonywania zadania.

Zdarzenia niestandardowe (Eventarc)

Zdarzenia niestandardowe to zdarzenia wysyłane przez rozszerzenie, które umożliwiają użytkownikom wstawianie do niego własnych reguł logicznych. 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 pól rozdzielonych kropkami. Wymagane są pola Identyfikator wydawcy, Nazwa rozszerzenia i Nazwa zdarzenia. Pole wersji jest zalecane. Dla każdego opublikowanego typu zdarzenia wybierz unikalną i opisową nazwę zdarzenia.
description
ciąg znaków
(wymagany)
Opis zdarzenia.