Файл спецификации вашего расширения ( 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
В этих полях указываются роли Cloud IAM, необходимые расширению. Эти роли предоставляются учетной записи службы, созданной для расширения.
Вы можете указать только одну из поддерживаемых ролей .
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. Доступ к этим значениям имеют только авторизованные клиенты (например, установленный экземпляр расширения).
- Когда пользователям предлагается ввести эти значения, их ввод не отображается.
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 .
Также имеются три поля объектного типа со своими собственными свойствами:
| ||||||||||||||||||||||||||||
События жизненного цикла
События жизненного цикла позволяют указывать функции, которые будут выполняться при установке, обновлении или настройке пользователем экземпляра вашего расширения. См. раздел «Обработка событий жизненного цикла вашего расширения» .
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нить (необходимый) | Описание события. |