Référence pour extension.yaml

Le fichier de spécification de votre extension ( extension.yaml ) contient les métadonnées de votre extension, déclare les ressources créées par l'extension ainsi que les API et l'accès requis par l'extension, et définit tous les paramètres configurés par l'utilisateur fournis par l'extension.

Les tableaux de cette page décrivent les champs disponibles pour un fichier extension.yaml .

Informations de base et d'identification

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/
Champs de base
name
chaîne
(requis)

Identifiant de l'extension.

Ne peut contenir que des lettres minuscules, des chiffres et des tirets ; Limite de 40 caractères.

Remarque : Cette valeur est utilisée pour générer l'ID d'instance de l'extension (qui est ensuite utilisé pour générer les noms du compte de service de l'extension et les ressources spécifiques à l'extension).

version
chaîne
(requis)

Version de l'extension.

Doit suivre la gestion des versions Semver (par exemple, 1.2.0).

specVersion
chaîne
(requis)

Version de la spécification des extensions Firebase.

Valeur actuelle : v1beta

license
chaîne
(facultatif)

Licence pour l'extension.

Votre extension doit disposer d'une licence utilisant Apache-2.0 .

billingRequired
booléen
(facultatif)

Si les services utilisés par l'extension nécessitent un compte de facturation Firebase de niveau payant.

Toujours défini sur true .

displayName
chaîne
(facultatif)

Nom d'affichage convivial pour l'extension (3 à 5 mots).

Limite de 40 caractères.

description
chaîne
(facultatif)
Brève description de la tâche effectuée par votre extension (~ 1 phrase).
icon
chaîne
(facultatif)

Fichier à utiliser comme icône de votre extension sur extensions.dev et la console Firebase.

Ce fichier doit être un PNG carré compris entre 512x512 et 1024x1024 pixels. Mettez le fichier dans le même répertoire que extension.yaml ; vous ne pouvez pas spécifier de sous-répertoire.

Gardez les directives suivantes à l’esprit lors de la conception d’une icône pour votre extension :

  • Sélectionnez les couleurs d’arrière-plan et d’illustration adaptées à votre marque.
  • Gardez les couleurs de vos icônes simples, en utilisant seulement 2 couleurs. Plusieurs couleurs peuvent rendre votre icône visuellement écrasante.
  • Pour la même raison, n'utilisez pas de dégradés dans votre icône. Les dégradés sont difficiles à discerner dans les petites tailles et rendent l'icône visuellement complexe.
  • Utilisez des images simples et uniques qui communiquent les fonctionnalités de votre extension.
  • Si votre entreprise crée plusieurs extensions, n'utilisez pas votre logo comme icône. Les utilisateurs auront du mal à faire la distinction entre vos extensions.
  • Rendez l’illustration graphique et audacieuse. N'utilisez pas d'art délicat ou élaboré, qui ne sera pas bien rendu dans des tailles plus petites.
  • N'incluez pas de mots expliquant le rôle de votre extension. Le texte est souvent illisible dans des tailles plus petites.
tags
liste de chaînes
(facultatif)
Balises pour aider les utilisateurs à découvrir votre extension. Les balises suivantes correspondent aux catégories sur Extensions Hub : marketing , messaging , payments , search , shipping , social , utilities , ai
sourceUrl
chaîne
(facultatif)
URL publique où le répertoire d'extension est accessible.
releaseNotesUrl
chaîne
(facultatif)
URL publique où les notes de version de l'extension sont accessibles.
author
un objet auteur
(facultatif)

Auteur principal et point de contact pour l’extension.

author:
  authorName: Your Company
  email: extensions@example.com
  url: https://example.com/
Champs d'auteur
authorName
chaîne
(requis)

Nom de l'auteur.

Peut être une personne, une entreprise, une organisation, etc.

email
chaîne
(facultatif)
Adresse email de l'auteur.
url
chaîne
(facultatif)
URL publique où les informations sur l'auteur sont accessibles.
contributors
liste des objets auteurs
(facultatif)

Tous les auteurs contributeurs supplémentaires pour l’extension.

contributors:
  - authorName: Your Name
  - authorName: Another Contributor
    email: colleague@example.net
    url: https://github.com/their-org/
Champs d'auteur
authorName
chaîne
(requis)

Nom de l'auteur.

Peut être une personne, une entreprise, une organisation, etc.

email
chaîne
(facultatif)
Adresse email de l'auteur.
url
chaîne
(facultatif)
URL publique où les informations sur l'auteur sont accessibles.

API Firebase et Google Cloud

