Modul tərifi
CoSuite modullarını manifestdə təsvir et (müqavilə 1.7). Funksiyalar, OpenAPI 3.1 və scope-lu API, webhook-lar, provides, məlumat kateqoriyaları, bazarlar.
Müqavilənin 1.7 versiyasından etibarən manifestindəki hər modul özünü ətraflı təsvir edə bilər. CoSuite kataloqu, qeydiyyat axını, tətbiqinin CoSuite-dəki səhifəsi, cosuite.io məhsul səhifələri və (2-ci mərhələdə) müştəri API arayışı bu sahələrdən yaradılır. Bütün sahələr istəyə bağlıdır; 1.6 manifesti olduğu kimi etibarlı qalır.
Nümunə
{
"key": "dent.treatment",
"name": { "tr": "Hasta ve tedavi planı", "en": "Patients and treatment plans", "az": "Xəstə və müalicə planı" },
"description": { "tr": "Hasta kartı ve tedavi planı.", "en": "Patient records and treatment plans.", "az": "Xəstə kartı və müalicə planı." },
"limits": [{ "key": "smsPerMonth", "unit": "count_per_month" }],
"features": [
{ "key": "plan_pdf", "name": { "tr": "Tedavi planı PDF'i", "en": "Treatment plan PDF", "az": "Müalicə planı PDF" } },
{ "key": "sms", "name": { "tr": "SMS hatırlatma", "en": "SMS reminders", "az": "SMS xatırlatma" }, "limit": "smsPerMonth" }
],
"api": { "version": "2026-11", "openapi": "/openapi.json", "scopes": [{ "key": "patients:read" }, { "key": "patients:write" }] },
"webhooks": [{ "type": "treatment.completed", "scope": "patients:read", "schema": { "type": "object" } }],
"provides": [],
"dataCategories": ["identity", "contact", "health"],
"markets": [
{ "country": "TR", "locales": ["tr"] },
{ "country": "AZ", "locales": ["az"], "price": { "currency": "AZN", "amount": 25 } }
]
}
Sahələr
| Sahə | Mənası |
|---|---|
key, name, limits, usage |
Əvvəlki versiyalardakı kimi qalır (bax: müqavilə). Modul açarı <appKey>.<module>; name hər dil üçün ayrıca, 200 simvola qədər. |
description |
Hər dil üçün təsvir, 1000 simvola qədər. |
features[] |
Modulun imkanları: key (kiçik hərflərlə, ^[a-z][a-z0-9_]*$), hər dil üçün name, istəyə bağlı hər dil üçün description və asılı olduğu istəyə bağlı limit (eyni modulun limits[].key dəyərlərindən biri). |
api |
Modulun müştərilərə açdığı endpoint-lər. openapi: OpenAPI 3.1 sənədi; ya URL (https və ya baseUrl-ə nisbətən yol; yalnız JSON, ən çoxu 2 MB), ya da daxil edilmiş obyekt. scopes[]: modulun resource:action formasında scope-ları (patients:read), hər birinin istəyə bağlı hər dil üçün name dəyəri ilə. version: sənin API versiyan. |
webhooks[] |
Modulun yaydığı hadisələr: type (nöqtəli, kiçik hərflərlə, məsələn, treatment.completed), istəyə bağlı hər dil üçün name və description, istəyə bağlı abunə scope dəyəri (api.scopes siyahısından biri) və data üçün JSON Schema. |
provides[] |
Modulun CoSuite-də öz üzərinə götürdüyü ortaq biznes funksiyaları: crm, quotes, einvoice, expenses, inventory, projects, inbox, booking, reviews, payments, reports, website, seo, social, shipping, hr, pos. İki modul eyni biznes üçün eyni anda eyni funksiyanı heç vaxt təmin etmir. |
dataCategories[] |
Modulun emal etdiyi şəxsi məlumatlar: identity, contact, financial, health, location, biometric, children, communications, media, usage, employment, legal. Məxfilik bildirişləri (GDPR, KVKK) və yoxlama üçün istifadə olunur. |
markets[] |
Modulun təklif olunduğu ölkələr (country, ISO 3166-1 alpha-2) və onların dilləri (locales, manifestin locales siyahısından götürülür); istəyə bağlı ölkə qiyməti { currency, amount }. Boşdursa, bazar CoSuite-də müəyyən edilir. |
Limitlər bir baxışda: hər modul üçün 64 funksiya, 64 scope, 64 webhook, 16 provides, 32 məlumat kateqoriyası və 100 bazara qədər.
Uyğunluq testinin tətbiq etdiyi qaydalar
Uyğunluq testi yalnız doldurduğun sahələri yoxlayır. Partnyor portalı da göndərəndə eyni yoxlamaları işə salır.
- Hər bazar dilində mətnlər.
marketssiyahısında istifadə olunan hər dil üçün modulunname,descriptiondəyərləri və hər funksiyanınnamedəyəri doldurulmalıdır. - Bazar dilləri manifestdən gəlir.
markets[].localessiyahısındakı hər dil manifestinlocalessiyahısında da olmalıdır. - Təkrarlanan açar yoxdur:
features,api.scopes,webhooks(typeüzrə) vəmarkets(countryüzrə) siyahılarında;providessiyahısında təkrar yoxdur. - Funksiya limitləri mövcuddur. Funksiyanın
limitdəyəri modulunlimits[].keydəyərlərindən biri olmalıdır. - Webhook scope-ları mövcuddur. Webhook-un
scopedəyəriapitərifini tələb edir vəapi.scopessiyahısından biri olmalıdır. - Yalnız tanınan dəyərlər.
providesvədataCategoriesyalnız yuxarıda sadalanan dəyərləri qəbul edir. CoSuite özü naməlum dəyərləri nəzərə almır (irəli uyğunluq), amma test yazı səhvlərini tutmaq üçün onları rədd edir. - OpenAPI yoxlanılır:
apiolan hər modul üçün sənəd yüklənir (və ya daxildən oxunur) və aşağıda təsvir olunduğu kimi yoxlanılır.
OpenAPI tələbləri
Test CoSuite-in güvəndiyi hissələri yoxlayır; bu, tam sxem yoxlaması deyil.
openapi3.1.xolur;info.titlevəinfo.versionmövcuddur;pathsboş deyil və hər yol/ilə başlayır.- Hər əməliyyat
cosuitetəhlükəsizlik sxemi vasitəsilə ən azı bir scope tələb edir:security: [{ "cosuite": ["<scope>"] }]. Özsecuritydəyəri olmayan əməliyyat kök səviyyəsindəkisecuritydəyərini miras alır. - Sənəddə istifadə olunan hər scope modulun
api.scopessiyahısında elan olunmalıdır. operationIddəyərləri unikaldır.openapiURL olduqda:baseUrlhttps-dirsə, o da https olmalıdır, 10 saniyə ərzində yönləndirmə olmadan JSON ilə200qaytarmalıdır (YAML dəstəklənmir) və ən çoxu 2 MB olmalıdır.
Minimal etibarlı sənəd:
{
"openapi": "3.1.0",
"info": { "title": "DentCloud treatment API", "version": "2026-11" },
"security": [{ "cosuite": ["patients:read"] }],
"components": {
"securitySchemes": {
"cosuite": { "type": "http", "scheme": "bearer", "bearerFormat": "CoSuite API key", "description": "CoSuite customer API key; the gateway checks the scopes in security" }
}
},
"paths": {
"/patients": {
"get": { "operationId": "listPatients", "responses": { "200": { "description": "Patients" } } },
"post": {
"operationId": "createPatient",
"security": [{ "cosuite": ["patients:write"] }],
"responses": { "201": { "description": "Created" } }
}
}
}
}
Yuxarıdakı cosuite sxemi yekun tərifdir: müştərilər CoSuite API açarlarını şlüzə bearer token kimi göndərir, şlüz security-dəki əhatələri yoxlayır. İstəsəniz servers[0].url sahəsinə API-nizin tətbiqinizlə eyni mənbədəki əsas yolunu yazın (məs. https://app.dentcloud.example/api); şlüz sorğuları ora ötürür.
Müştərilər API-nə necə çatır
Müştərilər modulunuzun uc nöqtələrini öz CoSuite açarları ilə api.cosuite.io şlüzü vasitəsilə çağırır. Sorğu tətbiqinizə Connect imzası və hansı biznesin çağırdığını bildirən X-CoSuite-Tenant başlığı ilə gəlir. Başlıqlar, öhdəlikləriniz və xəta kodları üçün Şlüz və müştəri API-si səhifəsinə baxın.
Bazarlar və dillər
- Müştəri yalnız öz ölkəsində təklif olunan modulları görür.
marketssiyahısını doldursan, modulun yalnız həmin ölkələrdə göstərilir. - Hər bazarın dillərində mətn məcburidir (bax: qaydalar). Digər dillər istəyə bağlıdır.
pricehəmin ölkə üçün yerli qiymət təyin edir. O olmadıqda CoSuite modulun USD qiymətini cari məzənnə ilə çevirir.marketsboşdursa və ya yoxdursa, modulun harada təklif olunacağına CoSuite qərar verir.
Açarlar daimidir
Modulun canlıya çıxdıqdan sonra modul, funksiya, limit, scope və webhook açarları müqavilənin bir hissəsinə çevrilir. Onların adını dəyişmə; yeni açar əlavə et və köhnəsini ən azı 6 ay saxla (bax: versiyalama).