Factorizer/Cluster ERP WikiCluster ERP Türkçe
Home / API reference

API

Documents API (documents)

HTTP endpoints of the documents module under /api/v1/documents: 23 routes with permissions, schemas, status codes, and error codes.

The documents module serves document types, documents linked to entities, document versions with file download, and the version approval lifecycle. All 23 endpoints sit under /api/v1/documents. For business meaning see the Documents module page.

Group facts

Item Value Source
Base path /api/v1/documents src/cluster_erp/core/module_base.py:37-38, src/cluster_erp/modules/documents/module.py:59
Routers 2 router objects in 2 files; listed in the section Endpoint summary src/cluster_erp/modules/documents/module.py:48
Endpoints 23, counted from the route decorators and add_api_route calls of the routers that register_routes mounts src/cluster_erp/modules/documents/documents/routes.py, src/cluster_erp/modules/documents/settings/routes.py
Authentication Bearer header or session cookie, resolved by get_current_user; see Authentication and headers src/cluster_erp/modules/auth/guards.py:85-167
Permission guard 23 of 23 routes declare require_permission src/cluster_erp/modules/auth/guards.py:205-240
App entitlement gate require_app("documents") on every mounted router src/cluster_erp/modules/documents/module.py:63
Error format JSON body {"error": {...}}; see Errors src/cluster_erp/server/error_handler.py:33-46

Endpoint summary

One row per sub-module folder. The router prefix is added to the base path.

Sub-module Routers Endpoints Router source
settings router (/settings) 7 src/cluster_erp/modules/documents/settings/routes.py:20
documents router 16 src/cluster_erp/modules/documents/documents/routes.py:38

Document types endpoints

Document type records and a seed of defaults.

Method Path Handler Permission Request Query Response Status Source
GET /api/v1/documents/settings/document-types/ list_document_types document_type.read none active_only, search list[DocumentTypeRead] 200 (default) src/cluster_erp/modules/documents/settings/routes.py:23
POST /api/v1/documents/settings/document-types/ create_document_type document_type.create DocumentTypeCreate none DocumentTypeRead 201 src/cluster_erp/modules/documents/settings/routes.py:41
POST /api/v1/documents/settings/document-types/seed-defaults seed_document_type_defaults document_type.seed none none dict[str, int] 200 (default) src/cluster_erp/modules/documents/settings/routes.py:52
GET /api/v1/documents/settings/document-types/{type_id} get_document_type document_type.read none none DocumentTypeRead 200 (default) src/cluster_erp/modules/documents/settings/routes.py:61
PUT /api/v1/documents/settings/document-types/{type_id} update_document_type document_type.update DocumentTypeUpdate none DocumentTypeRead 200 (default) src/cluster_erp/modules/documents/settings/routes.py:74
POST /api/v1/documents/settings/document-types/bulk-delete bulk_delete_document_types document_type.bulk_delete BulkDeleteRequest none BulkDeleteResponse 200 (default) src/cluster_erp/modules/documents/settings/routes.py:88
DELETE /api/v1/documents/settings/document-types/{type_id} delete_document_type document_type.delete none none none 204 src/cluster_erp/modules/documents/settings/routes.py:99

Documents and versions endpoints

Document records, the list of entity types, versions per document, version file download, submit for approval, activate, and withdraw.

