مرجع الإضافة.yaml

يحتوي ملف مواصفات الإضافة (extension.yaml) على metadata الإضافة، ويوضّح الموارد التي أنشأتها الإضافة وواجهات برمجة التطبيقات وعمليات الوصول التي تتطلّبها الإضافة، ويحدّد أي مَعلمات يضبطها المستخدم ويقدّمها الإضافة.

تصف الجداول في هذه الصفحة الحقول المتاحة لـ 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
string
(مطلوب)

معرّف الإضافة

لا يمكن أن يحتوي إلا على أحرف صغيرة وأرقام وشرطات. 40 حرفًا الحد.

ملاحظة: يتم استخدام هذه القيمة لإنشاء رابط معرف المثيل (الذي يُستخدم بعد ذلك لإنشاء أسماء حساب خدمة الإضافة والموارد الخاصة بهذه الإضافة).

version
string
(مطلوب)

إصدار الإضافة.

يجب أن يتّبع نظام ترقيم الإصدارات semver (مثلاً، 1.2.0).


specVersion سلسلة
(مطلوب)

إصدار مواصفات إضافات Firebase

القيمة الحالية: v1beta


license سلسلة
(اختياري)

ترخيص الإضافة

يجب أن تكون الإضافة مرخّصة باستخدام Apache-2.0.

billingRequired
منطقي
(اختياري)

ما إذا كانت الخدمات التي تستخدمها الإضافة تتطلّب حساب فوترة في Firebase لإصدار مدفوع

يتم ضبطها دائمًا على true.


displayName سلسلة
(اختياري)

يجب أن يكون الاسم المعروض للإضافة سهل الاستخدام (من 3 إلى 5 كلمات).

عدد الأحرف المسموح به هو 40.


description سلسلة
(اختياري)
وصف موجز للمهمة التي تؤديها الإضافة (جملة واحدة تقريبًا)
icon
string
(اختياري)

الملف لاستخدامه كرمز للإضافة على extensions.dev و وحدة تحكم Firebase.

يجب أن يكون هذا الملف بتنسيق PNG مربعًا بحجم يتراوح بين 512×512 و1024×1024 بكسل. ضَع الملف في الدليل نفسه الذي يتضمّن extension.yaml، ولا يمكنك تحديد دليل فرعي.

يُرجى مراعاة الإرشادات التالية عند تصميم رمز لإضافة Chrome:

  • اختَر ألوان الخلفية والأعمال الفنية المناسبة علامتك التجارية.
  • حافِظ على بساطة ألوان الرموز باستخدام لونَين فقط. ألوان متعددة يمكن أن تجعل الأيقونة مربكة بصريًا.
  • وللسبب ذاته، لا تستخدم تدرجات اللون في الأيقونة. التدرجات يصعب تمييزها بالأحجام الصغيرة وجعل الأيقونة للغاية.
  • استخدِم صورًا بسيطة وفريدة تُظهر وظائف الإضافة .
  • إذا كانت شركتك تُنشئ إضافات متعدّدة، لا تستخدِم شعارك كرمز. وسيجد المستخدمون صعوبة في التمييز بين الإضافات.
  • اجعل العمل الفني رسمًا وغامقًا. لا تستخدِم أعمالاً فنية دقيقة أو مفصّلة ، لأنّها لن تظهر بشكل جيد عند تصغيرها.
  • ولا تضمِّن كلمات تشرح ما تفعله الإضافة. النص هو غير مقروء في الأحجام الأصغر.

tags قائمة بالسلاسل
(اختياري)
علامات لمساعدة المستخدمين في العثور على إضافتك يتم ربط العلامات التالية بالفئات في "مركز الإضافات": marketing، messaging, payments, search, shipping, social, utilities, ai
sourceUrl
string
(اختياري)
عنوان URL العام الذي يمكن الوصول من خلاله إلى دليل الإضافات.

releaseNotesUrl سلسلة
(اختياري)
عنوان URL متاح للجميع يمكن من خلاله الوصول إلى ملاحظات الإصدار الخاصة بالإضافة.

author عنصر مؤلف واحد
(اختياري)

