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ść: | ||||||||
license strunowy (opcjonalny) | Licencja na rozszerzenie. Twoje rozszerzenie musi być licencjonowane przy użyciu | ||||||||
billingRequired wartość logiczna (opcjonalny) | Określa, czy usługi używane przez rozszerzenie wymagają płatnego konta rozliczeniowego Firebase. Zawsze ustawione na | ||||||||
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 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 Projektując ikonę rozszerzenia, należy pamiętać o następujących wskazówkach:
| ||||||||
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/
| ||||||||
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/
|
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 |
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) | Domyślna wartość 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 Uwaga: jeśli zdefiniujesz parametr „lokalizacja” dla wdrożonych funkcji rozszerzenia, ustaw to pole na wartość |
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 | Określa, że parametrem może być jedna wartość ( | ||||||
options lista opcji (wymagany) | Opcje, spośród których może wybierać użytkownik
|
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 | 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:
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 | 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 Ostateczna nazwa wdrożonej funkcji będzie miała następujący format: | ||||||||||||||||
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 .
|
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 Ostateczna nazwa wdrożonej funkcji będzie miała następujący format: | ||||||||||||||||||||||||||||
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 .
Istnieją również trzy pola typu obiektowego z własnymi właściwościami:
|
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 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.
| ||||||
onUpdate (opcjonalny) | Określa funkcję uruchamianą, gdy użytkownik zaktualizuje rozszerzenie.
| ||||||
onConfigure (opcjonalny) | Określa funkcję uruchamianą, gdy użytkownik ponownie skonfiguruje rozszerzenie.
|
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. |