Plik specyfikacji rozszerzenia (extension.yaml) zawiera metadane rozszerzenia, deklaruje zasoby utworzone przez rozszerzenie oraz interfejsy API i dostęp wymagane przez rozszerzenie, a także definiuje wszelkie parametry konfigurowane przez użytkownika, które są udostępniane przez rozszerzenie.
Tabele na tej stronie zawierają opis pól dostępnych w extension.yamlpliku.
Podstawowe informacje i dane 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 | |||||||||
|---|---|---|---|---|---|---|---|---|---|
| nameciąg znaków (wymagany) | Identyfikator rozszerzenia. Może zawierać tylko małe litery, cyfry i łączniki; limit 40 znaków. Uwaga: ta wartość jest używana do generowania identyfikatora instancji rozszerzenia (który jest następnie używany do generowania nazw konta usługi rozszerzenia i zasobów specyficznych dla rozszerzenia). | ||||||||
| versionciąg znaków (wymagany) | Wersja rozszerzenia. Musi być zgodna z wersją semantyczną (np. 1.2.0). | ||||||||
| specVersionciąg znaków (wymagany) | Wersja specyfikacji Rozszerzeń w Firebase. Bieżąca wartość:  | ||||||||
| licensestring (opcjonalnie) | Licencja na rozszerzenie. Rozszerzenie musi być licencjonowane za pomocą  | ||||||||
| billingRequiredwartość logiczna (opcjonalnie) | Określa, czy usługi używane przez rozszerzenie wymagają konta rozliczeniowego Firebase w wersji płatnej. Zawsze ustawiona na  | ||||||||
| displayNamestring (opcjonalnie) | Przyjazna wyświetlana nazwa rozszerzenia (3–5 słów). Limit znaków: 40. | ||||||||
| descriptionstring (opcjonalnie) | Krótki opis zadania wykonywanego przez rozszerzenie (ok. 1 zdanie). | ||||||||
| iconstring (opcjonalnie) | Plik, który będzie używany jako ikona rozszerzenia na stronie  Ten plik musi być kwadratowym plikiem PNG o rozmiarach od 512 × 512 do 1024 × 1024 pikseli.
          Umieść plik w tym samym katalogu co  Podczas projektowania ikony rozszerzenia pamiętaj o tych wytycznych: 
 | ||||||||
| tagslista ciągów znaków (opcjonalnie) | Tagi, które pomogą użytkownikom odkryć Twoje rozszerzenie.
        Te tagi są powiązane z kategoriami w Centrum rozszerzeń: marketing,messaging,payments,search,shipping,social,utilities,ai | ||||||||
| sourceUrlstring (opcjonalnie) | Publiczny adres URL, pod którym można uzyskać dostęp do katalogu rozszerzeń. | ||||||||
| releaseNotesUrlstring (opcjonalnie) | Publiczny adres URL, pod którym można uzyskać dostęp do informacji o wersji rozszerzenia. | ||||||||
| authorjeden obiekt autora (opcjonalny) | Główny autor i osoba kontaktowa w sprawie rozszerzenia. author: authorName: Your Company email: extensions@example.com url: https://example.com/ 
 | ||||||||
| contributorslista obiektów autora (opcjonalnie) | Wszyscy dodatkowi współautorzy rozszerzenia. contributors: - authorName: Your Name - authorName: Another Contributor email: colleague@example.net url: https://github.com/their-org/ 
 | ||||||||
