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: | ||||||||
license corda (opcional) | Licença para a extensão. Sua extensão deve ser licenciada usando | ||||||||
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 | ||||||||
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 Este arquivo deve ser um PNG quadrado entre 512x512 e 1024x1024 pixels. Coloque o arquivo no mesmo diretório que Lembre-se das seguintes diretrizes ao criar um ícone para sua extensão:
| ||||||||
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/
| ||||||||
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/
|
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 é |
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 é Nota: Se você definir um parâmetro "local" para as funções implementadas da sua extensão, defina este campo como |
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 | Especifica que o parâmetro pode ser um valor ( | ||||||
options lista de opções (obrigatório) | As opções que o usuário pode escolher
|
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 | 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:
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 | 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 O nome final da função implantada estará no seguinte formato: | ||||||||||||||||
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 .
|
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 O nome final da função implantada estará no seguinte formato: | ||||||||||||||||||||||||||||
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 .
Existem também três campos de tipo de objeto com propriedades próprias:
|
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.
| ||||||
onUpdate (opcional) | Especifica uma função executada quando um usuário atualiza a extensão.
| ||||||
onConfigure (opcional) | Especifica uma função executada quando um usuário reconfigura a extensão.
|
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. |