Файл спецификации вашего расширения ( extension.yaml ) содержит метаданные расширения, объявляет ресурсы, создаваемые расширением, а также API и доступ, необходимые расширению, и определяет любые параметры, настраиваемые пользователем и предоставляемые расширением.
В таблицах на этой странице описаны поля, доступные для файла extension.yaml .
Основная и идентификационная информация
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/
| Основные области | |||||||||
|---|---|---|---|---|---|---|---|---|---|
nameнить (необходимый) | Идентификатор расширения. Содержит только строчные буквы, цифры и дефисы; ограничение в 40 символов. Примечание: это значение используется для генерации идентификатора экземпляра расширения (который затем используется для генерации имен учетной записи службы расширения и ресурсов, специфичных для расширения). | ||||||||
versionнить (необходимый) | Версия расширения. Необходимо использовать семантическое версионирование (например, 1.2.0). | ||||||||
specVersionнить (необходимый) | Версия спецификации расширений Firebase. Текущее значение: | ||||||||
licenseнить (необязательный) | Лицензия на расширение. Ваше расширение должно быть лицензировано с использованием | ||||||||
billingRequiredлогический (необязательный) | Требуется ли для использования сервисов, применяемых расширением, платный аккаунт Firebase для выставления счетов? Всегда устанавливать значение | ||||||||
displayNameнить (необязательный) | Удобное для отображения название расширения (3-5 слов). Ограничение в 40 символов. | ||||||||
descriptionнить (необязательный) | Краткое описание задачи, которую выполняет ваше расширение (примерно 1 предложение). | ||||||||
iconнить (необязательный) | Файл, который можно использовать в качестве значка вашего расширения на Этот файл должен представлять собой квадратный PNG-файл размером от 512x512 до 1024x1024 пикселей. Поместите файл в ту же директорию, что и При разработке иконки для вашего расширения учитывайте следующие рекомендации:
| ||||||||
tagsсписок строк (необязательный) | Теги помогут пользователям найти ваше расширение. Следующие теги соответствуют категориям в Центре расширений: marketing , messaging , payments , search , shipping , social , utilities , ai | ||||||||
sourceUrlнить (необязательный) | Общедоступный URL-адрес, по которому можно получить доступ к каталогу расширений. | ||||||||
releaseNotesUrlнить (необязательный) | Общедоступный URL-адрес, по которому можно ознакомиться с примечаниями к выпуску расширения. | ||||||||
authorодин авторский объект (необязательный) | Основной автор и контактное лицо по данному расширению. author: authorName: Your Company email: extensions@example.com url: https://example.com/
| ||||||||
contributorsсписок авторских объектов (необязательный) | Все остальные авторы, внесшие свой вклад в разработку расширения. contributors: - authorName: Your Name - authorName: Another Contributor email: colleague@example.net url: https://github.com/their-org/
| ||||||||
API Firebase и Google Cloud
В этих полях указываются API Firebase и Google, используемые расширением. При установке расширения пользователи могут выбрать автоматическое включение этих API в свой проект.
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
| Поля API | |
|---|---|
apiNameнить (необходимый) | Название API Google Должно соответствовать полю «Название сервиса» , указанному на странице обзора каждого API ( пример ) в библиотеке API Google Cloud. |
reasonнить (необходимый) | Краткое описание того, почему расширению необходимо использовать этот API. |
Роли IAM
These fields specify the Cloud IAM roles the extension requires. The service account provisioned for the extension is granted these roles.
Вы можете указать только одну из поддерживаемых ролей .
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
| Поля ролей | |
|---|---|
roleнить (необходимый) | Название роли IAM, необходимой для работы расширения. Должна быть одна из поддерживаемых ролей. |
reasonнить (необходимый) | Краткое описание того, почему расширению необходимы права доступа, предоставленные данной ролью. |
resourceнить (необязательный) | Ограничьте сферу действия роли только этим ресурсом. Если параметр опущен, по умолчанию используется |
Внешние сервисы
В этих полях указываются сервисы, не относящиеся к Firebase и Google, которые использует расширение (обычно это REST API). Платформа Firebase Extensions не предоставляет никаких средств для автоматического включения или авторизации этих сервисов.
externalServices:
- name: Example API
pricingUri: https://developers.example.com/pricing
- name: Another Example API
pricingUri: https://developers.example.com/pricing
| Внешние сервисные поля | |
|---|---|
nameнить (необходимый) | Название внешней службы, необходимой для работы расширения. |
pricingUriнить (необходимый) | URI для получения информации о ценах на услугу |
Параметры, настраиваемые пользователем
Эти поля определяют параметры, которые расширение предоставляет пользователям для настройки.
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
| Поля параметров | |
|---|---|
paramнить (необходимый) | Имя параметра. Это имя используется для ссылки на значение параметра в коде. |
labelнить (необходимый) | Краткое описание параметра. Отображается пользователю при запросе значения параметра. |
descriptionнить (необязательный) | Подробное описание параметра. Отображается пользователю при запросе значения параметра. Поддерживает Markdown. |
exampleнить (необязательный) | Пример значения параметра. |
defaultнить (необязательный) | Значение по умолчанию для параметра, если пользователь оставляет поле со значением параметра пустым. |
validationRegexнить (необязательный) | Регулярное выражение для проверки заданного пользователем значения параметра. Синтаксис RE2 от Google . |
validationErrorMessageнить (необязательный) | Сообщение об ошибке, которое будет отображаться в случае неудачной проверки регулярного выражения. |
requiredлогический (необязательный) | Определяет, может ли пользователь ввести пустую строку при запросе значения параметра. По умолчанию — true . |
immutableлогический (необязательный) | Определяет, может ли пользователь изменить значение параметра после установки (например, при перенастройке расширения). По умолчанию — Примечание: Если вы определяете параметр "location" для развернутых функций вашего расширения, установите для этого поля значение |
typeнить (необязательный) | Тип параметра. Специальные типы параметров могут иметь дополнительные требования или иное представление в пользовательском интерфейсе. См. следующие разделы. |
Выбираемые и множественно выбираемые параметры
Выбираемые и множественно выбираемые параметры предлагают пользователям выбрать один из предопределенных вариантов.
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
| Поля параметров с множественным выбором | |||||||
|---|---|---|---|---|---|---|---|
typeнить | Указывает, что параметр может принимать одно значение ( | ||||||
optionsсписок вариантов (необходимый) | Варианты, из которых пользователь может выбрать
| ||||||
Выбираемые параметры ресурса
Выбираемые параметры ресурсов предлагают пользователям выбрать ресурс (экземпляр базы данных, хранилище и т. д.) из своего проекта.
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
| Поля параметров ресурса | |
|---|---|
typeнить | Указывает, что параметр представляет собой ресурс проекта. |
resourceTypeнить (необходимый) | Тип ресурса, который пользователю будет предложено выбрать. Допустимые значения:
Однако в настоящее время пользовательский интерфейс выбора доступен только для сегментов Cloud Storage (другие типы ресурсов представлены в виде полей ввода текста произвольной формы). |
Секретные параметры
Секретные значения, предоставляемые пользователем (например, ключи API), обрабатываются иначе:
- Секретные значения хранятся с помощью Cloud Secret Manager. Доступ к этим значениям имеют только авторизованные клиенты (например, установленный экземпляр расширения).
- When users are prompted to provide these values, their input is not displayed.
params:
- param: PARAM_ID
label: Short description of the parameter
description: >-
What is the secret value?
type: secret
| Секретные поля параметров | |
|---|---|
typeнить | Указывает, что параметр является секретным значением. |
Ресурсы облачных функций
Эти поля объявляют облачные функции, включенные в расширение. Синтаксис объявления ресурсов немного отличается для функций первого и второго поколений, которые могут сосуществовать в расширении.
Облачные функции первого поколения
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
| Поля ресурсов | |||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
nameнить (необходимый) | Удобное для пользователя название для экспортируемой функции. Если вы не укажете свойство Окончательное название развернутой функции будет иметь следующий формат: | ||||||||||||||||
typeнить (необходимый) | Для ресурса функции первого поколения: firebaseextensions.v1beta.function | ||||||||||||||||
descriptionнить (необходимый) | Краткое описание того, какую задачу выполняет данная функция для расширения. | ||||||||||||||||
properties(необходимый) | Свойства облачных функций первого поколения. Ниже перечислены наиболее важные свойства, но полный список можно найти в справочнике по облачным функциям .
| ||||||||||||||||
Облачные функции 2-го поколения
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
| Поля ресурсов | |||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
nameнить (необходимый) | Удобное для пользователя название для экспортируемой функции. Если вы не укажете свойство Окончательное название развернутой функции будет иметь следующий формат: | ||||||||||||||||||||||||||||
typeнить (необходимый) | Для ресурса функции второго поколения: firebaseextensions.v1beta.v2function | ||||||||||||||||||||||||||||
descriptionнить (необходимый) | Краткое описание того, какую задачу выполняет данная функция для расширения. | ||||||||||||||||||||||||||||
properties(необходимый) | Свойства Cloud Functions второго поколения. Ниже перечислены наиболее важные свойства, но полный список можно найти в справочнике Cloud Functions .
Также имеются три поля объектного типа со своими собственными свойствами:
| ||||||||||||||||||||||||||||
События жизненного цикла
Lifecycle events let you specify functions that will run when a user installs, updates, or configure an instance of your extension. See Handle your extension's lifecycle events .
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
| Поля событий жизненного цикла | |||||||
|---|---|---|---|---|---|---|---|
onInstall(необязательный) | Указывает функцию, которая запускается при установке расширения пользователем.
| ||||||
onUpdate(необязательный) | Указывает функцию, которая запускается при обновлении расширения пользователем.
| ||||||
onConfigure(необязательный) | Указывает функцию, которая запускается при перенастройке пользователем расширения.
| ||||||
Пользовательские события (Eventarc)
Пользовательские события — это события, которые генерирует ваше расширение, позволяя пользователям встраивать в него собственную логику. См. раздел Eventarc в разделе «Добавление пользовательских хуков в расширение» .
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
| Пользовательские поля событий | |
|---|---|
typeнить (необходимый) | Тип идентификатора события. Составьте идентификатор из 3-4 полей, разделенных точками: поля идентификатора издателя, имени расширения и имени события обязательны; поле версии рекомендуется. Выберите уникальное и описательное имя события для каждого типа публикуемого вами события. |
descriptionнить (необходимый) | Описание события. |