Interfejsy Firebase i Google Cloud API
Te pola określają interfejsy API Firebase i Google, których używa rozszerzenie. Gdy użytkownicy zainstalują rozszerzenie, 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 | |
|---|---|
| apiNameciąg znaków (wymagany) | Nazwa interfejsu API Google Musi odpowiadać polu Nazwa usługi na stronie przeglądu każdego interfejsu API (przykład) w bibliotece interfejsów API Google Cloud. | 
| reasonciąg znaków (wymagany) | Krótki opis, dlaczego rozszerzenie musi korzystać z tego interfejsu API | 
Role uprawnień
Te pola określają role Cloud IAM wymagane przez rozszerzenie. Do konta usługi utworzonego na potrzeby rozszerzenia zostaną przypisane te role.
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 | |
|---|---|
| roleciąg znaków (wymagany) | Nazwa roli uprawnień wymaganej do działania rozszerzenia Musi być jedną z obsługiwanych ról. | 
| reasonciąg znaków (wymagany) | Krótki opis, dlaczego rozszerzenie potrzebuje dostępu przyznanego przez tę rolę. | 
| resourcestring (opcjonalnie) | Ogranicz zakres roli do tego zasobu. Jeśli nie podasz tu żadnej wartości, zostanie użyta wartość domyślna  | 
Usługi zewnętrzne
Te pola określają usługi spoza Firebase i Google, z których korzysta rozszerzenie (zwykle interfejsy API REST). Platforma rozszerzeń Firebase nie udostępnia żadnych sposobów 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 | |
|---|---|
| nameciąg znaków (wymagany) | Nazwa usługi zewnętrznej wymaganej do działania rozszerzenia | 
| pricingUriciąg znaków (wymagany) | Identyfikator URI informacji o cenach usługi | 
Parametry konfigurowane przez użytkownika
Te pola 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 parametru | |
|---|---|
| paramciąg znaków (wymagany) | Nazwa parametru. Używasz tej nazwy, aby odwoływać się do wartości parametru w kodzie. | 
| labelciąg znaków (wymagany) | Krótki opis parametru. Wyświetlany użytkownikowi, gdy jest on proszony o podanie wartości parametru. | 
| descriptionstring (opcjonalnie) | Szczegółowy opis parametru. Wyświetlany użytkownikowi, gdy jest on proszony o podanie wartości parametru. Obsługuje Markdown. | 
| examplestring (opcjonalnie) | Przykładowa wartość parametru. | 
| defaultstring (opcjonalnie) | Wartość domyślna parametru, jeśli użytkownik pozostawi wartość parametru pustą. | 
| validationRegexstring (opcjonalnie) | Wyrażenie regularne do weryfikacji wartości parametru skonfigurowanej przez użytkownika. Składnia Google RE2 | 
| validationErrorMessagestring (opcjonalnie) | Komunikat o błędzie, który ma się wyświetlać, jeśli weryfikacja wyrażenia regularnego się nie powiedzie. | 
| requiredwartość logiczna (opcjonalnie) | Określa, czy użytkownik może przesłać pusty ciąg znaków, gdy zostanie poproszony o podanie wartości parametru. Domyślna wartość to true. | 
| immutablewartość logiczna (opcjonalnie) | Określa, czy użytkownik może zmienić wartość parametru po instalacji (np. jeśli ponownie skonfiguruje rozszerzenie). Domyślna wartość to  Uwaga: jeśli zdefiniujesz parametr „location” dla wdrożonych funkcji rozszerzenia, ustaw to pole na  | 
| typestring (opcjonalnie) | Typ parametru. Specjalne typy parametrów mogą mieć dodatkowe wymagania lub inną prezentację w interfejsie. Zapoznaj się z sekcjami poniżej. | 
Parametry, które można wybrać pojedynczo lub wielokrotnie
Parametry, które można wybrać pojedynczo lub wielokrotnie, proszą użytkowników o wybranie 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 parametru jednokrotnego wyboru | |||||||
|---|---|---|---|---|---|---|---|
| typeciąg znaków | 
 Określa, że parametr może mieć jedną wartość ( | ||||||
| optionslista opcji (wymagany) | Opcje, z których użytkownik może wybierać. 
 | ||||||
Parametry zasobu, które można wybrać
Parametry zasobów, które można wybrać, proszą użytkowników o wybranie 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 zasobów | |
|---|---|
| typeciąg znaków | 
 Określa, że parametr reprezentuje zasób projektu. | 
| resourceTypeciąg znaków (wymagany) | Typ zasobu, który ma być wyświetlany użytkownikowi do wyboru. Prawidłowe wartości: 
 Jednak obecnie tylko kontenery Cloud Storage mają interfejs wyboru (inne typy zasobów są prezentowane jako pola tekstowe do wpisywania dowolnego tekstu). | 
Parametry tajne
Wartości tajne podane przez użytkownika (np. klucze interfejsu API) są obsługiwane w inny sposób:
- 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, wpisane przez nich dane nie są wyświetlane.
params:
  - param: PARAM_ID
    label: Short description of the parameter
    description: >-
      What is the secret value?
    type: secret
| Pola parametru tajnego | |
|---|---|
| typeciąg znaków | 
 Określa, że parametr jest wartością tajną. | 
Zasoby Cloud Functions
Te pola deklarują funkcje Cloud Functions zawarte w rozszerzeniu. Składnia deklaracji zasobu wygląda nieco inaczej w przypadku funkcji 1. i 2. generacji, które mogą współistnieć w rozszerzeniu.
Cloud Functions 1 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 | |||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| nameciąg znaków (wymagany) | Przyjazna dla użytkownika nazwa wyeksportowanej funkcji. Jeśli nie określisz właściwości  Ostateczna nazwa wdrożonej funkcji będzie miała format:  | ||||||||||||||||
| typeciąg znaków (wymagany) | W przypadku zasobu funkcji 1 generacji: firebaseextensions.v1beta.function | ||||||||||||||||
| descriptionciąg znaków (wymagany) | Krótki opis zadania, które funkcja wykonuje w przypadku rozszerzenia. | ||||||||||||||||
| properties(wymagane) | Właściwości Cloud Functions 1 generacji. Najważniejsze właściwości są wymienione poniżej, ale pełną listę znajdziesz w dokumentacji Cloud Functions. 
 | ||||||||||||||||
Cloud Functions 2 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 | |||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| nameciąg znaków (wymagany) | Przyjazna dla użytkownika nazwa wyeksportowanej funkcji. Jeśli nie określisz właściwości  Ostateczna nazwa wdrożonej funkcji będzie miała format:  | ||||||||||||||||||||||||||||
| typeciąg znaków (wymagany) | W przypadku zasobu funkcji 2 generacji: firebaseextensions.v1beta.v2function | ||||||||||||||||||||||||||||
| descriptionciąg znaków (wymagany) | Krótki opis zadania, które funkcja wykonuje w przypadku rozszerzenia. | ||||||||||||||||||||||||||||
| properties(wymagane) | Właściwości Cloud Functions 2 generacji. Najważniejsze właściwości są wymienione poniżej, ale pełną listę znajdziesz w dokumentacji Cloud Functions. 
 Dostępne są też 3 pola typu obiektu z własnymi właściwościami: 
 
 
 | ||||||||||||||||||||||||||||
Zdarzenia cyklu życia
Zdarzenia cyklu życia umożliwiają określanie funkcji, które będą uruchamiane, gdy użytkownik zainstaluje, zaktualizuje lub skonfiguruje instancję rozszerzenia. Zobacz 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ę, która jest uruchamiana, gdy użytkownik zainstaluje rozszerzenie. 
 | ||||||
| onUpdate(opcjonalnie) | Określa funkcję, która jest uruchamiana, gdy użytkownik zaktualizuje rozszerzenie. 
 | ||||||
| onConfigure(opcjonalnie) | Określa funkcję, która jest uruchamiana, gdy użytkownik ponownie konfiguruje rozszerzenie. 
 | ||||||
Zdarzenia niestandardowe (Eventarc)
Zdarzenia niestandardowe to zdarzenia emitowane przez rozszerzenie, które umożliwiają użytkownikom wstawianie własnej logiki do rozszerzenia. Zapoznaj się z sekcją Eventarc w artykule Dodawanie do rozszerzenia funkcji wywoływanych przez użytkownika.
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 | |
|---|---|
| typeciąg znaków (wymagany) | Identyfikator typu zdarzenia. Utwórz identyfikator z 3–4 pól oddzielonych kropkami: identyfikator wydawcy, nazwa rozszerzenia i nazwa zdarzenia są wymagane, a pole wersji jest zalecane. Wybierz unikalną i opisową nazwę zdarzenia dla każdego publikowanego typu zdarzenia. | 
| descriptionciąg znaków (wymagany) | Opis zdarzenia. |