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

API

Privacy API (privacy)

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

The privacy module serves data subject requests with the verify, export, anonymise, complete, and reject actions and an export download. All 11 endpoints sit under /api/v1/privacy. For business meaning see the Privacy module page.

Group facts

Item Value Source
Base path /api/v1/privacy src/cluster_erp/core/module_base.py:37-38, src/cluster_erp/modules/privacy/module.py:44
Routers 1 router objects in 1 files; listed in the section Endpoint summary src/cluster_erp/modules/privacy/module.py:41
Endpoints 11, counted from the route decorators and add_api_route calls of the routers that register_routes mounts src/cluster_erp/modules/privacy/requests/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 11 of 11 routes declare require_permission src/cluster_erp/modules/auth/guards.py:205-240
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
requests router (/requests) 11 src/cluster_erp/modules/privacy/requests/routes.py:28

Data subject requests endpoints

Request records and their actions.

Method Path Handler Permission Request Query Response Status Source
GET /api/v1/privacy/requests/ list_subject_requests subject_request.read none search, status, request_type, party_id, limit, offset dict 200 (default) src/cluster_erp/modules/privacy/requests/routes.py:39
GET /api/v1/privacy/requests/{request_id} get_subject_request subject_request.read none none SubjectRequestRead 200 (default) src/cluster_erp/modules/privacy/requests/routes.py:70
POST /api/v1/privacy/requests/ create_subject_request subject_request.create SubjectRequestCreate none SubjectRequestRead 201 src/cluster_erp/modules/privacy/requests/routes.py:83
PUT /api/v1/privacy/requests/{request_id} update_subject_request subject_request.update SubjectRequestUpdate none SubjectRequestRead 200 (default) src/cluster_erp/modules/privacy/requests/routes.py:96
DELETE /api/v1/privacy/requests/{request_id} delete_subject_request subject_request.delete none none none 204 src/cluster_erp/modules/privacy/requests/routes.py:110
POST /api/v1/privacy/requests/{request_id}/actions/verify verify_identity subject_request.verify VerifyBody none SubjectRequestRead 200 (default) src/cluster_erp/modules/privacy/requests/routes.py:125
POST /api/v1/privacy/requests/{request_id}/actions/export prepare_export subject_request.export none none SubjectRequestRead 200 (default) src/cluster_erp/modules/privacy/requests/routes.py:139
GET /api/v1/privacy/requests/{request_id}/export download_export subject_request.export none none Response 200 (default) src/cluster_erp/modules/privacy/requests/routes.py:153
POST /api/v1/privacy/requests/{request_id}/actions/anonymise anonymise_subject subject_request.anonymise AnonymiseBody none SubjectRequestRead 200 (default) src/cluster_erp/modules/privacy/requests/routes.py:175
POST /api/v1/privacy/requests/{request_id}/actions/complete complete_request subject_request.complete CompleteBody none SubjectRequestRead 200 (default) src/cluster_erp/modules/privacy/requests/routes.py:190
POST /api/v1/privacy/requests/{request_id}/actions/reject reject_request subject_request.reject RejectBody none SubjectRequestRead 200 (default) src/cluster_erp/modules/privacy/requests/routes.py:204

Error codes

The table lists the error codes that code under src/cluster_erp/modules/privacy/ 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
CONCURRENCY_VERSION_CONFLICT 409 requests src/cluster_erp/modules/privacy/requests/services.py:176
PRIVACY_CONFIRMATION_MISMATCH 400 requests src/cluster_erp/modules/privacy/requests/services.py:308
PRIVACY_EXPORT_MISSING 404 requests src/cluster_erp/modules/privacy/requests/services.py:279
PRIVACY_INVALID_STATE 409 requests src/cluster_erp/modules/privacy/requests/services.py:86
RESOURCE_NOT_FOUND 404 requests src/cluster_erp/modules/privacy/requests/services.py:154

Events emitted

The table lists the contract classes that code under src/cluster_erp/modules/privacy/ 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
AnonymiseSubject 1 src/cluster_erp/modules/privacy/requests/services.py:345
CollectSubjectData 1 src/cluster_erp/modules/privacy/requests/services.py:223

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

Verified against commit 92f8051 · 2026-11-13