Riferimento per extension.yaml

Il file delle specifiche della tua estensione ( extension.yaml ) contiene i metadati della tua estensione, dichiara le risorse create dall'estensione e le API e l'accesso richiesto dall'estensione e definisce tutti i parametri configurati dall'utente forniti dall'estensione.

Le tabelle in questa pagina descrivono i campi disponibili per un file extension.yaml .

Informazioni di base e identificative

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/
Campi di base
name
corda
(necessario)

Identificatore dell'estensione.

Può contenere solo lettere minuscole, numeri e trattini; Limite di 40 caratteri.

Nota: questo valore viene utilizzato per generare l'ID istanza dell'estensione (che viene quindi utilizzato per generare i nomi dell'account di servizio dell'estensione e delle risorse specifiche dell'estensione).

version
corda
(necessario)

Versione dell'estensione.

Deve seguire il controllo delle versioni semver (ad esempio, 1.2.0).

specVersion
corda
(necessario)

Versione della specifica delle estensioni Firebase.

Valore attuale: v1beta

license
corda
(opzionale)

Licenza per l'estensione.

La tua estensione deve essere concessa in licenza utilizzando Apache-2.0 .

billingRequired
booleano
(opzionale)

Indica se i servizi utilizzati dall'estensione richiedono un account di fatturazione Firebase di livello a pagamento.

Impostato sempre su true .

displayName
corda
(opzionale)

Nome visualizzato descrittivo per l'estensione (3-5 parole).

Limite di 40 caratteri.

description
corda
(opzionale)
Breve descrizione dell'attività eseguita dall'estensione (~1 frase).
icon
corda
(opzionale)

File da utilizzare come icona della tua estensione su extensions.dev e sulla console Firebase.

Questo file deve essere un PNG quadrato tra 512x512 e 1024x1024 pixel. Inserisci il file nella stessa directory di extension.yaml ; non è possibile specificare una sottodirectory.

Tieni a mente le seguenti linee guida quando progetti un'icona per la tua estensione:

  • Seleziona i colori dello sfondo e della grafica appropriati per il tuo marchio.
  • Mantieni semplici i colori delle tue icone, utilizzando solo 2 colori. Più colori possono rendere la tua icona visivamente travolgente.
  • Per lo stesso motivo, non utilizzare gradienti nella tua icona. Le sfumature sono difficili da distinguere a piccole dimensioni e rendono l'icona visivamente complessa.
  • Utilizza immagini semplici e uniche che comunichino la funzionalità della tua estensione.
  • Se la tua azienda crea più estensioni, non utilizzare il tuo logo come icona. Gli utenti avranno difficoltà a distinguere tra le tue estensioni.
  • Rendi l'opera d'arte grafica e audace. Non utilizzare disegni delicati o elaborati, che non verranno resi bene in dimensioni più piccole.
  • Non includere parole che spieghino cosa fa la tua estensione. Il testo è spesso illeggibile a dimensioni più piccole.
tags
elenco di stringhe
(opzionale)
Tag per aiutare gli utenti a scoprire la tua estensione. I seguenti tag corrispondono alle categorie su Extensions Hub: marketing , messaging , payments , search , shipping , social , utilities , ai
sourceUrl
corda
(opzionale)
URL pubblico da cui è possibile accedere alla directory dell'estensione.
releaseNotesUrl
corda
(opzionale)
URL pubblico in cui è possibile accedere alle note sulla versione dell'estensione.
author
un oggetto autore
(opzionale)

Autore principale e punto di contatto per l'estensione.

author:
  authorName: Your Company
  email: extensions@example.com
  url: https://example.com/
Campi autore
authorName
corda
(necessario)

Nome dell'autore.

Può essere una persona, un'azienda, un'organizzazione, ecc.

email
corda
(opzionale)
Indirizzo email dell'autore.
url
corda
(opzionale)
URL pubblico in cui è possibile accedere alle informazioni sull'autore.
contributors
elenco degli oggetti dell'autore
(opzionale)

Eventuali autori aggiuntivi che contribuiscono all'estensione.

contributors:
  - authorName: Your Name
  - authorName: Another Contributor
    email: colleague@example.net
    url: https://github.com/their-org/
Campi autore
authorName
corda
(necessario)

Nome dell'autore.

Può essere una persona, un'azienda, un'organizzazione, ecc.

email
corda
(opzionale)
Indirizzo email dell'autore.
url
corda
(opzionale)
URL pubblico in cui è possibile accedere alle informazioni sull'autore.

API Firebase e Google Cloud

Questi campi specificano le API Firebase e Google utilizzate dall'estensione. Quando gli utenti installano l'estensione, possono scegliere di abilitare automaticamente queste API nel loro progetto.

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
Campi API
apiName
corda
(necessario)

Nome dell'API di Google

Deve corrispondere al campo Nome servizio elencato nella pagina di panoramica di ciascuna API ( esempio ) nella libreria API di Google Cloud

reason
corda
(necessario)
Breve descrizione del motivo per cui l'estensione deve utilizzare questa API

Ruoli IAM

Questi campi specificano i ruoli Cloud IAM richiesti dall'estensione. All'account di servizio fornito per l'estensione vengono concessi questi ruoli.

È possibile specificare solo uno dei ruoli supportati .

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
Campi di ruolo
role
corda
(necessario)

Nome del ruolo IAM necessario per il funzionamento dell'estensione

Deve essere uno dei ruoli supportati

reason
corda
(necessario)
Breve descrizione del motivo per cui l'interno necessita dell'accesso concesso da questo ruolo
resource
corda
(opzionale)

Limita l'ambito del ruolo a questa risorsa.

Se omesso, il valore predefinito è projects/${project_id} . Vedere Ridurre l'ambito dei ruoli .

Servizi esterni

Questi campi specificano i servizi non Firebase e non Google utilizzati dall'estensione (in genere API REST). La piattaforma Firebase Extensions non fornisce alcun mezzo per abilitare o eseguire automaticamente l'autorizzazione per questi servizi.

externalServices:
  - name: Example API
    pricingUri: https://developers.example.com/pricing
  - name: Another Example API
    pricingUri: https://developers.example.com/pricing
Settori dei servizi esterni
name
corda
(necessario)
Nome del servizio esterno necessario per il funzionamento dell'estensione
pricingUri
corda
(necessario)
URI per le informazioni sui prezzi del servizio

Parametri configurabili dall'utente

Questi campi definiscono i parametri che l'estensione rende disponibili per la configurazione da parte degli utenti.

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
Campi dei parametri
param
corda
(necessario)
Nome del parametro. Si utilizza questo nome per fare riferimento al valore del parametro nel codice.
label
corda
(necessario)
Breve descrizione del parametro. Visualizzato all'utente quando gli viene richiesto il valore del parametro.
description
corda
(opzionale)

Descrizione dettagliata del parametro. Visualizzato all'utente quando gli viene richiesto il valore del parametro.

Supporta il ribasso.

example
corda
(opzionale)
Valore di esempio per il parametro.
default
corda
(opzionale)
Valore predefinito per il parametro se l'utente lascia vuoto il valore del parametro.
validationRegex
corda
(opzionale)
Espressione regolare per la convalida del valore configurato dall'utente del parametro. Sintassi Google RE2 .
validationErrorMessage
corda
(opzionale)
Messaggio di errore da visualizzare se la convalida dell'espressione regolare non riesce.
required
booleano
(opzionale)
Definisce se l'utente può inviare una stringa vuota quando gli viene richiesto il valore del parametro. Il valore predefinito è true .
immutable
booleano
(opzionale)

Definisce se l'utente può modificare il valore del parametro dopo l'installazione (ad esempio se riconfigura l'estensione). Il valore predefinito è false .

Nota: se definisci un parametro "posizione" per le funzioni distribuite della tua estensione, imposta questo campo su true .

type
corda
(opzionale)
Il tipo di parametro. I tipi di parametri speciali potrebbero avere requisiti aggiuntivi o una presentazione dell'interfaccia utente diversa. Vedere le sezioni seguenti.

Parametri selezionabili e multi-selezionabili

I parametri selezionabili e multi-selezionabili spingono gli utenti a scegliere da un elenco di opzioni predefinite.

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
Campi dei parametri a scelta multipla
type
corda

select o multiselect

Specifica che il parametro può essere un valore ( select ) o più valori ( multiselect ) selezionati da una serie di scelte predefinite

options
elenco di opzioni
(necessario)

Le opzioni tra cui l'utente può scegliere

Campi di opzione
value
corda
(necessario)
Uno dei valori che l'utente può scegliere. Questo è il valore che ottieni quando leggi il valore del parametro nel codice.
label
corda
(opzionale)
Breve descrizione dell'opzione selezionabile. Se omesso, il valore predefinito è value .

Parametri delle risorse selezionabili

I parametri delle risorse selezionabili richiedono agli utenti di selezionare una risorsa (istanza del database, bucket di archiviazione, ecc.) dal proprio progetto.

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
Campi dei parametri delle risorse
type
corda

selectresource

Specifica che il parametro rappresenta una risorsa di progetto

resourceType
corda
(necessario)

Il tipo di risorsa da richiedere all'utente di selezionare.

Valori validi:

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

Tuttavia, solo i bucket Cloud Storage attualmente dispongono di un'interfaccia utente di selezione (altri tipi di risorse vengono presentati come campi di input di testo in formato libero).

Parametri segreti

I valori segreti forniti dall'utente (come le chiavi API) vengono gestiti in modo diverso:

  • I valori segreti vengono archiviati utilizzando Cloud Secret Manager. Solo i client autorizzati (come un'istanza installata di un'estensione) possono accedere a questi valori.
  • Quando agli utenti viene richiesto di fornire questi valori, il loro input non viene visualizzato.
params:
  - param: PARAM_ID
    label: Short description of the parameter
    description: >-
      What is the secret value?
    type: secret
Campi dei parametri segreti
type
corda

secret

Specifica che il parametro è un valore segreto

Risorse della funzione cloud

Questi campi dichiarano le Cloud Functions incluse in un'estensione. La sintassi della dichiarazione delle risorse appare leggermente diversa tra le funzioni di prima e seconda generazione, che possono coesistere in un'estensione.

Funzioni cloud di prima generazione

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
Campi delle risorse
name
corda
(necessario)

Nome descrittivo per la funzione esportata.

Se non specifichi la proprietà entryPoint (vedi sotto), questo valore deve corrispondere al nome della funzione nel codice sorgente delle funzioni.

Il nome finale della funzione distribuita sarà nel seguente formato: ext- extension-instance-id - name .

type
corda
(necessario)
Per una risorsa funzione di prima generazione: firebaseextensions.v1beta.function
description
corda
(necessario)

Breve descrizione del compito svolto dalla funzione per l'estensione.

properties
(necessario)

Proprietà Cloud Functions di prima generazione. Le proprietà più importanti sono elencate di seguito, ma puoi trovare l'elenco completo nel riferimento Cloud Functions .

Proprietà
location
(opzionale)

Posizione in cui distribuire la funzione. Il valore predefinito è us-central1

entryPoint
(opzionale)
Nome della funzione esportata all'interno del codice sorgente delle funzioni che l'estensione dovrebbe cercare. Il valore predefinito è name , sopra.
sourceDirectory
(opzionale)

Directory che contiene il package.json nella radice. Il file per il codice sorgente delle funzioni deve trovarsi in questa directory. Le impostazioni predefinite sono functions

Nota: il campo main di package.json specifica il file per il codice sorgente delle funzioni (come index.js ).

timeout
(opzionale)

Il tempo massimo di esecuzione della funzione.

  • Impostazione predefinita: 60s
  • Valore massimo: 540s
availableMemoryMb
(opzionale)

Quantità di memoria in MB disponibile per la funzione.

  • Predefinito: 256
  • Valori validi: 128 , 256 , 512 , 1024 e 2048
runtime
(consigliato)

Ambiente runtime per la funzione.

httpsTrigger
O
eventTrigger
O
scheduleTrigger
O
taskQueueTrigger
(è richiesto uno di questi tipi di trigger di funzione)
Consulta Scrivi Cloud Functions per un'estensione per informazioni specifiche su ciascun tipo di trigger.

Funzioni cloud di seconda generazione

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

Campi delle risorse
name
corda
(necessario)

Nome descrittivo per la funzione esportata.

Se non specifichi la proprietà entryPoint (vedi sotto), questo valore deve corrispondere al nome della funzione nel codice sorgente delle funzioni.

Il nome finale della funzione distribuita sarà nel seguente formato: ext- extension-instance-id - name .

type
corda
(necessario)
Per una risorsa funzione di seconda generazione: firebaseextensions.v1beta.v2function
description
corda
(necessario)

Breve descrizione del compito svolto dalla funzione per l'estensione.

properties
(necessario)

Proprietà Cloud Functions di seconda generazione. Le proprietà più importanti sono elencate di seguito, ma puoi trovare l'elenco completo nel riferimento Cloud Functions .

Proprietà
location
(opzionale)

Posizione in cui distribuire la funzione. Il valore predefinito è us-central1

sourceDirectory
(opzionale)

Directory che contiene il package.json nella radice. Il file per il codice sorgente delle funzioni deve trovarsi in questa directory. Le impostazioni predefinite sono functions

Nota: il campo main di package.json specifica il file per il codice sorgente delle funzioni (come index.js ).

Esistono anche tre campi di tipo oggetto con le proprie proprietà:

proprietà buildConfig
buildConfig.runtime
(consigliato)

Ambiente runtime per la funzione.

buildConfig.entryPoint
(opzionale)
Nome della funzione esportata all'interno del codice sorgente delle funzioni che l'estensione dovrebbe cercare. Il valore predefinito è name , sopra.
proprietà serviceConfig
serviceConfig.timeoutSeconds
(opzionale)

Il tempo massimo di esecuzione della funzione.

  • Predefinito: 60
  • Valore massimo: 540
serviceConfig.availableMemory
(opzionale)
La quantità di memoria disponibile per una funzione. Il valore predefinito è 256M . Le unità supportate sono k , M , G , Mi , Gi . Se non viene fornita alcuna unità, il valore viene interpretato come byte.
proprietà eventTrigger
eventTrigger.eventType
(necessario)
Il tipo di evento da ascoltare. Consulta Write Cloud Functions per un'estensione per i tipi di eventi disponibili per ciascun prodotto.
eventTrigger.eventFilters
(opzionale)
Filtri che limitano ulteriormente gli eventi da ascoltare. Ad esempio, potresti ascoltare solo gli eventi che corrispondono a un modello di risorsa specifico. Consulta Write Cloud Functions per un'estensione per informazioni sul filtraggio di ciascun tipo di evento.
eventTrigger.channel
(opzionale)
Il nome del canale associato al trigger nel formato projects/{project}/locations/{location}/channels/{channel} . Se ometti questa proprietà, la funzione ascolterà gli eventi sul canale predefinito del progetto.
eventTrigger.triggerRegion
(opzionale)
Il trigger riceverà solo eventi originari di questa regione. Può essere la stessa regione della funzione, una regione o più regioni diverse oppure la regione globale. Se non fornito, il valore predefinito è la stessa regione della funzione.

Eventi del ciclo di vita

Gli eventi del ciclo di vita ti consentono di specificare le funzioni che verranno eseguite quando un utente installa, aggiorna o configura un'istanza della tua estensione. Consulta Gestire gli eventi del ciclo di vita della tua estensione .

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
Campi degli eventi del ciclo di vita
onInstall
(opzionale)

Specifica una funzione che viene eseguita quando un utente installa l'estensione.

Specifica della funzione
function
corda
(necessario)

Nome della funzione attivata dalla coda di attività che gestirà l'evento.

Questa funzione deve essere dichiarata nella sezione resources e avere taskQueue definita.

processingMessage
corda
(necessario)
Messaggio da visualizzare nella console Firebase mentre l'attività è in corso.
onUpdate
(opzionale)

Specifica una funzione che viene eseguita quando un utente aggiorna l'estensione.

Specifica della funzione
function
corda
(necessario)

Nome della funzione attivata dalla coda di attività che gestirà l'evento.

Questa funzione deve essere dichiarata nella sezione resources e avere taskQueue definita.

processingMessage
corda
(necessario)
Messaggio da visualizzare nella console Firebase mentre l'attività è in corso.
onConfigure
(opzionale)

Specifica una funzione che viene eseguita quando un utente riconfigura l'estensione.

Specifica della funzione
function
corda
(necessario)

Nome della funzione attivata dalla coda di attività che gestirà l'evento.

Questa funzione deve essere dichiarata nella sezione resources e avere taskQueue definita.

processingMessage
corda
(necessario)
Messaggio da visualizzare nella console Firebase mentre l'attività è in corso.

Eventi personalizzati (Eventarc)

Gli eventi personalizzati sono eventi emessi dalla tua estensione per consentire agli utenti di inserire la propria logica nella tua estensione. Consulta la sezione Eventarc in Aggiungere hook utente a un'estensione .

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
Campi evento personalizzati
type
corda
(necessario)
L'identificatore del tipo dell'evento. Costruisci l'identificatore utilizzando 3-4 campi delimitati da punti: i campi ID editore, nome estensione e nome evento sono obbligatori; si consiglia il campo versione. Scegli un nome evento univoco e descrittivo per ogni tipo di evento che pubblichi.
description
corda
(necessario)
Descrizione dell'evento.