توسعه‌دهندگان
ورود ناشر

مرجع manifest

همهٔ فیلدهای korsi-plugin.yaml، از روی JSON Schemaی قرارداد خود کرسی (korsi.plugin/v1). هر بخش یک فیلد سطح اول است و جدول زیرش فیلدهای درونی آن را با مسیر کامل نشان می‌دهد.

دریافت JSON SchemaPluginManifest
آنچه کاتالوگ کرسی جدا از این schema می‌سنجدschema باید korsi.plugin/v1 باشد؛ id به شکل reverse-DNS با حروف کوچک (مثل ir.acme.crm)؛ version به شکل SemVer؛ publisher فقط حروف کوچک، رقم و زیرخط و برابر ناشر کلید شما؛ نام دست‌کم به یک زبان؛ و plugin_api بازه‌ای از نسخه‌های major.minor. هر instance بقیهٔ قاعده‌ها را موقع انتشار می‌سنجد، مثل اینکه هر چیزی که استفاده می‌کنید scopeاش را خواسته باشید.
متن چندزبانه

هر جا نوع فیلد «متن چندزبانه» است، یک شیء با کلیدهای fa، en و ar می‌خواهد، هر کدام تا ۵۰۰ نویسه. دست‌کم یکی لازم است؛ فارسی اول، چون زبان پیش‌فرض کرسی است.

names: { fa: "مشتریان", en: "Customers", ar: "العملاء" }

schema

متن
الزامی

نسخهٔ قالب manifest. باید دقیقاً korsi.plugin/v1 باشد؛ کاتالوگ کرسی manifest بی این فیلد را نمی‌پذیرد.

پیش‌فرض:"korsi.plugin/v1"

id

متن
الزامی

شناسهٔ یکتای افزونه در کاتالوگ، به شکل reverse-DNS و با حروف کوچک، مثل ir.acme.crm. اولین ناشری که شناسه‌ای را ارسال کند، صاحب آن است.

حداکثر 128 نویسه

publisher

متن
الزامی

کلید ناشر شما: حروف کوچک انگلیسی، رقم و زیرخط، با حرف شروع. باید همان ناشر کلیدی باشد که با آن ارسال می‌کنید.

version

متن
الزامی

نسخهٔ SemVer، مثل 1.2.0. اصلاح همیشه نسخهٔ تازه است؛ نسخهٔ ارسال‌شده ویرایش نمی‌شود.

plugin_api

متن
اختیاری

بازهٔ نسخه‌های صفحهٔ افزونه که این نسخه با آن‌ها کار می‌کند، به شکل major.minor با عملگر، مثل >=1.0,<2.0. فقط instanceهایی که نسخه‌شان در این بازه است این نسخه را دریافت می‌کنند.

حداکثر 40 نویسه
پیش‌فرض:">=1.0,<2.0"

type

یکی از مقدارها
الزامی

نقش اصلی افزونه. عمق بازبینی را تعیین می‌کند، نه کارهایی را که مجاز است.

مقدارهای مجاز:intake_connectorinsight_moduletool_moduleapp_moduleknowledge_pack

names

متن چندزبانه
الزامی

نام افزونه در فروشگاه و لانچر. دست‌کم یک زبان لازم است؛ بی نام فارسی، فروشگاه نام زبان دیگری را نشان می‌دهد.

summary

متن چندزبانه
اختیاری

یک جملهٔ معرفی برای فروشگاه افزونه‌ها.

icon

متن
اختیاری

نشانی آیکن افزونه.

قالب uri
دست‌کم 1 نویسه
حداکثر 2083 نویسه

hue

متن
اختیاری

رنگ شاخص افزونه در پوستهٔ کرسی، مثل #1565C0.

runtime

شیء
الزامی

کد افزونه کجا اجرا می‌شود و کرسی چطور به آن می‌رسد.

فیلدنوعتوضیح
runtime.placement
الزامی

یکی از مقدارها

external: سرور خود ناشر. instance: کنار instance روی سرور کرسی (همیشه بازبینی «تأییدشده» لازم دارد). none: کدی اجرا نمی‌شود (بستهٔ دانش).

مقدارهای مجاز:externalinstancenone
runtime.base_url
اختیاری

متن

فقط برای placement برابر external: نشانی سرور افزونه؛ کرسی lifecycle، رویدادها و ابزارها را زیر آن صدا می‌زند. باید https باشد، به‌جز localhost در توسعه. افزونهٔ instance آن را ندارد و کرسی برای هر نصب آدرس جدا می‌سازد.

قالب uri
دست‌کم 1 نویسه
حداکثر 2083 نویسه
runtime.image
اختیاری

متن

برای placement برابر instance: image کانتینر در رجیستری کرسی، با digest نام‌برده‌شده.

حداکثر 500 نویسه
runtime.port
اختیاری

