File spesifikasi ekstensi (extension.yaml) berisi metadata ekstensi Anda, mendeklarasikan resource yang dibuat oleh ekstensi serta API dan akses yang diperlukan oleh ekstensi, dan menentukan parameter yang dikonfigurasi pengguna yang disediakan oleh ekstensi.
Tabel di halaman ini menjelaskan kolom yang tersedia untuk file extension.yaml.
Informasi dasar dan identifikasi
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/
| Kolom dasar | |||||||||
|---|---|---|---|---|---|---|---|---|---|
namestring (wajib) |
ID untuk ekstensi. Hanya dapat berisi huruf kecil, angka, dan tanda hubung; maksimal 40 karakter Catatan: Nilai ini digunakan untuk membuat ID instance ekstensi (yang kemudian digunakan untuk membuat nama akun layanan ekstensi dan resource khusus ekstensi). |
||||||||
versionstring (wajib) |
Versi ekstensi. Wajib mengikuti pembuatan versi semver (misalnya 1.2.0) |
||||||||
specVersionstring (wajib) |
Versi spesifikasi Firebase Extensions. Nilai saat ini: |
||||||||
licensestring (opsional) |
Lisensi untuk ekstensi. Ekstensi Anda harus dilisensikan menggunakan |
||||||||
billingRequiredboolean (opsional) |
Apakah layanan yang digunakan oleh ekstensi memerlukan akun penagihan Firebase paket berbayar atau tidak. Selalu ditetapkan ke |
||||||||
displayNamestring (opsional) |
Nama tampilan yang praktis untuk ekstensi (3-5 kata). Maksimal 40 karakter. |
||||||||
descriptionstring (opsional) |
Deskripsi singkat tentang tugas yang dijalankan ekstensi Anda (~1 kalimat). | ||||||||
iconstring (opsional) |
File yang akan digunakan sebagai ikon ekstensi Anda di
File ini harus berupa PNG persegi antara 512x512 hingga 1024x1024 piksel.
Tempatkan file di direktori yang sama dengan Perhatikan panduan berikut saat mendesain ikon untuk ekstensi Anda:
|
||||||||
tagsdaftar string (opsional) |
Tag akan membantu pengguna menemukan ekstensi Anda.
Tag berikut memetakan ke kategori di Extensions Hub:
marketing,
messaging,
payments,
search,
shipping,
social,
utilities,
ai
|
||||||||
sourceUrlstring (opsional) |
URL publik tempat direktori ekstensi dapat diakses. | ||||||||
releaseNotesUrlstring (opsional) |
URL publik tempat catatan rilis untuk ekstensi dapat diakses. | ||||||||
authorsatu objek penulis (opsional) |
Penulis utama dan kontak untuk ekstensi. author: authorName: Your Company email: extensions@example.com url: https://example.com/
|
||||||||
contributorsdaftar objek penulis (opsional) |
Semua penulis tambahan yang berkontribusi untuk ekstensi. contributors: - authorName: Your Name - authorName: Another Contributor email: colleague@example.net url: https://github.com/their-org/
|
||||||||
Firebase dan Google Cloud API
Kolom ini menentukan Firebase dan Google API yang digunakan ekstensi. Saat menginstal ekstensi, pengguna dapat memilih untuk mengaktifkan API ini secara otomatis dalam project mereka.
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
| Kolom API | |
|---|---|
apiNamestring (wajib) |
Nama Google API Harus berkaitan dengan kolom Nama layanan seperti yang tercantum di setiap halaman ringkasan API (contoh) di Library Google Cloud API |
reasonstring (wajib) |
Deskripsi singkat tentang alasan ekstensi perlu menggunakan API ini |
Peran IAM
Kolom ini menentukan peran Cloud IAM yang diperlukan ekstensi. Akun layanan yang disediakan untuk ekstensi diberi peran ini.
Anda hanya dapat menentukan salah satu peran yang didukung.
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
| Kolom peran | |
|---|---|
rolestring (wajib) |
Nama peran IAM yang diperlukan agar ekstensi dapat beroperasi Harus berupa salah satu peran yang didukung |
reasonstring (wajib) |
Deskripsi singkat tentang alasan ekstensi memerlukan akses yang diberikan oleh peran ini |
resourcestring (opsional) |
Batasi cakupan peran ke resource ini. Jika dihilangkan, setelan defaultnya adalah |
Layanan eksternal
Kolom ini menentukan layanan non-Firebase dan non-Google yang digunakan ekstensi (biasanya REST API). Platform Firebase Extensions tidak menyediakan cara untuk mengaktifkan atau melakukan otorisasi secara otomatis untuk layanan ini.
externalServices:
- name: Example API
pricingUri: https://developers.example.com/pricing
- name: Another Example API
pricingUri: https://developers.example.com/pricing
| Kolom layanan eksternal | |
|---|---|
namestring (wajib) |
Nama layanan eksternal yang diperlukan agar ekstensi dapat beroperasi |
pricingUristring (wajib) |
URI ke informasi harga untuk layanan |
Parameter yang dapat dikonfigurasi pengguna
Kolom ini menentukan parameter yang disediakan oleh ekstensi untuk dikonfigurasi pengguna.
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
| Kolom parameter | |
|---|---|
paramstring (wajib) |
Nama parameter. Anda menggunakan nama ini untuk mereferensikan parameter value dalam kode. |
labelstring (wajib) |
Deskripsi singkat parameter. Ditampilkan kepada pengguna saat mereka diminta memasukkan nilai parameter. |
descriptionstring (opsional) |
Deskripsi terperinci parameter. Ditampilkan kepada pengguna saat mereka diminta memasukkan nilai parameter. Mendukung Markdown. |
examplestring (opsional) |
Contoh nilai untuk parameter. |
defaultstring (opsional) |
Nilai default untuk parameter jika pengguna mengosongkan nilai parameter. |
validationRegexstring (opsional) |
Ekspresi reguler untuk validasi nilai parameter yang dikonfigurasi pengguna. SIntaksis Google RE2. |
validationErrorMessagestring (opsional) |
Pesan error yang akan ditampilkan jika validasi ekspresi reguler gagal. |
requiredboolean (opsional) |
Menentukan apakah pengguna dapat mengirim string kosong saat mereka diminta memasukkan nilai parameter. Nilai defaultnya adalah true.
|
immutableboolean (opsional) |
Menentukan apakah pengguna dapat mengubah nilai parameter setelah penginstalan (misalnya, jika mereka mengonfigurasi ulang ekstensi). Nilai defaultnya adalah Catatan: Jika Anda menentukan parameter "location" untuk fungsi ekstensi yang di-deploy, tetapkan kolom ini ke |
typestring (opsional) |
Jenis parameter. Jenis parameter khusus mungkin memiliki persyaratan tambahan atau presentasi UI yang berbeda. Lihat bagian berikut. |
Parameter yang dapat dipilih dan multi-pilihan
Parameter yang dapat dipilih dan multi-pilihan meminta pengguna untuk memilih dari daftar opsi yang telah ditentukan.
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
| Kolom parameter pilihan ganda | |||||||
|---|---|---|---|---|---|---|---|
typestring |
Menentukan bahwa parameter dapat berupa satu nilai ( |
||||||
optionsdaftar opsi (wajib) |
Opsi-opsi yang dapat dipilih oleh pengguna
|
||||||
Parameter resource yang dapat dipilih
Parameter resource yang dapat dipilih meminta pengguna untuk memilih resource (instance database, bucket penyimpanan, dsb.) dari project mereka.
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
| Kolom parameter resource | |
|---|---|
typestring |
Menentukan bahwa parameter merepresentasikan resource project |
resourceTypestring (wajib) |
Jenis resource yang akan meminta pengguna memilih. Nilai valid:
Namun, saat ini hanya bucket Cloud Storage yang memiliki UI pilihan (jenis resource lainnya ditampilkan sebagai kolom input teks bentuk bebas). |
Parameter secret
Nilai secret yang diberikan pengguna (misalnya, kunci API) ditangani secara berbeda:
- Nilai secret disimpan menggunakan Cloud Secret Manager. Hanya klien yang diotorisasi (misalnya, instance terinstal dari suatu ekstensi) yang dapat mengakses nilai ini.
- Saat pengguna diminta untuk memberikan nilai ini, input mereka tidak akan ditampilkan.
params:
- param: PARAM_ID
label: Short description of the parameter
description: >-
What is the secret value?
type: secret
| Kolom parameter secret | |
|---|---|
typestring |
Menentukan bahwa parameter adalah nilai secret |
Resource Cloud Function
Kolom ini mendeklarasikan Cloud Functions yang disertakan dalam ekstensi. Sintaksis deklarasi resource terlihat sedikit berbeda antara fungsi generasi ke-1 dan generasi ke-2, yang dapat beroperasi berdampingan dalam suatu ekstensi.
Cloud Functions generasi ke-1
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
| Kolom resource | |||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
namestring (wajib) |
Nama yang mudah digunakan untuk fungsi yang diekspor. Jika Anda tidak menentukan properti Nama akhir fungsi yang di-deploy akan menggunakan format berikut: |
||||||||||||||||
typestring (wajib) |
Untuk resource fungsi generasi ke-1:
firebaseextensions.v1beta.function
|
||||||||||||||||
descriptionstring (wajib) |
Deskripsi singkat tugas yang dijalankan fungsi untuk ekstensi. |
||||||||||||||||
properties(wajib) |
Properti Cloud Functions generasi ke-1. Properti yang paling penting tercantum di bawah ini, tetapi Anda dapat menemukan daftar lengkapnya dalam referensi Cloud Functions.
|
||||||||||||||||
Cloud Functions generasi ke-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
| Kolom resource | |||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
namestring (wajib) |
Nama yang mudah digunakan untuk fungsi yang diekspor. Jika Anda tidak menentukan properti Nama akhir fungsi yang di-deploy akan menggunakan format berikut: |
||||||||||||||||||||||||||||
typestring (wajib) |
Untuk resource fungsi generasi ke-2:
firebaseextensions.v1beta.v2function
|
||||||||||||||||||||||||||||
descriptionstring (wajib) |
Deskripsi singkat tugas yang dijalankan fungsi untuk ekstensi. |
||||||||||||||||||||||||||||
properties(wajib) |
Properti Cloud Functions generasi ke-2. Properti yang paling penting tercantum di bawah ini, tetapi Anda dapat menemukan daftar lengkapnya dalam referensi Cloud Functions.
Ada juga tiga kolom jenis objek dengan propertinya sendiri:
|
||||||||||||||||||||||||||||
Peristiwa siklus proses
Peristiwa siklus proses memungkinkan Anda menentukan fungsi yang akan dijalankan saat pengguna menginstal, memperbarui, atau mengonfigurasi instance ekstensi Anda. Baca artikel Menangani peristiwa siklus proses ekstensi.
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
| Kolom peristiwa siklus proses | |||||||
|---|---|---|---|---|---|---|---|
onInstall(opsional) |
Menentukan fungsi yang dijalankan saat pengguna menginstal ekstensi.
|
||||||
onUpdate(opsional) |
Menentukan fungsi yang dijalankan saat pengguna memperbarui ekstensi.
|
||||||
onConfigure(opsional) |
Menentukan fungsi yang dijalankan saat pengguna mengonfigurasi ulang ekstensi.
|
||||||
Peristiwa kustom (Eventarc)
Peristiwa kustom adalah peristiwa yang dikeluarkan ekstensi Anda untuk memungkinkan pengguna memasukkan logika mereka sendiri ke dalam ekstensi Anda. Lihat bagian Eventarc di artikel Menambahkan hook pengguna ke ekstensi.
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
| Kolom peristiwa kustom | |
|---|---|
typestring (wajib) |
ID jenis peristiwa. Buat ID dari 3-4 kolom yang dipisahkan titik: kolom ID penayang, nama ekstensi, dan nama peristiwa wajib ada; kolom versi direkomendasikan. Pilih nama peristiwa yang unik dan deskriptif untuk setiap jenis peristiwa yang Anda publikasikan. |
descriptionstring (wajib) |
Deskripsi peristiwa. |