El archivo de especificación de tu extensión (extension.yaml) contiene los metadatos de tu
extensión, declara los recursos que creó la extensión y las APIs, así
como el acceso que requiere la extensión, y define cualquier parámetro configurado por el usuario
que proporcionó la extensión.
En las tablas de esta página, se describen los campos disponibles para un archivo
extension.yaml.
Información básica y de identificación
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 | |||||||||
|---|---|---|---|---|---|---|---|---|---|
namecadena (obligatoria) |
Es el identificador de la extensión. Solo puede contener letras minúsculas, números y guiones. Tiene un límite de 40 caracteres. Nota: Este valor se usa para generar el ID de instancia de la extensión (que luego se usa para generar los nombres de la cuenta de servicio y los recursos específicos de la extensión). |
||||||||
versioncadena (obligatoria) |
Es la versión de la extensión. Debe seguir el control de versiones de semver (por ejemplo, 1.2.0). |
||||||||
specVersioncadena (obligatoria) |
Es la versión de la especificación de Extensiones de Firebase. Valor actual: |
||||||||
licensecadena (opcional) |
Es la licencia de la extensión. Tu extensión debe tener una licencia |
||||||||
billingRequiredbooleano (opcional) |
Indica si los servicios que usa la extensión requieren una cuenta de facturación de Firebase de nivel de pago. Siempre se establece en |
||||||||
displayNamecadena (opcional) |
Es el nombre visible y descriptivo de la extensión (de 3 a 5 palabras). Tiene un límite de 40 caracteres. |
||||||||
descriptioncadena (opcional) |
Es una descripción breve de la tarea que realiza tu extensión (aprox. 1 oración). | ||||||||
iconcadena (opcional) |
Es un archivo que se usa como ícono de la extensión en
Debe ser un archivo PNG cuadrado de entre 512 × 512 y 1,024 × 1,024 píxeles.
Colócalo en el mismo directorio que Ten en cuenta los siguientes lineamientos cuando diseñes un ícono para tu extensión:
|
||||||||
tagslista de cadenas (opcional) |
Son etiquetas para ayudar a los usuarios a descubrir tu extensión.
Las siguientes etiquetas se asignan a las categorías en Extension Hub:
marketing,
messaging,
payments,
search,
shipping,
social,
utilities y
ai.
|
||||||||
sourceUrlcadena (opcional) |
Es una URL pública con la que se puede acceder al directorio de la extensión. | ||||||||
releaseNotesUrlcadena (opcional) |
Es una URL pública con la que se puede acceder a las notas de la versión de la extensión. | ||||||||
authorun objeto de autor (opcional) |
Es el autor principal y el punto de contacto de la extensión. author: authorName: Your Company email: extensions@example.com url: https://example.com/
|
||||||||
contributorslista de objetos de autor (opcional) |
Incluye cualquier otro autor que contribuya a la extensión. contributors: - authorName: Your Name - authorName: Another Contributor email: colleague@example.net url: https://github.com/their-org/
|
||||||||
APIs de Firebase y Google Cloud
Estos campos especifican las APIs de Firebase y Google que usa la extensión. Cuando los usuarios instalan la extensión, pueden habilitar automáticamente estas APIs en tu proyecto.
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 la API | |
|---|---|
apiNamecadena (obligatoria) |
Nombre de la API de Google Debe corresponder al campo Nombre del servicio que aparece en la página de descripción general de cada API (ejemplo) en la Biblioteca de APIs de Google Cloud. |
reasoncadena (obligatoria) |
Es una descripción breve de por qué la extensión debe usar esta API. |
Roles de IAM
Estos campos especifican los roles de Cloud IAM que requiere la extensión. La cuenta de servicio aprovisionada para la extensión recibe estos roles.
Solo puedes especificar uno de los roles admitidos.
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 roles | |
|---|---|
rolecadena (obligatoria) |
Es el nombre del rol de IAM que necesita la extensión para funcionar Debe ser uno de los roles admitidos. |
reasoncadena (obligatoria) |
Es una descripción breve de por qué la extensión necesita el acceso que otorga este rol. |
resourcecadena (opcional) |
Limita el permiso del rol a este recurso. Si se omite, el valor predeterminado es |
Servicios externos
Estos campos especifican los servicios que no son de Firebase ni de Google que usa la extensión (por lo general, las APIs de REST). La plataforma de Extensiones de Firebase no proporciona ningún medio para habilitar o realizar la autorización automáticamente para estos servicios.
externalServices:
- name: Example API
pricingUri: https://developers.example.com/pricing
- name: Another Example API
pricingUri: https://developers.example.com/pricing
| Campos de servicios externos | |
|---|---|
namecadena (obligatoria) |
Es el nombre del servicio externo necesario para que la extensión funcione. |
pricingUricadena (obligatoria) |
Es el URI de la información de precios del servicio. |
Parámetros configurables por el usuario
Estos campos definen los parámetros que la extensión pone a disposición de los usuarios para su configuración.
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 del parámetro | |
|---|---|
paramcadena (obligatoria) |
Es el nombre del parámetro. Úsalo para hacer referencia al valor del parámetro en el código. |
labelcadena (obligatoria) |
Es una descripción breve del parámetro. Se muestra al usuario cuando se le solicita el valor del parámetro. |
descriptioncadena (opcional) |
Es una descripción detallada del parámetro. Se muestra al usuario cuando se le solicita el valor del parámetro. Admite Markdown. |
examplecadena (opcional) |
Es un valor de ejemplo para el parámetro. |
defaultcadena (opcional) |
Es el valor predeterminado del parámetro si el usuario lo deja en blanco. |
validationRegexcadena (opcional) |
Es una expresión regular para validar el valor configurado por el usuario del parámetro. Usa la sintaxis RE2 de Google. |
validationErrorMessagecadena (opcional) |
Es un mensaje de error para mostrar si falla la validación de la regex. |
requiredbooleano (opcional) |
Define si el usuario puede enviar una cadena vacía cuando se le
solicita el valor del parámetro. La configuración predeterminada es true.
|
immutablebooleano (opcional) |
Define si el usuario puede cambiar el valor del parámetro después de la
instalación (por ejemplo, si reconfigura la extensión). La configuración predeterminada es
Nota: Si defines un parámetro de “ubicación” para las funciones
implementadas de tu extensión, establece este campo en |
typecadena (opcional) |
Es el tipo de parámetro. Los tipos de parámetros especiales pueden tener requisitos adicionales o una presentación de IU diferente. Consulta las siguientes secciones. |
Parámetros seleccionables y multiseleccionables
Los parámetros seleccionables y seleccionables permiten a los usuarios elegir de una lista de opciones 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 opción múltiple | |||||||
|---|---|---|---|---|---|---|---|
typecadena |
Especifica que el parámetro puede ser un valor ( |
||||||
optionslista de opciones (obligatorio) |
Son las opciones que puede elegir el usuario.
|
||||||
Parámetros de recursos seleccionables
Los parámetros de recursos seleccionables requieren que los usuarios seleccionen un recurso (instancia de base de datos, bucket de almacenamiento, etc.) de su proyecto.
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 del parámetro de recurso | |
|---|---|
typecadena |
Especifica que el parámetro representa un recurso del proyecto. |
resourceTypecadena (obligatoria) |
Es el tipo de recurso que se le pide seleccionar al usuario. Valores válidos:
Sin embargo, solo los buckets de Cloud Storage tienen actualmente una IU de selección (otros tipos de recursos se presentan como campos de entrada de texto de formato libre). |
Parámetros secretos
Los valores del Secret proporcionados por el usuario (como las claves de API) se manejan de manera diferente:
- Los valores del Secret se almacenan con Cloud Secret Manager. Solo los clientes autorizados (como una instancia instalada de una extensión) pueden acceder a estos valores.
- Cuando se les solicita a los usuarios que proporcionen estos valores, no se muestra su entrada.
params:
- param: PARAM_ID
label: Short description of the parameter
description: >-
What is the secret value?
type: secret
| Campos del parámetro secreto | |
|---|---|
typecadena |
Especifica que el parámetro es un valor secreto |
Recursos de Cloud Function
Estos campos declaran las funciones de Cloud Functions incluidas en una extensión. La sintaxis de la declaración de recursos se ve un poco diferente entre las funciones de 1ª y 2ª gen., que pueden coexistir en una extensión.
Cloud Functions de 1ª gen.
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 | |||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
namecadena (obligatoria) |
Es un nombre fácil de usar para la función exportada. Si no especificas el campo El nombre final de la función implementada tendrá el
siguiente formato:
|
||||||||||||||||
typecadena (obligatoria) |
Para un recurso de función de 1ª gen.:
firebaseextensions.v1beta.function
|
||||||||||||||||
descriptioncadena (obligatoria) |
Es una descripción breve de la tarea que realiza la función para la extensión. |
||||||||||||||||
properties(obligatorio) |
Son propiedades de Cloud Functions de 1ª gen. Las más importantes se enumeran a continuación, pero puedes encontrar la lista completa en la referencia de Cloud Functions.
|
||||||||||||||||
Cloud Functions de 2ª gen.
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 | |||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
namecadena (obligatoria) |
Es un nombre fácil de usar para la función exportada. Si no especificas el campo El nombre final de la función implementada tendrá el
siguiente formato:
|
||||||||||||||||||||||||||||
typecadena (obligatoria) |
Para un recurso de función de 2ª gen.:
firebaseextensions.v1beta.v2function
|
||||||||||||||||||||||||||||
descriptioncadena (obligatoria) |
Es una descripción breve de la tarea que realiza la función para la extensión. |
||||||||||||||||||||||||||||
properties(obligatorio) |
Son propiedades de Cloud Functions de 2ª gen. Las más importantes se enumeran a continuación, pero puedes encontrar la lista completa en la referencia de Cloud Functions.
También hay tres campos de tipo de objeto con sus propias propiedades:
|
||||||||||||||||||||||||||||
Eventos del ciclo de vida
Los eventos del ciclo de vida te permiten especificar funciones que se ejecutarán cuando un usuario instale, actualice o configure una instancia de tu extensión. Consulta la sección Controla los eventos del ciclo de vida de tu extensión.
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 eventos del ciclo de vida | |||||||
|---|---|---|---|---|---|---|---|
onInstall(opcional) |
Especifica una función que se ejecuta cuando un usuario instala la extensión.
|
||||||
onUpdate(opcional) |
Especifica una función que se ejecuta cuando un usuario actualiza la extensión.
|
||||||
onConfigure(opcional) |
Especifica una función que se ejecuta cuando un usuario reconfigura la extensión.
|
||||||
Eventos personalizados (Eventarc)
Los eventos personalizados son aquellos que emite tu extensión para permitir que los usuarios inserten su propia lógica en ella. Consulta la sección de Eventarc en Agrega hooks de usuario a una extensión.
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 | |
|---|---|
typecadena (obligatoria) |
Es el identificador de tipo del evento. Crea el identificador a partir de 3 o 4 campos delimitados por puntos: los campos ID de publicador, nombre de la extensión y nombre del evento son obligatorios. Se recomienda el campo de versión. Elige un nombre de evento único y descriptivo para cada tipo de evento que publiques. |
descriptioncadena (obligatoria) |
Es la descripción del evento. |