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 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/
| 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ść: |
||||||||
licenseciąg znaków (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 |
||||||||
displayNameciąg znaków (opcjonalnie) |
Przyjazna wyświetlana nazwa rozszerzenia (3–5 słów). Limit znaków: 40. |
||||||||
descriptionciąg znaków (opcjonalnie) |
Krótki opis zadania wykonywanego przez rozszerzenie (ok. 1 zdanie). | ||||||||
iconciąg znaków (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
|
||||||||
sourceUrlciąg znaków (opcjonalnie) |
Publiczny adres URL, pod którym można uzyskać dostęp do katalogu rozszerzeń. | ||||||||
releaseNotesUrlciąg znaków (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 API Firebase i Google Cloud
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ę. |
resourceciąg znaków (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 inne niż 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. |
descriptionciąg znaków (opcjonalnie) |
Szczegółowy opis parametru. Wyświetlany użytkownikowi, gdy jest on proszony o podanie wartości parametru. Obsługuje Markdown. |
exampleciąg znaków (opcjonalnie) |
Przykładowa wartość parametru. |
defaultciąg znaków (opcjonalnie) |
Wartość domyślna parametru, jeśli użytkownik pozostawi wartość parametru pustą. |
validationRegexciąg znaków (opcjonalnie) |
Wyrażenie regularne do weryfikacji wartości parametru skonfigurowanej przez użytkownika. Składnia Google RE2 |
validationErrorMessageciąg znaków (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 |
typeciąg znaków (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 zasobów, 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 wydarzenia. |