تمثّل هذه السمة المؤلف الرئيسي وجهة التواصل المتعلقة بالإضافة.

author:
  authorName: Your Company
  email: extensions@example.com
  url: https://example.com/
حقول المؤلفين

authorName سلسلة
(مطلوب)

تمثّل هذه السمة اسم المؤلف.

يمكن أن يكون شخصًا أو شركة أو مؤسسة أو غير ذلك.


email سلسلة
(اختياري)
عنوان البريد الإلكتروني للمؤلف

url سلسلة
(اختياري)
عنوان URL متاح للجميع يمكن من خلاله الوصول إلى معلومات عن المؤلف
contributors
قائمة بعناصر المؤلفين
(اختيارية)

أي مؤلفين إضافيين ساهموا في إضافة الإضافة

contributors:
  - authorName: Your Name
  - authorName: Another Contributor
    email: colleague@example.net
    url: https://github.com/their-org/
حقول المؤلفين

authorName سلسلة
(مطلوب)

تمثّل هذه السمة اسم المؤلف.

يمكن أن يكون شخصًا أو شركة أو مؤسسة أو غير ذلك.


email سلسلة
(اختياري)
عنوان البريد الإلكتروني للمؤلف

url سلسلة
(اختياري)
عنوان URL متاح للجميع يمكن من خلاله الوصول إلى معلومات عن المؤلف

Firebase وGoogle Cloud APIs

تحدِّد هذه الحقول واجهات برمجة تطبيقات Firebase وGoogle التي تستخدمها الإضافة. عندما يُثبِّت المستخدمون الإضافة، يمكنهم اختيار تفعيل واجهات برمجة التطبيقات هذه تلقائيًا في مشروعهم.

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
حقول واجهة برمجة التطبيقات
apiName
string
(مطلوب)

اسم واجهة برمجة تطبيقات Google

يجب أن يتوافق مع الحقل اسم الخدمة كما هو مذكور في كل صفحة النظرة العامة حول واجهة برمجة التطبيقات (مثال) في العمود مكتبة Google Cloud API


reason سلسلة
(مطلوب)
وصف موجز لسبب حاجة الإضافة إلى استخدام واجهة برمجة التطبيقات هذه

أدوار إدارة الهوية وإمكانية الوصول

تحدِّد هذه الحقول أدوار 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 سلسلة
(مطلوب)

اسم دور "إدارة الهوية وإمكانية الوصول" المطلوب لتشغيل الإضافة

يجب أن يكون أحد الأدوار المتوافقة


reason سلسلة
(مطلوب)
وصف موجز لسبب احتياج الإضافة إلى إذن الوصول الممنوح من هذا الدور
resource
string
(اختياري)

يمكنك حصر نطاق الدور بهذا المورد.

وفي حال حذفها، يتم ضبط الإعدادات التلقائية على projects/${project_id}. راجِع مقالة تقليل نطاق الأدوار.

الخدمات الخارجية

تحدِّد هذه الحقول الخدمات غير التابعة لشركة Firebase وGoogle التي تستخدمها الإضافة (عادةً واجهات برمجة تطبيقات REST). لا توفّر منصة 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
string
(مطلوب)
اسم المَعلمة يمكنك استخدام هذا الاسم للإشارة إلى المَعلمة قيمة في التعليمة البرمجية.
label
string
(مطلوب)
وصف موجز للمَعلمة يتم عرضها للمستخدم عندما يتم طلب قيمة المَعلمة منه.
description
string
(اختياري)

وصف تفصيلي للمَعلمة يتم عرضها للمستخدم عندما يُطلب منه إدخال قيمة المَعلمة.

تتوافق مع Markdown.

example
string
(اختياري)
مثال على قيمة للمَعلمة

default سلسلة
(اختياري)
القيمة التلقائية للمَعلمة إذا ترك المستخدم قيمة المَعلمة فارغ.