Ces champs spécifient les API Firebase et Google utilisées par l'extension. Lorsque les utilisateurs installent l'extension, ils peuvent choisir d'activer automatiquement ces API dans leur projet.

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
Champs API
apiName
chaîne
(requis)

Nom de l'API Google

Doit correspondre au champ Nom du service tel qu'indiqué sur la page de présentation de chaque API ( exemple ) dans la bibliothèque d'API Google Cloud

reason
chaîne
(requis)
Brève description de la raison pour laquelle l'extension doit utiliser cette API

Rôles IAM

Ces champs spécifient les rôles Cloud IAM requis par l'extension. Le compte de service provisionné pour l’extension se voit attribuer ces rôles.

Vous ne pouvez spécifier qu'un seul des rôles pris en charge .

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
Champs de rôle
role
chaîne
(requis)

Nom du rôle IAM nécessaire au fonctionnement de l'extension

Doit être l'un des rôles pris en charge

reason
chaîne
(requis)
Brève description de la raison pour laquelle l'extension a besoin de l'accès accordé par ce rôle
resource
chaîne
(facultatif)

Limitez la portée du rôle à cette ressource.

En cas d'omission, la valeur par défaut est projects/${project_id} . Voir Réduire la portée des rôles .

Prestations externes

Ces champs spécifient les services non-Firebase et non-Google utilisés par l'extension (généralement des API REST). La plate-forme Firebase Extensions ne fournit aucun moyen d'activer ou d'effectuer automatiquement une autorisation pour ces services.

externalServices:
  - name: Example API
    pricingUri: https://developers.example.com/pricing
  - name: Another Example API
    pricingUri: https://developers.example.com/pricing
Champs de services externes
name
chaîne
(requis)
Nom du service externe nécessaire au fonctionnement de l'extension
pricingUri
chaîne
(requis)
URI vers les informations de tarification du service

Paramètres configurables par l'utilisateur

Ces champs définissent les paramètres que l'extension met à la disposition des utilisateurs pour qu'ils puissent les configurer.

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
Champs de paramètres
param
chaîne
(requis)
Nom du paramètre. Vous utilisez ce nom pour référencer la valeur du paramètre dans le code.
label
chaîne
(requis)
Brève description du paramètre. Affiché à l’utilisateur lorsqu’il est invité à saisir la valeur du paramètre.
description
chaîne
(facultatif)

Description détaillée du paramètre. Affiché à l’utilisateur lorsqu’il est invité à saisir la valeur du paramètre.

Prend en charge la démarque.

example
chaîne
(facultatif)
Exemple de valeur pour le paramètre.
default
chaîne
(facultatif)
Valeur par défaut du paramètre si l'utilisateur laisse la valeur du paramètre vide.
validationRegex
chaîne
(facultatif)
Expression régulière pour la validation de la valeur configurée par l'utilisateur du paramètre. Syntaxe Google RE2 .
validationErrorMessage
chaîne
(facultatif)
Message d'erreur à afficher si la validation de l'expression régulière échoue.
required
booléen
(facultatif)
Définit si l'utilisateur peut soumettre une chaîne vide lorsqu'il est invité à saisir la valeur du paramètre. La valeur par défaut est true .
immutable
booléen
(facultatif)

Définit si l'utilisateur peut modifier la valeur du paramètre après l'installation (par exemple s'il reconfigure l'extension). La valeur par défaut est false .

Remarque : Si vous définissez un paramètre « location » pour les fonctions déployées de votre extension, définissez ce champ sur true .

type
chaîne
(facultatif)
Le type de paramètre. Les types de paramètres spéciaux peuvent avoir des exigences supplémentaires ou une présentation d’interface utilisateur différente. Voir les sections suivantes.

Paramètres sélectionnables et multi-sélectionnables

Les paramètres sélectionnables et multi-sélectionnables invitent les utilisateurs à choisir parmi une liste d'options prédéfinies.

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
Champs de paramètres à choix multiples
type
chaîne

select ou multiselect

Spécifie que le paramètre peut être une valeur ( select ) ou plusieurs valeurs ( multiselect ) sélectionnées parmi un ensemble de choix prédéfinis

options
liste des options
(requis)

Les options parmi lesquelles l'utilisateur peut choisir

Champs d'options
value
chaîne
(requis)
Une des valeurs que l'utilisateur peut choisir. C'est la valeur que vous obtenez lorsque vous lisez la valeur du paramètre dans le code.
label
chaîne
(facultatif)
Brève description de l'option sélectionnable. En cas d'omission, la valeur par défaut est value .

Paramètres de ressources sélectionnables

