Factorizer/Cluster ERP WikiCluster ERP English
Ana sayfa / API referansı

Açıklama

API'ye genel bakış

Cluster ERP HTTP API'sinde temel yollar, modül önekleri, OpenAPI erişilebilirliği, içerik türleri ve bir isteğin izlediği yol.

Cluster ERP sunucusu, create_app fonksiyonunun src/cluster_erp/server/app.py içinde kurduğu tek bir FastAPI uygulamasıdır. Bu sayfa HTTP yollarının nasıl oluştuğunu, etkileşimli API belgelerinin nerede bulunduğunu, yolların hangi içerik türlerini kullandığını ve bir isteğin soketten hizmete kadar başına neler geldiğini açıklar. Uç noktaları listelemez; API başvurusu her yol grubu için bir sayfaya bağlanır.

Kısaca

  • Her arka uç modülü yollarını ModuleBase.api_prefix değeri olan /api/v1/<module> altına bağlar (src/cluster_erp/core/module_base.py:37-38). fleet ve intranet modülleri aynı öneki sabit metin olarak yazar (src/cluster_erp/modules/fleet/module.py:310, src/cluster_erp/modules/intranet/module.py:172).
  • Modül kayıt defteri her modülü yüklerken onun register_routes metodunu çağırır (src/cluster_erp/core/module_registry.py:49-51).
  • Modüller dışındaki paylaşılan yollar src/cluster_erp/server/routes/ içindedir ve create_app tarafından eklenir (src/cluster_erp/server/app.py:1432-1450).
  • Etkileşimli belge sayfaları yalnız debug ayarı açıkken vardır (src/cluster_erp/server/app.py:1296-1303).
  • İstek ve yanıt gövdeleri JSON'dur; dosya yüklemeleri (çok parçalı form verisi) ve dosya indirmeleri bunun dışındadır.

Temel yollar

Tablo sunucunun yanıtladığı yolları gruplar. Modül ve paylaşılan yol sayıları API başvurusu sayfasındadır.

Yol ailesi Sahibi Yolun kuruluşu Kaynak
/api/v1/<module>/... 28 arka uç modülü api_prefix, yönlendirici öneki ve yol src/cluster_erp/core/module_base.py:37-38
/api/v1/notes, /api/v1/attachments, /api/v1/email, /api/v1/chat paylaşılan sunucu yolları yönlendiricinin prefix bağımsız değişkeni src/cluster_erp/server/routes/notes.py:14, src/cluster_erp/server/routes/attachments.py:27, src/cluster_erp/server/routes/email.py:22, src/cluster_erp/server/routes/chat.py:23
/api/v1/parties/composite, /api/v1/parties/{party_id}/roles/... paylaşılan sunucu yolları taraflar önekinde ikinci bir yönlendirici src/cluster_erp/server/routes/party_composite.py:27, src/cluster_erp/server/routes/party_roles.py:31
/api/v1/{module}/_fields/..., /api/v1/_overlay kiracı alanları yolun içinde bir modül adı src/cluster_erp/server/routes/tenant_fields.py:42-43
/api/v1/signup/..., /api/v1/vendor/... kayıt ve operatör konsolu yalnız multi_tenant açıkken eklenir src/cluster_erp/server/app.py:1440-1450
/api/v1/modules, /api/v1/_meta, /api/v1/_switches uygulama @app.get ile bildirilir src/cluster_erp/server/app.py:1507-1572
/health, /ready, /.well-known/security.txt uygulama @app.get ile bildirilir src/cluster_erp/server/app.py:1459-1504
/app/..., /app/v/... web uygulaması statik dosyaları webapp klasörü varsa app.mount src/cluster_erp/server/app.py:1633-1644

Modül önekleri