validationRegex سلسلة
(اختياري)
تعبير عادي للتحقق من صحة ضبط المستخدم للمعلَمة بنية Google RE2
validationErrorMessage
string
(اختياري)
رسالة خطأ تظهر في حال تعذُّر التحقّق من صحة التعبير العادي.
required
منطقي
(اختياري)
تحدِّد هذه السياسة ما إذا كان يمكن للمستخدم إرسال سلسلة فارغة عندما المطلوبة لقيمة المعلمة. الإعداد التلقائي هو true.
immutable
منطقي
(اختياري)

يحدِّد ما إذا كان بإمكان المستخدِم تغيير قيمة المَعلمة بعد التثبيت (مثلاً في حال إعادة ضبط الإضافة). الإعداد التلقائي هو false.

ملاحظة: في حال تحديد "موقع جغرافي" معلَمة عملية النشر وظائف الإضافة، عيِّن هذا الحقل على true.

type
string
(اختياري)
نوع المَعلمة قد يكون لأنواع المعلَمات الخاصة أو متطلبات مختلفة أو عرضًا تقديميًا مختلفًا لواجهة المستخدم. راجِع الأقسام التالية.

المَعلمات القابلة للاختيار والاختيار المتعدّد

تطلب المَعلمات القابلة للاختيار والمَعلمات القابلة للاختيار المتعدّدة من المستخدِمين الاختيار من قائمة الخيارات المحدّدة مسبقًا.

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
سلسلة

select أو multiselect

تُستخدَم لتحديد أنّ المَعلمة يمكن أن تكون قيمة واحدة (select). أو عدة قيم (multiselect) تم اختيارها من مجموعة من خيارات محددة مسبقًا


options قائمة من الخيارات
(مطلوب)

الخيارات التي يمكن للمستخدم الاختيار من بينها

حقول الخيارات

value سلسلة
(مطلوب)
إحدى القيم التي يمكن للمستخدم اختيارها. هذه هي القيمة التي تحصل عليها عند قراءة قيمة المَعلمة في الرمز.

label سلسلة
(اختياري)
وصف موجز للخيار القابل للاختيار إذا تم حذفها، يتم تطبيق الإعدادات التلقائية إلى value.

مَعلمات الموارد القابلة للاختيار

تطلب مَعلمات الموارد القابلة للاختيار من المستخدمين اختيار مورد (مثيل قاعدة بيانات أو حزمة تخزين أو غير ذلك) من مشروعهم.

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 سلسلة

selectresource

تُحدِّد المَعلمة التي تمثِّل مورد المشروع.

resourceType
string
(مطلوب)

نوع المورد الذي سيطلب من المستخدم اختياره.

قيم صالحة:

  • storage.googleapis.com/Bucket
  • firestore.googleapis.com/Database
  • firebasedatabase.googleapis.com/DatabaseInstance

ومع ذلك، لا تتوفّر حاليًا واجهة مستخدم للاختيار إلا في حِزم Cloud Storage (يتم عرض أنواع الموارد الأخرى كحقول إدخال نص بتنسيق حر).

المَعلمات السرية

يتم التعامل مع القيم السرية المقدَّمة من المستخدِم (مثل مفاتيح واجهة برمجة التطبيقات) بشكلٍ مختلف:

  • يتم تخزين القيم السرية باستخدام Cloud Secret Manager. لا يمكن الوصول إلى هذه القيم إلا من خلال العملاء المعتمَدين (مثل نسخة مثبَّتة من إضافة).
  • وعندما يُطلب من المستخدمين تقديم هذه القيم، لا يتم عرض بياناتهم.
params:
  - param: PARAM_ID
    label: Short description of the parameter
    description: >-
      What is the secret value?
    type: secret
حقول المَعلمات السرية
type
سلسلة

secret

لتحديد أن المعلمة هي قيمة سرية

موارد Cloud Function

توضّح هذه الحقول دوال السحابة الإلكترونية المضمَّنة في إحدى الإضافات. المورد بنية نموذج البيان تبدو مختلفة قليلاً بين الجيل الأول والجيل الثاني الدوال، والتي يمكن أن تتوفر معًا في امتداد معيّن.

وظائف السحابة الإلكترونية من الجيل الأول

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 سلسلة
(مطلوب)

