Referência para extension.yaml

O arquivo de especificação da sua extensão ( extension.yaml ) contém os metadados da sua extensão, declara os recursos criados pela extensão e as APIs e o acesso exigido pela extensão e define quaisquer parâmetros configurados pelo usuário fornecidos pela extensão.

As tabelas nesta página descrevem os campos disponíveis para um arquivo extension.yaml .

Informações básicas e de identificação

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/
Campos básicos
name
corda
(obrigatório)

Identificador da extensão.

Só pode conter letras minúsculas, números e travessões; Limite de 40 caracteres.

Observação: esse valor é usado para gerar o ID da instância da extensão (que é usado para gerar os nomes da conta de serviço da extensão e dos recursos específicos da extensão).

version
corda
(obrigatório)

Versão da extensão.

Deve seguir o versionamento semver (por exemplo, 1.2.0).

specVersion
corda
(obrigatório)

Versão da especificação das extensões do Firebase.

Valor atual: v1beta

license
corda
(opcional)

Licença para a extensão.

Sua extensão deve ser licenciada usando Apache-2.0 .

billingRequired
boleano
(opcional)

Se os serviços usados ​​pela extensão exigem uma conta de faturamento do Firebase de nível pago.

Sempre definido como true .

displayName
corda
(opcional)

Nome de exibição amigável para a extensão (3 a 5 palavras).

Limite de 40 caracteres.

description
corda
(opcional)
Breve descrição da tarefa que sua extensão executa (cerca de 1 frase).
icon
corda
(opcional)

Arquivo para usar como ícone da sua extensão em extensions.dev e no console do Firebase.

Este arquivo deve ser um PNG quadrado entre 512x512 e 1024x1024 pixels. Coloque o arquivo no mesmo diretório que extension.yaml ; você não pode especificar um subdiretório.

Lembre-se das seguintes diretrizes ao criar um ícone para sua extensão:

  • Selecione cores de fundo e arte que sejam apropriadas para sua marca.
  • Mantenha as cores dos seus ícones simples, usando apenas 2 cores. Várias cores podem tornar seu ícone visualmente impressionante.
  • Pelo mesmo motivo, não use gradientes em seu ícone. Os gradientes são difíceis de discernir em tamanhos pequenos e tornam o ícone visualmente complexo.
  • Use imagens simples e exclusivas que comuniquem a funcionalidade da sua extensão.
  • Se sua empresa cria várias extensões, não use seu logotipo como ícone. Os usuários terão dificuldade em distinguir entre suas extensões.
  • Torne a arte gráfica e ousada. Não use arte delicada ou elaborada, pois não ficará bem em tamanhos menores.
  • Não inclua palavras que expliquem o que sua extensão faz. O texto geralmente fica ilegível em tamanhos menores.
tags
lista de cordas
(opcional)
Tags para ajudar os usuários a descobrir sua extensão. As tags a seguir são mapeadas para categorias no Extensions Hub: marketing , messaging , payments , search , shipping , social , utilities , ai
sourceUrl
corda
(opcional)
URL pública onde o diretório de extensão pode ser acessado.
releaseNotesUrl
corda
(opcional)
URL público onde as notas de versão da extensão podem ser acessadas.
author
um objeto de autor
(opcional)

Autor principal e ponto de contato para a extensão.

author:
  authorName: Your Company
  email: extensions@example.com
  url: https://example.com/
Campos de autor
authorName
corda
(obrigatório)

Nome do autor.

Pode ser uma pessoa, empresa, organização, etc.

email
corda
(opcional)
Endereço de e-mail do autor.
url
corda
(opcional)
URL pública onde as informações sobre o autor podem ser acessadas.
contributors
lista de objetos de autor
(opcional)

Quaisquer autores contribuintes adicionais para a extensão.

contributors:
  - authorName: Your Name
  - authorName: Another Contributor
    email: colleague@example.net
    url: https://github.com/their-org/
Campos de autor
authorName
corda
(obrigatório)

Nome do autor.

Pode ser uma pessoa, empresa, organização, etc.

email
corda
(opcional)
Endereço de e-mail do autor.
url
corda
(opcional)
URL pública onde as informações sobre o autor podem ser acessadas.