Les paramètres de ressources sélectionnables invitent les utilisateurs à sélectionner une ressource (instance de base de données, compartiment de stockage, etc.) dans leur projet.

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
Champs de paramètres de ressources
type
chaîne

selectresource

Spécifie que le paramètre représente une ressource de projet

resourceType
chaîne
(requis)

Type de ressource à inviter l'utilisateur à sélectionner.

Valeurs valides :

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

Cependant, seuls les buckets Cloud Storage disposent actuellement d'une interface utilisateur de sélection (les autres types de ressources sont présentés sous forme de champs de saisie de texte au format libre).

Paramètres secrets

Les valeurs secrètes fournies par l'utilisateur (telles que les clés API) sont traitées différemment :

  • Les valeurs secrètes sont stockées à l'aide de Cloud Secret Manager. Seuls les clients autorisés (tels qu'une instance installée d'une extension) peuvent accéder à ces valeurs.
  • Lorsque les utilisateurs sont invités à fournir ces valeurs, leur saisie ne s'affiche pas.
params:
  - param: PARAM_ID
    label: Short description of the parameter
    description: >-
      What is the secret value?
    type: secret
Champs de paramètres secrets
type
chaîne

secret

Spécifie que le paramètre est une valeur secrète

Ressources de la fonction Cloud

Ces champs déclarent les Cloud Functions incluses dans une extension. La syntaxe de déclaration des ressources est un peu différente entre les fonctions de 1ère génération et de 2ème génération, qui peuvent coexister dans une extension.

Fonctions Cloud de 1ère génération

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
Champs de ressources
name
chaîne
(requis)

Nom convivial pour la fonction exportée.

Si vous ne spécifiez pas la propriété entryPoint (voir ci-dessous), cette valeur doit correspondre au nom de la fonction dans le code source de vos fonctions.

Le nom final de la fonction déployée sera au format suivant : ext- extension-instance-id - name .

type
chaîne
(requis)
Pour une ressource de fonction de 1ère génération : firebaseextensions.v1beta.function
description
chaîne
(requis)

Brève description de la tâche effectuée par la fonction pour l'extension.

properties
(requis)

Propriétés Cloud Functions de 1re génération. Les propriétés les plus importantes sont répertoriées ci-dessous, mais vous pouvez trouver la liste complète dans la référence Cloud Functions .

Propriétés
location
(facultatif)

Emplacement vers lequel déployer la fonction. La valeur par défaut est us-central1

entryPoint
(facultatif)
Nom de la fonction exportée dans le code source de vos fonctions que l'extension doit rechercher. La valeur par défaut est la valeur de name ci-dessus.
sourceDirectory
(facultatif)

Répertoire qui contient votre package.json à sa racine. Le fichier du code source de vos fonctions doit se trouver dans ce répertoire. Valeurs par défaut pour functions

Remarque : Le champ main de package.json spécifie le fichier du code source de vos fonctions (comme index.js ).

timeout
(facultatif)

Temps d'exécution maximum de la fonction.

  • Par défaut : 60s
  • Valeur maximale : 540s
availableMemoryMb
(facultatif)

Quantité de mémoire en Mo disponible pour la fonction.

  • Par défaut : 256
  • Valeurs valides : 128 , 256 , 512 , 1024 et 2048
runtime
(recommandé)

Environnement d'exécution pour la fonction.