اسم سهل الاستخدام للدالة التي تم تصديرها.

في حال عدم تحديد سمة entryPoint (راجِع المعلومات أدناه)، يجب أن تتطابق هذه القيمة مع اسم الدالة في رمز دوالّك المصدر.

سيكون الاسم النهائي للدالة deployed في التنسيق التالي: ext-extension-instance-id-name

type
string
(مطلوب)
لمورد دالة من الجيل الأول: firebaseextensions.v1beta.function
description
string
(مطلوب)

وصف موجز للمهمة التي تؤديها الدالة لإضافة


properties (مطلوب)

مواقع Cloud Functions من الجيل الأول أهم الخصائص مدرجة أدناه، ولكن يمكنك العثور على القائمة الكاملة في السحابة الإلكترونية مرجع الدوال

المواقع
location
(اختياري)

الموقع الجغرافي الذي سيتم نشر الدالة فيه الإعداد التلقائي هو us-central1

entryPoint
(اختياري)
اسم الدالة التي تم تصديرها ضمن رمز المصدر للدوالّ التي يجب أن تبحث عنها الإضافة. الإعداد الافتراضي لقيمة name أعلاه.
sourceDirectory
(اختياري)

الدليل الذي يحتوي على package.json في ملفه الجذر يجب أن يكون ملف رمز مصدر الدوال بهذا الدليل. الإعداد التلقائي هو functions

ملاحظة: يحدِّد الحقل main من package.json ملف رمز المصدر الخاص بالدوالّ (مثل index.js).

timeout
(اختياري)

الحد الأقصى لوقت تنفيذ الدالة

  • عناوين URL التلقائية: 60s
  • الحد الأقصى للقيمة: 540s
availableMemoryMb
(اختياري)

مقدار الذاكرة بالميغابايت المتوفّرة للدالة

  • عناوين URL التلقائية: 256
  • القيم الصالحة هي: 128 و256 512 و1024 و2048
runtime
(إجراء مقترَح)

بيئة وقت التشغيل للدالة

httpsTrigger
أو
eventTrigger
أو
scheduleTrigger
أو
taskQueueTrigger
(يجب استخدام أحد أنواع مشغّلات الدوالّ هذه)
راجع كتابة دوال السحابة الإلكترونية لإحدى الإضافات للحصول على معلومات محدَّدة حول كل نوع مشغل.

وظائف Cloud من الجيل الثاني

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 سلسلة
(مطلوب)

اسم سهل الاستخدام للدالة التي تم تصديرها.

في حال عدم تحديد سمة entryPoint (راجِع المعلومات أدناه)، يجب أن تتطابق هذه القيمة مع اسم الدالة في رمز دوالّك المصدر.

سيكون الاسم النهائي للدالة deployed في التنسيق التالي: ext-extension-instance-id-name

type
string
(مطلوب)
بالنسبة إلى مورد دالة من الجيل الثاني: firebaseextensions.v1beta.v2function

description سلسلة
(مطلوب)

وصف موجز للمهمة التي تؤديها الدالة لإضافة


properties (مطلوب)

مواقع الجيل الثاني من Cloud Functions في ما يلي أهم السمات ، ولكن يمكنك العثور على القائمة الكاملة في مرجع الدوالّ في السحابة الإلكترونية.

المواقع
location
(اختياري)

الموقع الذي سيتم نشر الدالة فيه. الإعداد التلقائي هو us-central1


sourceDirectory (اختياري)

الدليل الذي يحتوي على package.json في ملفه الجذر يجب أن يكون ملف رمز مصدر الدوال بهذا الدليل. الإعداد التلقائي هو functions

ملاحظة: يحدِّد الحقل main من package.json ملف رمز المصدر الخاص بالدوالّ (مثل index.js).

هناك أيضًا ثلاثة حقول من نوع العنصر تتضمّن خصائص خاصة بها:

سمات buildConfig

buildConfig.runtime (ننصح به)

بيئة وقت التشغيل للدالة

buildConfig.entryPoint
(اختياري)
اسم الدالة التي تم تصديرها داخل رمز مصدر الدوال التي يجب أن تبحث عنها الإضافة. الإعداد الافتراضي لقيمة name أعلاه.
خصائص ServiceConfig