APIs Firebase e Google Cloud

Esses campos especificam as APIs do Firebase e do Google que a extensão usa. Quando os usuários instalam a extensão, eles podem optar por ativar automaticamente essas APIs em seus projetos.

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
Campos de API
apiName
corda
(obrigatório)

Nome da API do Google

Precisa corresponder ao campo Nome do serviço listado na página de visão geral de cada API ( exemplo ) na biblioteca de APIs do Google Cloud

reason
corda
(obrigatório)
Breve descrição do motivo pelo qual a extensão precisa usar esta API

Funções do IAM

Esses campos especificam os papéis do Cloud IAM exigidos pela extensão. A conta de serviço provisionada para a extensão recebe esses papéis.

Você só pode especificar uma das funções suportadas .

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
Campos de função
role
corda
(obrigatório)

Nome da função do IAM necessária para que a extensão funcione

Deve ser uma das funções suportadas

reason
corda
(obrigatório)
Breve descrição do motivo pelo qual a extensão precisa do acesso concedido por esta função
resource
corda
(opcional)

Limite o escopo da função a este recurso.

Se omitido, o padrão é projects/${project_id} . Consulte Reduzir o escopo das funções .

Serviços externos

Esses campos especificam os serviços que não são do Firebase e do Google que a extensão usa (normalmente APIs REST). A plataforma Firebase Extensions não fornece nenhum meio de ativar ou realizar autorização automaticamente para esses serviços.

externalServices:
  - name: Example API
    pricingUri: https://developers.example.com/pricing
  - name: Another Example API
    pricingUri: https://developers.example.com/pricing
Campos de serviços externos
name
corda
(obrigatório)
Nome do serviço externo necessário para o funcionamento da extensão
pricingUri
corda
(obrigatório)
URI para informações de preços do serviço

Parâmetros configuráveis ​​pelo usuário

Esses campos definem os parâmetros que a extensão disponibiliza para configuração dos usuários.

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
Campos de parâmetro
param
corda
(obrigatório)
Nome do parâmetro. Você usa esse nome para fazer referência ao valor do parâmetro no código.
label
corda
(obrigatório)
Breve descrição do parâmetro. Exibido ao usuário quando ele é solicitado a fornecer o valor do parâmetro.
description
corda
(opcional)

Descrição detalhada do parâmetro. Exibido ao usuário quando ele é solicitado a fornecer o valor do parâmetro.

Suporta Markdown.

example
corda
(opcional)
Valor de exemplo para o parâmetro.
default
corda
(opcional)
Valor padrão para o parâmetro se o usuário deixar o valor do parâmetro em branco.
validationRegex
corda
(opcional)
Expressão regular para validação do valor configurado pelo usuário do parâmetro. Sintaxe do Google RE2 .
validationErrorMessage
corda
(opcional)
Mensagem de erro a ser exibida se a validação de regex falhar.
required
boleano
(opcional)
Define se o usuário pode enviar uma string vazia quando for solicitado o valor do parâmetro. O padrão é true .
immutable
boleano
(opcional)

Define se o usuário pode alterar o valor do parâmetro após a instalação (como se reconfigurasse a extensão). O padrão é false .

Nota: Se você definir um parâmetro "local" para as funções implementadas da sua extensão, defina este campo como true .

type
corda
(opcional)
O tipo de parâmetro. Tipos de parâmetros especiais podem ter requisitos adicionais ou apresentação de UI diferente. Consulte as seções a seguir.

Parâmetros selecionáveis ​​e multisselecionáveis

Parâmetros selecionáveis ​​e multisselecionáveis ​​solicitam que os usuários escolham em uma lista de opções predefinidas.

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
Campos de parâmetros de múltipla escolha
type
corda

select ou multiselect

Especifica que o parâmetro pode ser um valor ( select ) ou vários valores ( multiselect ) selecionados de um conjunto de opções predefinidas

options
lista de opções
(obrigatório)

As opções que o usuário pode escolher

Campos de opção
value
corda
(obrigatório)
Um dos valores que o usuário pode escolher. Este é o valor que você obtém ao ler o valor do parâmetro no código.
label
corda
(opcional)
Breve descrição da opção selecionável. Se omitido, o padrão é value .