Method Path Handler Permission Request Query Response Status Source
GET /api/v1/documents/documents/ list_documents document.read none search, active_only, document_type_id, entity_type, entity_id, limit, offset dict 200 (default) src/cluster_erp/modules/documents/documents/routes.py:59
GET /api/v1/documents/documents/entity-types list_document_entity_types document.read none none list 200 (default) src/cluster_erp/modules/documents/documents/routes.py:98
POST /api/v1/documents/documents/ create_document document.create DocumentCreate none DocumentRead 201 src/cluster_erp/modules/documents/documents/routes.py:124
GET /api/v1/documents/documents/{document_id} get_document document.read none none DocumentRead 200 (default) src/cluster_erp/modules/documents/documents/routes.py:136
PUT /api/v1/documents/documents/{document_id} update_document document.update DocumentUpdate none DocumentRead 200 (default) src/cluster_erp/modules/documents/documents/routes.py:150
POST /api/v1/documents/documents/bulk-delete bulk_delete_documents document.bulk_delete BulkDeleteRequest none BulkDeleteResponse 200 (default) src/cluster_erp/modules/documents/documents/routes.py:165
DELETE /api/v1/documents/documents/{document_id} delete_document document.delete none none none 204 src/cluster_erp/modules/documents/documents/routes.py:177
GET /api/v1/documents/documents/{document_id}/versions list_versions document_version.read none none list[DocumentVersionRead] 200 (default) src/cluster_erp/modules/documents/documents/routes.py:194
POST /api/v1/documents/documents/{document_id}/versions create_version document_version.create DocumentVersionCreate none DocumentVersionRead 201 src/cluster_erp/modules/documents/documents/routes.py:209
GET /api/v1/documents/versions/{version_id} get_version document_version.read none none DocumentVersionRead 200 (default) src/cluster_erp/modules/documents/documents/routes.py:226
GET /api/v1/documents/versions/{version_id}/file download_version_file document_version.read none none Response 200 (default) src/cluster_erp/modules/documents/documents/routes.py:240
PUT /api/v1/documents/versions/{version_id} update_version document_version.update DocumentVersionUpdate none DocumentVersionRead 200 (default) src/cluster_erp/modules/documents/documents/routes.py:270
DELETE /api/v1/documents/versions/{version_id} delete_version document_version.delete none none none 204 src/cluster_erp/modules/documents/documents/routes.py:285
POST /api/v1/documents/versions/{version_id}/submit-approval submit_for_approval document_version.submit_approval none none DocumentVersionRead 200 (default) src/cluster_erp/modules/documents/documents/routes.py:302
POST /api/v1/documents/versions/{version_id}/activate activate_version document_version.activate none none DocumentVersionRead 200 (default) src/cluster_erp/modules/documents/documents/routes.py:354
POST /api/v1/documents/versions/{version_id}/withdraw withdraw_version document_version.withdraw none none DocumentVersionRead 200 (default) src/cluster_erp/modules/documents/documents/routes.py:371

Error codes

The table lists the error codes that code under src/cluster_erp/modules/documents/ raises, found by a syntax-tree scan for AppError(...), the factories in src/cluster_erp/core/errors.py (not_found, conflict, protected, permission_denied, privilege_escalation, check_version), and HTTPException(...). A status of 400 is the AppError default (src/cluster_erp/core/errors.py:23). Guard errors (401, 403), the entitlement codes, and validation errors (422) apply to every route and are listed on Errors.

Code HTTP status Raised in First site
APPROVAL_INVALID_STATE 400 documents src/cluster_erp/modules/documents/documents/routes.py:319
DOCUMENT_NO_ATTACHMENT 400 documents src/cluster_erp/modules/documents/documents/services.py:270
DOCUMENT_VERSION_INVALID_STATUS 400, 404 documents src/cluster_erp/modules/documents/documents/services.py:230
RESOURCE_NOT_FOUND 404 documents, settings src/cluster_erp/modules/documents/documents/routes.py:146

Events emitted

The table lists the contract classes that code under src/cluster_erp/modules/documents/ passes directly to EventBus.emit, found by a syntax-tree scan. Events built in a variable first are not counted. The contracts are described in Contracts reference.

Contract Sites First site
DocumentCreated 1 src/cluster_erp/modules/documents/documents/services.py:121
DocumentVersionActivated 1 src/cluster_erp/modules/documents/documents/services.py:286
DocumentVersionSuperseded 1 src/cluster_erp/modules/documents/documents/services.py:330

Verified against commit 92f8051 on 2026-11-13.

Verified against commit 92f8051 · 2026-11-13