httpsTrigger
ou
eventTrigger
ou
scheduleTrigger
ou
taskQueueTrigger
(l'un de ces types de déclencheurs de fonction est requis)
Voir Write Cloud Functions pour une extension pour obtenir des informations spécifiques sur chaque type de déclencheur.

Fonctions Cloud de 2e génération

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

Champs de ressources
name
chaîne
(requis)

Nom convivial pour la fonction exportée.

Si vous ne spécifiez pas la propriété entryPoint (voir ci-dessous), cette valeur doit correspondre au nom de la fonction dans le code source de vos fonctions.

Le nom final de la fonction déployée sera au format suivant : ext- extension-instance-id - name .

type
chaîne
(requis)
Pour une ressource de fonction de 2e génération : firebaseextensions.v1beta.v2function
description
chaîne
(requis)

Brève description de la tâche effectuée par la fonction pour l'extension.

properties
(requis)

Propriétés des fonctions Cloud Functions de 2e génération. Les propriétés les plus importantes sont répertoriées ci-dessous, mais vous pouvez trouver la liste complète dans la référence Cloud Functions .

Propriétés
location
(facultatif)

Emplacement vers lequel déployer la fonction. La valeur par défaut est us-central1

sourceDirectory
(facultatif)

Répertoire qui contient votre package.json à sa racine. Le fichier du code source de vos fonctions doit se trouver dans ce répertoire. Valeurs par défaut pour functions

Remarque : Le champ main de package.json spécifie le fichier du code source de vos fonctions (comme index.js ).

Il existe également trois champs de type objet avec leurs propres propriétés :

Propriétés buildConfig
buildConfig.runtime
(recommandé)

Environnement d'exécution pour la fonction.

buildConfig.entryPoint
(facultatif)
Nom de la fonction exportée dans le code source de vos fonctions que l'extension doit rechercher. La valeur par défaut est la valeur de name ci-dessus.
Propriétés serviceConfig
serviceConfig.timeoutSeconds
(facultatif)

Temps d'exécution maximum de la fonction.

  • Par défaut : 60
  • Valeur maximale : 540
serviceConfig.availableMemory
(facultatif)
La quantité de mémoire disponible pour une fonction. La valeur par défaut est 256M Les unités prises en charge sont k , M , G , Mi , Gi . Si aucune unité n'est fournie, la valeur est interprétée en octets.
Propriétés eventTrigger
eventTrigger.eventType
(requis)
Le type d’événement à écouter. Voir Write Cloud Functions pour une extension pour les types d'événements disponibles pour chaque produit.
eventTrigger.eventFilters
(facultatif)
Des filtres qui limitent davantage les événements à écouter. Par exemple, vous ne pouvez écouter que les événements correspondant à un modèle de ressource spécifique. Voir Write Cloud Functions pour une extension pour plus d'informations sur le filtrage de chaque type d'événement.
eventTrigger.channel
(facultatif)
Le nom du canal associé au déclencheur au format projects/{project}/locations/{location}/channels/{channel} . Si vous omettez cette propriété, la fonction écoutera les événements sur le canal par défaut du projet.
eventTrigger.triggerRegion
(facultatif)
Le déclencheur ne recevra que les événements provenant de cette région. Il peut s'agir de la même région que la fonction, d'une région différente ou multirégionale, ou encore de la région globale. S’il n’est pas fourni, la valeur par défaut est la même région que la fonction.

Événements du cycle de vie

Les événements de cycle de vie vous permettent de spécifier les fonctions qui s'exécuteront lorsqu'un utilisateur installe, met à jour ou configure une instance de votre extension. Voir Gérer les événements du cycle de vie de votre extension .

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
Champs d'événements du cycle de vie
onInstall
(facultatif)

Spécifie une fonction qui s'exécute lorsqu'un utilisateur installe l'extension.

Spécification de la fonction
function
chaîne
(requis)

Nom de la fonction déclenchée par la file d'attente de tâches qui gérera l'événement.

Cette fonction doit être déclarée dans la section resources et avoir taskQueue définie.

processingMessage
chaîne
(requis)
Message à afficher dans la console Firebase pendant que la tâche est en cours.
onUpdate
(facultatif)

Spécifie une fonction qui s'exécute lorsqu'un utilisateur met à jour l'extension.

Spécification de la fonction
function
chaîne
(requis)

Nom de la fonction déclenchée par la file d'attente de tâches qui gérera l'événement.

Cette fonction doit être déclarée dans la section resources et avoir taskQueue définie.

processingMessage
chaîne
(requis)
Message à afficher dans la console Firebase pendant que la tâche est en cours.
onConfigure
(facultatif)

Spécifie une fonction qui s'exécute lorsqu'un utilisateur reconfigure l'extension.

Spécification de la fonction
function
chaîne
(requis)

Nom de la fonction déclenchée par la file d'attente de tâches qui gérera l'événement.

Cette fonction doit être déclarée dans la section resources et avoir taskQueue définie.

processingMessage
chaîne
(requis)
Message à afficher dans la console Firebase pendant que la tâche est en cours.

Événements personnalisés (Eventarc)

Les événements personnalisés sont des événements émis par votre extension pour permettre aux utilisateurs d'insérer leur propre logique dans votre extension. Consultez la section Eventarc dans Ajouter des hooks utilisateur à une extension .

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
Champs d'événement personnalisés
type
chaîne
(requis)
L'identifiant de type de l'événement. Construisez l'identifiant à partir de 3 à 4 champs délimités par des points : les champs d'ID d'éditeur, de nom d'extension et de nom d'événement sont obligatoires ; le champ version est recommandé. Choisissez un nom d'événement unique et descriptif pour chaque type d'événement que vous publiez.
description
chaîne
(requis)
Description de l'événement.