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. |