عدد صحیح

برای placement برابر instance: پورتی که کانتینر روی آن HTTP گوش می‌دهد؛ پیش‌فرض 8080.

دست‌کم 1
حداکثر 65535
runtime.egress
اختیاری

فهرستی از متن

مقصدهای خروجی مجاز افزونه، مثل api.openai.com:443. در placement برابر instance فقط همین‌ها باز هستند.

حداکثر 20 مورد

data_handling

شیء
اختیاری

اعلام ناشر دربارهٔ دادهٔ سازمان؛ در فروشگاه نشان داده می‌شود.

فیلدنوعتوضیح
data_handling.egress
اختیاری

یکی از مقدارها

دادهٔ سازمان کجا می‌رود: none (هیچ‌جا)، publisher (سرور ناشر) یا third_party (شخص ثالث).

مقدارهای مجاز:nonepublisherthird_party
پیش‌فرض:"none"
data_handling.stores
اختیاری

فهرستی از متن

چه نوع داده‌ای نزد افزونه می‌ماند، مثل message_metadata.

حداکثر 20 مورد
data_handling.retention_days
اختیاری

عدد صحیح

چند روز داده نگه داشته می‌شود.

دست‌کم 0
حداکثر 3650
data_handling.location
اختیاری

متن

کشور محل نگه‌داری داده، با کد دوحرفی، مثل IR.

الگو:^[A-Z]{2}$

scopes

شیء
اختیاری

دسترسی‌هایی که افزونه می‌خواهد. ادمین سازمان موقع نصب آن‌ها را می‌بیند و تأیید می‌کند. هر چه استفاده می‌کنید باید scopeاش را خواسته باشید.

فیلدنوعتوضیح
scopes.required
اختیاری

فهرستی از یکی از مقدارها

scopeهایی که بدون آن‌ها افزونه کار نمی‌کند.

مقدارهای مجاز:people.readstructure.readcases.readactions.readdecisions.readmeetings.readmeetings.transcript.readdocuments.readdocuments.text.readcalendar.readmemory.searchrecords.ownproposals.actionproposals.caseproposals.decisionproposals.calendarsources.intake.messagesources.intake.documentwallet.consumerecords.confidential
scopes.optional
اختیاری

فهرستی از یکی از مقدارها

scopeهایی که ادمین می‌تواند ندهد؛ افزونه باید بی آن‌ها هم کار کند.

مقدارهای مجاز:people.readstructure.readcases.readactions.readdecisions.readmeetings.readmeetings.transcript.readdocuments.readdocuments.text.readcalendar.readmemory.searchrecords.ownproposals.actionproposals.caseproposals.decisionproposals.calendarsources.intake.messagesources.intake.documentwallet.consumerecords.confidential

record_types

فهرستی از شیء
اختیاری

نوع‌های رکوردی که افزونه در کرسی نگه می‌دارد و مستقیم می‌نویسد (scope ‏records.own لازم است).

حداکثر 20 مورد
فیلدنوعتوضیح
record_types[].key
الزامی

متن

کلید نوع، همان که در مسیر /records/{type} می‌آید.

record_types[].names
الزامی

متن چندزبانه

نام نوع رکورد به زبان‌های کرسی.

record_types[].visibility
الزامی

یکی از مقدارها

چه کسی رکورد را می‌بیند: organization (هر کس که افزونه را می‌بیند)، case (دید پرونده‌اش را به ارث می‌برد) یا personal (فقط صاحبش).

مقدارهای مجاز:organizationcasepersonal
record_types[].title_field
اختیاری

متن

فیلدی از رکورد که عنوانش در فهرست‌ها و برای کرسیار است.

حداکثر 64 نویسه
پیش‌فرض:"title"
record_types[].schema
الزامی

JSON Schema

JSON Schemaی بدنهٔ رکورد؛ کرسی هر رکورد را موقع نوشتن با آن می‌سنجد.

proposals

فهرستی از یکی از مقدارها
اختیاری

نوع پیشنهادهایی که افزونه در رکوردهای کرسی می‌گذارد. هر نوع scope ‏proposals.* متناظرش را می‌خواهد.

مقدارهای مجاز:action.createcase.changedecision.candidatecalendar.event.create

intake

فهرستی از متن
اختیاری

نوع منبعی که افزونه وارد کرسی می‌کند: message یا document (scope ‏sources.intake.* لازم است).

حداکثر 2 مورد

events

فهرستی از متن
اختیاری

موضوع رویدادهایی که افزونه می‌خواهد بگیرد، مثل plugin.proposal.settled.

حداکثر 50 مورد

tools

فهرستی از شیء
اختیاری

ابزارهایی که افزونه از راه کرسی به کرسیار می‌دهد. ابزار فقط‌خواندنی است.