serviceConfig.timeoutSeconds (اختياري)

الحد الأقصى لوقت تنفيذ الدالة

  • عناوين URL التلقائية: 60
  • الحد الأقصى للقيمة: 540
serviceConfig.availableMemory
(اختياري)
مقدار الذاكرة المتوفّرة لدالة معيّنة الإعداد التلقائي هو 256M. الوحدات المسموح بها هي k، M وG وMi Gi إذا لم يتم تقديم أي وحدة، سيتم تفسير القيمة على أنّها وحدات بايت.
خصائص eventTrigger

eventTrigger.eventType (مطلوب)
نوع الحدث المطلوب الاستماع إليه. عرض كتابة السحابة الإلكترونية دوال الإضافات لأنواع الأحداث المتاحة لكل منتج.

eventTrigger.eventFilters (اختياري)
الفلاتر التي تحدّ بشكل أكبر من الأحداث التي يتم الاستماع إليها على سبيل المثال، يمكنك الاستماع إلى الأحداث التي تتطابق فقط مع نمط موارد معيّن. عرض كتابة السحابة الإلكترونية دوال الإضافات للاطّلاع على معلومات حول فلترة كلٍّ منها لنوع الحدث.

eventTrigger.channel (اختياري)
اسم القناة المرتبطة بالعامل المشغِّل بالتنسيق projects/{project}/locations/{location}/channels/{channel} . في حال حذف هذه السمة، ستستمع الدالة إلى أحداث على القناة التلقائية للمشروع.

eventTrigger.triggerRegion (اختياري)
ولن يتلقّى عامل التشغيل سوى الأحداث التي نشأت في هذه المنطقة. يمكن أن تكون المنطقة نفسها التي تقع فيها الدالة، أو منطقة مختلفة أو مناطق متعدّدة، أو المنطقة العالمية. في حال عدم توفيرها، يتم ضبطها تلقائيًا على المنطقة نفسها التي تتوفّر فيها الوظيفة.

أحداث مراحل النشاط

تتيح لك أحداث مراحل النشاط تحديد الدوال التي سيتم تشغيلها عندما يثبّت المستخدم أو تهيئة مثيل للإضافة. اطّلِع على معالجة أحداث دورة حياة الإضافة.

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
(اختياري)

تحدِّد هذه السياسة دالة يتم تشغيلها عندما يثبّت المستخدم الإضافة.

مواصفات الدالة

function سلسلة
(مطلوب)

اسم الدالة التي يتم تشغيلها في قائمة الانتظار والتي ستتعامل مع الحدث.

يجب تعريف هذه الدالة في resources. ويكون taskقائمة المهام.


processingMessage سلسلة
(مطلوب)
رسالة للعرض في وحدة تحكُّم Firebase أثناء تنفيذ المهمة
onUpdate
(اختياري)

تُحدِّد دالة يتم تنفيذها عندما يعدِّل مستخدم الإضافة .

مواصفات الدوال

function سلسلة
(مطلوب)

اسم الدالة التي يتم تشغيلها في قائمة الانتظار والتي ستتعامل مع الحدث.

يجب تعريف هذه الدالة في resources. ويكون taskقائمة المهام.


processingMessage سلسلة
(مطلوب)
رسالة للعرض في وحدة تحكُّم Firebase أثناء تنفيذ المهمة

onConfigure (اختياري)

تحدِّد هذه السياسة دالة يتم تشغيلها عندما يُعيد المستخدم ضبط الإضافة.

مواصفات الدالة

function سلسلة
(مطلوب)

اسم الدالة التي يتم تشغيلها في قائمة الانتظار والتي ستتعامل مع الحدث.

يجب تعريف هذه الدالة في resources. ويكون taskقائمة المهام.


processingMessage سلسلة
(مطلوب)
رسالة للعرض في وحدة تحكُّم Firebase أثناء تنفيذ المهمة

الأحداث المخصّصة (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 سلسلة
(مطلوب)
وصف الحدث