Parâmetros de recursos selecionáveis

Parâmetros de recurso selecionáveis ​​solicitam que os usuários selecionem um recurso (instância de banco de dados, intervalo de armazenamento etc.) de seu projeto.

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
Campos de parâmetro de recurso
type
corda

selectresource

Especifica que o parâmetro representa um recurso do projeto

resourceType
corda
(obrigatório)

O tipo de recurso a ser solicitado ao usuário para selecionar.

Valores válidos:

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

No entanto, atualmente apenas os buckets do Cloud Storage têm uma IU de seleção (outros tipos de recursos são apresentados como campos de entrada de texto de formato livre).

Parâmetros secretos

Valores secretos fornecidos pelo usuário (como chaves de API) são tratados de maneira diferente:

  • Os valores secretos são armazenados usando o Cloud Secret Manager. Somente clientes autorizados (como uma instância instalada de uma extensão) podem acessar esses valores.
  • Quando os usuários são solicitados a fornecer esses valores, suas entradas não são exibidas.
params:
  - param: PARAM_ID
    label: Short description of the parameter
    description: >-
      What is the secret value?
    type: secret
Campos de parâmetros secretos
type
corda

secret

Especifica que o parâmetro é um valor secreto

Recursos do Cloud Functions

Esses campos declaram o Cloud Functions incluído em uma extensão. A sintaxe da declaração de recurso parece um pouco diferente entre funções de 1ª e 2ª geração, que podem coexistir em uma extensão.

Funções de nuvem de 1ª geração

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
Campos de recursos
name
corda
(obrigatório)

Nome amigável para a função exportada.

Se você não especificar a propriedade entryPoint (veja abaixo), esse valor deverá corresponder ao nome da função no código-fonte de suas funções.

O nome final da função implantada estará no seguinte formato: ext- extension-instance-id - name .

type
corda
(obrigatório)
Para um recurso de função de 1ª geração: firebaseextensions.v1beta.function
description
corda
(obrigatório)

Breve descrição de qual tarefa a função executa para a extensão.

properties
(obrigatório)

Propriedades do Cloud Functions de primeira geração. As propriedades mais importantes estão listadas abaixo, mas você pode encontrar a lista completa na referência do Cloud Functions .

Propriedades
location
(opcional)

Local no qual implantar a função. O padrão é us-central1

entryPoint
(opcional)
Nome da função exportada dentro do código-fonte das funções que a extensão deve procurar. O padrão é o valor de name , acima.
sourceDirectory
(opcional)

Diretório que contém seu package.json em sua raiz. O arquivo do código-fonte de suas funções deve estar neste diretório. O padrão é functions

Nota: O campo main de package.json especifica o arquivo para o código-fonte de suas funções (como index.js ).

timeout
(opcional)

O tempo máximo de execução da função.

  • Padrão: 60s
  • Valor máximo: 540s
availableMemoryMb
(opcional)

Quantidade de memória em MB disponível para a função.

  • Padrão: 256
  • Valores válidos: 128 , 256 , 512 , 1024 e 2048
runtime
(recomendado)

Ambiente de tempo de execução para a função.

httpsTrigger
ou
eventTrigger
ou
scheduleTrigger
ou
taskQueueTrigger
(um desses tipos de gatilho de função é obrigatório)
Consulte Gravar Cloud Functions para uma extensão para obter informações específicas sobre cada tipo de gatilho.

Funções de nuvem de 2ª geração

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

Campos de recursos
name
corda
(obrigatório)

Nome amigável para a função exportada.

Se você não especificar a propriedade entryPoint (veja abaixo), esse valor deverá corresponder ao nome da função no código-fonte de suas funções.

O nome final da função implantada estará no seguinte formato: ext- extension-instance-id - name .

type
corda
(obrigatório)
Para um recurso de função de 2ª geração: firebaseextensions.v1beta.v2function
description
corda
(obrigatório)

Breve descrição de qual tarefa a função executa para a extensão.

properties
(obrigatório)

Propriedades do Cloud Functions de segunda geração. As propriedades mais importantes estão listadas abaixo, mas você pode encontrar a lista completa na referência do Cloud Functions .

Propriedades
location
(opcional)

Local no qual implantar a função. O padrão é us-central1