Çoğu modül prefix=self.api_prefix ile bir module_router oluşturur, alt modül yönlendiricilerini ona ekler ve onu bir yetkilendirme bağımlılığıyla uygulamaya ekler. Inventory modülü buna örnektir (src/cluster_erp/modules/inventory/module.py:52-62). Bazı modüller module_router kullanmaz ve öneki doğrudan app.include_router çağrısına verir; örneğin analytics, app_store, logs, mail, privacy ve records (src/cluster_erp/modules/analytics/module.py:55, src/cluster_erp/modules/records/module.py:50-52).

Bir alt modül yönlendiricisi kendi prefix değerini ekler; örneğin /warehouses (src/cluster_erp/modules/inventory/warehouses/routes.py:33). Bazı yönlendiricilerin öneki yoktur ve kaynak bölümünü her yolun içine yazar: crm yönlendiricileri, calendars yönlendiricisi, parties yönlendiricileri, satış siparişi yönlendiricileri, para birimi yönlendiricisi ve müşteri aboneliği yönlendiricisi (src/cluster_erp/modules/crm/customers/routes.py:28, src/cluster_erp/modules/calendars/routes.py:44, src/cluster_erp/modules/parties/parties/routes.py:28, src/cluster_erp/modules/sales_orders/orders/routes.py:33, src/cluster_erp/server/routes/currencies.py:18, src/cluster_erp/modules/subscriptions/customer_subscriptions/routes.py:30-34). Modül sayfaları her yolun tam yolunu gösterir; okurun parçaları toplaması gerekmez.

OpenAPI erişilebilirliği

create_app, docs_url="/api/docs" ve redoc_url="/api/redoc" değerlerini yalnız settings.debug doğruyken verir; aksi halde ikisi de None olur (src/cluster_erp/server/app.py:1296-1303). debug ayarının varsayılanı False değeridir (src/cluster_erp/config/settings.py:176). Çağrı openapi_url bağımsız değişkeni vermez; çatının varsayılanı geçerlidir, bkz. FastAPI başvurusu. İki yol include_in_schema=False ile şemadan çıkarılır: kapalı kayıt yoklaması ve /.well-known/security.txt (src/cluster_erp/server/app.py:1455, src/cluster_erp/server/app.py:1459). Her yönlendirici, üretilen şemada işlemleri gruplayan tags verir; örneğin tags=["inventory-warehouses"] (src/cluster_erp/modules/inventory/warehouses/routes.py:33).

İçerik türleri

İçerik Nerede Kaynak
JSON istek ve yanıt gövdeleri Pydantic gövdesi veya response_model taşıyan her yol modül sayfalarındaki yol dekoratörleri
Çok parçalı form verisi 6 yol UploadFile alır: ek yükleme ve değiştirme, posta taslağı eki, taraf fotoğrafı, ürün fotoğrafı, ürün modeli fotoğrafı src/cluster_erp/server/routes/attachments.py:62, src/cluster_erp/modules/mail/messages/routes.py:130, src/cluster_erp/modules/parties/parties/routes.py:187, src/cluster_erp/modules/products_and_services/products/routes.py:216, src/cluster_erp/modules/products_and_services/product_models/routes.py:150
Dosya indirmeleri Response döndüren yollar; örneğin ek indirme, belge sürümü dosyası, ticari belge indirme, gizlilik dışa aktarımı src/cluster_erp/server/routes/attachments.py:102, src/cluster_erp/modules/documents/documents/routes.py:240, src/cluster_erp/modules/sales_orders/trade_documents/routes.py:84, src/cluster_erp/modules/privacy/requests/routes.py:153
text/calendar etkinlik iCalendar dışa aktarımı src/cluster_erp/modules/intranet/events/routes.py:307
image/svg+xml, application/dxf yerleşim düzeni çıktısı src/cluster_erp/modules/nesting/nesting_jobs/routes.py:322-394
text/plain /.well-known/security.txt src/cluster_erp/server/app.py:1459-1466
gzip kodlaması 1 KB ve üzeri yanıtlar src/cluster_erp/server/app.py:1323

