مرجع manifest
همهٔ فیلدهای korsi-plugin.yaml، از روی JSON Schemaی قرارداد خود کرسی (korsi.plugin/v1). هر بخش یک فیلد سطح اول است و جدول زیرش فیلدهای درونی آن را با مسیر کامل نشان میدهد.
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. اولین ناشری که شناسهای را ارسال کند، صاحب آن است.
publisher
کلید ناشر شما: حروف کوچک انگلیسی، رقم و زیرخط، با حرف شروع. باید همان ناشر کلیدی باشد که با آن ارسال میکنید.
version
نسخهٔ SemVer، مثل 1.2.0. اصلاح همیشه نسخهٔ تازه است؛ نسخهٔ ارسالشده ویرایش نمیشود.
plugin_api
بازهٔ نسخههای صفحهٔ افزونه که این نسخه با آنها کار میکند، به شکل major.minor با عملگر، مثل >=1.0,<2.0. فقط instanceهایی که نسخهشان در این بازه است این نسخه را دریافت میکنند.
">=1.0,<2.0"type
نقش اصلی افزونه. عمق بازبینی را تعیین میکند، نه کارهایی را که مجاز است.
intake_connectorinsight_moduletool_moduleapp_moduleknowledge_packnames
نام افزونه در فروشگاه و لانچر. دستکم یک زبان لازم است؛ بی نام فارسی، فروشگاه نام زبان دیگری را نشان میدهد.
summary
یک جملهٔ معرفی برای فروشگاه افزونهها.
icon
نشانی آیکن افزونه.
hue
رنگ شاخص افزونه در پوستهٔ کرسی، مثل #1565C0.
runtime
کد افزونه کجا اجرا میشود و کرسی چطور به آن میرسد.
| فیلد | نوع | توضیح |
|---|---|---|
runtime.placementالزامی | یکی از مقدارها |
مقدارهای مجاز: externalinstancenone |
runtime.base_urlاختیاری | متن | فقط برای placement برابر قالب uri دستکم 1 نویسه حداکثر 2083 نویسه |
runtime.imageاختیاری | متن | برای placement برابر حداکثر 500 نویسه |
runtime.portاختیاری | عدد صحیح | برای placement برابر دستکم 1 حداکثر 65535 |
runtime.egressاختیاری | فهرستی از متن | مقصدهای خروجی مجاز افزونه، مثل حداکثر 20 مورد |
data_handling
اعلام ناشر دربارهٔ دادهٔ سازمان؛ در فروشگاه نشان داده میشود.
| فیلد | نوع | توضیح |
|---|---|---|
data_handling.egressاختیاری | یکی از مقدارها | دادهٔ سازمان کجا میرود: مقدارهای مجاز: nonepublisherthird_partyپیشفرض: "none" |
data_handling.storesاختیاری | فهرستی از متن | چه نوع دادهای نزد افزونه میماند، مثل حداکثر 20 مورد |
data_handling.retention_daysاختیاری | عدد صحیح | چند روز داده نگه داشته میشود. دستکم 0 حداکثر 3650 |
data_handling.locationاختیاری | متن | کشور محل نگهداری داده، با کد دوحرفی، مثل الگو: ^[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 لازم است).
| فیلد | نوع | توضیح |
|---|---|---|
record_types[].keyالزامی | متن | کلید نوع، همان که در مسیر |
record_types[].namesالزامی | متن چندزبانه | نام نوع رکورد به زبانهای کرسی. |
record_types[].visibilityالزامی | یکی از مقدارها | چه کسی رکورد را میبیند: مقدارهای مجاز: organizationcasepersonal |
record_types[].title_fieldاختیاری | متن | فیلدی از رکورد که عنوانش در فهرستها و برای کرسیار است. حداکثر 64 نویسه پیشفرض: "title" |
record_types[].schemaالزامی | JSON Schema | JSON Schemaی بدنهٔ رکورد؛ کرسی هر رکورد را موقع نوشتن با آن میسنجد. |
proposals
نوع پیشنهادهایی که افزونه در رکوردهای کرسی میگذارد. هر نوع scope proposals.* متناظرش را میخواهد.
action.createcase.changedecision.candidatecalendar.event.createintake
نوع منبعی که افزونه وارد کرسی میکند: message یا document (scope sources.intake.* لازم است).
events
موضوع رویدادهایی که افزونه میخواهد بگیرد، مثل plugin.proposal.settled.
tools
ابزارهایی که افزونه از راه کرسی به کرسیار میدهد. ابزار فقطخواندنی است.
| فیلد | نوع | توضیح |
|---|---|---|
tools[].nameالزامی | متن | نام ابزار؛ کرسی آن را در |
tools[].descriptionالزامی | متن چندزبانه | توضیح ابزار برای کرسیار، تا بداند کی صدایش بزند. |
tools[].input_schemaاختیاری | JSON Schema | JSON Schemaی ورودی ابزار؛ کرسی |
ui
صفحههای افزونه در پوستهٔ کرسی.
| فیلد | نوع | توضیح |
|---|---|---|
ui.appاختیاری | شیء | اپ کامل افزونه که از لانچر باز میشود، داخل iframe در پوستهٔ کرسی. |
ui.app.entryاختیاری | متن | مسیر صفحهٔ اول اپ، نسبت به پیشفرض: "/" |
ui.app.tabsاختیاری | فهرستی از شیء | تبهایی که کرسی بالای اپ نشان میدهد. حداکثر 8 مورد |
ui.app.tabs[].keyالزامی | متن | کلید تب. |
ui.app.tabs[].namesالزامی | متن چندزبانه | نام تب به زبانهای کرسی. |
ui.app.tabs[].pathالزامی | متن | مسیر صفحهٔ تب، نسبت به |
ui.panelsاختیاری | فهرستی از شیء | پنلهای افزونه در صفحههای خود کرسی؛ فقط وقتی شخص بازشان کند بار میشوند. حداکثر 10 مورد |
ui.panels[].pointالزامی | یکی از مقدارها | جای پنل: مقدارهای مجاز: record.paneldesk.widget |
ui.panels[].recordاختیاری | یکی از مقدارها | برای مقدارهای مجاز: casemeetingdocument |
ui.panels[].entryالزامی | متن | مسیر صفحهٔ پنل، نسبت به |
ui.panels[].namesاختیاری | متن چندزبانه | عنوان پنل به زبانهای کرسی. |
settings_schema
JSON Schemaی تنظیمات نصب؛ ادمین آنها را در صفحهٔ نصب پر میکند و در lifecycle به افزونه میرسد.
services
خدمتهایی که افزونه برایشان MU کم میکند، مثل «خواندن یک ایمیل».
| فیلد | نوع | توضیح |
|---|---|---|
services[].keyالزامی | متن | کلید خدمت که افزونه در رزرو و مصرف کیف پول میفرستد. الگو: ^[a-z][a-z0-9_.]{0,63}$ |
services[].namesالزامی | متن چندزبانه | نام خدمت، برای ریز مصرف ادمین. |
plans
پلنهایی که افزونه میفروشد. خرید فقط از درگاه کرسی است.
| فیلد | نوع | توضیح |
|---|---|---|
plans[].keyالزامی | متن | کلید پلن. |
plans[].namesالزامی | متن چندزبانه | نام پلن در فروشگاه. |
plans[].periodالزامی | یکی از مقدارها | دورهٔ پلن: مقدارهای مجاز: monthlyyearlyonce |
plans[].muالزامی | عدد یا متن | مقدار MU که پلن در هر دوره به کیف پول نصب میدهد. بزرگتر از صفر. |
plans[].ratesاختیاری | نگاشت کلید به عدد یا متن | نرخ هر خدمت در این پلن: کلید خدمت ← MU برای هر واحد. فقط برای خدمتهای اعلامشده در |
slots
جایگاههایی که افزونه پر میکند؛ قابلیتهایی که در هر سازمان پرکنندهٔ محدود دارند.
| فیلد | نوع | توضیح |
|---|---|---|
slots.providesاختیاری | فهرستی از متن | نام جایگاهها. حداکثر 5 مورد |
support
راه تماس با پشتیبانی ناشر، برای ادمینهای سازمانها.
| فیلد | نوع | توضیح |
|---|---|---|
support.contactاختیاری | متن | ایمیل یا تلفن پشتیبانی. حداکثر 200 نویسه |
support.urlاختیاری | متن | نشانی صفحهٔ پشتیبانی. قالب uri دستکم 1 نویسه حداکثر 2083 نویسه |
همهٔ اینها را در یک manifest کامل ببینید: افزونهٔ نمونه