sourceDirectory
(opcional)

Diretório que contém seu package.json em sua raiz. O arquivo do código-fonte de suas funções deve estar neste diretório. O padrão é functions

Nota: O campo main de package.json especifica o arquivo para o código-fonte de suas funções (como index.js ).

Existem também três campos de tipo de objeto com propriedades próprias:

Propriedades buildConfig
buildConfig.runtime
(recomendado)

Ambiente de tempo de execução para a função.

buildConfig.entryPoint
(opcional)
Nome da função exportada dentro do código-fonte das funções que a extensão deve procurar. O padrão é o valor de name , acima.
Propriedades de serviceConfig
serviceConfig.timeoutSeconds
(opcional)

O tempo máximo de execução da função.

  • Padrão: 60
  • Valor máximo: 540
serviceConfig.availableMemory
(opcional)
A quantidade de memória disponível para uma função. O padrão é 256M . As unidades suportadas são k , M , G , Mi , Gi . Se nenhuma unidade for fornecida, o valor será interpretado como bytes.
propriedades eventTrigger
eventTrigger.eventType
(obrigatório)
O tipo de evento a ser ouvido. Consulte Gravar Cloud Functions para obter uma extensão dos tipos de eventos disponíveis para cada produto.
eventTrigger.eventFilters
(opcional)
Filtros que limitam ainda mais os eventos a serem ouvidos. Por exemplo, você só poderia ouvir eventos que correspondessem a um padrão de recurso específico. Consulte Escrever Cloud Functions para uma extensão para obter informações sobre como filtrar cada tipo de evento.
eventTrigger.channel
(opcional)
O nome do canal associado ao acionador no formato projects/{project}/locations/{location}/channels/{channel} . Se você omitir esta propriedade, a função escutará eventos no canal padrão do projeto.
eventTrigger.triggerRegion
(opcional)
O gatilho receberá apenas eventos originados nesta região. Pode ser a mesma região da função, uma região ou multirregião diferente ou a região global. Se não for fornecido, o padrão será a mesma região da função.

Eventos do ciclo de vida

Os eventos de ciclo de vida permitem especificar funções que serão executadas quando um usuário instalar, atualizar ou configurar uma instância da sua extensão. Consulte Tratar os eventos do ciclo de vida da sua extensão .

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
Campos de evento de ciclo de vida
onInstall
(opcional)

Especifica uma função executada quando um usuário instala a extensão.

Especificação de função
function
corda
(obrigatório)

Nome da função acionada pela fila de tarefas que manipulará o evento.

Esta função deve ser declarada na seção resources e ter taskQueue definido.

processingMessage
corda
(obrigatório)
Mensagem a ser exibida no console do Firebase enquanto a tarefa está em andamento.
onUpdate
(opcional)

Especifica uma função executada quando um usuário atualiza a extensão.

Especificação de função
function
corda
(obrigatório)

Nome da função acionada pela fila de tarefas que manipulará o evento.

Esta função deve ser declarada na seção resources e ter taskQueue definido.

processingMessage
corda
(obrigatório)
Mensagem a ser exibida no console do Firebase enquanto a tarefa está em andamento.
onConfigure
(opcional)

Especifica uma função executada quando um usuário reconfigura a extensão.

Especificação de função
function
corda
(obrigatório)

Nome da função acionada pela fila de tarefas que manipulará o evento.

Esta função deve ser declarada na seção resources e ter taskQueue definido.

processingMessage
corda
(obrigatório)
Mensagem a ser exibida no console do Firebase enquanto a tarefa está em andamento.

Eventos personalizados (Eventarc)

Eventos personalizados são eventos que sua extensão emite para permitir que os usuários insiram sua própria lógica em sua extensão. Consulte a seção Eventarc em Adicionar ganchos de usuário a uma extensão .

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
Campos de evento personalizados
type
corda
(obrigatório)
O identificador de tipo do evento. Construa o identificador a partir de 3 a 4 campos delimitados por pontos: os campos ID do editor, nome da extensão e nome do evento são obrigatórios; o campo de versão é recomendado. Escolha um nome de evento exclusivo e descritivo para cada tipo de evento que você publicar.
description
corda
(obrigatório)
Descrição do evento.