Bir isteğin yolu

Diyagram, bir modül yoluna giden kimliği doğrulanmış bir isteği izler. Zamanlamayı değil, kodun ne yaptığını gösterir. Çatının bir yolun bağımlılıklarını hangi sırayla çözdüğü projenin kodunda belirtilmez; bu yüzden üç bağımlılık birlikte gösterilir.

sequenceDiagram
 participant Client
 participant Middleware
 participant Dependencies
 participant Handler
 participant Service
 participant Database
 Client->>Middleware: HTTP isteği
 Note over Middleware: _security_headers aşırı büyük gövdeyi 413 ile reddeder
 Middleware->>Dependencies: yolu çağır
 Note over Dependencies: get_db_session, require_app, require_permission
 Dependencies->>Database: kiracı oturumunu aç, denetim bağlamını yaz
 Dependencies->>Handler: kullanıcı ve oturum ya da 401, 403, 422
 Handler->>Service: doğrulanmış şema
 Service->>Database: sorgu ve flush
 Service-->>Handler: sonuç veya AppError
 Handler-->>Middleware: yanıt modeli
 Note over Middleware: ilk bayttan önce commit, etkinlik günlüğü, güvenlik başlıkları
 Middleware-->>Client: JSON yanıtı

Aynı adımlar düz metinle:

Adım Ne olur Kaynak
Gövde sınırı max_request_body_bytes üzerindeki bir Content-Length, REQUEST_TOO_LARGE koduyla 413 alır. src/cluster_erp/server/app.py:1390-1411
Oturum get_db_session kiracı veritabanını çözer, bir oturum açar ve eylemciyi, IP adresini, istemci yazılım dizgesini, oturum kimliğini ve bağıntı kimliğini veritabanı oturum ayarlarına yazar. src/cluster_erp/server/dependencies.py:160-200, src/cluster_erp/server/dependencies.py:34-72
Yetkilendirme require_app modülün kurulu, lisanslı ve koltuklu durumunu denetler ve bir entitlement.* koduyla 403 atar. src/cluster_erp/server/entitlements.py:225-273
Yetki require_permission kullanıcıyı çözer, listelenen her yetki kodunu ister ve ABAC ilkelerini değerlendirir. src/cluster_erp/modules/auth/guards.py:205-240
Doğrulama Şemaya uymayan bir gövde veya parametre VALIDATION_ERROR koduyla 422 alır. src/cluster_erp/server/error_handler.py:226-246
İşleyici ve hizmet İşleyici hizmeti oturumla kurar ve çağırır; hizmetler iş kuralı hatalarında AppError atar. src/cluster_erp/modules/inventory/warehouses/routes.py:108-116
Commit CommitBeforeResponseMiddleware, yanıt başlarken oturumun commit kancasını çalıştırır. src/cluster_erp/server/middleware.py:25-57, src/cluster_erp/server/dependencies.py:168-190
Günlük ve başlıklar ActivityLogMiddleware isteği kaydeder; _security_headers güvenlik başlıklarını ekler. src/cluster_erp/server/middleware.py:424, src/cluster_erp/server/app.py:1412-1429

Ara katman sırası ve her katman İstek hattı ve ara katmanlar sayfasında anlatılır.

Tanıtılan terimler

Terim Kod tanımlayıcısı Tanım Türkçe terim Kaynak
API prefix api_prefix Bir modülün yollarının temel yolu; /api/v1/ ve ardından modül adı. API öneki src/cluster_erp/core/module_base.py:37-38
module router module_router Bir modülün API önekiyle oluşturduğu ve alt modül yönlendiricilerini içine eklediği yönlendirici. modül yönlendiricisi src/cluster_erp/modules/inventory/module.py:52

İlgili sayfalar


92f8051 numaralı commit ile 2026-11-13 tarihinde doğrulandı.

Doğrulanan commit 92f8051 · 2026-11-13