حداکثر 30 مورد
فیلدنوعتوضیح
tools[].name
الزامی

متن

نام ابزار؛ کرسی آن را در POST {base_url}/korsi/tools/{name} صدا می‌زند.

tools[].description
الزامی

متن چندزبانه

توضیح ابزار برای کرسیار، تا بداند کی صدایش بزند.

tools[].input_schema
اختیاری

JSON Schema

JSON Schemaی ورودی ابزار؛ کرسی arguments را پیش از فراخوان با آن می‌سنجد.

ui

شیء
اختیاری

صفحه‌های افزونه در پوستهٔ کرسی.

فیلدنوعتوضیح
ui.app
اختیاری

شیء

اپ کامل افزونه که از لانچر باز می‌شود، داخل iframe در پوستهٔ کرسی.

ui.app.entry
اختیاری

متن

مسیر صفحهٔ اول اپ، نسبت به base_url.

پیش‌فرض:"/"
ui.app.tabs
اختیاری

فهرستی از شیء

تب‌هایی که کرسی بالای اپ نشان می‌دهد.

حداکثر 8 مورد
ui.app.tabs[].key
الزامی

متن

کلید تب.

ui.app.tabs[].names
الزامی

متن چندزبانه

نام تب به زبان‌های کرسی.

ui.app.tabs[].path
الزامی

متن

مسیر صفحهٔ تب، نسبت به base_url.

ui.panels
اختیاری

فهرستی از شیء

پنل‌های افزونه در صفحه‌های خود کرسی؛ فقط وقتی شخص بازشان کند بار می‌شوند.

حداکثر 10 مورد
ui.panels[].point
الزامی

یکی از مقدارها

جای پنل: record.panel (کنار پرونده، جلسه یا سند) یا desk.widget (میزکار).

مقدارهای مجاز:record.paneldesk.widget
ui.panels[].record
اختیاری

یکی از مقدارها

برای record.panel: کنار کدام رکورد — case، meeting یا document.

مقدارهای مجاز:casemeetingdocument
ui.panels[].entry
الزامی

متن

مسیر صفحهٔ پنل، نسبت به base_url.

ui.panels[].names
اختیاری

متن چندزبانه

عنوان پنل به زبان‌های کرسی.

settings_schema

JSON Schema
اختیاری

JSON Schemaی تنظیمات نصب؛ ادمین آن‌ها را در صفحهٔ نصب پر می‌کند و در lifecycle به افزونه می‌رسد.

services

فهرستی از شیء
اختیاری

خدمت‌هایی که افزونه برایشان MU کم می‌کند، مثل «خواندن یک ایمیل».

حداکثر 30 مورد
فیلدنوعتوضیح
services[].key
الزامی

متن

کلید خدمت که افزونه در رزرو و مصرف کیف پول می‌فرستد.

الگو:^[a-z][a-z0-9_.]{0,63}$
services[].names
الزامی

متن چندزبانه

نام خدمت، برای ریز مصرف ادمین.

plans

فهرستی از شیء
اختیاری

پلن‌هایی که افزونه می‌فروشد. خرید فقط از درگاه کرسی است.

حداکثر 10 مورد
فیلدنوعتوضیح
plans[].key
الزامی

متن

کلید پلن.

plans[].names
الزامی

متن چندزبانه

نام پلن در فروشگاه.

plans[].period
الزامی

یکی از مقدارها

دورهٔ پلن: monthly، yearly یا once.

مقدارهای مجاز:monthlyyearlyonce
plans[].mu
الزامی

عدد یا متن

مقدار MU که پلن در هر دوره به کیف پول نصب می‌دهد. بزرگ‌تر از صفر.

plans[].rates
اختیاری

نگاشت کلید به عدد یا متن

نرخ هر خدمت در این پلن: کلید خدمت ← MU برای هر واحد. فقط برای خدمت‌های اعلام‌شده در services.

slots

شیء
اختیاری

جایگاه‌هایی که افزونه پر می‌کند؛ قابلیت‌هایی که در هر سازمان پرکنندهٔ محدود دارند.

فیلدنوعتوضیح
slots.provides
اختیاری

فهرستی از متن

نام جایگاه‌ها.

حداکثر 5 مورد

support

شیء
اختیاری

راه تماس با پشتیبانی ناشر، برای ادمین‌های سازمان‌ها.

فیلدنوعتوضیح
support.contact
اختیاری

متن

ایمیل یا تلفن پشتیبانی.

حداکثر 200 نویسه
support.url
اختیاری

متن

نشانی صفحهٔ پشتیبانی.

قالب uri
دست‌کم 1 نویسه
حداکثر 2083 نویسه

همهٔ این‌ها را در یک manifest کامل ببینید: افزونهٔ نمونه

مرجع manifest - توسعه‌دهندگان کرسی