diff --git a/backend-compliance/tests/contracts/__init__.py b/backend-compliance/tests/contracts/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/backend-compliance/tests/contracts/openapi.baseline.json b/backend-compliance/tests/contracts/openapi.baseline.json new file mode 100644 index 0000000..91f9dd2 --- /dev/null +++ b/backend-compliance/tests/contracts/openapi.baseline.json @@ -0,0 +1,49377 @@ +{ + "components": { + "schemas": { + "AISystemCreate": { + "properties": { + "classification": { + "default": "unclassified", + "title": "Classification", + "type": "string" + }, + "description": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Description" + }, + "name": { + "title": "Name", + "type": "string" + }, + "obligations": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Obligations" + }, + "purpose": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Purpose" + }, + "sector": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Sector" + }, + "status": { + "default": "draft", + "title": "Status", + "type": "string" + } + }, + "required": [ + "name" + ], + "title": "AISystemCreate", + "type": "object" + }, + "AISystemListResponse": { + "properties": { + "systems": { + "items": { + "$ref": "#/components/schemas/AISystemResponse" + }, + "title": "Systems", + "type": "array" + }, + "total": { + "title": "Total", + "type": "integer" + } + }, + "required": [ + "systems", + "total" + ], + "title": "AISystemListResponse", + "type": "object" + }, + "AISystemResponse": { + "properties": { + "assessment_date": { + "anyOf": [ + { + "format": "date-time", + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Assessment Date" + }, + "assessment_result": { + "anyOf": [ + { + "additionalProperties": true, + "type": "object" + }, + { + "type": "null" + } + ], + "title": "Assessment Result" + }, + "classification": { + "default": "unclassified", + "title": "Classification", + "type": "string" + }, + "created_at": { + "format": "date-time", + "title": "Created At", + "type": "string" + }, + "description": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Description" + }, + "id": { + "title": "Id", + "type": "string" + }, + "name": { + "title": "Name", + "type": "string" + }, + "obligations": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Obligations" + }, + "purpose": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Purpose" + }, + "recommendations": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Recommendations" + }, + "risk_factors": { + "anyOf": [ + { + "items": { + "additionalProperties": true, + "type": "object" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Risk Factors" + }, + "sector": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Sector" + }, + "status": { + "default": "draft", + "title": "Status", + "type": "string" + }, + "updated_at": { + "format": "date-time", + "title": "Updated At", + "type": "string" + } + }, + "required": [ + "name", + "id", + "created_at", + "updated_at" + ], + "title": "AISystemResponse", + "type": "object" + }, + "AISystemUpdate": { + "properties": { + "classification": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Classification" + }, + "description": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Description" + }, + "name": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Name" + }, + "obligations": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Obligations" + }, + "purpose": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Purpose" + }, + "sector": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Sector" + }, + "status": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Status" + } + }, + "title": "AISystemUpdate", + "type": "object" + }, + "ActionRequest": { + "properties": { + "approver": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Approver" + }, + "comment": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Comment" + } + }, + "title": "ActionRequest", + "type": "object" + }, + "ApprovalCommentRequest": { + "properties": { + "comment": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Comment" + }, + "scheduled_publish_at": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Scheduled Publish At" + } + }, + "title": "ApprovalCommentRequest", + "type": "object" + }, + "ApprovalHistoryEntry": { + "properties": { + "action": { + "title": "Action", + "type": "string" + }, + "approver": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Approver" + }, + "comment": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Comment" + }, + "created_at": { + "format": "date-time", + "title": "Created At", + "type": "string" + }, + "id": { + "title": "Id", + "type": "string" + }, + "version_id": { + "title": "Version Id", + "type": "string" + } + }, + "required": [ + "id", + "version_id", + "action", + "approver", + "comment", + "created_at" + ], + "title": "ApprovalHistoryEntry", + "type": "object" + }, + "AssignRequest": { + "properties": { + "assignee_id": { + "title": "Assignee Id", + "type": "string" + } + }, + "required": [ + "assignee_id" + ], + "title": "AssignRequest", + "type": "object" + }, + "AuditChecklistItem": { + "description": "A single item in the audit checklist.", + "properties": { + "article": { + "title": "Article", + "type": "string" + }, + "controls_mapped": { + "default": 0, + "title": "Controls Mapped", + "type": "integer" + }, + "current_result": { + "default": "pending", + "title": "Current Result", + "type": "string" + }, + "description": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Description" + }, + "evidence_count": { + "default": 0, + "title": "Evidence Count", + "type": "integer" + }, + "implementation_status": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Implementation Status" + }, + "is_signed": { + "default": false, + "title": "Is Signed", + "type": "boolean" + }, + "notes": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Notes" + }, + "paragraph": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Paragraph" + }, + "priority": { + "default": 2, + "title": "Priority", + "type": "integer" + }, + "regulation_code": { + "title": "Regulation Code", + "type": "string" + }, + "requirement_id": { + "title": "Requirement Id", + "type": "string" + }, + "signed_at": { + "anyOf": [ + { + "format": "date-time", + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Signed At" + }, + "signed_by": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Signed By" + }, + "title": { + "title": "Title", + "type": "string" + } + }, + "required": [ + "requirement_id", + "regulation_code", + "article", + "title" + ], + "title": "AuditChecklistItem", + "type": "object" + }, + "AuditChecklistResponse": { + "description": "Response for audit checklist endpoint.", + "properties": { + "items": { + "items": { + "$ref": "#/components/schemas/AuditChecklistItem" + }, + "title": "Items", + "type": "array" + }, + "pagination": { + "$ref": "#/components/schemas/PaginationMeta" + }, + "session": { + "$ref": "#/components/schemas/AuditSessionSummary" + }, + "statistics": { + "$ref": "#/components/schemas/AuditStatistics" + } + }, + "required": [ + "session", + "items", + "pagination", + "statistics" + ], + "title": "AuditChecklistResponse", + "type": "object" + }, + "AuditEntryResponse": { + "properties": { + "action": { + "title": "Action", + "type": "string" + }, + "changed_by": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Changed By" + }, + "changed_fields": { + "anyOf": [ + { + "additionalProperties": true, + "type": "object" + }, + { + "type": "null" + } + ], + "title": "Changed Fields" + }, + "created_at": { + "title": "Created At", + "type": "string" + }, + "id": { + "title": "Id", + "type": "string" + } + }, + "required": [ + "id", + "action", + "changed_fields", + "changed_by", + "created_at" + ], + "title": "AuditEntryResponse", + "type": "object" + }, + "AuditFindingCloseRequest": { + "description": "Request to close an Audit Finding.", + "properties": { + "closed_by": { + "title": "Closed By", + "type": "string" + }, + "closure_notes": { + "title": "Closure Notes", + "type": "string" + }, + "verification_evidence": { + "title": "Verification Evidence", + "type": "string" + }, + "verification_method": { + "title": "Verification Method", + "type": "string" + } + }, + "required": [ + "closure_notes", + "closed_by", + "verification_method", + "verification_evidence" + ], + "title": "AuditFindingCloseRequest", + "type": "object" + }, + "AuditFindingCreate": { + "description": "Schema for creating Audit Finding.", + "properties": { + "affected_assets": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Affected Assets" + }, + "affected_processes": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Affected Processes" + }, + "annex_a_control": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Annex A Control" + }, + "audit_session_id": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Audit Session Id" + }, + "auditor": { + "title": "Auditor", + "type": "string" + }, + "description": { + "title": "Description", + "type": "string" + }, + "due_date": { + "anyOf": [ + { + "format": "date", + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Due Date" + }, + "finding_type": { + "title": "Finding Type", + "type": "string" + }, + "impact_description": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Impact Description" + }, + "internal_audit_id": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Internal Audit Id" + }, + "iso_chapter": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Iso Chapter" + }, + "objective_evidence": { + "title": "Objective Evidence", + "type": "string" + }, + "owner": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Owner" + }, + "title": { + "title": "Title", + "type": "string" + } + }, + "required": [ + "finding_type", + "title", + "description", + "objective_evidence", + "auditor" + ], + "title": "AuditFindingCreate", + "type": "object" + }, + "AuditFindingListResponse": { + "description": "List response for Audit Findings.", + "properties": { + "findings": { + "items": { + "$ref": "#/components/schemas/AuditFindingResponse" + }, + "title": "Findings", + "type": "array" + }, + "major_count": { + "title": "Major Count", + "type": "integer" + }, + "minor_count": { + "title": "Minor Count", + "type": "integer" + }, + "ofi_count": { + "title": "Ofi Count", + "type": "integer" + }, + "open_count": { + "title": "Open Count", + "type": "integer" + }, + "total": { + "title": "Total", + "type": "integer" + } + }, + "required": [ + "findings", + "total", + "major_count", + "minor_count", + "ofi_count", + "open_count" + ], + "title": "AuditFindingListResponse", + "type": "object" + }, + "AuditFindingResponse": { + "description": "Response schema for Audit Finding.", + "properties": { + "affected_assets": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Affected Assets" + }, + "affected_processes": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Affected Processes" + }, + "annex_a_control": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Annex A Control" + }, + "audit_session_id": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Audit Session Id" + }, + "auditor": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Auditor" + }, + "closed_by": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Closed By" + }, + "closed_date": { + "anyOf": [ + { + "format": "date", + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Closed Date" + }, + "closure_notes": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Closure Notes" + }, + "created_at": { + "format": "date-time", + "title": "Created At", + "type": "string" + }, + "description": { + "title": "Description", + "type": "string" + }, + "due_date": { + "anyOf": [ + { + "format": "date", + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Due Date" + }, + "finding_id": { + "title": "Finding Id", + "type": "string" + }, + "finding_type": { + "title": "Finding Type", + "type": "string" + }, + "id": { + "title": "Id", + "type": "string" + }, + "identified_date": { + "format": "date", + "title": "Identified Date", + "type": "string" + }, + "impact_description": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Impact Description" + }, + "internal_audit_id": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Internal Audit Id" + }, + "is_blocking": { + "title": "Is Blocking", + "type": "boolean" + }, + "iso_chapter": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Iso Chapter" + }, + "objective_evidence": { + "title": "Objective Evidence", + "type": "string" + }, + "owner": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Owner" + }, + "root_cause": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Root Cause" + }, + "root_cause_method": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Root Cause Method" + }, + "status": { + "title": "Status", + "type": "string" + }, + "title": { + "title": "Title", + "type": "string" + }, + "updated_at": { + "format": "date-time", + "title": "Updated At", + "type": "string" + }, + "verification_method": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Verification Method" + }, + "verified_at": { + "anyOf": [ + { + "format": "date-time", + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Verified At" + }, + "verified_by": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Verified By" + } + }, + "required": [ + "finding_type", + "title", + "description", + "objective_evidence", + "id", + "finding_id", + "status", + "identified_date", + "is_blocking", + "created_at", + "updated_at" + ], + "title": "AuditFindingResponse", + "type": "object" + }, + "AuditFindingUpdate": { + "description": "Schema for updating Audit Finding.", + "properties": { + "description": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Description" + }, + "due_date": { + "anyOf": [ + { + "format": "date", + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Due Date" + }, + "owner": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Owner" + }, + "root_cause": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Root Cause" + }, + "root_cause_method": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Root Cause Method" + }, + "status": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Status" + }, + "title": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Title" + } + }, + "title": "AuditFindingUpdate", + "type": "object" + }, + "AuditListResponse": { + "properties": { + "entries": { + "items": { + "$ref": "#/components/schemas/AuditEntryResponse" + }, + "title": "Entries", + "type": "array" + }, + "total": { + "title": "Total", + "type": "integer" + } + }, + "required": [ + "entries", + "total" + ], + "title": "AuditListResponse", + "type": "object" + }, + "AuditSessionDetailResponse": { + "description": "Detailed response including statistics breakdown.", + "properties": { + "auditor_email": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Auditor Email" + }, + "auditor_name": { + "title": "Auditor Name", + "type": "string" + }, + "auditor_organization": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Auditor Organization" + }, + "completed_at": { + "anyOf": [ + { + "format": "date-time", + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Completed At" + }, + "completed_items": { + "title": "Completed Items", + "type": "integer" + }, + "completion_percentage": { + "title": "Completion Percentage", + "type": "number" + }, + "compliant_count": { + "default": 0, + "title": "Compliant Count", + "type": "integer" + }, + "created_at": { + "format": "date-time", + "title": "Created At", + "type": "string" + }, + "description": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Description" + }, + "id": { + "title": "Id", + "type": "string" + }, + "name": { + "title": "Name", + "type": "string" + }, + "non_compliant_count": { + "default": 0, + "title": "Non Compliant Count", + "type": "integer" + }, + "regulation_ids": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Regulation Ids" + }, + "started_at": { + "anyOf": [ + { + "format": "date-time", + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Started At" + }, + "statistics": { + "anyOf": [ + { + "$ref": "#/components/schemas/AuditStatistics" + }, + { + "type": "null" + } + ] + }, + "status": { + "title": "Status", + "type": "string" + }, + "total_items": { + "title": "Total Items", + "type": "integer" + }, + "updated_at": { + "format": "date-time", + "title": "Updated At", + "type": "string" + } + }, + "required": [ + "id", + "name", + "auditor_name", + "status", + "total_items", + "completed_items", + "completion_percentage", + "created_at", + "updated_at" + ], + "title": "AuditSessionDetailResponse", + "type": "object" + }, + "AuditSessionResponse": { + "description": "Full response for an audit session.", + "properties": { + "auditor_email": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Auditor Email" + }, + "auditor_name": { + "title": "Auditor Name", + "type": "string" + }, + "auditor_organization": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Auditor Organization" + }, + "completed_at": { + "anyOf": [ + { + "format": "date-time", + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Completed At" + }, + "completed_items": { + "title": "Completed Items", + "type": "integer" + }, + "completion_percentage": { + "title": "Completion Percentage", + "type": "number" + }, + "compliant_count": { + "default": 0, + "title": "Compliant Count", + "type": "integer" + }, + "created_at": { + "format": "date-time", + "title": "Created At", + "type": "string" + }, + "description": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Description" + }, + "id": { + "title": "Id", + "type": "string" + }, + "name": { + "title": "Name", + "type": "string" + }, + "non_compliant_count": { + "default": 0, + "title": "Non Compliant Count", + "type": "integer" + }, + "regulation_ids": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Regulation Ids" + }, + "started_at": { + "anyOf": [ + { + "format": "date-time", + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Started At" + }, + "status": { + "title": "Status", + "type": "string" + }, + "total_items": { + "title": "Total Items", + "type": "integer" + }, + "updated_at": { + "format": "date-time", + "title": "Updated At", + "type": "string" + } + }, + "required": [ + "id", + "name", + "auditor_name", + "status", + "total_items", + "completed_items", + "completion_percentage", + "created_at", + "updated_at" + ], + "title": "AuditSessionResponse", + "type": "object" + }, + "AuditSessionSummary": { + "description": "Summary of an audit session for list views.", + "properties": { + "auditor_name": { + "title": "Auditor Name", + "type": "string" + }, + "completed_at": { + "anyOf": [ + { + "format": "date-time", + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Completed At" + }, + "completed_items": { + "title": "Completed Items", + "type": "integer" + }, + "completion_percentage": { + "title": "Completion Percentage", + "type": "number" + }, + "created_at": { + "format": "date-time", + "title": "Created At", + "type": "string" + }, + "id": { + "title": "Id", + "type": "string" + }, + "name": { + "title": "Name", + "type": "string" + }, + "started_at": { + "anyOf": [ + { + "format": "date-time", + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Started At" + }, + "status": { + "title": "Status", + "type": "string" + }, + "total_items": { + "title": "Total Items", + "type": "integer" + } + }, + "required": [ + "id", + "name", + "auditor_name", + "status", + "total_items", + "completed_items", + "completion_percentage", + "created_at" + ], + "title": "AuditSessionSummary", + "type": "object" + }, + "AuditStatistics": { + "description": "Statistics for an audit session.", + "properties": { + "completion_percentage": { + "title": "Completion Percentage", + "type": "number" + }, + "compliant": { + "title": "Compliant", + "type": "integer" + }, + "compliant_with_notes": { + "title": "Compliant With Notes", + "type": "integer" + }, + "non_compliant": { + "title": "Non Compliant", + "type": "integer" + }, + "not_applicable": { + "title": "Not Applicable", + "type": "integer" + }, + "pending": { + "title": "Pending", + "type": "integer" + }, + "total": { + "title": "Total", + "type": "integer" + } + }, + "required": [ + "total", + "compliant", + "compliant_with_notes", + "non_compliant", + "not_applicable", + "pending", + "completion_percentage" + ], + "title": "AuditStatistics", + "type": "object" + }, + "AuditTrailEntry": { + "description": "Single audit trail entry.", + "properties": { + "action": { + "title": "Action", + "type": "string" + }, + "change_summary": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Change Summary" + }, + "entity_id": { + "title": "Entity Id", + "type": "string" + }, + "entity_name": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Entity Name" + }, + "entity_type": { + "title": "Entity Type", + "type": "string" + }, + "field_changed": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Field Changed" + }, + "id": { + "title": "Id", + "type": "string" + }, + "new_value": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "New Value" + }, + "old_value": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Old Value" + }, + "performed_at": { + "format": "date-time", + "title": "Performed At", + "type": "string" + }, + "performed_by": { + "title": "Performed By", + "type": "string" + } + }, + "required": [ + "id", + "entity_type", + "entity_id", + "action", + "performed_by", + "performed_at" + ], + "title": "AuditTrailEntry", + "type": "object" + }, + "AuditTrailResponse": { + "description": "Response for Audit Trail query.", + "properties": { + "entries": { + "items": { + "$ref": "#/components/schemas/AuditTrailEntry" + }, + "title": "Entries", + "type": "array" + }, + "pagination": { + "$ref": "#/components/schemas/PaginationMeta" + }, + "total": { + "title": "Total", + "type": "integer" + } + }, + "required": [ + "entries", + "total", + "pagination" + ], + "title": "AuditTrailResponse", + "type": "object" + }, + "AuthorityNotificationRequest": { + "properties": { + "authority_name": { + "title": "Authority Name", + "type": "string" + }, + "contact_person": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Contact Person" + }, + "notes": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Notes" + }, + "reference_number": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Reference Number" + } + }, + "required": [ + "authority_name" + ], + "title": "AuthorityNotificationRequest", + "type": "object" + }, + "BSIAspectResponse": { + "description": "A single extracted BSI-TR Pruefaspekt (test aspect).", + "properties": { + "aspect_id": { + "title": "Aspect Id", + "type": "string" + }, + "category": { + "title": "Category", + "type": "string" + }, + "full_text": { + "title": "Full Text", + "type": "string" + }, + "keywords": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Keywords" + }, + "page_number": { + "title": "Page Number", + "type": "integer" + }, + "related_aspects": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Related Aspects" + }, + "requirement_level": { + "title": "Requirement Level", + "type": "string" + }, + "section": { + "title": "Section", + "type": "string" + }, + "source_document": { + "title": "Source Document", + "type": "string" + }, + "title": { + "title": "Title", + "type": "string" + } + }, + "required": [ + "aspect_id", + "title", + "full_text", + "category", + "page_number", + "section", + "requirement_level", + "source_document" + ], + "title": "BSIAspectResponse", + "type": "object" + }, + "Body_analyze_document_api_v1_import_analyze_post": { + "properties": { + "document_type": { + "default": "OTHER", + "title": "Document Type", + "type": "string" + }, + "file": { + "format": "binary", + "title": "File", + "type": "string" + }, + "tenant_id": { + "default": "default", + "title": "Tenant Id", + "type": "string" + } + }, + "required": [ + "file" + ], + "title": "Body_analyze_document_api_v1_import_analyze_post", + "type": "object" + }, + "Body_scan_dependencies_api_v1_screening_scan_post": { + "properties": { + "file": { + "format": "binary", + "title": "File", + "type": "string" + }, + "tenant_id": { + "default": "default", + "title": "Tenant Id", + "type": "string" + } + }, + "required": [ + "file" + ], + "title": "Body_scan_dependencies_api_v1_screening_scan_post", + "type": "object" + }, + "Body_upload_evidence_api_compliance_evidence_upload_post": { + "properties": { + "file": { + "format": "binary", + "title": "File", + "type": "string" + } + }, + "required": [ + "file" + ], + "title": "Body_upload_evidence_api_compliance_evidence_upload_post", + "type": "object" + }, + "Body_upload_word_api_compliance_legal_documents_versions_upload_word_post": { + "properties": { + "file": { + "format": "binary", + "title": "File", + "type": "string" + } + }, + "required": [ + "file" + ], + "title": "Body_upload_word_api_compliance_legal_documents_versions_upload_word_post", + "type": "object" + }, + "Body_upload_word_document_api_consent_admin_versions_upload_word_post": { + "properties": { + "file": { + "format": "binary", + "title": "File", + "type": "string" + } + }, + "required": [ + "file" + ], + "title": "Body_upload_word_document_api_consent_admin_versions_upload_word_post", + "type": "object" + }, + "CAPAVerifyRequest": { + "description": "Request to verify CAPA effectiveness.", + "properties": { + "effectiveness_notes": { + "title": "Effectiveness Notes", + "type": "string" + }, + "is_effective": { + "title": "Is Effective", + "type": "boolean" + }, + "verified_by": { + "title": "Verified By", + "type": "string" + } + }, + "required": [ + "verified_by", + "effectiveness_notes", + "is_effective" + ], + "title": "CAPAVerifyRequest", + "type": "object" + }, + "CatalogUpsert": { + "properties": { + "custom_data_points": { + "default": [], + "items": { + "additionalProperties": true, + "type": "object" + }, + "title": "Custom Data Points", + "type": "array" + }, + "selected_data_point_ids": { + "default": [], + "items": { + "type": "string" + }, + "title": "Selected Data Point Ids", + "type": "array" + } + }, + "title": "CatalogUpsert", + "type": "object" + }, + "CategoryConfigCreate": { + "properties": { + "category_key": { + "title": "Category Key", + "type": "string" + }, + "description_de": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Description De" + }, + "description_en": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Description En" + }, + "is_required": { + "default": false, + "title": "Is Required", + "type": "boolean" + }, + "name_de": { + "title": "Name De", + "type": "string" + }, + "name_en": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Name En" + }, + "sort_order": { + "default": 0, + "title": "Sort Order", + "type": "integer" + } + }, + "required": [ + "category_key", + "name_de" + ], + "title": "CategoryConfigCreate", + "type": "object" + }, + "ChangeRequestCreate": { + "properties": { + "priority": { + "default": "normal", + "title": "Priority", + "type": "string" + }, + "proposal_body": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Proposal Body" + }, + "proposal_title": { + "title": "Proposal Title", + "type": "string" + }, + "proposed_changes": { + "additionalProperties": true, + "default": {}, + "title": "Proposed Changes", + "type": "object" + }, + "target_document_id": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Target Document Id" + }, + "target_document_type": { + "title": "Target Document Type", + "type": "string" + }, + "target_section": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Target Section" + }, + "trigger_source_id": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Trigger Source Id" + }, + "trigger_type": { + "default": "manual", + "title": "Trigger Type", + "type": "string" + } + }, + "required": [ + "target_document_type", + "proposal_title" + ], + "title": "ChangeRequestCreate", + "type": "object" + }, + "ChangeRequestEdit": { + "properties": { + "proposal_body": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Proposal Body" + }, + "proposed_changes": { + "anyOf": [ + { + "additionalProperties": true, + "type": "object" + }, + { + "type": "null" + } + ], + "title": "Proposed Changes" + } + }, + "title": "ChangeRequestEdit", + "type": "object" + }, + "ChangeRequestReject": { + "properties": { + "rejection_reason": { + "title": "Rejection Reason", + "type": "string" + } + }, + "required": [ + "rejection_reason" + ], + "title": "ChangeRequestReject", + "type": "object" + }, + "ChecklistCreate": { + "properties": { + "description": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Description" + }, + "is_required": { + "default": true, + "title": "Is Required", + "type": "boolean" + }, + "order_index": { + "default": 0, + "title": "Order Index", + "type": "integer" + }, + "scenario_id": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Scenario Id" + }, + "title": { + "title": "Title", + "type": "string" + } + }, + "required": [ + "title" + ], + "title": "ChecklistCreate", + "type": "object" + }, + "ChecklistUpdate": { + "properties": { + "description": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Description" + }, + "is_required": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "title": "Is Required" + }, + "order_index": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "Order Index" + }, + "title": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Title" + } + }, + "title": "ChecklistUpdate", + "type": "object" + }, + "CloseIncidentRequest": { + "properties": { + "lessons_learned": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Lessons Learned" + }, + "root_cause": { + "title": "Root Cause", + "type": "string" + } + }, + "required": [ + "root_cause" + ], + "title": "CloseIncidentRequest", + "type": "object" + }, + "CompanyProfileRequest": { + "properties": { + "ai_systems": { + "default": [], + "items": { + "additionalProperties": true, + "type": "object" + }, + "title": "Ai Systems", + "type": "array" + }, + "ai_use_cases": { + "default": [], + "items": { + "type": "string" + }, + "title": "Ai Use Cases", + "type": "array" + }, + "annual_revenue": { + "default": "< 2 Mio", + "title": "Annual Revenue", + "type": "string" + }, + "business_model": { + "default": "B2B", + "title": "Business Model", + "type": "string" + }, + "company_name": { + "default": "", + "title": "Company Name", + "type": "string" + }, + "company_size": { + "default": "small", + "title": "Company Size", + "type": "string" + }, + "document_sources": { + "default": [], + "items": { + "additionalProperties": true, + "type": "object" + }, + "title": "Document Sources", + "type": "array" + }, + "dpo_email": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Dpo Email" + }, + "dpo_name": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Dpo Name" + }, + "employee_count": { + "default": "1-9", + "title": "Employee Count", + "type": "string" + }, + "founded_year": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "Founded Year" + }, + "has_international_locations": { + "default": false, + "title": "Has International Locations", + "type": "boolean" + }, + "headquarters_city": { + "default": "", + "title": "Headquarters City", + "type": "string" + }, + "headquarters_country": { + "default": "DE", + "title": "Headquarters Country", + "type": "string" + }, + "headquarters_country_other": { + "default": "", + "title": "Headquarters Country Other", + "type": "string" + }, + "headquarters_state": { + "default": "", + "title": "Headquarters State", + "type": "string" + }, + "headquarters_street": { + "default": "", + "title": "Headquarters Street", + "type": "string" + }, + "headquarters_zip": { + "default": "", + "title": "Headquarters Zip", + "type": "string" + }, + "industry": { + "default": "", + "title": "Industry", + "type": "string" + }, + "international_countries": { + "default": [], + "items": { + "type": "string" + }, + "title": "International Countries", + "type": "array" + }, + "is_complete": { + "default": false, + "title": "Is Complete", + "type": "boolean" + }, + "is_data_controller": { + "default": true, + "title": "Is Data Controller", + "type": "boolean" + }, + "is_data_processor": { + "default": false, + "title": "Is Data Processor", + "type": "boolean" + }, + "legal_contact_email": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Legal Contact Email" + }, + "legal_contact_name": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Legal Contact Name" + }, + "legal_form": { + "default": "GmbH", + "title": "Legal Form", + "type": "string" + }, + "machine_builder": { + "anyOf": [ + { + "additionalProperties": true, + "type": "object" + }, + { + "type": "null" + } + ], + "title": "Machine Builder" + }, + "offering_urls": { + "additionalProperties": true, + "default": {}, + "title": "Offering Urls", + "type": "object" + }, + "offerings": { + "default": [], + "items": { + "type": "string" + }, + "title": "Offerings", + "type": "array" + }, + "primary_jurisdiction": { + "default": "DE", + "title": "Primary Jurisdiction", + "type": "string" + }, + "processing_systems": { + "default": [], + "items": { + "additionalProperties": true, + "type": "object" + }, + "title": "Processing Systems", + "type": "array" + }, + "project_id": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Project Id" + }, + "repos": { + "default": [], + "items": { + "additionalProperties": true, + "type": "object" + }, + "title": "Repos", + "type": "array" + }, + "review_cycle_months": { + "default": 12, + "title": "Review Cycle Months", + "type": "integer" + }, + "subject_to_ai_act": { + "default": false, + "title": "Subject To Ai Act", + "type": "boolean" + }, + "subject_to_iso27001": { + "default": false, + "title": "Subject To Iso27001", + "type": "boolean" + }, + "subject_to_nis2": { + "default": false, + "title": "Subject To Nis2", + "type": "boolean" + }, + "supervisory_authority": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Supervisory Authority" + }, + "target_markets": { + "default": [ + "DE" + ], + "items": { + "type": "string" + }, + "title": "Target Markets", + "type": "array" + }, + "technical_contacts": { + "default": [], + "items": { + "additionalProperties": true, + "type": "object" + }, + "title": "Technical Contacts", + "type": "array" + }, + "uses_ai": { + "default": false, + "title": "Uses Ai", + "type": "boolean" + } + }, + "title": "CompanyProfileRequest", + "type": "object" + }, + "CompanyProfileResponse": { + "properties": { + "ai_systems": { + "default": [], + "items": { + "additionalProperties": true, + "type": "object" + }, + "title": "Ai Systems", + "type": "array" + }, + "ai_use_cases": { + "items": { + "type": "string" + }, + "title": "Ai Use Cases", + "type": "array" + }, + "annual_revenue": { + "title": "Annual Revenue", + "type": "string" + }, + "business_model": { + "title": "Business Model", + "type": "string" + }, + "company_name": { + "title": "Company Name", + "type": "string" + }, + "company_size": { + "title": "Company Size", + "type": "string" + }, + "completed_at": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Completed At" + }, + "created_at": { + "title": "Created At", + "type": "string" + }, + "document_sources": { + "default": [], + "items": { + "additionalProperties": true, + "type": "object" + }, + "title": "Document Sources", + "type": "array" + }, + "dpo_email": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Dpo Email" + }, + "dpo_name": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Dpo Name" + }, + "employee_count": { + "title": "Employee Count", + "type": "string" + }, + "founded_year": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "Founded Year" + }, + "has_international_locations": { + "title": "Has International Locations", + "type": "boolean" + }, + "headquarters_city": { + "default": "", + "title": "Headquarters City", + "type": "string" + }, + "headquarters_country": { + "title": "Headquarters Country", + "type": "string" + }, + "headquarters_country_other": { + "default": "", + "title": "Headquarters Country Other", + "type": "string" + }, + "headquarters_state": { + "default": "", + "title": "Headquarters State", + "type": "string" + }, + "headquarters_street": { + "default": "", + "title": "Headquarters Street", + "type": "string" + }, + "headquarters_zip": { + "default": "", + "title": "Headquarters Zip", + "type": "string" + }, + "id": { + "title": "Id", + "type": "string" + }, + "industry": { + "title": "Industry", + "type": "string" + }, + "international_countries": { + "items": { + "type": "string" + }, + "title": "International Countries", + "type": "array" + }, + "is_complete": { + "title": "Is Complete", + "type": "boolean" + }, + "is_data_controller": { + "title": "Is Data Controller", + "type": "boolean" + }, + "is_data_processor": { + "title": "Is Data Processor", + "type": "boolean" + }, + "legal_contact_email": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Legal Contact Email" + }, + "legal_contact_name": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Legal Contact Name" + }, + "legal_form": { + "title": "Legal Form", + "type": "string" + }, + "machine_builder": { + "anyOf": [ + { + "additionalProperties": true, + "type": "object" + }, + { + "type": "null" + } + ], + "title": "Machine Builder" + }, + "offering_urls": { + "additionalProperties": true, + "default": {}, + "title": "Offering Urls", + "type": "object" + }, + "offerings": { + "items": { + "type": "string" + }, + "title": "Offerings", + "type": "array" + }, + "primary_jurisdiction": { + "title": "Primary Jurisdiction", + "type": "string" + }, + "processing_systems": { + "default": [], + "items": { + "additionalProperties": true, + "type": "object" + }, + "title": "Processing Systems", + "type": "array" + }, + "project_id": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Project Id" + }, + "repos": { + "default": [], + "items": { + "additionalProperties": true, + "type": "object" + }, + "title": "Repos", + "type": "array" + }, + "review_cycle_months": { + "default": 12, + "title": "Review Cycle Months", + "type": "integer" + }, + "subject_to_ai_act": { + "default": false, + "title": "Subject To Ai Act", + "type": "boolean" + }, + "subject_to_iso27001": { + "default": false, + "title": "Subject To Iso27001", + "type": "boolean" + }, + "subject_to_nis2": { + "default": false, + "title": "Subject To Nis2", + "type": "boolean" + }, + "supervisory_authority": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Supervisory Authority" + }, + "target_markets": { + "items": { + "type": "string" + }, + "title": "Target Markets", + "type": "array" + }, + "technical_contacts": { + "default": [], + "items": { + "additionalProperties": true, + "type": "object" + }, + "title": "Technical Contacts", + "type": "array" + }, + "tenant_id": { + "title": "Tenant Id", + "type": "string" + }, + "updated_at": { + "title": "Updated At", + "type": "string" + }, + "uses_ai": { + "title": "Uses Ai", + "type": "boolean" + } + }, + "required": [ + "id", + "tenant_id", + "company_name", + "legal_form", + "industry", + "founded_year", + "business_model", + "offerings", + "company_size", + "employee_count", + "annual_revenue", + "headquarters_country", + "has_international_locations", + "international_countries", + "target_markets", + "primary_jurisdiction", + "is_data_controller", + "is_data_processor", + "uses_ai", + "ai_use_cases", + "dpo_name", + "dpo_email", + "legal_contact_name", + "legal_contact_email", + "machine_builder", + "is_complete", + "completed_at", + "created_at", + "updated_at" + ], + "title": "CompanyProfileResponse", + "type": "object" + }, + "CompanyUpsert": { + "properties": { + "data": { + "additionalProperties": true, + "default": {}, + "title": "Data", + "type": "object" + } + }, + "title": "CompanyUpsert", + "type": "object" + }, + "CompleteDSR": { + "properties": { + "result_data": { + "anyOf": [ + { + "additionalProperties": true, + "type": "object" + }, + { + "type": "null" + } + ], + "title": "Result Data" + }, + "summary": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Summary" + } + }, + "title": "CompleteDSR", + "type": "object" + }, + "ComplianceScopeRequest": { + "description": "Scope selection submitted by the frontend wizard.", + "properties": { + "scope": { + "additionalProperties": true, + "title": "Scope", + "type": "object" + }, + "tenant_id": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Tenant Id" + } + }, + "required": [ + "scope" + ], + "title": "ComplianceScopeRequest", + "type": "object" + }, + "ComplianceScopeResponse": { + "description": "Persisted scope object returned to the frontend.", + "properties": { + "created_at": { + "title": "Created At", + "type": "string" + }, + "scope": { + "additionalProperties": true, + "title": "Scope", + "type": "object" + }, + "tenant_id": { + "title": "Tenant Id", + "type": "string" + }, + "updated_at": { + "title": "Updated At", + "type": "string" + } + }, + "required": [ + "tenant_id", + "scope", + "updated_at", + "created_at" + ], + "title": "ComplianceScopeResponse", + "type": "object" + }, + "ConsentRequest": { + "properties": { + "consented": { + "default": true, + "title": "Consented", + "type": "boolean" + }, + "document_type": { + "title": "Document Type", + "type": "string" + }, + "version_id": { + "title": "Version Id", + "type": "string" + } + }, + "required": [ + "document_type", + "version_id" + ], + "title": "ConsentRequest", + "type": "object" + }, + "ConsentTemplateCreate": { + "properties": { + "body": { + "title": "Body", + "type": "string" + }, + "is_active": { + "default": true, + "title": "Is Active", + "type": "boolean" + }, + "language": { + "default": "de", + "title": "Language", + "type": "string" + }, + "subject": { + "title": "Subject", + "type": "string" + }, + "template_key": { + "title": "Template Key", + "type": "string" + } + }, + "required": [ + "template_key", + "subject", + "body" + ], + "title": "ConsentTemplateCreate", + "type": "object" + }, + "ConsentTemplateUpdate": { + "properties": { + "body": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Body" + }, + "is_active": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "title": "Is Active" + }, + "subject": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Subject" + } + }, + "title": "ConsentTemplateUpdate", + "type": "object" + }, + "ContactCreate": { + "properties": { + "available_24h": { + "default": false, + "title": "Available 24H", + "type": "boolean" + }, + "email": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Email" + }, + "is_primary": { + "default": false, + "title": "Is Primary", + "type": "boolean" + }, + "name": { + "title": "Name", + "type": "string" + }, + "phone": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Phone" + }, + "role": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Role" + } + }, + "required": [ + "name" + ], + "title": "ContactCreate", + "type": "object" + }, + "ContactUpdate": { + "properties": { + "available_24h": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "title": "Available 24H" + }, + "email": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Email" + }, + "is_primary": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "title": "Is Primary" + }, + "name": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Name" + }, + "phone": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Phone" + }, + "role": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Role" + } + }, + "title": "ContactUpdate", + "type": "object" + }, + "ContextIssue": { + "description": "Single context issue.", + "properties": { + "impact": { + "title": "Impact", + "type": "string" + }, + "issue": { + "title": "Issue", + "type": "string" + }, + "treatment": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Treatment" + } + }, + "required": [ + "issue", + "impact" + ], + "title": "ContextIssue", + "type": "object" + }, + "ControlCreateRequest": { + "properties": { + "control_id": { + "title": "Control Id", + "type": "string" + }, + "evidence": { + "default": [], + "items": {}, + "title": "Evidence", + "type": "array" + }, + "evidence_confidence": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "title": "Evidence Confidence" + }, + "framework_id": { + "title": "Framework Id", + "type": "string" + }, + "implementation_effort": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Implementation Effort" + }, + "objective": { + "title": "Objective", + "type": "string" + }, + "open_anchors": { + "default": [], + "items": {}, + "title": "Open Anchors", + "type": "array" + }, + "rationale": { + "title": "Rationale", + "type": "string" + }, + "release_state": { + "default": "draft", + "title": "Release State", + "type": "string" + }, + "requirements": { + "default": [], + "items": {}, + "title": "Requirements", + "type": "array" + }, + "risk_score": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "title": "Risk Score" + }, + "scope": { + "additionalProperties": true, + "default": {}, + "title": "Scope", + "type": "object" + }, + "severity": { + "default": "medium", + "title": "Severity", + "type": "string" + }, + "tags": { + "default": [], + "items": {}, + "title": "Tags", + "type": "array" + }, + "test_procedure": { + "default": [], + "items": {}, + "title": "Test Procedure", + "type": "array" + }, + "title": { + "title": "Title", + "type": "string" + } + }, + "required": [ + "framework_id", + "control_id", + "title", + "objective", + "rationale" + ], + "title": "ControlCreateRequest", + "type": "object" + }, + "ControlListResponse": { + "properties": { + "controls": { + "items": { + "$ref": "#/components/schemas/ControlResponse" + }, + "title": "Controls", + "type": "array" + }, + "total": { + "title": "Total", + "type": "integer" + } + }, + "required": [ + "controls", + "total" + ], + "title": "ControlListResponse", + "type": "object" + }, + "ControlResponse": { + "properties": { + "automation_config": { + "anyOf": [ + { + "additionalProperties": true, + "type": "object" + }, + { + "type": "null" + } + ], + "title": "Automation Config" + }, + "automation_tool": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Automation Tool" + }, + "code_reference": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Code Reference" + }, + "control_id": { + "title": "Control Id", + "type": "string" + }, + "control_type": { + "title": "Control Type", + "type": "string" + }, + "created_at": { + "format": "date-time", + "title": "Created At", + "type": "string" + }, + "description": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Description" + }, + "documentation_url": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Documentation Url" + }, + "domain": { + "title": "Domain", + "type": "string" + }, + "evidence_count": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "Evidence Count" + }, + "id": { + "title": "Id", + "type": "string" + }, + "implementation_guidance": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Implementation Guidance" + }, + "is_automated": { + "default": false, + "title": "Is Automated", + "type": "boolean" + }, + "last_reviewed_at": { + "anyOf": [ + { + "format": "date-time", + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Last Reviewed At" + }, + "next_review_at": { + "anyOf": [ + { + "format": "date-time", + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Next Review At" + }, + "owner": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Owner" + }, + "pass_criteria": { + "title": "Pass Criteria", + "type": "string" + }, + "requirement_count": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "Requirement Count" + }, + "review_frequency_days": { + "default": 90, + "title": "Review Frequency Days", + "type": "integer" + }, + "status": { + "title": "Status", + "type": "string" + }, + "status_notes": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Status Notes" + }, + "title": { + "title": "Title", + "type": "string" + }, + "updated_at": { + "format": "date-time", + "title": "Updated At", + "type": "string" + } + }, + "required": [ + "control_id", + "domain", + "control_type", + "title", + "pass_criteria", + "id", + "status", + "created_at", + "updated_at" + ], + "title": "ControlResponse", + "type": "object" + }, + "ControlReviewRequest": { + "properties": { + "status": { + "title": "Status", + "type": "string" + }, + "status_notes": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Status Notes" + } + }, + "required": [ + "status" + ], + "title": "ControlReviewRequest", + "type": "object" + }, + "ControlUpdate": { + "properties": { + "automation_config": { + "anyOf": [ + { + "additionalProperties": true, + "type": "object" + }, + { + "type": "null" + } + ], + "title": "Automation Config" + }, + "automation_tool": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Automation Tool" + }, + "code_reference": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Code Reference" + }, + "description": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Description" + }, + "documentation_url": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Documentation Url" + }, + "implementation_guidance": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Implementation Guidance" + }, + "is_automated": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "title": "Is Automated" + }, + "owner": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Owner" + }, + "pass_criteria": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Pass Criteria" + }, + "status": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Status" + }, + "status_notes": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Status Notes" + }, + "title": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Title" + } + }, + "title": "ControlUpdate", + "type": "object" + }, + "ControlUpdateRequest": { + "properties": { + "evidence": { + "anyOf": [ + { + "items": {}, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Evidence" + }, + "evidence_confidence": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "title": "Evidence Confidence" + }, + "implementation_effort": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Implementation Effort" + }, + "objective": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Objective" + }, + "open_anchors": { + "anyOf": [ + { + "items": {}, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Open Anchors" + }, + "rationale": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Rationale" + }, + "release_state": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Release State" + }, + "requirements": { + "anyOf": [ + { + "items": {}, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Requirements" + }, + "risk_score": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "title": "Risk Score" + }, + "scope": { + "anyOf": [ + { + "additionalProperties": true, + "type": "object" + }, + { + "type": "null" + } + ], + "title": "Scope" + }, + "severity": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Severity" + }, + "tags": { + "anyOf": [ + { + "items": {}, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Tags" + }, + "test_procedure": { + "anyOf": [ + { + "items": {}, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Test Procedure" + }, + "title": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Title" + } + }, + "title": "ControlUpdateRequest", + "type": "object" + }, + "CookieCategoryCreate": { + "properties": { + "description_de": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Description De" + }, + "description_en": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Description En" + }, + "is_required": { + "default": false, + "title": "Is Required", + "type": "boolean" + }, + "name_de": { + "title": "Name De", + "type": "string" + }, + "name_en": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Name En" + }, + "sort_order": { + "default": 0, + "title": "Sort Order", + "type": "integer" + } + }, + "required": [ + "name_de" + ], + "title": "CookieCategoryCreate", + "type": "object" + }, + "CookieCategoryUpdate": { + "properties": { + "description_de": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Description De" + }, + "description_en": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Description En" + }, + "is_active": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "title": "Is Active" + }, + "is_required": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "title": "Is Required" + }, + "name_de": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Name De" + }, + "name_en": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Name En" + }, + "sort_order": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "Sort Order" + } + }, + "title": "CookieCategoryUpdate", + "type": "object" + }, + "CookieConsentItem": { + "properties": { + "category_id": { + "title": "Category Id", + "type": "string" + }, + "consented": { + "title": "Consented", + "type": "boolean" + } + }, + "required": [ + "category_id", + "consented" + ], + "title": "CookieConsentItem", + "type": "object" + }, + "CookieConsentRequest": { + "properties": { + "categories": { + "items": { + "$ref": "#/components/schemas/CookieConsentItem" + }, + "title": "Categories", + "type": "array" + } + }, + "required": [ + "categories" + ], + "title": "CookieConsentRequest", + "type": "object" + }, + "CookiesUpsert": { + "properties": { + "categories": { + "default": [], + "items": { + "additionalProperties": true, + "type": "object" + }, + "title": "Categories", + "type": "array" + }, + "config": { + "additionalProperties": true, + "default": {}, + "title": "Config", + "type": "object" + } + }, + "title": "CookiesUpsert", + "type": "object" + }, + "CorrectiveActionCreate": { + "description": "Schema for creating Corrective Action.", + "properties": { + "assigned_to": { + "title": "Assigned To", + "type": "string" + }, + "capa_type": { + "title": "Capa Type", + "type": "string" + }, + "description": { + "title": "Description", + "type": "string" + }, + "effectiveness_criteria": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Effectiveness Criteria" + }, + "estimated_effort_hours": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "Estimated Effort Hours" + }, + "expected_outcome": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Expected Outcome" + }, + "finding_id": { + "title": "Finding Id", + "type": "string" + }, + "planned_completion": { + "format": "date", + "title": "Planned Completion", + "type": "string" + }, + "planned_start": { + "anyOf": [ + { + "format": "date", + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Planned Start" + }, + "resources_required": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Resources Required" + }, + "title": { + "title": "Title", + "type": "string" + } + }, + "required": [ + "capa_type", + "title", + "description", + "assigned_to", + "planned_completion", + "finding_id" + ], + "title": "CorrectiveActionCreate", + "type": "object" + }, + "CorrectiveActionListResponse": { + "description": "List response for Corrective Actions.", + "properties": { + "actions": { + "items": { + "$ref": "#/components/schemas/CorrectiveActionResponse" + }, + "title": "Actions", + "type": "array" + }, + "total": { + "title": "Total", + "type": "integer" + } + }, + "required": [ + "actions", + "total" + ], + "title": "CorrectiveActionListResponse", + "type": "object" + }, + "CorrectiveActionResponse": { + "description": "Response schema for Corrective Action.", + "properties": { + "actual_completion": { + "anyOf": [ + { + "format": "date", + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Actual Completion" + }, + "actual_effort_hours": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "Actual Effort Hours" + }, + "approved_by": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Approved By" + }, + "assigned_to": { + "title": "Assigned To", + "type": "string" + }, + "capa_id": { + "title": "Capa Id", + "type": "string" + }, + "capa_type": { + "title": "Capa Type", + "type": "string" + }, + "created_at": { + "format": "date-time", + "title": "Created At", + "type": "string" + }, + "description": { + "title": "Description", + "type": "string" + }, + "effectiveness_criteria": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Effectiveness Criteria" + }, + "effectiveness_notes": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Effectiveness Notes" + }, + "effectiveness_verification_date": { + "anyOf": [ + { + "format": "date", + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Effectiveness Verification Date" + }, + "effectiveness_verified": { + "title": "Effectiveness Verified", + "type": "boolean" + }, + "estimated_effort_hours": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "Estimated Effort Hours" + }, + "evidence_ids": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Evidence Ids" + }, + "expected_outcome": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Expected Outcome" + }, + "finding_id": { + "title": "Finding Id", + "type": "string" + }, + "id": { + "title": "Id", + "type": "string" + }, + "implementation_evidence": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Implementation Evidence" + }, + "planned_completion": { + "format": "date", + "title": "Planned Completion", + "type": "string" + }, + "planned_start": { + "anyOf": [ + { + "format": "date", + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Planned Start" + }, + "progress_percentage": { + "title": "Progress Percentage", + "type": "integer" + }, + "resources_required": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Resources Required" + }, + "status": { + "title": "Status", + "type": "string" + }, + "title": { + "title": "Title", + "type": "string" + }, + "updated_at": { + "format": "date-time", + "title": "Updated At", + "type": "string" + } + }, + "required": [ + "capa_type", + "title", + "description", + "assigned_to", + "planned_completion", + "id", + "capa_id", + "finding_id", + "status", + "progress_percentage", + "effectiveness_verified", + "created_at", + "updated_at" + ], + "title": "CorrectiveActionResponse", + "type": "object" + }, + "CorrectiveActionUpdate": { + "description": "Schema for updating Corrective Action.", + "properties": { + "assigned_to": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Assigned To" + }, + "description": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Description" + }, + "implementation_evidence": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Implementation Evidence" + }, + "planned_completion": { + "anyOf": [ + { + "format": "date", + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Planned Completion" + }, + "progress_percentage": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "Progress Percentage" + }, + "status": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Status" + }, + "title": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Title" + } + }, + "title": "CorrectiveActionUpdate", + "type": "object" + }, + "CreateAuditSessionRequest": { + "description": "Request to create a new audit session.", + "properties": { + "auditor_email": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Auditor Email" + }, + "auditor_name": { + "maxLength": 100, + "minLength": 1, + "title": "Auditor Name", + "type": "string" + }, + "auditor_organization": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Auditor Organization" + }, + "description": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Description" + }, + "name": { + "maxLength": 200, + "minLength": 1, + "title": "Name", + "type": "string" + }, + "regulation_codes": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Regulation Codes" + } + }, + "required": [ + "name", + "auditor_name" + ], + "title": "CreateAuditSessionRequest", + "type": "object" + }, + "CreateCookieCategoryRequest": { + "properties": { + "description_de": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Description De" + }, + "description_en": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Description En" + }, + "display_name_de": { + "title": "Display Name De", + "type": "string" + }, + "display_name_en": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Display Name En" + }, + "is_mandatory": { + "default": false, + "title": "Is Mandatory", + "type": "boolean" + }, + "name": { + "title": "Name", + "type": "string" + }, + "sort_order": { + "default": 0, + "title": "Sort Order", + "type": "integer" + } + }, + "required": [ + "name", + "display_name_de" + ], + "title": "CreateCookieCategoryRequest", + "type": "object" + }, + "CreateDocumentRequest": { + "properties": { + "description": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Description" + }, + "is_mandatory": { + "default": true, + "title": "Is Mandatory", + "type": "boolean" + }, + "name": { + "title": "Name", + "type": "string" + }, + "type": { + "title": "Type", + "type": "string" + } + }, + "required": [ + "type", + "name" + ], + "title": "CreateDocumentRequest", + "type": "object" + }, + "CreateProjectRequest": { + "properties": { + "copy_from_project_id": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Copy From Project Id" + }, + "customer_type": { + "default": "new", + "title": "Customer Type", + "type": "string" + }, + "description": { + "default": "", + "title": "Description", + "type": "string" + }, + "name": { + "title": "Name", + "type": "string" + } + }, + "required": [ + "name" + ], + "title": "CreateProjectRequest", + "type": "object" + }, + "CreateTemplateVersion": { + "properties": { + "body_html": { + "title": "Body Html", + "type": "string" + }, + "body_text": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Body Text" + }, + "language": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": "de", + "title": "Language" + }, + "subject": { + "title": "Subject", + "type": "string" + }, + "version": { + "default": "1.0", + "title": "Version", + "type": "string" + } + }, + "required": [ + "subject", + "body_html" + ], + "title": "CreateTemplateVersion", + "type": "object" + }, + "CreateVersionRequest": { + "properties": { + "content": { + "title": "Content", + "type": "string" + }, + "document_id": { + "title": "Document Id", + "type": "string" + }, + "language": { + "default": "de", + "title": "Language", + "type": "string" + }, + "summary": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Summary" + }, + "title": { + "title": "Title", + "type": "string" + }, + "version": { + "title": "Version", + "type": "string" + } + }, + "required": [ + "document_id", + "version", + "title", + "content" + ], + "title": "CreateVersionRequest", + "type": "object" + }, + "DSFAApproveRequest": { + "description": "Body for POST /dsfa/{id}/approve.", + "properties": { + "approved": { + "title": "Approved", + "type": "boolean" + }, + "approved_by": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Approved By" + }, + "comments": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Comments" + } + }, + "required": [ + "approved" + ], + "title": "DSFAApproveRequest", + "type": "object" + }, + "DSFACreate": { + "properties": { + "affected_rights": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Affected Rights" + }, + "ai_trigger_ids": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Ai Trigger Ids" + }, + "ai_use_case_modules": { + "anyOf": [ + { + "items": { + "additionalProperties": true, + "type": "object" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Ai Use Case Modules" + }, + "alternatives_considered": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Alternatives Considered" + }, + "art35_abs3_triggered": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Art35 Abs3 Triggered" + }, + "authority_consulted": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "title": "Authority Consulted" + }, + "authority_decision": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Authority Decision" + }, + "authority_reference": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Authority Reference" + }, + "authority_resource_id": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Authority Resource Id" + }, + "conclusion": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Conclusion" + }, + "consultation_requirement": { + "anyOf": [ + { + "additionalProperties": true, + "type": "object" + }, + { + "type": "null" + } + ], + "title": "Consultation Requirement" + }, + "created_by": { + "default": "system", + "title": "Created By", + "type": "string" + }, + "data_categories": { + "default": [], + "items": { + "type": "string" + }, + "title": "Data Categories", + "type": "array" + }, + "data_minimization": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Data Minimization" + }, + "data_subjects": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Data Subjects" + }, + "description": { + "default": "", + "title": "Description", + "type": "string" + }, + "dpo_approved": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "title": "Dpo Approved" + }, + "dpo_consulted": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "title": "Dpo Consulted" + }, + "dpo_name": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Dpo Name" + }, + "dpo_opinion": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Dpo Opinion" + }, + "federal_state": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Federal State" + }, + "involves_ai": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "title": "Involves Ai" + }, + "legal_basis": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Legal Basis" + }, + "legal_basis_details": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Legal Basis Details" + }, + "measures": { + "default": [], + "items": { + "type": "string" + }, + "title": "Measures", + "type": "array" + }, + "metadata": { + "anyOf": [ + { + "additionalProperties": true, + "type": "object" + }, + { + "type": "null" + } + ], + "title": "Metadata" + }, + "mitigations": { + "anyOf": [ + { + "items": { + "additionalProperties": true, + "type": "object" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Mitigations" + }, + "necessity_assessment": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Necessity Assessment" + }, + "overall_risk_level": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Overall Risk Level" + }, + "processing_activity": { + "default": "", + "title": "Processing Activity", + "type": "string" + }, + "processing_description": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Processing Description" + }, + "processing_purpose": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Processing Purpose" + }, + "proportionality_assessment": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Proportionality Assessment" + }, + "recipients": { + "default": [], + "items": { + "type": "string" + }, + "title": "Recipients", + "type": "array" + }, + "retention_justification": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Retention Justification" + }, + "review_comments": { + "anyOf": [ + { + "items": { + "additionalProperties": true, + "type": "object" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Review Comments" + }, + "review_schedule": { + "anyOf": [ + { + "additionalProperties": true, + "type": "object" + }, + { + "type": "null" + } + ], + "title": "Review Schedule" + }, + "review_triggers": { + "anyOf": [ + { + "items": { + "additionalProperties": true, + "type": "object" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Review Triggers" + }, + "risk_level": { + "default": "low", + "title": "Risk Level", + "type": "string" + }, + "risk_score": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "Risk Score" + }, + "risks": { + "anyOf": [ + { + "items": { + "additionalProperties": true, + "type": "object" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Risks" + }, + "section_8_complete": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "title": "Section 8 Complete" + }, + "section_progress": { + "anyOf": [ + { + "additionalProperties": true, + "type": "object" + }, + { + "type": "null" + } + ], + "title": "Section Progress" + }, + "stakeholder_consultations": { + "anyOf": [ + { + "items": { + "additionalProperties": true, + "type": "object" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Stakeholder Consultations" + }, + "status": { + "default": "draft", + "title": "Status", + "type": "string" + }, + "submitted_by": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Submitted By" + }, + "threshold_analysis": { + "anyOf": [ + { + "additionalProperties": true, + "type": "object" + }, + { + "type": "null" + } + ], + "title": "Threshold Analysis" + }, + "title": { + "title": "Title", + "type": "string" + }, + "tom_references": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Tom References" + }, + "triggered_rule_codes": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Triggered Rule Codes" + }, + "version": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "Version" + }, + "wp248_criteria_met": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Wp248 Criteria Met" + } + }, + "required": [ + "title" + ], + "title": "DSFACreate", + "type": "object" + }, + "DSFASectionUpdate": { + "description": "Body for PUT /dsfa/{id}/sections/{section_number}.", + "properties": { + "content": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Content" + }, + "extra": { + "anyOf": [ + { + "additionalProperties": true, + "type": "object" + }, + { + "type": "null" + } + ], + "title": "Extra" + } + }, + "title": "DSFASectionUpdate", + "type": "object" + }, + "DSFAStatusUpdate": { + "properties": { + "approved_by": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Approved By" + }, + "status": { + "title": "Status", + "type": "string" + } + }, + "required": [ + "status" + ], + "title": "DSFAStatusUpdate", + "type": "object" + }, + "DSFAUpdate": { + "properties": { + "affected_rights": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Affected Rights" + }, + "ai_trigger_ids": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Ai Trigger Ids" + }, + "ai_use_case_modules": { + "anyOf": [ + { + "items": { + "additionalProperties": true, + "type": "object" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Ai Use Case Modules" + }, + "alternatives_considered": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Alternatives Considered" + }, + "approved_by": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Approved By" + }, + "art35_abs3_triggered": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Art35 Abs3 Triggered" + }, + "authority_consulted": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "title": "Authority Consulted" + }, + "authority_decision": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Authority Decision" + }, + "authority_reference": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Authority Reference" + }, + "authority_resource_id": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Authority Resource Id" + }, + "conclusion": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Conclusion" + }, + "consultation_requirement": { + "anyOf": [ + { + "additionalProperties": true, + "type": "object" + }, + { + "type": "null" + } + ], + "title": "Consultation Requirement" + }, + "data_categories": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Data Categories" + }, + "data_minimization": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Data Minimization" + }, + "data_subjects": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Data Subjects" + }, + "description": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Description" + }, + "dpo_approved": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "title": "Dpo Approved" + }, + "dpo_consulted": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "title": "Dpo Consulted" + }, + "dpo_name": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Dpo Name" + }, + "dpo_opinion": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Dpo Opinion" + }, + "federal_state": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Federal State" + }, + "involves_ai": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "title": "Involves Ai" + }, + "legal_basis": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Legal Basis" + }, + "legal_basis_details": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Legal Basis Details" + }, + "measures": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Measures" + }, + "metadata": { + "anyOf": [ + { + "additionalProperties": true, + "type": "object" + }, + { + "type": "null" + } + ], + "title": "Metadata" + }, + "mitigations": { + "anyOf": [ + { + "items": { + "additionalProperties": true, + "type": "object" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Mitigations" + }, + "necessity_assessment": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Necessity Assessment" + }, + "overall_risk_level": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Overall Risk Level" + }, + "processing_activity": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Processing Activity" + }, + "processing_description": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Processing Description" + }, + "processing_purpose": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Processing Purpose" + }, + "proportionality_assessment": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Proportionality Assessment" + }, + "recipients": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Recipients" + }, + "retention_justification": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Retention Justification" + }, + "review_comments": { + "anyOf": [ + { + "items": { + "additionalProperties": true, + "type": "object" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Review Comments" + }, + "review_schedule": { + "anyOf": [ + { + "additionalProperties": true, + "type": "object" + }, + { + "type": "null" + } + ], + "title": "Review Schedule" + }, + "review_triggers": { + "anyOf": [ + { + "items": { + "additionalProperties": true, + "type": "object" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Review Triggers" + }, + "risk_level": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Risk Level" + }, + "risk_score": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "Risk Score" + }, + "risks": { + "anyOf": [ + { + "items": { + "additionalProperties": true, + "type": "object" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Risks" + }, + "section_8_complete": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "title": "Section 8 Complete" + }, + "section_progress": { + "anyOf": [ + { + "additionalProperties": true, + "type": "object" + }, + { + "type": "null" + } + ], + "title": "Section Progress" + }, + "stakeholder_consultations": { + "anyOf": [ + { + "items": { + "additionalProperties": true, + "type": "object" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Stakeholder Consultations" + }, + "status": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Status" + }, + "submitted_by": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Submitted By" + }, + "threshold_analysis": { + "anyOf": [ + { + "additionalProperties": true, + "type": "object" + }, + { + "type": "null" + } + ], + "title": "Threshold Analysis" + }, + "title": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Title" + }, + "tom_references": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Tom References" + }, + "triggered_rule_codes": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Triggered Rule Codes" + }, + "version": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "Version" + }, + "wp248_criteria_met": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Wp248 Criteria Met" + } + }, + "title": "DSFAUpdate", + "type": "object" + }, + "DSRCreate": { + "properties": { + "notes": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Notes" + }, + "priority": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": "normal", + "title": "Priority" + }, + "request_text": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Request Text" + }, + "request_type": { + "default": "access", + "title": "Request Type", + "type": "string" + }, + "requester_address": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Requester Address" + }, + "requester_customer_id": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Requester Customer Id" + }, + "requester_email": { + "title": "Requester Email", + "type": "string" + }, + "requester_name": { + "title": "Requester Name", + "type": "string" + }, + "requester_phone": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Requester Phone" + }, + "source": { + "default": "email", + "title": "Source", + "type": "string" + }, + "source_details": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Source Details" + } + }, + "required": [ + "requester_name", + "requester_email" + ], + "title": "DSRCreate", + "type": "object" + }, + "DSRUpdate": { + "properties": { + "affected_systems": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Affected Systems" + }, + "assigned_to": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Assigned To" + }, + "erasure_checklist": { + "anyOf": [ + { + "items": { + "additionalProperties": true, + "type": "object" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Erasure Checklist" + }, + "internal_notes": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Internal Notes" + }, + "notes": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Notes" + }, + "objection_details": { + "anyOf": [ + { + "additionalProperties": true, + "type": "object" + }, + { + "type": "null" + } + ], + "title": "Objection Details" + }, + "priority": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Priority" + }, + "rectification_details": { + "anyOf": [ + { + "additionalProperties": true, + "type": "object" + }, + { + "type": "null" + } + ], + "title": "Rectification Details" + }, + "request_text": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Request Text" + } + }, + "title": "DSRUpdate", + "type": "object" + }, + "DashboardResponse": { + "properties": { + "compliance_score": { + "title": "Compliance Score", + "type": "number" + }, + "controls_by_domain": { + "additionalProperties": { + "additionalProperties": { + "type": "integer" + }, + "type": "object" + }, + "title": "Controls By Domain", + "type": "object" + }, + "controls_by_status": { + "additionalProperties": { + "type": "integer" + }, + "title": "Controls By Status", + "type": "object" + }, + "evidence_by_status": { + "additionalProperties": { + "type": "integer" + }, + "title": "Evidence By Status", + "type": "object" + }, + "recent_activity": { + "items": { + "additionalProperties": true, + "type": "object" + }, + "title": "Recent Activity", + "type": "array" + }, + "risks_by_level": { + "additionalProperties": { + "type": "integer" + }, + "title": "Risks By Level", + "type": "object" + }, + "total_controls": { + "title": "Total Controls", + "type": "integer" + }, + "total_evidence": { + "title": "Total Evidence", + "type": "integer" + }, + "total_regulations": { + "title": "Total Regulations", + "type": "integer" + }, + "total_requirements": { + "title": "Total Requirements", + "type": "integer" + }, + "total_risks": { + "title": "Total Risks", + "type": "integer" + } + }, + "required": [ + "compliance_score", + "total_regulations", + "total_requirements", + "total_controls", + "controls_by_status", + "controls_by_domain", + "total_evidence", + "evidence_by_status", + "total_risks", + "risks_by_level", + "recent_activity" + ], + "title": "DashboardResponse", + "type": "object" + }, + "DataDeletionRequest": { + "properties": { + "reason": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Reason" + } + }, + "title": "DataDeletionRequest", + "type": "object" + }, + "DataSubjectNotificationRequest": { + "properties": { + "affected_count": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "default": 0, + "title": "Affected Count" + }, + "channel": { + "default": "email", + "title": "Channel", + "type": "string" + }, + "notification_text": { + "title": "Notification Text", + "type": "string" + } + }, + "required": [ + "notification_text" + ], + "title": "DataSubjectNotificationRequest", + "type": "object" + }, + "DeadlineItem": { + "description": "An upcoming deadline for executive display.", + "properties": { + "days_remaining": { + "title": "Days Remaining", + "type": "integer" + }, + "deadline": { + "title": "Deadline", + "type": "string" + }, + "id": { + "title": "Id", + "type": "string" + }, + "owner": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Owner" + }, + "status": { + "title": "Status", + "type": "string" + }, + "title": { + "title": "Title", + "type": "string" + }, + "type": { + "title": "Type", + "type": "string" + } + }, + "required": [ + "id", + "title", + "deadline", + "days_remaining", + "type", + "status" + ], + "title": "DeadlineItem", + "type": "object" + }, + "DeletionRequest": { + "properties": { + "confirm": { + "default": false, + "title": "Confirm", + "type": "boolean" + }, + "reason": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Reason" + } + }, + "title": "DeletionRequest", + "type": "object" + }, + "DocumentAnalysisResponse": { + "properties": { + "confidence": { + "title": "Confidence", + "type": "number" + }, + "detected_type": { + "title": "Detected Type", + "type": "string" + }, + "document_id": { + "title": "Document Id", + "type": "string" + }, + "extracted_entities": { + "items": { + "type": "string" + }, + "title": "Extracted Entities", + "type": "array" + }, + "filename": { + "title": "Filename", + "type": "string" + }, + "gap_analysis": { + "additionalProperties": true, + "title": "Gap Analysis", + "type": "object" + }, + "recommendations": { + "items": { + "type": "string" + }, + "title": "Recommendations", + "type": "array" + } + }, + "required": [ + "document_id", + "filename", + "detected_type", + "confidence", + "extracted_entities", + "recommendations", + "gap_analysis" + ], + "title": "DocumentAnalysisResponse", + "type": "object" + }, + "DocumentCreate": { + "properties": { + "description": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Description" + }, + "mandatory": { + "default": false, + "title": "Mandatory", + "type": "boolean" + }, + "name": { + "title": "Name", + "type": "string" + }, + "tenant_id": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Tenant Id" + }, + "type": { + "title": "Type", + "type": "string" + } + }, + "required": [ + "type", + "name" + ], + "title": "DocumentCreate", + "type": "object" + }, + "DocumentListResponse": { + "properties": { + "documents": { + "items": { + "additionalProperties": true, + "type": "object" + }, + "title": "Documents", + "type": "array" + }, + "total": { + "title": "Total", + "type": "integer" + } + }, + "required": [ + "documents", + "total" + ], + "title": "DocumentListResponse", + "type": "object" + }, + "DocumentResponse": { + "properties": { + "created_at": { + "format": "date-time", + "title": "Created At", + "type": "string" + }, + "description": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Description" + }, + "id": { + "title": "Id", + "type": "string" + }, + "mandatory": { + "title": "Mandatory", + "type": "boolean" + }, + "name": { + "title": "Name", + "type": "string" + }, + "tenant_id": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Tenant Id" + }, + "type": { + "title": "Type", + "type": "string" + }, + "updated_at": { + "anyOf": [ + { + "format": "date-time", + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Updated At" + } + }, + "required": [ + "id", + "tenant_id", + "type", + "name", + "description", + "mandatory", + "created_at", + "updated_at" + ], + "title": "DocumentResponse", + "type": "object" + }, + "EscalationCreate": { + "properties": { + "assignee": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Assignee" + }, + "category": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Category" + }, + "description": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Description" + }, + "due_date": { + "anyOf": [ + { + "format": "date-time", + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Due Date" + }, + "priority": { + "default": "medium", + "title": "Priority", + "type": "string" + }, + "reporter": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Reporter" + }, + "source_id": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Source Id" + }, + "source_module": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Source Module" + }, + "title": { + "title": "Title", + "type": "string" + } + }, + "required": [ + "title" + ], + "title": "EscalationCreate", + "type": "object" + }, + "EscalationStatusUpdate": { + "properties": { + "resolved_at": { + "anyOf": [ + { + "format": "date-time", + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Resolved At" + }, + "status": { + "title": "Status", + "type": "string" + } + }, + "required": [ + "status" + ], + "title": "EscalationStatusUpdate", + "type": "object" + }, + "EscalationUpdate": { + "properties": { + "assignee": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Assignee" + }, + "category": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Category" + }, + "description": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Description" + }, + "due_date": { + "anyOf": [ + { + "format": "date-time", + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Due Date" + }, + "priority": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Priority" + }, + "status": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Status" + }, + "title": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Title" + } + }, + "title": "EscalationUpdate", + "type": "object" + }, + "EvidenceCreate": { + "properties": { + "artifact_url": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Artifact Url" + }, + "ci_job_id": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Ci Job Id" + }, + "control_id": { + "title": "Control Id", + "type": "string" + }, + "description": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Description" + }, + "evidence_type": { + "title": "Evidence Type", + "type": "string" + }, + "source": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Source" + }, + "title": { + "title": "Title", + "type": "string" + }, + "valid_from": { + "anyOf": [ + { + "format": "date-time", + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Valid From" + }, + "valid_until": { + "anyOf": [ + { + "format": "date-time", + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Valid Until" + } + }, + "required": [ + "control_id", + "evidence_type", + "title" + ], + "title": "EvidenceCreate", + "type": "object" + }, + "EvidenceListResponse": { + "properties": { + "evidence": { + "items": { + "$ref": "#/components/schemas/EvidenceResponse" + }, + "title": "Evidence", + "type": "array" + }, + "total": { + "title": "Total", + "type": "integer" + } + }, + "required": [ + "evidence", + "total" + ], + "title": "EvidenceListResponse", + "type": "object" + }, + "EvidenceResponse": { + "properties": { + "artifact_hash": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Artifact Hash" + }, + "artifact_path": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Artifact Path" + }, + "artifact_url": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Artifact Url" + }, + "ci_job_id": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Ci Job Id" + }, + "collected_at": { + "format": "date-time", + "title": "Collected At", + "type": "string" + }, + "control_id": { + "title": "Control Id", + "type": "string" + }, + "created_at": { + "format": "date-time", + "title": "Created At", + "type": "string" + }, + "description": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Description" + }, + "evidence_type": { + "title": "Evidence Type", + "type": "string" + }, + "file_size_bytes": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "File Size Bytes" + }, + "id": { + "title": "Id", + "type": "string" + }, + "mime_type": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Mime Type" + }, + "source": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Source" + }, + "status": { + "title": "Status", + "type": "string" + }, + "title": { + "title": "Title", + "type": "string" + }, + "uploaded_by": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Uploaded By" + }, + "valid_from": { + "anyOf": [ + { + "format": "date-time", + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Valid From" + }, + "valid_until": { + "anyOf": [ + { + "format": "date-time", + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Valid Until" + } + }, + "required": [ + "control_id", + "evidence_type", + "title", + "id", + "status", + "collected_at", + "created_at" + ], + "title": "EvidenceResponse", + "type": "object" + }, + "ExecutiveDashboardResponse": { + "description": "Executive Dashboard Response\n\nProvides a high-level overview for managers and executives:\n- Traffic light status (green/yellow/red)\n- Overall compliance score\n- 12-month trend data\n- Top 5 risks\n- Upcoming deadlines\n- Team workload distribution", + "properties": { + "last_updated": { + "title": "Last Updated", + "type": "string" + }, + "open_risks": { + "title": "Open Risks", + "type": "integer" + }, + "overall_score": { + "title": "Overall Score", + "type": "number" + }, + "previous_score": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "title": "Previous Score" + }, + "score_change": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "title": "Score Change" + }, + "score_trend": { + "items": { + "$ref": "#/components/schemas/TrendDataPoint" + }, + "title": "Score Trend", + "type": "array" + }, + "team_workload": { + "items": { + "$ref": "#/components/schemas/TeamWorkloadItem" + }, + "title": "Team Workload", + "type": "array" + }, + "top_risks": { + "items": { + "$ref": "#/components/schemas/RiskSummary" + }, + "title": "Top Risks", + "type": "array" + }, + "total_controls": { + "title": "Total Controls", + "type": "integer" + }, + "total_regulations": { + "title": "Total Regulations", + "type": "integer" + }, + "total_requirements": { + "title": "Total Requirements", + "type": "integer" + }, + "traffic_light_status": { + "title": "Traffic Light Status", + "type": "string" + }, + "upcoming_deadlines": { + "items": { + "$ref": "#/components/schemas/DeadlineItem" + }, + "title": "Upcoming Deadlines", + "type": "array" + } + }, + "required": [ + "traffic_light_status", + "overall_score", + "score_trend", + "total_regulations", + "total_requirements", + "total_controls", + "open_risks", + "top_risks", + "upcoming_deadlines", + "team_workload", + "last_updated" + ], + "title": "ExecutiveDashboardResponse", + "type": "object" + }, + "ExerciseCreate": { + "properties": { + "exercise_date": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Exercise Date" + }, + "exercise_type": { + "default": "tabletop", + "title": "Exercise Type", + "type": "string" + }, + "notes": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Notes" + }, + "outcome": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Outcome" + }, + "participants": { + "default": [], + "items": {}, + "title": "Participants", + "type": "array" + }, + "scenario_id": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Scenario Id" + }, + "title": { + "title": "Title", + "type": "string" + } + }, + "required": [ + "title" + ], + "title": "ExerciseCreate", + "type": "object" + }, + "ExportListResponse": { + "properties": { + "exports": { + "items": { + "$ref": "#/components/schemas/ExportResponse" + }, + "title": "Exports", + "type": "array" + }, + "total": { + "title": "Total", + "type": "integer" + } + }, + "required": [ + "exports", + "total" + ], + "title": "ExportListResponse", + "type": "object" + }, + "ExportRequest": { + "properties": { + "date_range_end": { + "anyOf": [ + { + "format": "date", + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Date Range End" + }, + "date_range_start": { + "anyOf": [ + { + "format": "date", + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Date Range Start" + }, + "export_type": { + "default": "full", + "title": "Export Type", + "type": "string" + }, + "included_domains": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Included Domains" + }, + "included_regulations": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Included Regulations" + } + }, + "title": "ExportRequest", + "type": "object" + }, + "ExportResponse": { + "properties": { + "completed_at": { + "anyOf": [ + { + "format": "date-time", + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Completed At" + }, + "compliance_score": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "title": "Compliance Score" + }, + "error_message": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Error Message" + }, + "export_name": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Export Name" + }, + "export_type": { + "title": "Export Type", + "type": "string" + }, + "file_hash": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "File Hash" + }, + "file_path": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "File Path" + }, + "file_size_bytes": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "File Size Bytes" + }, + "id": { + "title": "Id", + "type": "string" + }, + "requested_at": { + "format": "date-time", + "title": "Requested At", + "type": "string" + }, + "requested_by": { + "title": "Requested By", + "type": "string" + }, + "status": { + "title": "Status", + "type": "string" + }, + "total_controls": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "Total Controls" + }, + "total_evidence": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "Total Evidence" + } + }, + "required": [ + "id", + "export_type", + "status", + "requested_by", + "requested_at" + ], + "title": "ExportResponse", + "type": "object" + }, + "ExtendDeadline": { + "properties": { + "days": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "default": 60, + "title": "Days" + }, + "reason": { + "title": "Reason", + "type": "string" + } + }, + "required": [ + "reason" + ], + "title": "ExtendDeadline", + "type": "object" + }, + "ExtractedRequirement": { + "properties": { + "action": { + "title": "Action", + "type": "string" + }, + "article": { + "title": "Article", + "type": "string" + }, + "regulation_code": { + "title": "Regulation Code", + "type": "string" + }, + "requirement_text": { + "title": "Requirement Text", + "type": "string" + }, + "score": { + "title": "Score", + "type": "number" + }, + "source_url": { + "title": "Source Url", + "type": "string" + }, + "title": { + "title": "Title", + "type": "string" + } + }, + "required": [ + "regulation_code", + "article", + "title", + "requirement_text", + "source_url", + "score", + "action" + ], + "title": "ExtractedRequirement", + "type": "object" + }, + "ExtractionRequest": { + "properties": { + "collections": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Collections" + }, + "dry_run": { + "default": false, + "title": "Dry Run", + "type": "boolean" + }, + "max_per_query": { + "default": 20, + "title": "Max Per Query", + "type": "integer" + }, + "regulation_codes": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Regulation Codes" + }, + "search_queries": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Search Queries" + } + }, + "title": "ExtractionRequest", + "type": "object" + }, + "ExtractionResponse": { + "properties": { + "collections_searched": { + "items": { + "type": "string" + }, + "title": "Collections Searched", + "type": "array" + }, + "created": { + "title": "Created", + "type": "integer" + }, + "dry_run": { + "title": "Dry Run", + "type": "boolean" + }, + "failed": { + "title": "Failed", + "type": "integer" + }, + "message": { + "title": "Message", + "type": "string" + }, + "queries_used": { + "items": { + "type": "string" + }, + "title": "Queries Used", + "type": "array" + }, + "requirements": { + "items": { + "$ref": "#/components/schemas/ExtractedRequirement" + }, + "title": "Requirements", + "type": "array" + }, + "skipped_duplicates": { + "title": "Skipped Duplicates", + "type": "integer" + }, + "skipped_no_article": { + "title": "Skipped No Article", + "type": "integer" + } + }, + "required": [ + "created", + "skipped_duplicates", + "skipped_no_article", + "failed", + "collections_searched", + "queries_used", + "requirements", + "dry_run", + "message" + ], + "title": "ExtractionResponse", + "type": "object" + }, + "GDPRProcessUpdate": { + "properties": { + "description": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Description" + }, + "is_active": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "title": "Is Active" + }, + "legal_basis": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Legal Basis" + }, + "retention_days": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "Retention Days" + }, + "title": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Title" + } + }, + "title": "GDPRProcessUpdate", + "type": "object" + }, + "GenerateRequest": { + "properties": { + "batch_size": { + "default": 5, + "title": "Batch Size", + "type": "integer" + }, + "collections": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Collections" + }, + "domain": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Domain" + }, + "dry_run": { + "default": false, + "title": "Dry Run", + "type": "boolean" + }, + "max_controls": { + "default": 50, + "title": "Max Controls", + "type": "integer" + }, + "skip_web_search": { + "default": false, + "title": "Skip Web Search", + "type": "boolean" + } + }, + "title": "GenerateRequest", + "type": "object" + }, + "GenerateResponse": { + "properties": { + "controls": { + "default": [], + "items": {}, + "title": "Controls", + "type": "array" + }, + "controls_duplicates_found": { + "default": 0, + "title": "Controls Duplicates Found", + "type": "integer" + }, + "controls_generated": { + "default": 0, + "title": "Controls Generated", + "type": "integer" + }, + "controls_needs_review": { + "default": 0, + "title": "Controls Needs Review", + "type": "integer" + }, + "controls_too_close": { + "default": 0, + "title": "Controls Too Close", + "type": "integer" + }, + "controls_verified": { + "default": 0, + "title": "Controls Verified", + "type": "integer" + }, + "errors": { + "default": [], + "items": {}, + "title": "Errors", + "type": "array" + }, + "job_id": { + "title": "Job Id", + "type": "string" + }, + "message": { + "title": "Message", + "type": "string" + }, + "status": { + "title": "Status", + "type": "string" + }, + "total_chunks_scanned": { + "default": 0, + "title": "Total Chunks Scanned", + "type": "integer" + } + }, + "required": [ + "job_id", + "status", + "message" + ], + "title": "GenerateResponse", + "type": "object" + }, + "HTTPValidationError": { + "properties": { + "detail": { + "items": { + "$ref": "#/components/schemas/ValidationError" + }, + "title": "Detail", + "type": "array" + } + }, + "title": "HTTPValidationError", + "type": "object" + }, + "ISMSContextCreate": { + "description": "Schema for creating ISMS Context.", + "properties": { + "contractual_requirements": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Contractual Requirements" + }, + "external_issues": { + "anyOf": [ + { + "items": { + "$ref": "#/components/schemas/ContextIssue" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "External Issues" + }, + "interested_parties": { + "anyOf": [ + { + "items": { + "$ref": "#/components/schemas/InterestedParty" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Interested Parties" + }, + "internal_issues": { + "anyOf": [ + { + "items": { + "$ref": "#/components/schemas/ContextIssue" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Internal Issues" + }, + "regulatory_requirements": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Regulatory Requirements" + }, + "swot_opportunities": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Swot Opportunities" + }, + "swot_strengths": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Swot Strengths" + }, + "swot_threats": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Swot Threats" + }, + "swot_weaknesses": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Swot Weaknesses" + } + }, + "title": "ISMSContextCreate", + "type": "object" + }, + "ISMSContextResponse": { + "description": "Response schema for ISMS Context.", + "properties": { + "approved_at": { + "anyOf": [ + { + "format": "date-time", + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Approved At" + }, + "approved_by": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Approved By" + }, + "contractual_requirements": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Contractual Requirements" + }, + "created_at": { + "format": "date-time", + "title": "Created At", + "type": "string" + }, + "external_issues": { + "anyOf": [ + { + "items": { + "$ref": "#/components/schemas/ContextIssue" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "External Issues" + }, + "id": { + "title": "Id", + "type": "string" + }, + "interested_parties": { + "anyOf": [ + { + "items": { + "$ref": "#/components/schemas/InterestedParty" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Interested Parties" + }, + "internal_issues": { + "anyOf": [ + { + "items": { + "$ref": "#/components/schemas/ContextIssue" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Internal Issues" + }, + "last_reviewed_at": { + "anyOf": [ + { + "format": "date-time", + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Last Reviewed At" + }, + "next_review_date": { + "anyOf": [ + { + "format": "date", + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Next Review Date" + }, + "regulatory_requirements": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Regulatory Requirements" + }, + "status": { + "title": "Status", + "type": "string" + }, + "swot_opportunities": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Swot Opportunities" + }, + "swot_strengths": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Swot Strengths" + }, + "swot_threats": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Swot Threats" + }, + "swot_weaknesses": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Swot Weaknesses" + }, + "updated_at": { + "format": "date-time", + "title": "Updated At", + "type": "string" + }, + "version": { + "title": "Version", + "type": "string" + } + }, + "required": [ + "id", + "version", + "status", + "created_at", + "updated_at" + ], + "title": "ISMSContextResponse", + "type": "object" + }, + "ISMSPolicyApproveRequest": { + "description": "Request to approve ISMS Policy.", + "properties": { + "approved_by": { + "title": "Approved By", + "type": "string" + }, + "effective_date": { + "format": "date", + "title": "Effective Date", + "type": "string" + }, + "reviewed_by": { + "title": "Reviewed By", + "type": "string" + } + }, + "required": [ + "reviewed_by", + "approved_by", + "effective_date" + ], + "title": "ISMSPolicyApproveRequest", + "type": "object" + }, + "ISMSPolicyCreate": { + "description": "Schema for creating ISMS Policy.", + "properties": { + "applies_to": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Applies To" + }, + "authored_by": { + "title": "Authored By", + "type": "string" + }, + "description": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Description" + }, + "policy_id": { + "title": "Policy Id", + "type": "string" + }, + "policy_text": { + "title": "Policy Text", + "type": "string" + }, + "policy_type": { + "title": "Policy Type", + "type": "string" + }, + "related_controls": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Related Controls" + }, + "review_frequency_months": { + "default": 12, + "title": "Review Frequency Months", + "type": "integer" + }, + "title": { + "title": "Title", + "type": "string" + } + }, + "required": [ + "policy_id", + "title", + "policy_type", + "policy_text", + "authored_by" + ], + "title": "ISMSPolicyCreate", + "type": "object" + }, + "ISMSPolicyListResponse": { + "description": "List response for ISMS Policies.", + "properties": { + "policies": { + "items": { + "$ref": "#/components/schemas/ISMSPolicyResponse" + }, + "title": "Policies", + "type": "array" + }, + "total": { + "title": "Total", + "type": "integer" + } + }, + "required": [ + "policies", + "total" + ], + "title": "ISMSPolicyListResponse", + "type": "object" + }, + "ISMSPolicyResponse": { + "description": "Response schema for ISMS Policy.", + "properties": { + "applies_to": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Applies To" + }, + "approved_at": { + "anyOf": [ + { + "format": "date-time", + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Approved At" + }, + "approved_by": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Approved By" + }, + "authored_by": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Authored By" + }, + "created_at": { + "format": "date-time", + "title": "Created At", + "type": "string" + }, + "description": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Description" + }, + "document_path": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Document Path" + }, + "effective_date": { + "anyOf": [ + { + "format": "date", + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Effective Date" + }, + "id": { + "title": "Id", + "type": "string" + }, + "next_review_date": { + "anyOf": [ + { + "format": "date", + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Next Review Date" + }, + "policy_id": { + "title": "Policy Id", + "type": "string" + }, + "policy_text": { + "title": "Policy Text", + "type": "string" + }, + "policy_type": { + "title": "Policy Type", + "type": "string" + }, + "related_controls": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Related Controls" + }, + "review_frequency_months": { + "default": 12, + "title": "Review Frequency Months", + "type": "integer" + }, + "reviewed_by": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Reviewed By" + }, + "status": { + "title": "Status", + "type": "string" + }, + "title": { + "title": "Title", + "type": "string" + }, + "updated_at": { + "format": "date-time", + "title": "Updated At", + "type": "string" + }, + "version": { + "title": "Version", + "type": "string" + } + }, + "required": [ + "policy_id", + "title", + "policy_type", + "policy_text", + "id", + "version", + "status", + "created_at", + "updated_at" + ], + "title": "ISMSPolicyResponse", + "type": "object" + }, + "ISMSPolicyUpdate": { + "description": "Schema for updating ISMS Policy.", + "properties": { + "applies_to": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Applies To" + }, + "description": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Description" + }, + "policy_text": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Policy Text" + }, + "related_controls": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Related Controls" + }, + "review_frequency_months": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "Review Frequency Months" + }, + "title": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Title" + } + }, + "title": "ISMSPolicyUpdate", + "type": "object" + }, + "ISMSReadinessCheckRequest": { + "description": "Request to run ISMS Readiness Check.", + "properties": { + "triggered_by": { + "default": "manual", + "title": "Triggered By", + "type": "string" + } + }, + "title": "ISMSReadinessCheckRequest", + "type": "object" + }, + "ISMSReadinessCheckResponse": { + "description": "Response for ISMS Readiness Check.", + "properties": { + "certification_possible": { + "title": "Certification Possible", + "type": "boolean" + }, + "chapter_10_status": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Chapter 10 Status" + }, + "chapter_4_status": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Chapter 4 Status" + }, + "chapter_5_status": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Chapter 5 Status" + }, + "chapter_6_status": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Chapter 6 Status" + }, + "chapter_7_status": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Chapter 7 Status" + }, + "chapter_8_status": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Chapter 8 Status" + }, + "chapter_9_status": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Chapter 9 Status" + }, + "check_date": { + "format": "date-time", + "title": "Check Date", + "type": "string" + }, + "documentation_score": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "title": "Documentation Score" + }, + "evidence_score": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "title": "Evidence Score" + }, + "id": { + "title": "Id", + "type": "string" + }, + "implementation_score": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "title": "Implementation Score" + }, + "improvement_opportunities": { + "items": { + "$ref": "#/components/schemas/PotentialFinding" + }, + "title": "Improvement Opportunities", + "type": "array" + }, + "overall_status": { + "title": "Overall Status", + "type": "string" + }, + "potential_majors": { + "items": { + "$ref": "#/components/schemas/PotentialFinding" + }, + "title": "Potential Majors", + "type": "array" + }, + "potential_minors": { + "items": { + "$ref": "#/components/schemas/PotentialFinding" + }, + "title": "Potential Minors", + "type": "array" + }, + "priority_actions": { + "items": { + "type": "string" + }, + "title": "Priority Actions", + "type": "array" + }, + "readiness_score": { + "title": "Readiness Score", + "type": "number" + }, + "triggered_by": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Triggered By" + } + }, + "required": [ + "id", + "check_date", + "overall_status", + "certification_possible", + "potential_majors", + "potential_minors", + "improvement_opportunities", + "readiness_score", + "priority_actions" + ], + "title": "ISMSReadinessCheckResponse", + "type": "object" + }, + "ISMSScopeApproveRequest": { + "description": "Request to approve ISMS Scope.", + "properties": { + "approved_by": { + "title": "Approved By", + "type": "string" + }, + "effective_date": { + "format": "date", + "title": "Effective Date", + "type": "string" + }, + "review_date": { + "format": "date", + "title": "Review Date", + "type": "string" + } + }, + "required": [ + "approved_by", + "effective_date", + "review_date" + ], + "title": "ISMSScopeApproveRequest", + "type": "object" + }, + "ISMSScopeCreate": { + "description": "Schema for creating ISMS Scope.", + "properties": { + "excluded_items": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Excluded Items" + }, + "exclusion_justification": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Exclusion Justification" + }, + "included_locations": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Included Locations" + }, + "included_processes": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Included Processes" + }, + "included_services": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Included Services" + }, + "organizational_boundary": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Organizational Boundary" + }, + "physical_boundary": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Physical Boundary" + }, + "scope_statement": { + "title": "Scope Statement", + "type": "string" + }, + "technical_boundary": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Technical Boundary" + } + }, + "required": [ + "scope_statement" + ], + "title": "ISMSScopeCreate", + "type": "object" + }, + "ISMSScopeResponse": { + "description": "Response schema for ISMS Scope.", + "properties": { + "approved_at": { + "anyOf": [ + { + "format": "date-time", + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Approved At" + }, + "approved_by": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Approved By" + }, + "created_at": { + "format": "date-time", + "title": "Created At", + "type": "string" + }, + "effective_date": { + "anyOf": [ + { + "format": "date", + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Effective Date" + }, + "excluded_items": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Excluded Items" + }, + "exclusion_justification": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Exclusion Justification" + }, + "id": { + "title": "Id", + "type": "string" + }, + "included_locations": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Included Locations" + }, + "included_processes": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Included Processes" + }, + "included_services": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Included Services" + }, + "organizational_boundary": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Organizational Boundary" + }, + "physical_boundary": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Physical Boundary" + }, + "review_date": { + "anyOf": [ + { + "format": "date", + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Review Date" + }, + "scope_statement": { + "title": "Scope Statement", + "type": "string" + }, + "status": { + "title": "Status", + "type": "string" + }, + "technical_boundary": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Technical Boundary" + }, + "updated_at": { + "format": "date-time", + "title": "Updated At", + "type": "string" + }, + "version": { + "title": "Version", + "type": "string" + } + }, + "required": [ + "scope_statement", + "id", + "version", + "status", + "created_at", + "updated_at" + ], + "title": "ISMSScopeResponse", + "type": "object" + }, + "ISMSScopeUpdate": { + "description": "Schema for updating ISMS Scope.", + "properties": { + "excluded_items": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Excluded Items" + }, + "exclusion_justification": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Exclusion Justification" + }, + "included_locations": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Included Locations" + }, + "included_processes": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Included Processes" + }, + "included_services": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Included Services" + }, + "organizational_boundary": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Organizational Boundary" + }, + "physical_boundary": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Physical Boundary" + }, + "scope_statement": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Scope Statement" + }, + "technical_boundary": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Technical Boundary" + } + }, + "title": "ISMSScopeUpdate", + "type": "object" + }, + "ISO27001ChapterStatus": { + "description": "Status of a single ISO 27001 chapter.", + "properties": { + "chapter": { + "title": "Chapter", + "type": "string" + }, + "completion_percentage": { + "title": "Completion Percentage", + "type": "number" + }, + "key_documents": { + "items": { + "type": "string" + }, + "title": "Key Documents", + "type": "array" + }, + "last_reviewed": { + "anyOf": [ + { + "format": "date-time", + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Last Reviewed" + }, + "open_findings": { + "title": "Open Findings", + "type": "integer" + }, + "status": { + "title": "Status", + "type": "string" + }, + "title": { + "title": "Title", + "type": "string" + } + }, + "required": [ + "chapter", + "title", + "status", + "completion_percentage", + "open_findings", + "key_documents" + ], + "title": "ISO27001ChapterStatus", + "type": "object" + }, + "ISO27001OverviewResponse": { + "description": "Complete ISO 27001 status overview.", + "properties": { + "certification_readiness": { + "title": "Certification Readiness", + "type": "number" + }, + "chapters": { + "items": { + "$ref": "#/components/schemas/ISO27001ChapterStatus" + }, + "title": "Chapters", + "type": "array" + }, + "last_internal_audit": { + "anyOf": [ + { + "format": "date-time", + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Last Internal Audit" + }, + "last_management_review": { + "anyOf": [ + { + "format": "date-time", + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Last Management Review" + }, + "objectives_achieved": { + "title": "Objectives Achieved", + "type": "integer" + }, + "objectives_count": { + "title": "Objectives Count", + "type": "integer" + }, + "open_major_findings": { + "title": "Open Major Findings", + "type": "integer" + }, + "open_minor_findings": { + "title": "Open Minor Findings", + "type": "integer" + }, + "overall_status": { + "title": "Overall Status", + "type": "string" + }, + "policies_approved": { + "title": "Policies Approved", + "type": "integer" + }, + "policies_count": { + "title": "Policies Count", + "type": "integer" + }, + "scope_approved": { + "title": "Scope Approved", + "type": "boolean" + }, + "soa_approved": { + "title": "Soa Approved", + "type": "boolean" + } + }, + "required": [ + "overall_status", + "certification_readiness", + "chapters", + "scope_approved", + "soa_approved", + "open_major_findings", + "open_minor_findings", + "policies_count", + "policies_approved", + "objectives_count", + "objectives_achieved" + ], + "title": "ISO27001OverviewResponse", + "type": "object" + }, + "InterestedParty": { + "description": "Single interested party.", + "properties": { + "party": { + "title": "Party", + "type": "string" + }, + "relevance": { + "title": "Relevance", + "type": "string" + }, + "requirements": { + "items": { + "type": "string" + }, + "title": "Requirements", + "type": "array" + } + }, + "required": [ + "party", + "requirements", + "relevance" + ], + "title": "InterestedParty", + "type": "object" + }, + "InternalAuditCompleteRequest": { + "description": "Request to complete Internal Audit.", + "properties": { + "audit_conclusion": { + "title": "Audit Conclusion", + "type": "string" + }, + "follow_up_audit_required": { + "title": "Follow Up Audit Required", + "type": "boolean" + }, + "overall_assessment": { + "title": "Overall Assessment", + "type": "string" + } + }, + "required": [ + "audit_conclusion", + "overall_assessment", + "follow_up_audit_required" + ], + "title": "InternalAuditCompleteRequest", + "type": "object" + }, + "InternalAuditCreate": { + "description": "Schema for creating Internal Audit.", + "properties": { + "annex_a_controls_covered": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Annex A Controls Covered" + }, + "audit_team": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Audit Team" + }, + "audit_type": { + "title": "Audit Type", + "type": "string" + }, + "criteria": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Criteria" + }, + "departments_covered": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Departments Covered" + }, + "iso_chapters_covered": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Iso Chapters Covered" + }, + "lead_auditor": { + "title": "Lead Auditor", + "type": "string" + }, + "planned_date": { + "format": "date", + "title": "Planned Date", + "type": "string" + }, + "processes_covered": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Processes Covered" + }, + "scope_description": { + "title": "Scope Description", + "type": "string" + }, + "title": { + "title": "Title", + "type": "string" + } + }, + "required": [ + "title", + "audit_type", + "scope_description", + "planned_date", + "lead_auditor" + ], + "title": "InternalAuditCreate", + "type": "object" + }, + "InternalAuditListResponse": { + "description": "List response for Internal Audits.", + "properties": { + "audits": { + "items": { + "$ref": "#/components/schemas/InternalAuditResponse" + }, + "title": "Audits", + "type": "array" + }, + "total": { + "title": "Total", + "type": "integer" + } + }, + "required": [ + "audits", + "total" + ], + "title": "InternalAuditListResponse", + "type": "object" + }, + "InternalAuditResponse": { + "description": "Response schema for Internal Audit.", + "properties": { + "actual_end_date": { + "anyOf": [ + { + "format": "date", + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Actual End Date" + }, + "actual_start_date": { + "anyOf": [ + { + "format": "date", + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Actual Start Date" + }, + "annex_a_controls_covered": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Annex A Controls Covered" + }, + "audit_conclusion": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Audit Conclusion" + }, + "audit_id": { + "title": "Audit Id", + "type": "string" + }, + "audit_team": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Audit Team" + }, + "audit_type": { + "title": "Audit Type", + "type": "string" + }, + "auditee_representatives": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Auditee Representatives" + }, + "created_at": { + "format": "date-time", + "title": "Created At", + "type": "string" + }, + "criteria": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Criteria" + }, + "departments_covered": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Departments Covered" + }, + "follow_up_audit_required": { + "title": "Follow Up Audit Required", + "type": "boolean" + }, + "id": { + "title": "Id", + "type": "string" + }, + "iso_chapters_covered": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Iso Chapters Covered" + }, + "lead_auditor": { + "title": "Lead Auditor", + "type": "string" + }, + "major_findings": { + "title": "Major Findings", + "type": "integer" + }, + "minor_findings": { + "title": "Minor Findings", + "type": "integer" + }, + "ofi_count": { + "title": "Ofi Count", + "type": "integer" + }, + "overall_assessment": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Overall Assessment" + }, + "planned_date": { + "format": "date", + "title": "Planned Date", + "type": "string" + }, + "positive_observations": { + "title": "Positive Observations", + "type": "integer" + }, + "processes_covered": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Processes Covered" + }, + "report_approved_at": { + "anyOf": [ + { + "format": "date-time", + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Report Approved At" + }, + "report_approved_by": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Report Approved By" + }, + "report_date": { + "anyOf": [ + { + "format": "date", + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Report Date" + }, + "report_document_path": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Report Document Path" + }, + "scope_description": { + "title": "Scope Description", + "type": "string" + }, + "status": { + "title": "Status", + "type": "string" + }, + "title": { + "title": "Title", + "type": "string" + }, + "total_findings": { + "title": "Total Findings", + "type": "integer" + }, + "updated_at": { + "format": "date-time", + "title": "Updated At", + "type": "string" + } + }, + "required": [ + "title", + "audit_type", + "scope_description", + "planned_date", + "lead_auditor", + "id", + "audit_id", + "status", + "total_findings", + "major_findings", + "minor_findings", + "ofi_count", + "positive_observations", + "follow_up_audit_required", + "created_at", + "updated_at" + ], + "title": "InternalAuditResponse", + "type": "object" + }, + "InternalAuditUpdate": { + "description": "Schema for updating Internal Audit.", + "properties": { + "actual_end_date": { + "anyOf": [ + { + "format": "date", + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Actual End Date" + }, + "actual_start_date": { + "anyOf": [ + { + "format": "date", + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Actual Start Date" + }, + "audit_conclusion": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Audit Conclusion" + }, + "auditee_representatives": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Auditee Representatives" + }, + "overall_assessment": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Overall Assessment" + }, + "scope_description": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Scope Description" + }, + "status": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Status" + }, + "title": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Title" + } + }, + "title": "InternalAuditUpdate", + "type": "object" + }, + "LegalTemplateCreate": { + "properties": { + "attribution_required": { + "default": false, + "title": "Attribution Required", + "type": "boolean" + }, + "attribution_text": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Attribution Text" + }, + "content": { + "title": "Content", + "type": "string" + }, + "description": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Description" + }, + "document_type": { + "title": "Document Type", + "type": "string" + }, + "inspiration_sources": { + "anyOf": [ + { + "items": {}, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Inspiration Sources" + }, + "is_complete_document": { + "default": true, + "title": "Is Complete Document", + "type": "boolean" + }, + "jurisdiction": { + "default": "DE", + "title": "Jurisdiction", + "type": "string" + }, + "language": { + "default": "de", + "title": "Language", + "type": "string" + }, + "license_id": { + "default": "mit", + "title": "License Id", + "type": "string" + }, + "license_name": { + "default": "MIT License", + "title": "License Name", + "type": "string" + }, + "placeholders": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Placeholders" + }, + "source_file_path": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Source File Path" + }, + "source_name": { + "default": "BreakPilot Compliance", + "title": "Source Name", + "type": "string" + }, + "source_repo": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Source Repo" + }, + "source_url": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Source Url" + }, + "status": { + "default": "published", + "title": "Status", + "type": "string" + }, + "title": { + "title": "Title", + "type": "string" + }, + "version": { + "default": "1.0.0", + "title": "Version", + "type": "string" + } + }, + "required": [ + "document_type", + "title", + "content" + ], + "title": "LegalTemplateCreate", + "type": "object" + }, + "LegalTemplateUpdate": { + "properties": { + "attribution_required": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "title": "Attribution Required" + }, + "attribution_text": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Attribution Text" + }, + "content": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Content" + }, + "description": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Description" + }, + "document_type": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Document Type" + }, + "inspiration_sources": { + "anyOf": [ + { + "items": {}, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Inspiration Sources" + }, + "is_complete_document": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "title": "Is Complete Document" + }, + "jurisdiction": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Jurisdiction" + }, + "language": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Language" + }, + "license_id": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "License Id" + }, + "license_name": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "License Name" + }, + "placeholders": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Placeholders" + }, + "source_file_path": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Source File Path" + }, + "source_name": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Source Name" + }, + "source_repo": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Source Repo" + }, + "source_url": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Source Url" + }, + "status": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Status" + }, + "title": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Title" + }, + "version": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Version" + } + }, + "title": "LegalTemplateUpdate", + "type": "object" + }, + "LoeschfristCreate": { + "properties": { + "affected_groups": { + "anyOf": [ + { + "items": {}, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Affected Groups" + }, + "data_categories": { + "anyOf": [ + { + "items": {}, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Data Categories" + }, + "data_object_name": { + "title": "Data Object Name", + "type": "string" + }, + "deletion_method": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Deletion Method" + }, + "deletion_method_detail": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Deletion Method Detail" + }, + "deletion_trigger": { + "default": "PURPOSE_END", + "title": "Deletion Trigger", + "type": "string" + }, + "description": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Description" + }, + "has_active_legal_hold": { + "default": false, + "title": "Has Active Legal Hold", + "type": "boolean" + }, + "last_review_date": { + "anyOf": [ + { + "format": "date-time", + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Last Review Date" + }, + "legal_holds": { + "anyOf": [ + { + "items": {}, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Legal Holds" + }, + "linked_vvt_activity_ids": { + "anyOf": [ + { + "items": {}, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Linked Vvt Activity Ids" + }, + "next_review_date": { + "anyOf": [ + { + "format": "date-time", + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Next Review Date" + }, + "policy_id": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Policy Id" + }, + "primary_purpose": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Primary Purpose" + }, + "release_process": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Release Process" + }, + "responsible_person": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Responsible Person" + }, + "responsible_role": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Responsible Role" + }, + "retention_description": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Retention Description" + }, + "retention_driver": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Retention Driver" + }, + "retention_driver_detail": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Retention Driver Detail" + }, + "retention_duration": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "Retention Duration" + }, + "retention_unit": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Retention Unit" + }, + "review_interval": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Review Interval" + }, + "start_event": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Start Event" + }, + "status": { + "default": "DRAFT", + "title": "Status", + "type": "string" + }, + "storage_locations": { + "anyOf": [ + { + "items": {}, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Storage Locations" + }, + "tags": { + "anyOf": [ + { + "items": {}, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Tags" + } + }, + "required": [ + "data_object_name" + ], + "title": "LoeschfristCreate", + "type": "object" + }, + "LoeschfristUpdate": { + "properties": { + "affected_groups": { + "anyOf": [ + { + "items": {}, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Affected Groups" + }, + "data_categories": { + "anyOf": [ + { + "items": {}, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Data Categories" + }, + "data_object_name": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Data Object Name" + }, + "deletion_method": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Deletion Method" + }, + "deletion_method_detail": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Deletion Method Detail" + }, + "deletion_trigger": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Deletion Trigger" + }, + "description": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Description" + }, + "has_active_legal_hold": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "title": "Has Active Legal Hold" + }, + "last_review_date": { + "anyOf": [ + { + "format": "date-time", + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Last Review Date" + }, + "legal_holds": { + "anyOf": [ + { + "items": {}, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Legal Holds" + }, + "linked_vvt_activity_ids": { + "anyOf": [ + { + "items": {}, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Linked Vvt Activity Ids" + }, + "next_review_date": { + "anyOf": [ + { + "format": "date-time", + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Next Review Date" + }, + "policy_id": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Policy Id" + }, + "primary_purpose": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Primary Purpose" + }, + "release_process": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Release Process" + }, + "responsible_person": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Responsible Person" + }, + "responsible_role": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Responsible Role" + }, + "retention_description": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Retention Description" + }, + "retention_driver": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Retention Driver" + }, + "retention_driver_detail": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Retention Driver Detail" + }, + "retention_duration": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "Retention Duration" + }, + "retention_unit": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Retention Unit" + }, + "review_interval": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Review Interval" + }, + "start_event": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Start Event" + }, + "status": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Status" + }, + "storage_locations": { + "anyOf": [ + { + "items": {}, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Storage Locations" + }, + "tags": { + "anyOf": [ + { + "items": {}, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Tags" + } + }, + "title": "LoeschfristUpdate", + "type": "object" + }, + "ManagementReviewApproveRequest": { + "description": "Request to approve Management Review.", + "properties": { + "approved_by": { + "title": "Approved By", + "type": "string" + }, + "minutes_document_path": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Minutes Document Path" + }, + "next_review_date": { + "format": "date", + "title": "Next Review Date", + "type": "string" + } + }, + "required": [ + "approved_by", + "next_review_date" + ], + "title": "ManagementReviewApproveRequest", + "type": "object" + }, + "ManagementReviewCreate": { + "description": "Schema for creating Management Review.", + "properties": { + "attendees": { + "anyOf": [ + { + "items": { + "$ref": "#/components/schemas/ReviewAttendee" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Attendees" + }, + "chairperson": { + "title": "Chairperson", + "type": "string" + }, + "review_date": { + "format": "date", + "title": "Review Date", + "type": "string" + }, + "review_period_end": { + "anyOf": [ + { + "format": "date", + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Review Period End" + }, + "review_period_start": { + "anyOf": [ + { + "format": "date", + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Review Period Start" + }, + "title": { + "title": "Title", + "type": "string" + } + }, + "required": [ + "title", + "review_date", + "chairperson" + ], + "title": "ManagementReviewCreate", + "type": "object" + }, + "ManagementReviewListResponse": { + "description": "List response for Management Reviews.", + "properties": { + "reviews": { + "items": { + "$ref": "#/components/schemas/ManagementReviewResponse" + }, + "title": "Reviews", + "type": "array" + }, + "total": { + "title": "Total", + "type": "integer" + } + }, + "required": [ + "reviews", + "total" + ], + "title": "ManagementReviewListResponse", + "type": "object" + }, + "ManagementReviewResponse": { + "description": "Response schema for Management Review.", + "properties": { + "action_items": { + "anyOf": [ + { + "items": { + "$ref": "#/components/schemas/ReviewActionItem" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Action Items" + }, + "approved_at": { + "anyOf": [ + { + "format": "date-time", + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Approved At" + }, + "approved_by": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Approved By" + }, + "attendees": { + "anyOf": [ + { + "items": { + "$ref": "#/components/schemas/ReviewAttendee" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Attendees" + }, + "chairperson": { + "title": "Chairperson", + "type": "string" + }, + "created_at": { + "format": "date-time", + "title": "Created At", + "type": "string" + }, + "id": { + "title": "Id", + "type": "string" + }, + "input_improvement_opportunities": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Input Improvement Opportunities" + }, + "input_interested_party_feedback": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Input Interested Party Feedback" + }, + "input_isms_changes": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Input Isms Changes" + }, + "input_objective_achievement": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Input Objective Achievement" + }, + "input_policy_effectiveness": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Input Policy Effectiveness" + }, + "input_previous_actions": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Input Previous Actions" + }, + "input_resource_adequacy": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Input Resource Adequacy" + }, + "input_risk_assessment_results": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Input Risk Assessment Results" + }, + "input_security_performance": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Input Security Performance" + }, + "isms_effectiveness_rating": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Isms Effectiveness Rating" + }, + "key_decisions": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Key Decisions" + }, + "minutes_document_path": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Minutes Document Path" + }, + "next_review_date": { + "anyOf": [ + { + "format": "date", + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Next Review Date" + }, + "output_improvement_decisions": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Output Improvement Decisions" + }, + "output_isms_changes": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Output Isms Changes" + }, + "output_resource_needs": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Output Resource Needs" + }, + "review_date": { + "format": "date", + "title": "Review Date", + "type": "string" + }, + "review_id": { + "title": "Review Id", + "type": "string" + }, + "review_period_end": { + "anyOf": [ + { + "format": "date", + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Review Period End" + }, + "review_period_start": { + "anyOf": [ + { + "format": "date", + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Review Period Start" + }, + "status": { + "title": "Status", + "type": "string" + }, + "title": { + "title": "Title", + "type": "string" + }, + "updated_at": { + "format": "date-time", + "title": "Updated At", + "type": "string" + } + }, + "required": [ + "title", + "review_date", + "chairperson", + "id", + "review_id", + "status", + "created_at", + "updated_at" + ], + "title": "ManagementReviewResponse", + "type": "object" + }, + "ManagementReviewUpdate": { + "description": "Schema for updating Management Review.", + "properties": { + "action_items": { + "anyOf": [ + { + "items": { + "$ref": "#/components/schemas/ReviewActionItem" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Action Items" + }, + "input_improvement_opportunities": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Input Improvement Opportunities" + }, + "input_interested_party_feedback": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Input Interested Party Feedback" + }, + "input_isms_changes": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Input Isms Changes" + }, + "input_objective_achievement": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Input Objective Achievement" + }, + "input_policy_effectiveness": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Input Policy Effectiveness" + }, + "input_previous_actions": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Input Previous Actions" + }, + "input_resource_adequacy": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Input Resource Adequacy" + }, + "input_risk_assessment_results": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Input Risk Assessment Results" + }, + "input_security_performance": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Input Security Performance" + }, + "isms_effectiveness_rating": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Isms Effectiveness Rating" + }, + "key_decisions": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Key Decisions" + }, + "output_improvement_decisions": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Output Improvement Decisions" + }, + "output_isms_changes": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Output Isms Changes" + }, + "output_resource_needs": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Output Resource Needs" + }, + "status": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Status" + } + }, + "title": "ManagementReviewUpdate", + "type": "object" + }, + "MeasureCreate": { + "properties": { + "description": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Description" + }, + "due_date": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Due Date" + }, + "measure_type": { + "default": "corrective", + "title": "Measure Type", + "type": "string" + }, + "responsible": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Responsible" + }, + "title": { + "title": "Title", + "type": "string" + } + }, + "required": [ + "title" + ], + "title": "MeasureCreate", + "type": "object" + }, + "MeasureUpdate": { + "properties": { + "description": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Description" + }, + "due_date": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Due Date" + }, + "measure_type": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Measure Type" + }, + "responsible": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Responsible" + }, + "status": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Status" + }, + "title": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Title" + } + }, + "title": "MeasureUpdate", + "type": "object" + }, + "MetricCreate": { + "properties": { + "ai_system": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Ai System" + }, + "category": { + "default": "accuracy", + "title": "Category", + "type": "string" + }, + "last_measured": { + "anyOf": [ + { + "format": "date-time", + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Last Measured" + }, + "name": { + "title": "Name", + "type": "string" + }, + "score": { + "default": 0.0, + "title": "Score", + "type": "number" + }, + "threshold": { + "default": 80.0, + "title": "Threshold", + "type": "number" + }, + "trend": { + "default": "stable", + "title": "Trend", + "type": "string" + } + }, + "required": [ + "name" + ], + "title": "MetricCreate", + "type": "object" + }, + "MetricUpdate": { + "properties": { + "ai_system": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Ai System" + }, + "category": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Category" + }, + "last_measured": { + "anyOf": [ + { + "format": "date-time", + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Last Measured" + }, + "name": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Name" + }, + "score": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "title": "Score" + }, + "threshold": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "title": "Threshold" + }, + "trend": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Trend" + } + }, + "title": "MetricUpdate", + "type": "object" + }, + "ModuleComplianceOverview": { + "description": "Overview of compliance status for all modules.", + "properties": { + "average_compliance_score": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "title": "Average Compliance Score" + }, + "modules_by_criticality": { + "additionalProperties": { + "type": "integer" + }, + "title": "Modules By Criticality", + "type": "object" + }, + "modules_by_type": { + "additionalProperties": { + "type": "integer" + }, + "title": "Modules By Type", + "type": "object" + }, + "modules_processing_pii": { + "title": "Modules Processing Pii", + "type": "integer" + }, + "modules_with_ai": { + "title": "Modules With Ai", + "type": "integer" + }, + "regulations_coverage": { + "additionalProperties": { + "type": "integer" + }, + "title": "Regulations Coverage", + "type": "object" + }, + "total_modules": { + "title": "Total Modules", + "type": "integer" + } + }, + "required": [ + "total_modules", + "modules_by_type", + "modules_by_criticality", + "modules_processing_pii", + "modules_with_ai", + "regulations_coverage" + ], + "title": "ModuleComplianceOverview", + "type": "object" + }, + "ModuleRegulationMappingCreate": { + "description": "Schema for creating a module-regulation mapping.", + "properties": { + "applicable_articles": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Applicable Articles" + }, + "module_id": { + "title": "Module Id", + "type": "string" + }, + "notes": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Notes" + }, + "regulation_id": { + "title": "Regulation Id", + "type": "string" + }, + "relevance_level": { + "default": "medium", + "title": "Relevance Level", + "type": "string" + } + }, + "required": [ + "module_id", + "regulation_id" + ], + "title": "ModuleRegulationMappingCreate", + "type": "object" + }, + "ModuleRegulationMappingResponse": { + "description": "Response schema for module-regulation mapping.", + "properties": { + "applicable_articles": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Applicable Articles" + }, + "created_at": { + "format": "date-time", + "title": "Created At", + "type": "string" + }, + "id": { + "title": "Id", + "type": "string" + }, + "module_id": { + "title": "Module Id", + "type": "string" + }, + "module_name": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Module Name" + }, + "notes": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Notes" + }, + "regulation_code": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Regulation Code" + }, + "regulation_id": { + "title": "Regulation Id", + "type": "string" + }, + "regulation_name": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Regulation Name" + }, + "relevance_level": { + "default": "medium", + "title": "Relevance Level", + "type": "string" + } + }, + "required": [ + "module_id", + "regulation_id", + "id", + "created_at" + ], + "title": "ModuleRegulationMappingResponse", + "type": "object" + }, + "ModuleSeedRequest": { + "description": "Request to seed service modules.", + "properties": { + "force": { + "default": false, + "title": "Force", + "type": "boolean" + } + }, + "title": "ModuleSeedRequest", + "type": "object" + }, + "ModuleSeedResponse": { + "description": "Response from seeding service modules.", + "properties": { + "mappings_created": { + "title": "Mappings Created", + "type": "integer" + }, + "message": { + "title": "Message", + "type": "string" + }, + "modules_created": { + "title": "Modules Created", + "type": "integer" + }, + "success": { + "title": "Success", + "type": "boolean" + } + }, + "required": [ + "success", + "message", + "modules_created", + "mappings_created" + ], + "title": "ModuleSeedResponse", + "type": "object" + }, + "ObligationCreate": { + "properties": { + "assessment_id": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Assessment Id" + }, + "deadline": { + "anyOf": [ + { + "format": "date-time", + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Deadline" + }, + "description": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Description" + }, + "linked_systems": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Linked Systems" + }, + "notes": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Notes" + }, + "priority": { + "default": "medium", + "title": "Priority", + "type": "string" + }, + "responsible": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Responsible" + }, + "rule_code": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Rule Code" + }, + "source": { + "default": "DSGVO", + "title": "Source", + "type": "string" + }, + "source_article": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Source Article" + }, + "status": { + "default": "pending", + "title": "Status", + "type": "string" + }, + "title": { + "title": "Title", + "type": "string" + } + }, + "required": [ + "title" + ], + "title": "ObligationCreate", + "type": "object" + }, + "ObligationStatusUpdate": { + "properties": { + "status": { + "title": "Status", + "type": "string" + } + }, + "required": [ + "status" + ], + "title": "ObligationStatusUpdate", + "type": "object" + }, + "ObligationUpdate": { + "properties": { + "deadline": { + "anyOf": [ + { + "format": "date-time", + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Deadline" + }, + "description": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Description" + }, + "linked_systems": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Linked Systems" + }, + "notes": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Notes" + }, + "priority": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Priority" + }, + "responsible": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Responsible" + }, + "source": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Source" + }, + "source_article": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Source Article" + }, + "status": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Status" + }, + "title": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Title" + } + }, + "title": "ObligationUpdate", + "type": "object" + }, + "OperationUpdate": { + "properties": { + "allowed": { + "title": "Allowed", + "type": "boolean" + }, + "conditions": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Conditions" + } + }, + "required": [ + "allowed" + ], + "title": "OperationUpdate", + "type": "object" + }, + "PDFExtractionRequest": { + "description": "Request for PDF extraction.", + "properties": { + "document_code": { + "description": "BSI-TR document code, e.g. BSI-TR-03161-2", + "title": "Document Code", + "type": "string" + }, + "force": { + "default": false, + "description": "Force re-extraction even if requirements exist", + "title": "Force", + "type": "boolean" + }, + "save_to_db": { + "default": true, + "description": "Whether to save extracted requirements to database", + "title": "Save To Db", + "type": "boolean" + } + }, + "required": [ + "document_code" + ], + "title": "PDFExtractionRequest", + "type": "object" + }, + "PDFExtractionResponse": { + "description": "Response from PDF extraction endpoint.", + "properties": { + "aspects": { + "anyOf": [ + { + "items": { + "$ref": "#/components/schemas/BSIAspectResponse" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Aspects" + }, + "doc_code": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Doc Code" + }, + "requirements_created": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "Requirements Created" + }, + "saved_to_db": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "Saved To Db" + }, + "source_document": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Source Document" + }, + "statistics": { + "anyOf": [ + { + "additionalProperties": true, + "type": "object" + }, + { + "type": "null" + } + ], + "title": "Statistics" + }, + "success": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "title": "Success" + }, + "total_aspects": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "Total Aspects" + }, + "total_extracted": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "Total Extracted" + } + }, + "title": "PDFExtractionResponse", + "type": "object" + }, + "PIIRuleCreate": { + "properties": { + "action": { + "default": "mask", + "title": "Action", + "type": "string" + }, + "active": { + "default": true, + "title": "Active", + "type": "boolean" + }, + "category": { + "title": "Category", + "type": "string" + }, + "description": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Description" + }, + "name": { + "title": "Name", + "type": "string" + }, + "pattern": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Pattern" + } + }, + "required": [ + "name", + "category" + ], + "title": "PIIRuleCreate", + "type": "object" + }, + "PIIRuleUpdate": { + "properties": { + "action": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Action" + }, + "active": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "title": "Active" + }, + "category": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Category" + }, + "description": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Description" + }, + "name": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Name" + }, + "pattern": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Pattern" + } + }, + "title": "PIIRuleUpdate", + "type": "object" + }, + "PaginatedControlResponse": { + "description": "Paginated response for controls - optimized for large datasets.", + "properties": { + "data": { + "items": { + "$ref": "#/components/schemas/ControlResponse" + }, + "title": "Data", + "type": "array" + }, + "pagination": { + "$ref": "#/components/schemas/PaginationMeta" + } + }, + "required": [ + "data", + "pagination" + ], + "title": "PaginatedControlResponse", + "type": "object" + }, + "PaginatedRequirementResponse": { + "description": "Paginated response for requirements - optimized for large datasets.", + "properties": { + "data": { + "items": { + "$ref": "#/components/schemas/RequirementResponse" + }, + "title": "Data", + "type": "array" + }, + "pagination": { + "$ref": "#/components/schemas/PaginationMeta" + } + }, + "required": [ + "data", + "pagination" + ], + "title": "PaginatedRequirementResponse", + "type": "object" + }, + "PaginationMeta": { + "description": "Pagination metadata for list responses.", + "properties": { + "has_next": { + "title": "Has Next", + "type": "boolean" + }, + "has_prev": { + "title": "Has Prev", + "type": "boolean" + }, + "page": { + "title": "Page", + "type": "integer" + }, + "page_size": { + "title": "Page Size", + "type": "integer" + }, + "total": { + "title": "Total", + "type": "integer" + }, + "total_pages": { + "title": "Total Pages", + "type": "integer" + } + }, + "required": [ + "page", + "page_size", + "total", + "total_pages", + "has_next", + "has_prev" + ], + "title": "PaginationMeta", + "type": "object" + }, + "PotentialFinding": { + "description": "Potential finding from readiness check.", + "properties": { + "check": { + "title": "Check", + "type": "string" + }, + "iso_reference": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Iso Reference" + }, + "recommendation": { + "title": "Recommendation", + "type": "string" + }, + "status": { + "title": "Status", + "type": "string" + } + }, + "required": [ + "check", + "status", + "recommendation" + ], + "title": "PotentialFinding", + "type": "object" + }, + "PreviewRequest": { + "properties": { + "variables": { + "anyOf": [ + { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + { + "type": "null" + } + ], + "title": "Variables" + } + }, + "title": "PreviewRequest", + "type": "object" + }, + "RegulationListResponse": { + "properties": { + "regulations": { + "items": { + "$ref": "#/components/schemas/RegulationResponse" + }, + "title": "Regulations", + "type": "array" + }, + "total": { + "title": "Total", + "type": "integer" + } + }, + "required": [ + "regulations", + "total" + ], + "title": "RegulationListResponse", + "type": "object" + }, + "RegulationResponse": { + "properties": { + "code": { + "title": "Code", + "type": "string" + }, + "created_at": { + "format": "date-time", + "title": "Created At", + "type": "string" + }, + "description": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Description" + }, + "effective_date": { + "anyOf": [ + { + "format": "date", + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Effective Date" + }, + "full_name": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Full Name" + }, + "id": { + "title": "Id", + "type": "string" + }, + "is_active": { + "default": true, + "title": "Is Active", + "type": "boolean" + }, + "local_pdf_path": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Local Pdf Path" + }, + "name": { + "title": "Name", + "type": "string" + }, + "regulation_type": { + "title": "Regulation Type", + "type": "string" + }, + "requirement_count": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "Requirement Count" + }, + "source_url": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Source Url" + }, + "updated_at": { + "format": "date-time", + "title": "Updated At", + "type": "string" + } + }, + "required": [ + "code", + "name", + "regulation_type", + "id", + "created_at", + "updated_at" + ], + "title": "RegulationResponse", + "type": "object" + }, + "RejectDSR": { + "properties": { + "legal_basis": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Legal Basis" + }, + "reason": { + "title": "Reason", + "type": "string" + } + }, + "required": [ + "reason" + ], + "title": "RejectDSR", + "type": "object" + }, + "RejectRequest": { + "properties": { + "comment": { + "title": "Comment", + "type": "string" + } + }, + "required": [ + "comment" + ], + "title": "RejectRequest", + "type": "object" + }, + "RequirementCreate": { + "properties": { + "applicability_reason": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Applicability Reason" + }, + "article": { + "title": "Article", + "type": "string" + }, + "breakpilot_interpretation": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Breakpilot Interpretation" + }, + "description": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Description" + }, + "is_applicable": { + "default": true, + "title": "Is Applicable", + "type": "boolean" + }, + "paragraph": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Paragraph" + }, + "priority": { + "default": 2, + "title": "Priority", + "type": "integer" + }, + "regulation_id": { + "title": "Regulation Id", + "type": "string" + }, + "requirement_text": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Requirement Text" + }, + "title": { + "title": "Title", + "type": "string" + } + }, + "required": [ + "article", + "title", + "regulation_id" + ], + "title": "RequirementCreate", + "type": "object" + }, + "RequirementListResponse": { + "properties": { + "requirements": { + "items": { + "$ref": "#/components/schemas/RequirementResponse" + }, + "title": "Requirements", + "type": "array" + }, + "total": { + "title": "Total", + "type": "integer" + } + }, + "required": [ + "requirements", + "total" + ], + "title": "RequirementListResponse", + "type": "object" + }, + "RequirementResponse": { + "properties": { + "applicability_reason": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Applicability Reason" + }, + "article": { + "title": "Article", + "type": "string" + }, + "audit_status": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": "pending", + "title": "Audit Status" + }, + "auditor_notes": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Auditor Notes" + }, + "breakpilot_interpretation": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Breakpilot Interpretation" + }, + "code_references": { + "anyOf": [ + { + "items": { + "additionalProperties": true, + "type": "object" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Code References" + }, + "created_at": { + "format": "date-time", + "title": "Created At", + "type": "string" + }, + "description": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Description" + }, + "documentation_links": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Documentation Links" + }, + "evidence_artifacts": { + "anyOf": [ + { + "items": { + "additionalProperties": true, + "type": "object" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Evidence Artifacts" + }, + "evidence_description": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Evidence Description" + }, + "id": { + "title": "Id", + "type": "string" + }, + "implementation_details": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Implementation Details" + }, + "implementation_status": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": "not_started", + "title": "Implementation Status" + }, + "is_applicable": { + "default": true, + "title": "Is Applicable", + "type": "boolean" + }, + "last_audit_date": { + "anyOf": [ + { + "format": "date-time", + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Last Audit Date" + }, + "last_auditor": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Last Auditor" + }, + "paragraph": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Paragraph" + }, + "priority": { + "default": 2, + "title": "Priority", + "type": "integer" + }, + "regulation_code": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Regulation Code" + }, + "regulation_id": { + "title": "Regulation Id", + "type": "string" + }, + "requirement_text": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Requirement Text" + }, + "source_page": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "Source Page" + }, + "source_section": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Source Section" + }, + "title": { + "title": "Title", + "type": "string" + }, + "updated_at": { + "format": "date-time", + "title": "Updated At", + "type": "string" + } + }, + "required": [ + "article", + "title", + "id", + "regulation_id", + "created_at", + "updated_at" + ], + "title": "RequirementResponse", + "type": "object" + }, + "ReviewActionItem": { + "description": "Single action item from management review.", + "properties": { + "action": { + "title": "Action", + "type": "string" + }, + "due_date": { + "format": "date", + "title": "Due Date", + "type": "string" + }, + "owner": { + "title": "Owner", + "type": "string" + } + }, + "required": [ + "action", + "owner", + "due_date" + ], + "title": "ReviewActionItem", + "type": "object" + }, + "ReviewAttendee": { + "description": "Single attendee in management review.", + "properties": { + "name": { + "title": "Name", + "type": "string" + }, + "role": { + "title": "Role", + "type": "string" + } + }, + "required": [ + "name", + "role" + ], + "title": "ReviewAttendee", + "type": "object" + }, + "ReviewRequest": { + "properties": { + "action": { + "title": "Action", + "type": "string" + }, + "notes": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Notes" + }, + "release_state": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Release State" + } + }, + "required": [ + "action" + ], + "title": "ReviewRequest", + "type": "object" + }, + "RiskAssessmentRequest": { + "properties": { + "impact": { + "title": "Impact", + "type": "integer" + }, + "likelihood": { + "title": "Likelihood", + "type": "integer" + }, + "notes": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Notes" + } + }, + "required": [ + "likelihood", + "impact" + ], + "title": "RiskAssessmentRequest", + "type": "object" + }, + "RiskCreate": { + "properties": { + "category": { + "title": "Category", + "type": "string" + }, + "description": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Description" + }, + "impact": { + "maximum": 5.0, + "minimum": 1.0, + "title": "Impact", + "type": "integer" + }, + "likelihood": { + "maximum": 5.0, + "minimum": 1.0, + "title": "Likelihood", + "type": "integer" + }, + "mitigating_controls": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Mitigating Controls" + }, + "owner": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Owner" + }, + "risk_id": { + "title": "Risk Id", + "type": "string" + }, + "title": { + "title": "Title", + "type": "string" + }, + "treatment_plan": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Treatment Plan" + } + }, + "required": [ + "risk_id", + "title", + "category", + "likelihood", + "impact" + ], + "title": "RiskCreate", + "type": "object" + }, + "RiskListResponse": { + "properties": { + "risks": { + "items": { + "$ref": "#/components/schemas/RiskResponse" + }, + "title": "Risks", + "type": "array" + }, + "total": { + "title": "Total", + "type": "integer" + } + }, + "required": [ + "risks", + "total" + ], + "title": "RiskListResponse", + "type": "object" + }, + "RiskMatrixResponse": { + "description": "Risk matrix data for visualization.", + "properties": { + "matrix": { + "additionalProperties": { + "additionalProperties": { + "items": { + "type": "string" + }, + "type": "array" + }, + "type": "object" + }, + "title": "Matrix", + "type": "object" + }, + "risks": { + "items": { + "$ref": "#/components/schemas/RiskResponse" + }, + "title": "Risks", + "type": "array" + } + }, + "required": [ + "matrix", + "risks" + ], + "title": "RiskMatrixResponse", + "type": "object" + }, + "RiskResponse": { + "properties": { + "category": { + "title": "Category", + "type": "string" + }, + "created_at": { + "format": "date-time", + "title": "Created At", + "type": "string" + }, + "description": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Description" + }, + "id": { + "title": "Id", + "type": "string" + }, + "identified_date": { + "anyOf": [ + { + "format": "date", + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Identified Date" + }, + "impact": { + "maximum": 5.0, + "minimum": 1.0, + "title": "Impact", + "type": "integer" + }, + "inherent_risk": { + "title": "Inherent Risk", + "type": "string" + }, + "last_assessed_at": { + "anyOf": [ + { + "format": "date-time", + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Last Assessed At" + }, + "likelihood": { + "maximum": 5.0, + "minimum": 1.0, + "title": "Likelihood", + "type": "integer" + }, + "mitigating_controls": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Mitigating Controls" + }, + "owner": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Owner" + }, + "residual_impact": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "Residual Impact" + }, + "residual_likelihood": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "Residual Likelihood" + }, + "residual_risk": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Residual Risk" + }, + "review_date": { + "anyOf": [ + { + "format": "date", + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Review Date" + }, + "risk_id": { + "title": "Risk Id", + "type": "string" + }, + "status": { + "title": "Status", + "type": "string" + }, + "title": { + "title": "Title", + "type": "string" + }, + "treatment_plan": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Treatment Plan" + }, + "updated_at": { + "format": "date-time", + "title": "Updated At", + "type": "string" + } + }, + "required": [ + "risk_id", + "title", + "category", + "likelihood", + "impact", + "id", + "inherent_risk", + "status", + "created_at", + "updated_at" + ], + "title": "RiskResponse", + "type": "object" + }, + "RiskSummary": { + "description": "Summary of a risk for executive display.", + "properties": { + "category": { + "title": "Category", + "type": "string" + }, + "id": { + "title": "Id", + "type": "string" + }, + "impact": { + "title": "Impact", + "type": "integer" + }, + "likelihood": { + "title": "Likelihood", + "type": "integer" + }, + "owner": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Owner" + }, + "risk_id": { + "title": "Risk Id", + "type": "string" + }, + "risk_level": { + "title": "Risk Level", + "type": "string" + }, + "status": { + "title": "Status", + "type": "string" + }, + "title": { + "title": "Title", + "type": "string" + } + }, + "required": [ + "id", + "risk_id", + "title", + "risk_level", + "status", + "category", + "impact", + "likelihood" + ], + "title": "RiskSummary", + "type": "object" + }, + "RiskUpdate": { + "properties": { + "category": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Category" + }, + "description": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Description" + }, + "impact": { + "anyOf": [ + { + "maximum": 5.0, + "minimum": 1.0, + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "Impact" + }, + "likelihood": { + "anyOf": [ + { + "maximum": 5.0, + "minimum": 1.0, + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "Likelihood" + }, + "mitigating_controls": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Mitigating Controls" + }, + "owner": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Owner" + }, + "residual_impact": { + "anyOf": [ + { + "maximum": 5.0, + "minimum": 1.0, + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "Residual Impact" + }, + "residual_likelihood": { + "anyOf": [ + { + "maximum": 5.0, + "minimum": 1.0, + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "Residual Likelihood" + }, + "status": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Status" + }, + "title": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Title" + }, + "treatment_plan": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Treatment Plan" + } + }, + "title": "RiskUpdate", + "type": "object" + }, + "SBOMComponentResponse": { + "properties": { + "licenses": { + "items": { + "type": "string" + }, + "title": "Licenses", + "type": "array" + }, + "name": { + "title": "Name", + "type": "string" + }, + "purl": { + "title": "Purl", + "type": "string" + }, + "type": { + "title": "Type", + "type": "string" + }, + "version": { + "title": "Version", + "type": "string" + }, + "vulnerabilities": { + "items": { + "additionalProperties": true, + "type": "object" + }, + "title": "Vulnerabilities", + "type": "array" + } + }, + "required": [ + "name", + "version", + "type", + "purl", + "licenses", + "vulnerabilities" + ], + "title": "SBOMComponentResponse", + "type": "object" + }, + "ScenarioCreate": { + "properties": { + "category": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Category" + }, + "description": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Description" + }, + "estimated_recovery_time": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "Estimated Recovery Time" + }, + "is_active": { + "default": true, + "title": "Is Active", + "type": "boolean" + }, + "response_steps": { + "default": [], + "items": {}, + "title": "Response Steps", + "type": "array" + }, + "severity": { + "default": "medium", + "title": "Severity", + "type": "string" + }, + "title": { + "title": "Title", + "type": "string" + } + }, + "required": [ + "title" + ], + "title": "ScenarioCreate", + "type": "object" + }, + "ScenarioUpdate": { + "properties": { + "category": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Category" + }, + "description": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Description" + }, + "estimated_recovery_time": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "Estimated Recovery Time" + }, + "is_active": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "title": "Is Active" + }, + "last_tested": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Last Tested" + }, + "response_steps": { + "anyOf": [ + { + "items": {}, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Response Steps" + }, + "severity": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Severity" + }, + "title": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Title" + } + }, + "title": "ScenarioUpdate", + "type": "object" + }, + "ScreeningListResponse": { + "properties": { + "screenings": { + "items": { + "additionalProperties": true, + "type": "object" + }, + "title": "Screenings", + "type": "array" + }, + "total": { + "title": "Total", + "type": "integer" + } + }, + "required": [ + "screenings", + "total" + ], + "title": "ScreeningListResponse", + "type": "object" + }, + "ScreeningResponse": { + "properties": { + "completed_at": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Completed At" + }, + "components": { + "items": { + "$ref": "#/components/schemas/SBOMComponentResponse" + }, + "title": "Components", + "type": "array" + }, + "critical_issues": { + "title": "Critical Issues", + "type": "integer" + }, + "high_issues": { + "title": "High Issues", + "type": "integer" + }, + "id": { + "title": "Id", + "type": "string" + }, + "issues": { + "items": { + "$ref": "#/components/schemas/SecurityIssueResponse" + }, + "title": "Issues", + "type": "array" + }, + "low_issues": { + "title": "Low Issues", + "type": "integer" + }, + "medium_issues": { + "title": "Medium Issues", + "type": "integer" + }, + "sbom_format": { + "title": "Sbom Format", + "type": "string" + }, + "sbom_version": { + "title": "Sbom Version", + "type": "string" + }, + "started_at": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Started At" + }, + "status": { + "title": "Status", + "type": "string" + }, + "total_components": { + "title": "Total Components", + "type": "integer" + }, + "total_issues": { + "title": "Total Issues", + "type": "integer" + } + }, + "required": [ + "id", + "status", + "sbom_format", + "sbom_version", + "total_components", + "total_issues", + "critical_issues", + "high_issues", + "medium_issues", + "low_issues", + "components", + "issues" + ], + "title": "ScreeningResponse", + "type": "object" + }, + "SecurityIssueResponse": { + "properties": { + "affected_component": { + "title": "Affected Component", + "type": "string" + }, + "affected_version": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Affected Version" + }, + "cve": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Cve" + }, + "cvss": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "title": "Cvss" + }, + "description": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Description" + }, + "fixed_in": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Fixed In" + }, + "id": { + "title": "Id", + "type": "string" + }, + "remediation": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Remediation" + }, + "severity": { + "title": "Severity", + "type": "string" + }, + "status": { + "default": "OPEN", + "title": "Status", + "type": "string" + }, + "title": { + "title": "Title", + "type": "string" + } + }, + "required": [ + "id", + "severity", + "title", + "affected_component" + ], + "title": "SecurityIssueResponse", + "type": "object" + }, + "SecurityItemCreate": { + "properties": { + "affected_asset": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Affected Asset" + }, + "assigned_to": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Assigned To" + }, + "cve": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Cve" + }, + "cvss": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "title": "Cvss" + }, + "description": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Description" + }, + "due_date": { + "anyOf": [ + { + "format": "date-time", + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Due Date" + }, + "remediation": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Remediation" + }, + "severity": { + "default": "medium", + "title": "Severity", + "type": "string" + }, + "source": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Source" + }, + "status": { + "default": "open", + "title": "Status", + "type": "string" + }, + "title": { + "title": "Title", + "type": "string" + }, + "type": { + "default": "vulnerability", + "title": "Type", + "type": "string" + } + }, + "required": [ + "title" + ], + "title": "SecurityItemCreate", + "type": "object" + }, + "SecurityItemUpdate": { + "properties": { + "affected_asset": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Affected Asset" + }, + "assigned_to": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Assigned To" + }, + "cve": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Cve" + }, + "cvss": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "title": "Cvss" + }, + "description": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Description" + }, + "due_date": { + "anyOf": [ + { + "format": "date-time", + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Due Date" + }, + "remediation": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Remediation" + }, + "severity": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Severity" + }, + "source": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Source" + }, + "status": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Status" + }, + "title": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Title" + }, + "type": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Type" + } + }, + "title": "SecurityItemUpdate", + "type": "object" + }, + "SecurityObjectiveCreate": { + "description": "Schema for creating Security Objective.", + "properties": { + "achievable": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Achievable" + }, + "category": { + "title": "Category", + "type": "string" + }, + "description": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Description" + }, + "kpi_name": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Kpi Name" + }, + "kpi_target": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Kpi Target" + }, + "kpi_unit": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Kpi Unit" + }, + "measurable": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Measurable" + }, + "measurement_frequency": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Measurement Frequency" + }, + "objective_id": { + "title": "Objective Id", + "type": "string" + }, + "owner": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Owner" + }, + "related_controls": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Related Controls" + }, + "related_risks": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Related Risks" + }, + "relevant": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Relevant" + }, + "specific": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Specific" + }, + "target_date": { + "anyOf": [ + { + "format": "date", + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Target Date" + }, + "time_bound": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Time Bound" + }, + "title": { + "title": "Title", + "type": "string" + } + }, + "required": [ + "objective_id", + "title", + "category" + ], + "title": "SecurityObjectiveCreate", + "type": "object" + }, + "SecurityObjectiveListResponse": { + "description": "List response for Security Objectives.", + "properties": { + "objectives": { + "items": { + "$ref": "#/components/schemas/SecurityObjectiveResponse" + }, + "title": "Objectives", + "type": "array" + }, + "total": { + "title": "Total", + "type": "integer" + } + }, + "required": [ + "objectives", + "total" + ], + "title": "SecurityObjectiveListResponse", + "type": "object" + }, + "SecurityObjectiveResponse": { + "description": "Response schema for Security Objective.", + "properties": { + "achievable": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Achievable" + }, + "achieved_date": { + "anyOf": [ + { + "format": "date", + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Achieved Date" + }, + "approved_at": { + "anyOf": [ + { + "format": "date-time", + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Approved At" + }, + "approved_by": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Approved By" + }, + "category": { + "title": "Category", + "type": "string" + }, + "created_at": { + "format": "date-time", + "title": "Created At", + "type": "string" + }, + "description": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Description" + }, + "id": { + "title": "Id", + "type": "string" + }, + "kpi_current": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Kpi Current" + }, + "kpi_name": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Kpi Name" + }, + "kpi_target": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Kpi Target" + }, + "kpi_unit": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Kpi Unit" + }, + "measurable": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Measurable" + }, + "measurement_frequency": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Measurement Frequency" + }, + "objective_id": { + "title": "Objective Id", + "type": "string" + }, + "owner": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Owner" + }, + "progress_percentage": { + "title": "Progress Percentage", + "type": "integer" + }, + "related_controls": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Related Controls" + }, + "related_risks": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Related Risks" + }, + "relevant": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Relevant" + }, + "specific": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Specific" + }, + "status": { + "title": "Status", + "type": "string" + }, + "target_date": { + "anyOf": [ + { + "format": "date", + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Target Date" + }, + "time_bound": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Time Bound" + }, + "title": { + "title": "Title", + "type": "string" + }, + "updated_at": { + "format": "date-time", + "title": "Updated At", + "type": "string" + } + }, + "required": [ + "objective_id", + "title", + "category", + "id", + "status", + "progress_percentage", + "created_at", + "updated_at" + ], + "title": "SecurityObjectiveResponse", + "type": "object" + }, + "SecurityObjectiveUpdate": { + "description": "Schema for updating Security Objective.", + "properties": { + "description": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Description" + }, + "kpi_current": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Kpi Current" + }, + "progress_percentage": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "Progress Percentage" + }, + "status": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Status" + }, + "title": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Title" + } + }, + "title": "SecurityObjectiveUpdate", + "type": "object" + }, + "SeedRequest": { + "properties": { + "force": { + "default": false, + "title": "Force", + "type": "boolean" + } + }, + "title": "SeedRequest", + "type": "object" + }, + "SeedResponse": { + "properties": { + "counts": { + "additionalProperties": { + "type": "integer" + }, + "title": "Counts", + "type": "object" + }, + "message": { + "title": "Message", + "type": "string" + }, + "success": { + "title": "Success", + "type": "boolean" + } + }, + "required": [ + "success", + "message", + "counts" + ], + "title": "SeedResponse", + "type": "object" + }, + "SendCommunication": { + "properties": { + "channel": { + "default": "email", + "title": "Channel", + "type": "string" + }, + "communication_type": { + "default": "outgoing", + "title": "Communication Type", + "type": "string" + }, + "content": { + "title": "Content", + "type": "string" + }, + "subject": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Subject" + }, + "template_used": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Template Used" + } + }, + "required": [ + "content" + ], + "title": "SendCommunication", + "type": "object" + }, + "SendTestRequest": { + "properties": { + "recipient": { + "title": "Recipient", + "type": "string" + }, + "variables": { + "anyOf": [ + { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + { + "type": "null" + } + ], + "title": "Variables" + } + }, + "required": [ + "recipient" + ], + "title": "SendTestRequest", + "type": "object" + }, + "ServiceModuleDetailResponse": { + "description": "Detailed response including regulations and risks.", + "properties": { + "ai_components": { + "default": false, + "title": "Ai Components", + "type": "boolean" + }, + "compliance_score": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "title": "Compliance Score" + }, + "created_at": { + "format": "date-time", + "title": "Created At", + "type": "string" + }, + "criticality": { + "default": "medium", + "title": "Criticality", + "type": "string" + }, + "data_categories": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Data Categories" + }, + "description": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Description" + }, + "display_name": { + "title": "Display Name", + "type": "string" + }, + "docker_image": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Docker Image" + }, + "id": { + "title": "Id", + "type": "string" + }, + "is_active": { + "title": "Is Active", + "type": "boolean" + }, + "last_compliance_check": { + "anyOf": [ + { + "format": "date-time", + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Last Compliance Check" + }, + "name": { + "title": "Name", + "type": "string" + }, + "owner_contact": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Owner Contact" + }, + "owner_team": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Owner Team" + }, + "port": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "Port" + }, + "processes_health_data": { + "default": false, + "title": "Processes Health Data", + "type": "boolean" + }, + "processes_pii": { + "default": false, + "title": "Processes Pii", + "type": "boolean" + }, + "regulation_count": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "Regulation Count" + }, + "regulations": { + "anyOf": [ + { + "items": { + "additionalProperties": true, + "type": "object" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Regulations" + }, + "repository_path": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Repository Path" + }, + "risk_count": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "Risk Count" + }, + "risks": { + "anyOf": [ + { + "items": { + "additionalProperties": true, + "type": "object" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Risks" + }, + "service_type": { + "title": "Service Type", + "type": "string" + }, + "technology_stack": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Technology Stack" + }, + "updated_at": { + "format": "date-time", + "title": "Updated At", + "type": "string" + } + }, + "required": [ + "name", + "display_name", + "service_type", + "id", + "is_active", + "created_at", + "updated_at" + ], + "title": "ServiceModuleDetailResponse", + "type": "object" + }, + "ServiceModuleListResponse": { + "description": "List response for service modules.", + "properties": { + "modules": { + "items": { + "$ref": "#/components/schemas/ServiceModuleResponse" + }, + "title": "Modules", + "type": "array" + }, + "total": { + "title": "Total", + "type": "integer" + } + }, + "required": [ + "modules", + "total" + ], + "title": "ServiceModuleListResponse", + "type": "object" + }, + "ServiceModuleResponse": { + "description": "Response schema for service module.", + "properties": { + "ai_components": { + "default": false, + "title": "Ai Components", + "type": "boolean" + }, + "compliance_score": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "title": "Compliance Score" + }, + "created_at": { + "format": "date-time", + "title": "Created At", + "type": "string" + }, + "criticality": { + "default": "medium", + "title": "Criticality", + "type": "string" + }, + "data_categories": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Data Categories" + }, + "description": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Description" + }, + "display_name": { + "title": "Display Name", + "type": "string" + }, + "docker_image": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Docker Image" + }, + "id": { + "title": "Id", + "type": "string" + }, + "is_active": { + "title": "Is Active", + "type": "boolean" + }, + "last_compliance_check": { + "anyOf": [ + { + "format": "date-time", + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Last Compliance Check" + }, + "name": { + "title": "Name", + "type": "string" + }, + "owner_contact": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Owner Contact" + }, + "owner_team": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Owner Team" + }, + "port": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "Port" + }, + "processes_health_data": { + "default": false, + "title": "Processes Health Data", + "type": "boolean" + }, + "processes_pii": { + "default": false, + "title": "Processes Pii", + "type": "boolean" + }, + "regulation_count": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "Regulation Count" + }, + "repository_path": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Repository Path" + }, + "risk_count": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "Risk Count" + }, + "service_type": { + "title": "Service Type", + "type": "string" + }, + "technology_stack": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Technology Stack" + }, + "updated_at": { + "format": "date-time", + "title": "Updated At", + "type": "string" + } + }, + "required": [ + "name", + "display_name", + "service_type", + "id", + "is_active", + "created_at", + "updated_at" + ], + "title": "ServiceModuleResponse", + "type": "object" + }, + "SettingsUpdate": { + "properties": { + "company_address": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Company Address" + }, + "company_name": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Company Name" + }, + "footer_text": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Footer Text" + }, + "logo_url": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Logo Url" + }, + "primary_color": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Primary Color" + }, + "reply_to": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Reply To" + }, + "secondary_color": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Secondary Color" + }, + "sender_email": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Sender Email" + }, + "sender_name": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Sender Name" + } + }, + "title": "SettingsUpdate", + "type": "object" + }, + "SignOffRequest": { + "description": "Request to sign off a single requirement.", + "properties": { + "notes": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Notes" + }, + "result": { + "description": "Audit result: compliant, compliant_notes, non_compliant, not_applicable, pending", + "title": "Result", + "type": "string" + }, + "sign": { + "default": false, + "description": "Whether to create digital signature", + "title": "Sign", + "type": "boolean" + } + }, + "required": [ + "result" + ], + "title": "SignOffRequest", + "type": "object" + }, + "SignOffResponse": { + "description": "Response for a sign-off operation.", + "properties": { + "created_at": { + "format": "date-time", + "title": "Created At", + "type": "string" + }, + "id": { + "title": "Id", + "type": "string" + }, + "is_signed": { + "title": "Is Signed", + "type": "boolean" + }, + "notes": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Notes" + }, + "requirement_id": { + "title": "Requirement Id", + "type": "string" + }, + "result": { + "title": "Result", + "type": "string" + }, + "session_id": { + "title": "Session Id", + "type": "string" + }, + "signature_hash": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Signature Hash" + }, + "signed_at": { + "anyOf": [ + { + "format": "date-time", + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Signed At" + }, + "signed_by": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Signed By" + }, + "updated_at": { + "anyOf": [ + { + "format": "date-time", + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Updated At" + } + }, + "required": [ + "id", + "session_id", + "requirement_id", + "result", + "is_signed", + "created_at" + ], + "title": "SignOffResponse", + "type": "object" + }, + "SimilarityCheckRequest": { + "properties": { + "candidate_text": { + "title": "Candidate Text", + "type": "string" + }, + "source_text": { + "title": "Source Text", + "type": "string" + } + }, + "required": [ + "source_text", + "candidate_text" + ], + "title": "SimilarityCheckRequest", + "type": "object" + }, + "SiteConfigCreate": { + "properties": { + "banner_description": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Banner Description" + }, + "banner_title": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Banner Title" + }, + "dsb_email": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Dsb Email" + }, + "dsb_name": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Dsb Name" + }, + "imprint_url": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Imprint Url" + }, + "privacy_url": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Privacy Url" + }, + "site_id": { + "title": "Site Id", + "type": "string" + }, + "site_name": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Site Name" + }, + "site_url": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Site Url" + }, + "tcf_enabled": { + "default": false, + "title": "Tcf Enabled", + "type": "boolean" + }, + "theme": { + "anyOf": [ + { + "additionalProperties": true, + "type": "object" + }, + { + "type": "null" + } + ], + "title": "Theme" + } + }, + "required": [ + "site_id" + ], + "title": "SiteConfigCreate", + "type": "object" + }, + "SiteConfigUpdate": { + "properties": { + "banner_description": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Banner Description" + }, + "banner_title": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Banner Title" + }, + "dsb_email": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Dsb Email" + }, + "dsb_name": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Dsb Name" + }, + "imprint_url": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Imprint Url" + }, + "is_active": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "title": "Is Active" + }, + "privacy_url": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Privacy Url" + }, + "site_name": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Site Name" + }, + "site_url": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Site Url" + }, + "tcf_enabled": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "title": "Tcf Enabled" + }, + "theme": { + "anyOf": [ + { + "additionalProperties": true, + "type": "object" + }, + { + "type": "null" + } + ], + "title": "Theme" + } + }, + "title": "SiteConfigUpdate", + "type": "object" + }, + "SoAApproveRequest": { + "description": "Request to approve SoA entry.", + "properties": { + "approved_by": { + "title": "Approved By", + "type": "string" + }, + "reviewed_by": { + "title": "Reviewed By", + "type": "string" + } + }, + "required": [ + "reviewed_by", + "approved_by" + ], + "title": "SoAApproveRequest", + "type": "object" + }, + "SoAEntryCreate": { + "description": "Schema for creating SoA Entry.", + "properties": { + "annex_a_category": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Annex A Category" + }, + "annex_a_control": { + "title": "Annex A Control", + "type": "string" + }, + "annex_a_title": { + "title": "Annex A Title", + "type": "string" + }, + "applicability_justification": { + "title": "Applicability Justification", + "type": "string" + }, + "breakpilot_control_ids": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Breakpilot Control Ids" + }, + "compensating_controls": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Compensating Controls" + }, + "coverage_level": { + "default": "full", + "title": "Coverage Level", + "type": "string" + }, + "evidence_description": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Evidence Description" + }, + "implementation_notes": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Implementation Notes" + }, + "implementation_status": { + "default": "planned", + "title": "Implementation Status", + "type": "string" + }, + "is_applicable": { + "title": "Is Applicable", + "type": "boolean" + }, + "risk_assessment_notes": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Risk Assessment Notes" + } + }, + "required": [ + "annex_a_control", + "annex_a_title", + "is_applicable", + "applicability_justification" + ], + "title": "SoAEntryCreate", + "type": "object" + }, + "SoAEntryResponse": { + "description": "Response schema for SoA Entry.", + "properties": { + "annex_a_category": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Annex A Category" + }, + "annex_a_control": { + "title": "Annex A Control", + "type": "string" + }, + "annex_a_title": { + "title": "Annex A Title", + "type": "string" + }, + "applicability_justification": { + "title": "Applicability Justification", + "type": "string" + }, + "approved_at": { + "anyOf": [ + { + "format": "date-time", + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Approved At" + }, + "approved_by": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Approved By" + }, + "breakpilot_control_ids": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Breakpilot Control Ids" + }, + "compensating_controls": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Compensating Controls" + }, + "coverage_level": { + "default": "full", + "title": "Coverage Level", + "type": "string" + }, + "created_at": { + "format": "date-time", + "title": "Created At", + "type": "string" + }, + "evidence_description": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Evidence Description" + }, + "evidence_ids": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Evidence Ids" + }, + "id": { + "title": "Id", + "type": "string" + }, + "implementation_notes": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Implementation Notes" + }, + "implementation_status": { + "default": "planned", + "title": "Implementation Status", + "type": "string" + }, + "is_applicable": { + "title": "Is Applicable", + "type": "boolean" + }, + "reviewed_at": { + "anyOf": [ + { + "format": "date-time", + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Reviewed At" + }, + "reviewed_by": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Reviewed By" + }, + "risk_assessment_notes": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Risk Assessment Notes" + }, + "updated_at": { + "format": "date-time", + "title": "Updated At", + "type": "string" + }, + "version": { + "title": "Version", + "type": "string" + } + }, + "required": [ + "annex_a_control", + "annex_a_title", + "is_applicable", + "applicability_justification", + "id", + "version", + "created_at", + "updated_at" + ], + "title": "SoAEntryResponse", + "type": "object" + }, + "SoAEntryUpdate": { + "description": "Schema for updating SoA Entry.", + "properties": { + "applicability_justification": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Applicability Justification" + }, + "breakpilot_control_ids": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Breakpilot Control Ids" + }, + "coverage_level": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Coverage Level" + }, + "evidence_description": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Evidence Description" + }, + "implementation_notes": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Implementation Notes" + }, + "implementation_status": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Implementation Status" + }, + "is_applicable": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "title": "Is Applicable" + } + }, + "title": "SoAEntryUpdate", + "type": "object" + }, + "SoAListResponse": { + "description": "List response for SoA.", + "properties": { + "applicable_count": { + "title": "Applicable Count", + "type": "integer" + }, + "entries": { + "items": { + "$ref": "#/components/schemas/SoAEntryResponse" + }, + "title": "Entries", + "type": "array" + }, + "implemented_count": { + "title": "Implemented Count", + "type": "integer" + }, + "not_applicable_count": { + "title": "Not Applicable Count", + "type": "integer" + }, + "planned_count": { + "title": "Planned Count", + "type": "integer" + }, + "total": { + "title": "Total", + "type": "integer" + } + }, + "required": [ + "entries", + "total", + "applicable_count", + "not_applicable_count", + "implemented_count", + "planned_count" + ], + "title": "SoAListResponse", + "type": "object" + }, + "SourceCreate": { + "properties": { + "active": { + "default": true, + "title": "Active", + "type": "boolean" + }, + "description": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Description" + }, + "domain": { + "title": "Domain", + "type": "string" + }, + "legal_basis": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Legal Basis" + }, + "license": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "License" + }, + "metadata": { + "anyOf": [ + { + "additionalProperties": true, + "type": "object" + }, + { + "type": "null" + } + ], + "title": "Metadata" + }, + "name": { + "title": "Name", + "type": "string" + }, + "source_type": { + "default": "legal", + "title": "Source Type", + "type": "string" + }, + "trust_boost": { + "default": 0.5, + "maximum": 1.0, + "minimum": 0.0, + "title": "Trust Boost", + "type": "number" + } + }, + "required": [ + "domain", + "name" + ], + "title": "SourceCreate", + "type": "object" + }, + "SourceUpdate": { + "properties": { + "active": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "title": "Active" + }, + "description": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Description" + }, + "domain": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Domain" + }, + "legal_basis": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Legal Basis" + }, + "license": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "License" + }, + "metadata": { + "anyOf": [ + { + "additionalProperties": true, + "type": "object" + }, + { + "type": "null" + } + ], + "title": "Metadata" + }, + "name": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Name" + }, + "source_type": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Source Type" + }, + "trust_boost": { + "anyOf": [ + { + "maximum": 1.0, + "minimum": 0.0, + "type": "number" + }, + { + "type": "null" + } + ], + "title": "Trust Boost" + } + }, + "title": "SourceUpdate", + "type": "object" + }, + "StatusChange": { + "properties": { + "comment": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Comment" + }, + "status": { + "title": "Status", + "type": "string" + } + }, + "required": [ + "status" + ], + "title": "StatusChange", + "type": "object" + }, + "TOMMeasureBulkBody": { + "properties": { + "measures": { + "items": { + "$ref": "#/components/schemas/TOMMeasureBulkItem" + }, + "title": "Measures", + "type": "array" + }, + "tenant_id": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Tenant Id" + } + }, + "required": [ + "measures" + ], + "title": "TOMMeasureBulkBody", + "type": "object" + }, + "TOMMeasureBulkItem": { + "properties": { + "applicability": { + "default": "REQUIRED", + "title": "Applicability", + "type": "string" + }, + "applicability_reason": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Applicability Reason" + }, + "category": { + "title": "Category", + "type": "string" + }, + "complexity": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Complexity" + }, + "control_id": { + "title": "Control Id", + "type": "string" + }, + "description": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Description" + }, + "evidence_gaps": { + "anyOf": [ + { + "items": {}, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Evidence Gaps" + }, + "implementation_date": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Implementation Date" + }, + "implementation_status": { + "default": "NOT_IMPLEMENTED", + "title": "Implementation Status", + "type": "string" + }, + "linked_evidence": { + "anyOf": [ + { + "items": {}, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Linked Evidence" + }, + "name": { + "title": "Name", + "type": "string" + }, + "priority": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Priority" + }, + "related_controls": { + "anyOf": [ + { + "additionalProperties": true, + "type": "object" + }, + { + "type": "null" + } + ], + "title": "Related Controls" + }, + "responsible_department": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Responsible Department" + }, + "responsible_person": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Responsible Person" + }, + "review_date": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Review Date" + }, + "review_frequency": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Review Frequency" + }, + "type": { + "title": "Type", + "type": "string" + } + }, + "required": [ + "control_id", + "name", + "category", + "type" + ], + "title": "TOMMeasureBulkItem", + "type": "object" + }, + "TOMMeasureCreate": { + "properties": { + "applicability": { + "default": "REQUIRED", + "title": "Applicability", + "type": "string" + }, + "applicability_reason": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Applicability Reason" + }, + "category": { + "title": "Category", + "type": "string" + }, + "complexity": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Complexity" + }, + "control_id": { + "title": "Control Id", + "type": "string" + }, + "description": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Description" + }, + "effectiveness_rating": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Effectiveness Rating" + }, + "evidence_gaps": { + "anyOf": [ + { + "items": {}, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Evidence Gaps" + }, + "implementation_date": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Implementation Date" + }, + "implementation_status": { + "default": "NOT_IMPLEMENTED", + "title": "Implementation Status", + "type": "string" + }, + "linked_evidence": { + "anyOf": [ + { + "items": {}, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Linked Evidence" + }, + "name": { + "title": "Name", + "type": "string" + }, + "priority": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Priority" + }, + "related_controls": { + "anyOf": [ + { + "additionalProperties": true, + "type": "object" + }, + { + "type": "null" + } + ], + "title": "Related Controls" + }, + "responsible_department": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Responsible Department" + }, + "responsible_person": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Responsible Person" + }, + "review_date": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Review Date" + }, + "review_frequency": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Review Frequency" + }, + "type": { + "title": "Type", + "type": "string" + }, + "verified_at": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Verified At" + }, + "verified_by": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Verified By" + } + }, + "required": [ + "control_id", + "name", + "category", + "type" + ], + "title": "TOMMeasureCreate", + "type": "object" + }, + "TOMMeasureUpdate": { + "properties": { + "applicability": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Applicability" + }, + "applicability_reason": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Applicability Reason" + }, + "category": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Category" + }, + "complexity": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Complexity" + }, + "description": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Description" + }, + "effectiveness_rating": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Effectiveness Rating" + }, + "evidence_gaps": { + "anyOf": [ + { + "items": {}, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Evidence Gaps" + }, + "implementation_date": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Implementation Date" + }, + "implementation_status": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Implementation Status" + }, + "linked_evidence": { + "anyOf": [ + { + "items": {}, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Linked Evidence" + }, + "name": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Name" + }, + "priority": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Priority" + }, + "related_controls": { + "anyOf": [ + { + "additionalProperties": true, + "type": "object" + }, + { + "type": "null" + } + ], + "title": "Related Controls" + }, + "responsible_department": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Responsible Department" + }, + "responsible_person": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Responsible Person" + }, + "review_date": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Review Date" + }, + "review_frequency": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Review Frequency" + }, + "type": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Type" + }, + "verified_at": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Verified At" + }, + "verified_by": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Verified By" + } + }, + "title": "TOMMeasureUpdate", + "type": "object" + }, + "TOMStateBody": { + "properties": { + "state": { + "additionalProperties": true, + "title": "State", + "type": "object" + }, + "tenantId": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Tenantid" + }, + "tenant_id": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Tenant Id" + }, + "version": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "Version" + } + }, + "required": [ + "state" + ], + "title": "TOMStateBody", + "type": "object" + }, + "TeamWorkloadItem": { + "description": "Workload distribution for a team or person.", + "properties": { + "completed_tasks": { + "title": "Completed Tasks", + "type": "integer" + }, + "completion_rate": { + "title": "Completion Rate", + "type": "number" + }, + "in_progress_tasks": { + "title": "In Progress Tasks", + "type": "integer" + }, + "name": { + "title": "Name", + "type": "string" + }, + "pending_tasks": { + "title": "Pending Tasks", + "type": "integer" + }, + "total_tasks": { + "title": "Total Tasks", + "type": "integer" + } + }, + "required": [ + "name", + "pending_tasks", + "in_progress_tasks", + "completed_tasks", + "total_tasks", + "completion_rate" + ], + "title": "TeamWorkloadItem", + "type": "object" + }, + "TemplateUpdate": { + "properties": { + "content": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Content" + }, + "title": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Title" + }, + "type": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Type" + } + }, + "title": "TemplateUpdate", + "type": "object" + }, + "TestCreate": { + "properties": { + "ai_system": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Ai System" + }, + "details": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Details" + }, + "duration": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Duration" + }, + "last_run": { + "anyOf": [ + { + "format": "date-time", + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Last Run" + }, + "name": { + "title": "Name", + "type": "string" + }, + "status": { + "default": "pending", + "title": "Status", + "type": "string" + } + }, + "required": [ + "name" + ], + "title": "TestCreate", + "type": "object" + }, + "TestUpdate": { + "properties": { + "ai_system": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Ai System" + }, + "details": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Details" + }, + "duration": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Duration" + }, + "last_run": { + "anyOf": [ + { + "format": "date-time", + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Last Run" + }, + "name": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Name" + }, + "status": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Status" + } + }, + "title": "TestUpdate", + "type": "object" + }, + "TimelineEntryRequest": { + "properties": { + "action": { + "title": "Action", + "type": "string" + }, + "details": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Details" + } + }, + "required": [ + "action" + ], + "title": "TimelineEntryRequest", + "type": "object" + }, + "TrendDataPoint": { + "description": "A single data point for trend charts.", + "properties": { + "date": { + "title": "Date", + "type": "string" + }, + "label": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Label" + }, + "score": { + "title": "Score", + "type": "number" + } + }, + "required": [ + "date", + "score" + ], + "title": "TrendDataPoint", + "type": "object" + }, + "UpdateDocumentRequest": { + "properties": { + "description": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Description" + }, + "is_active": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "title": "Is Active" + }, + "is_mandatory": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "title": "Is Mandatory" + }, + "name": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Name" + }, + "sort_order": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "Sort Order" + } + }, + "title": "UpdateDocumentRequest", + "type": "object" + }, + "UpdateExceptionCheck": { + "properties": { + "applies": { + "title": "Applies", + "type": "boolean" + }, + "notes": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Notes" + } + }, + "required": [ + "applies" + ], + "title": "UpdateExceptionCheck", + "type": "object" + }, + "UpdateProjectRequest": { + "properties": { + "description": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Description" + }, + "name": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Name" + } + }, + "title": "UpdateProjectRequest", + "type": "object" + }, + "UpdateVersionRequest": { + "properties": { + "content": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Content" + }, + "summary": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Summary" + }, + "title": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Title" + } + }, + "title": "UpdateVersionRequest", + "type": "object" + }, + "UserConsentCreate": { + "properties": { + "consented": { + "default": true, + "title": "Consented", + "type": "boolean" + }, + "document_id": { + "title": "Document Id", + "type": "string" + }, + "document_type": { + "title": "Document Type", + "type": "string" + }, + "document_version_id": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Document Version Id" + }, + "ip_address": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Ip Address" + }, + "user_agent": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "User Agent" + }, + "user_id": { + "title": "User Id", + "type": "string" + } + }, + "required": [ + "user_id", + "document_id", + "document_type" + ], + "title": "UserConsentCreate", + "type": "object" + }, + "VVTActivityCreate": { + "properties": { + "business_function": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Business Function" + }, + "created_by": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Created By" + }, + "data_flows": { + "default": [], + "items": {}, + "title": "Data Flows", + "type": "array" + }, + "data_sources": { + "default": [], + "items": {}, + "title": "Data Sources", + "type": "array" + }, + "data_subject_categories": { + "default": [], + "items": { + "type": "string" + }, + "title": "Data Subject Categories", + "type": "array" + }, + "deployment_model": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Deployment Model" + }, + "description": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Description" + }, + "dpia_required": { + "default": false, + "title": "Dpia Required", + "type": "boolean" + }, + "dsfa_id": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Dsfa Id" + }, + "last_reviewed_at": { + "anyOf": [ + { + "format": "date-time", + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Last Reviewed At" + }, + "legal_bases": { + "default": [], + "items": { + "type": "string" + }, + "title": "Legal Bases", + "type": "array" + }, + "name": { + "title": "Name", + "type": "string" + }, + "next_review_at": { + "anyOf": [ + { + "format": "date-time", + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Next Review At" + }, + "owner": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Owner" + }, + "personal_data_categories": { + "default": [], + "items": { + "type": "string" + }, + "title": "Personal Data Categories", + "type": "array" + }, + "protection_level": { + "default": "MEDIUM", + "title": "Protection Level", + "type": "string" + }, + "purposes": { + "default": [], + "items": { + "type": "string" + }, + "title": "Purposes", + "type": "array" + }, + "recipient_categories": { + "default": [], + "items": { + "type": "string" + }, + "title": "Recipient Categories", + "type": "array" + }, + "responsible": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Responsible" + }, + "retention_period": { + "additionalProperties": true, + "default": {}, + "title": "Retention Period", + "type": "object" + }, + "status": { + "default": "DRAFT", + "title": "Status", + "type": "string" + }, + "structured_toms": { + "additionalProperties": true, + "default": {}, + "title": "Structured Toms", + "type": "object" + }, + "systems": { + "default": [], + "items": { + "type": "string" + }, + "title": "Systems", + "type": "array" + }, + "third_country_transfers": { + "default": [], + "items": {}, + "title": "Third Country Transfers", + "type": "array" + }, + "tom_description": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Tom Description" + }, + "vvt_id": { + "title": "Vvt Id", + "type": "string" + } + }, + "required": [ + "vvt_id", + "name" + ], + "title": "VVTActivityCreate", + "type": "object" + }, + "VVTActivityResponse": { + "properties": { + "business_function": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Business Function" + }, + "created_at": { + "format": "date-time", + "title": "Created At", + "type": "string" + }, + "created_by": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Created By" + }, + "data_flows": { + "default": [], + "items": {}, + "title": "Data Flows", + "type": "array" + }, + "data_sources": { + "default": [], + "items": {}, + "title": "Data Sources", + "type": "array" + }, + "data_subject_categories": { + "default": [], + "items": {}, + "title": "Data Subject Categories", + "type": "array" + }, + "deployment_model": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Deployment Model" + }, + "description": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Description" + }, + "dpia_required": { + "default": false, + "title": "Dpia Required", + "type": "boolean" + }, + "dsfa_id": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Dsfa Id" + }, + "id": { + "title": "Id", + "type": "string" + }, + "last_reviewed_at": { + "anyOf": [ + { + "format": "date-time", + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Last Reviewed At" + }, + "legal_bases": { + "default": [], + "items": {}, + "title": "Legal Bases", + "type": "array" + }, + "name": { + "title": "Name", + "type": "string" + }, + "next_review_at": { + "anyOf": [ + { + "format": "date-time", + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Next Review At" + }, + "owner": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Owner" + }, + "personal_data_categories": { + "default": [], + "items": {}, + "title": "Personal Data Categories", + "type": "array" + }, + "protection_level": { + "default": "MEDIUM", + "title": "Protection Level", + "type": "string" + }, + "purposes": { + "default": [], + "items": {}, + "title": "Purposes", + "type": "array" + }, + "recipient_categories": { + "default": [], + "items": {}, + "title": "Recipient Categories", + "type": "array" + }, + "responsible": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Responsible" + }, + "retention_period": { + "additionalProperties": true, + "default": {}, + "title": "Retention Period", + "type": "object" + }, + "status": { + "default": "DRAFT", + "title": "Status", + "type": "string" + }, + "structured_toms": { + "additionalProperties": true, + "default": {}, + "title": "Structured Toms", + "type": "object" + }, + "systems": { + "default": [], + "items": {}, + "title": "Systems", + "type": "array" + }, + "third_country_transfers": { + "default": [], + "items": {}, + "title": "Third Country Transfers", + "type": "array" + }, + "tom_description": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Tom Description" + }, + "updated_at": { + "anyOf": [ + { + "format": "date-time", + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Updated At" + }, + "vvt_id": { + "title": "Vvt Id", + "type": "string" + } + }, + "required": [ + "id", + "vvt_id", + "name", + "created_at" + ], + "title": "VVTActivityResponse", + "type": "object" + }, + "VVTActivityUpdate": { + "properties": { + "business_function": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Business Function" + }, + "created_by": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Created By" + }, + "data_flows": { + "anyOf": [ + { + "items": {}, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Data Flows" + }, + "data_sources": { + "anyOf": [ + { + "items": {}, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Data Sources" + }, + "data_subject_categories": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Data Subject Categories" + }, + "deployment_model": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Deployment Model" + }, + "description": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Description" + }, + "dpia_required": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "title": "Dpia Required" + }, + "dsfa_id": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Dsfa Id" + }, + "last_reviewed_at": { + "anyOf": [ + { + "format": "date-time", + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Last Reviewed At" + }, + "legal_bases": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Legal Bases" + }, + "name": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Name" + }, + "next_review_at": { + "anyOf": [ + { + "format": "date-time", + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Next Review At" + }, + "owner": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Owner" + }, + "personal_data_categories": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Personal Data Categories" + }, + "protection_level": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Protection Level" + }, + "purposes": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Purposes" + }, + "recipient_categories": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Recipient Categories" + }, + "responsible": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Responsible" + }, + "retention_period": { + "anyOf": [ + { + "additionalProperties": true, + "type": "object" + }, + { + "type": "null" + } + ], + "title": "Retention Period" + }, + "status": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Status" + }, + "structured_toms": { + "anyOf": [ + { + "additionalProperties": true, + "type": "object" + }, + { + "type": "null" + } + ], + "title": "Structured Toms" + }, + "systems": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Systems" + }, + "third_country_transfers": { + "anyOf": [ + { + "items": {}, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Third Country Transfers" + }, + "tom_description": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Tom Description" + } + }, + "title": "VVTActivityUpdate", + "type": "object" + }, + "VVTAuditLogEntry": { + "properties": { + "action": { + "title": "Action", + "type": "string" + }, + "changed_by": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Changed By" + }, + "created_at": { + "format": "date-time", + "title": "Created At", + "type": "string" + }, + "entity_id": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Entity Id" + }, + "entity_type": { + "title": "Entity Type", + "type": "string" + }, + "id": { + "title": "Id", + "type": "string" + }, + "new_values": { + "anyOf": [ + { + "additionalProperties": true, + "type": "object" + }, + { + "type": "null" + } + ], + "title": "New Values" + }, + "old_values": { + "anyOf": [ + { + "additionalProperties": true, + "type": "object" + }, + { + "type": "null" + } + ], + "title": "Old Values" + } + }, + "required": [ + "id", + "action", + "entity_type", + "created_at" + ], + "title": "VVTAuditLogEntry", + "type": "object" + }, + "VVTOrganizationResponse": { + "properties": { + "created_at": { + "format": "date-time", + "title": "Created At", + "type": "string" + }, + "dpo_contact": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Dpo Contact" + }, + "dpo_name": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Dpo Name" + }, + "employee_count": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "Employee Count" + }, + "id": { + "title": "Id", + "type": "string" + }, + "industry": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Industry" + }, + "last_review_date": { + "anyOf": [ + { + "format": "date", + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Last Review Date" + }, + "locations": { + "default": [], + "items": {}, + "title": "Locations", + "type": "array" + }, + "next_review_date": { + "anyOf": [ + { + "format": "date", + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Next Review Date" + }, + "organization_name": { + "title": "Organization Name", + "type": "string" + }, + "review_interval": { + "default": "annual", + "title": "Review Interval", + "type": "string" + }, + "updated_at": { + "anyOf": [ + { + "format": "date-time", + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Updated At" + }, + "vvt_version": { + "default": "1.0", + "title": "Vvt Version", + "type": "string" + } + }, + "required": [ + "id", + "organization_name", + "created_at" + ], + "title": "VVTOrganizationResponse", + "type": "object" + }, + "VVTOrganizationUpdate": { + "properties": { + "dpo_contact": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Dpo Contact" + }, + "dpo_name": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Dpo Name" + }, + "employee_count": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "Employee Count" + }, + "industry": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Industry" + }, + "last_review_date": { + "anyOf": [ + { + "format": "date", + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Last Review Date" + }, + "locations": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Locations" + }, + "next_review_date": { + "anyOf": [ + { + "format": "date", + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Next Review Date" + }, + "organization_name": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Organization Name" + }, + "review_interval": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Review Interval" + }, + "vvt_version": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Vvt Version" + } + }, + "title": "VVTOrganizationUpdate", + "type": "object" + }, + "VVTStatsResponse": { + "properties": { + "approved_count": { + "title": "Approved Count", + "type": "integer" + }, + "by_business_function": { + "additionalProperties": { + "type": "integer" + }, + "title": "By Business Function", + "type": "object" + }, + "by_status": { + "additionalProperties": { + "type": "integer" + }, + "title": "By Status", + "type": "object" + }, + "dpia_required_count": { + "title": "Dpia Required Count", + "type": "integer" + }, + "draft_count": { + "title": "Draft Count", + "type": "integer" + }, + "overdue_review_count": { + "default": 0, + "title": "Overdue Review Count", + "type": "integer" + }, + "third_country_count": { + "title": "Third Country Count", + "type": "integer" + }, + "total": { + "title": "Total", + "type": "integer" + } + }, + "required": [ + "total", + "by_status", + "by_business_function", + "dpia_required_count", + "third_country_count", + "draft_count", + "approved_count" + ], + "title": "VVTStatsResponse", + "type": "object" + }, + "ValidationError": { + "properties": { + "loc": { + "items": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "integer" + } + ] + }, + "title": "Location", + "type": "array" + }, + "msg": { + "title": "Message", + "type": "string" + }, + "type": { + "title": "Error Type", + "type": "string" + } + }, + "required": [ + "loc", + "msg", + "type" + ], + "title": "ValidationError", + "type": "object" + }, + "VendorConfigCreate": { + "properties": { + "category_key": { + "title": "Category Key", + "type": "string" + }, + "cookie_names": { + "default": [], + "items": { + "type": "string" + }, + "title": "Cookie Names", + "type": "array" + }, + "description_de": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Description De" + }, + "description_en": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Description En" + }, + "retention_days": { + "default": 365, + "title": "Retention Days", + "type": "integer" + }, + "vendor_name": { + "title": "Vendor Name", + "type": "string" + }, + "vendor_url": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Vendor Url" + } + }, + "required": [ + "vendor_name", + "category_key" + ], + "title": "VendorConfigCreate", + "type": "object" + }, + "VerifyIdentity": { + "properties": { + "document_ref": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Document Ref" + }, + "method": { + "title": "Method", + "type": "string" + }, + "notes": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Notes" + } + }, + "required": [ + "method" + ], + "title": "VerifyIdentity", + "type": "object" + }, + "VersionResponse": { + "properties": { + "approved_at": { + "anyOf": [ + { + "format": "date-time", + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Approved At" + }, + "approved_by": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Approved By" + }, + "content": { + "title": "Content", + "type": "string" + }, + "created_at": { + "format": "date-time", + "title": "Created At", + "type": "string" + }, + "created_by": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Created By" + }, + "document_id": { + "title": "Document Id", + "type": "string" + }, + "id": { + "title": "Id", + "type": "string" + }, + "language": { + "title": "Language", + "type": "string" + }, + "rejection_reason": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Rejection Reason" + }, + "status": { + "title": "Status", + "type": "string" + }, + "summary": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Summary" + }, + "title": { + "title": "Title", + "type": "string" + }, + "updated_at": { + "anyOf": [ + { + "format": "date-time", + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Updated At" + }, + "version": { + "title": "Version", + "type": "string" + } + }, + "required": [ + "id", + "document_id", + "version", + "language", + "title", + "content", + "summary", + "status", + "created_by", + "approved_by", + "approved_at", + "rejection_reason", + "created_at", + "updated_at" + ], + "title": "VersionResponse", + "type": "object" + }, + "compliance__api__banner_routes__ConsentCreate": { + "properties": { + "categories": { + "default": [], + "items": { + "type": "string" + }, + "title": "Categories", + "type": "array" + }, + "consent_string": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Consent String" + }, + "device_fingerprint": { + "title": "Device Fingerprint", + "type": "string" + }, + "ip_address": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Ip Address" + }, + "site_id": { + "title": "Site Id", + "type": "string" + }, + "user_agent": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "User Agent" + }, + "vendors": { + "default": [], + "items": { + "type": "string" + }, + "title": "Vendors", + "type": "array" + } + }, + "required": [ + "site_id", + "device_fingerprint" + ], + "title": "ConsentCreate", + "type": "object" + }, + "compliance__api__einwilligungen_routes__ConsentCreate": { + "properties": { + "consent_version": { + "default": "1.0", + "title": "Consent Version", + "type": "string" + }, + "data_point_id": { + "title": "Data Point Id", + "type": "string" + }, + "granted": { + "title": "Granted", + "type": "boolean" + }, + "ip_address": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Ip Address" + }, + "source": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Source" + }, + "user_agent": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "User Agent" + }, + "user_id": { + "title": "User Id", + "type": "string" + } + }, + "required": [ + "user_id", + "data_point_id", + "granted" + ], + "title": "ConsentCreate", + "type": "object" + }, + "compliance__api__email_template_routes__TemplateCreate": { + "properties": { + "category": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Category" + }, + "description": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Description" + }, + "is_active": { + "default": true, + "title": "Is Active", + "type": "boolean" + }, + "name": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Name" + }, + "template_type": { + "title": "Template Type", + "type": "string" + } + }, + "required": [ + "template_type" + ], + "title": "TemplateCreate", + "type": "object" + }, + "compliance__api__email_template_routes__VersionCreate": { + "properties": { + "body_html": { + "title": "Body Html", + "type": "string" + }, + "body_text": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Body Text" + }, + "language": { + "default": "de", + "title": "Language", + "type": "string" + }, + "subject": { + "title": "Subject", + "type": "string" + }, + "version": { + "default": "1.0", + "title": "Version", + "type": "string" + } + }, + "required": [ + "subject", + "body_html" + ], + "title": "VersionCreate", + "type": "object" + }, + "compliance__api__email_template_routes__VersionUpdate": { + "properties": { + "body_html": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Body Html" + }, + "body_text": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Body Text" + }, + "subject": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Subject" + } + }, + "title": "VersionUpdate", + "type": "object" + }, + "compliance__api__incident_routes__IncidentCreate": { + "properties": { + "affected_data_categories": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Affected Data Categories" + }, + "affected_data_subject_count": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "default": 0, + "title": "Affected Data Subject Count" + }, + "affected_systems": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Affected Systems" + }, + "category": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": "data_breach", + "title": "Category" + }, + "description": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Description" + }, + "detected_at": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Detected At" + }, + "severity": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": "medium", + "title": "Severity" + }, + "title": { + "title": "Title", + "type": "string" + } + }, + "required": [ + "title" + ], + "title": "IncidentCreate", + "type": "object" + }, + "compliance__api__incident_routes__IncidentUpdate": { + "properties": { + "affected_data_categories": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Affected Data Categories" + }, + "affected_data_subject_count": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "Affected Data Subject Count" + }, + "affected_systems": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Affected Systems" + }, + "category": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Category" + }, + "description": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Description" + }, + "severity": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Severity" + }, + "status": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Status" + }, + "title": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Title" + } + }, + "title": "IncidentUpdate", + "type": "object" + }, + "compliance__api__incident_routes__StatusUpdate": { + "properties": { + "status": { + "title": "Status", + "type": "string" + } + }, + "required": [ + "status" + ], + "title": "StatusUpdate", + "type": "object" + }, + "compliance__api__legal_document_routes__VersionCreate": { + "properties": { + "content": { + "title": "Content", + "type": "string" + }, + "created_by": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Created By" + }, + "document_id": { + "title": "Document Id", + "type": "string" + }, + "language": { + "default": "de", + "title": "Language", + "type": "string" + }, + "summary": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Summary" + }, + "title": { + "title": "Title", + "type": "string" + }, + "version": { + "title": "Version", + "type": "string" + } + }, + "required": [ + "document_id", + "version", + "title", + "content" + ], + "title": "VersionCreate", + "type": "object" + }, + "compliance__api__legal_document_routes__VersionUpdate": { + "properties": { + "content": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Content" + }, + "language": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Language" + }, + "summary": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Summary" + }, + "title": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Title" + }, + "version": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Version" + } + }, + "title": "VersionUpdate", + "type": "object" + }, + "compliance__api__notfallplan_routes__IncidentCreate": { + "properties": { + "affected_data_categories": { + "default": [], + "items": {}, + "title": "Affected Data Categories", + "type": "array" + }, + "art34_justification": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Art34 Justification" + }, + "art34_required": { + "default": false, + "title": "Art34 Required", + "type": "boolean" + }, + "description": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Description" + }, + "detected_by": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Detected By" + }, + "estimated_affected_persons": { + "default": 0, + "title": "Estimated Affected Persons", + "type": "integer" + }, + "measures": { + "default": [], + "items": {}, + "title": "Measures", + "type": "array" + }, + "severity": { + "default": "medium", + "title": "Severity", + "type": "string" + }, + "status": { + "default": "detected", + "title": "Status", + "type": "string" + }, + "title": { + "title": "Title", + "type": "string" + } + }, + "required": [ + "title" + ], + "title": "IncidentCreate", + "type": "object" + }, + "compliance__api__notfallplan_routes__IncidentUpdate": { + "properties": { + "affected_data_categories": { + "anyOf": [ + { + "items": {}, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Affected Data Categories" + }, + "art34_justification": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Art34 Justification" + }, + "art34_required": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "title": "Art34 Required" + }, + "closed_at": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Closed At" + }, + "closed_by": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Closed By" + }, + "description": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Description" + }, + "detected_by": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Detected By" + }, + "estimated_affected_persons": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "Estimated Affected Persons" + }, + "lessons_learned": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Lessons Learned" + }, + "measures": { + "anyOf": [ + { + "items": {}, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Measures" + }, + "notified_affected_at": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Notified Affected At" + }, + "reported_to_authority_at": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Reported To Authority At" + }, + "severity": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Severity" + }, + "status": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Status" + }, + "title": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Title" + } + }, + "title": "IncidentUpdate", + "type": "object" + }, + "compliance__api__notfallplan_routes__TemplateCreate": { + "properties": { + "content": { + "title": "Content", + "type": "string" + }, + "title": { + "title": "Title", + "type": "string" + }, + "type": { + "default": "art33", + "title": "Type", + "type": "string" + } + }, + "required": [ + "title", + "content" + ], + "title": "TemplateCreate", + "type": "object" + } + } + }, + "info": { + "description": "GDPR/DSGVO Compliance, Consent Management, Data Subject Requests, and Regulatory Compliance Framework", + "title": "BreakPilot Compliance Backend", + "version": "1.0.0" + }, + "openapi": "3.1.0", + "paths": { + "/api/compliance/ai/systems": { + "get": { + "description": "List all registered AI systems.", + "operationId": "list_ai_systems_api_compliance_ai_systems_get", + "parameters": [ + { + "description": "Filter by classification", + "in": "query", + "name": "classification", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "Filter by classification", + "title": "Classification" + } + }, + { + "description": "Filter by status", + "in": "query", + "name": "status", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "Filter by status", + "title": "Status" + } + }, + { + "description": "Filter by sector", + "in": "query", + "name": "sector", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "Filter by sector", + "title": "Sector" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AISystemListResponse" + } + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "List Ai Systems", + "tags": [ + "compliance", + "compliance-ai" + ] + }, + "post": { + "description": "Register a new AI system.", + "operationId": "create_ai_system_api_compliance_ai_systems_post", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AISystemCreate" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AISystemResponse" + } + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Create Ai System", + "tags": [ + "compliance", + "compliance-ai" + ] + } + }, + "/api/compliance/ai/systems/{system_id}": { + "delete": { + "description": "Delete an AI system.", + "operationId": "delete_ai_system_api_compliance_ai_systems__system_id__delete", + "parameters": [ + { + "in": "path", + "name": "system_id", + "required": true, + "schema": { + "title": "System Id", + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Delete Ai System", + "tags": [ + "compliance", + "compliance-ai" + ] + }, + "get": { + "description": "Get a specific AI system by ID.", + "operationId": "get_ai_system_api_compliance_ai_systems__system_id__get", + "parameters": [ + { + "in": "path", + "name": "system_id", + "required": true, + "schema": { + "title": "System Id", + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AISystemResponse" + } + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Get Ai System", + "tags": [ + "compliance", + "compliance-ai" + ] + }, + "put": { + "description": "Update an AI system.", + "operationId": "update_ai_system_api_compliance_ai_systems__system_id__put", + "parameters": [ + { + "in": "path", + "name": "system_id", + "required": true, + "schema": { + "title": "System Id", + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AISystemUpdate" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AISystemResponse" + } + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Update Ai System", + "tags": [ + "compliance", + "compliance-ai" + ] + } + }, + "/api/compliance/ai/systems/{system_id}/assess": { + "post": { + "description": "Run AI Act risk assessment for an AI system.", + "operationId": "assess_ai_system_api_compliance_ai_systems__system_id__assess_post", + "parameters": [ + { + "in": "path", + "name": "system_id", + "required": true, + "schema": { + "title": "System Id", + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AISystemResponse" + } + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Assess Ai System", + "tags": [ + "compliance", + "compliance-ai" + ] + } + }, + "/api/compliance/audit/checklist/{session_id}": { + "get": { + "description": "Get the audit checklist for a session with pagination.\n\nReturns requirements with their current sign-off status.", + "operationId": "get_audit_checklist_api_compliance_audit_checklist__session_id__get", + "parameters": [ + { + "in": "path", + "name": "session_id", + "required": true, + "schema": { + "title": "Session Id", + "type": "string" + } + }, + { + "in": "query", + "name": "page", + "required": false, + "schema": { + "default": 1, + "minimum": 1, + "title": "Page", + "type": "integer" + } + }, + { + "in": "query", + "name": "page_size", + "required": false, + "schema": { + "default": 50, + "maximum": 200, + "minimum": 1, + "title": "Page Size", + "type": "integer" + } + }, + { + "in": "query", + "name": "status_filter", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Status Filter" + } + }, + { + "in": "query", + "name": "regulation_filter", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Regulation Filter" + } + }, + { + "in": "query", + "name": "search", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Search" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AuditChecklistResponse" + } + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Get Audit Checklist", + "tags": [ + "compliance", + "compliance-audit" + ] + } + }, + "/api/compliance/audit/checklist/{session_id}/items/{requirement_id}": { + "get": { + "description": "Get the current sign-off status for a specific requirement.", + "operationId": "get_sign_off_api_compliance_audit_checklist__session_id__items__requirement_id__get", + "parameters": [ + { + "in": "path", + "name": "session_id", + "required": true, + "schema": { + "title": "Session Id", + "type": "string" + } + }, + { + "in": "path", + "name": "requirement_id", + "required": true, + "schema": { + "title": "Requirement Id", + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SignOffResponse" + } + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Get Sign Off", + "tags": [ + "compliance", + "compliance-audit" + ] + } + }, + "/api/compliance/audit/checklist/{session_id}/items/{requirement_id}/sign-off": { + "put": { + "description": "Sign off on a specific requirement in an audit session.\n\nIf sign=True, creates a digital signature (SHA-256 hash).", + "operationId": "sign_off_item_api_compliance_audit_checklist__session_id__items__requirement_id__sign_off_put", + "parameters": [ + { + "in": "path", + "name": "session_id", + "required": true, + "schema": { + "title": "Session Id", + "type": "string" + } + }, + { + "in": "path", + "name": "requirement_id", + "required": true, + "schema": { + "title": "Requirement Id", + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SignOffRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SignOffResponse" + } + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Sign Off Item", + "tags": [ + "compliance", + "compliance-audit" + ] + } + }, + "/api/compliance/audit/sessions": { + "get": { + "description": "List all audit sessions, optionally filtered by status.", + "operationId": "list_audit_sessions_api_compliance_audit_sessions_get", + "parameters": [ + { + "in": "query", + "name": "status", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Status" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "items": { + "$ref": "#/components/schemas/AuditSessionSummary" + }, + "title": "Response List Audit Sessions Api Compliance Audit Sessions Get", + "type": "array" + } + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "List Audit Sessions", + "tags": [ + "compliance", + "compliance-audit" + ] + }, + "post": { + "description": "Create a new audit session for structured compliance reviews.\n\nAn audit session groups requirements for systematic review by an auditor.", + "operationId": "create_audit_session_api_compliance_audit_sessions_post", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CreateAuditSessionRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AuditSessionResponse" + } + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Create Audit Session", + "tags": [ + "compliance", + "compliance-audit" + ] + } + }, + "/api/compliance/audit/sessions/{session_id}": { + "delete": { + "description": "Delete an audit session and all its sign-offs.\n\nOnly draft sessions can be deleted.", + "operationId": "delete_audit_session_api_compliance_audit_sessions__session_id__delete", + "parameters": [ + { + "in": "path", + "name": "session_id", + "required": true, + "schema": { + "title": "Session Id", + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Delete Audit Session", + "tags": [ + "compliance", + "compliance-audit" + ] + }, + "get": { + "description": "Get detailed information about a specific audit session.", + "operationId": "get_audit_session_api_compliance_audit_sessions__session_id__get", + "parameters": [ + { + "in": "path", + "name": "session_id", + "required": true, + "schema": { + "title": "Session Id", + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AuditSessionDetailResponse" + } + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Get Audit Session", + "tags": [ + "compliance", + "compliance-audit" + ] + } + }, + "/api/compliance/audit/sessions/{session_id}/archive": { + "put": { + "description": "Archive a completed audit session.", + "operationId": "archive_audit_session_api_compliance_audit_sessions__session_id__archive_put", + "parameters": [ + { + "in": "path", + "name": "session_id", + "required": true, + "schema": { + "title": "Session Id", + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Archive Audit Session", + "tags": [ + "compliance", + "compliance-audit" + ] + } + }, + "/api/compliance/audit/sessions/{session_id}/complete": { + "put": { + "description": "Complete an audit session (change status from in_progress to completed).", + "operationId": "complete_audit_session_api_compliance_audit_sessions__session_id__complete_put", + "parameters": [ + { + "in": "path", + "name": "session_id", + "required": true, + "schema": { + "title": "Session Id", + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Complete Audit Session", + "tags": [ + "compliance", + "compliance-audit" + ] + } + }, + "/api/compliance/audit/sessions/{session_id}/report/pdf": { + "get": { + "description": "Generate a PDF report for an audit session.\n\nParameters:\n- session_id: The audit session ID\n- language: Output language ('de' or 'en'), default 'de'\n- include_signatures: Include digital signature verification section\n\nReturns:\n- PDF file as streaming response", + "operationId": "generate_audit_pdf_report_api_compliance_audit_sessions__session_id__report_pdf_get", + "parameters": [ + { + "in": "path", + "name": "session_id", + "required": true, + "schema": { + "title": "Session Id", + "type": "string" + } + }, + { + "in": "query", + "name": "language", + "required": false, + "schema": { + "default": "de", + "pattern": "^(de|en)$", + "title": "Language", + "type": "string" + } + }, + { + "in": "query", + "name": "include_signatures", + "required": false, + "schema": { + "default": true, + "title": "Include Signatures", + "type": "boolean" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Generate Audit Pdf Report", + "tags": [ + "compliance", + "compliance-audit" + ] + } + }, + "/api/compliance/audit/sessions/{session_id}/start": { + "put": { + "description": "Start an audit session (change status from draft to in_progress).", + "operationId": "start_audit_session_api_compliance_audit_sessions__session_id__start_put", + "parameters": [ + { + "in": "path", + "name": "session_id", + "required": true, + "schema": { + "title": "Session Id", + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Start Audit Session", + "tags": [ + "compliance", + "compliance-audit" + ] + } + }, + "/api/compliance/banner/admin/categories/{category_id}": { + "delete": { + "description": "Delete a category.", + "operationId": "delete_category_api_compliance_banner_admin_categories__category_id__delete", + "parameters": [ + { + "in": "path", + "name": "category_id", + "required": true, + "schema": { + "title": "Category Id", + "type": "string" + } + } + ], + "responses": { + "204": { + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Delete Category", + "tags": [ + "compliance", + "compliance-banner" + ] + } + }, + "/api/compliance/banner/admin/sites": { + "get": { + "description": "List all site configurations.", + "operationId": "list_site_configs_api_compliance_banner_admin_sites_get", + "parameters": [ + { + "in": "header", + "name": "X-Tenant-ID", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "X-Tenant-Id" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "List Site Configs", + "tags": [ + "compliance", + "compliance-banner" + ] + }, + "post": { + "description": "Create a site configuration.", + "operationId": "create_site_config_api_compliance_banner_admin_sites_post", + "parameters": [ + { + "in": "header", + "name": "X-Tenant-ID", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "X-Tenant-Id" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SiteConfigCreate" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Create Site Config", + "tags": [ + "compliance", + "compliance-banner" + ] + } + }, + "/api/compliance/banner/admin/sites/{site_id}": { + "delete": { + "description": "Delete a site configuration.", + "operationId": "delete_site_config_api_compliance_banner_admin_sites__site_id__delete", + "parameters": [ + { + "in": "path", + "name": "site_id", + "required": true, + "schema": { + "title": "Site Id", + "type": "string" + } + }, + { + "in": "header", + "name": "X-Tenant-ID", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "X-Tenant-Id" + } + } + ], + "responses": { + "204": { + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Delete Site Config", + "tags": [ + "compliance", + "compliance-banner" + ] + }, + "put": { + "description": "Update a site configuration.", + "operationId": "update_site_config_api_compliance_banner_admin_sites__site_id__put", + "parameters": [ + { + "in": "path", + "name": "site_id", + "required": true, + "schema": { + "title": "Site Id", + "type": "string" + } + }, + { + "in": "header", + "name": "X-Tenant-ID", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "X-Tenant-Id" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SiteConfigUpdate" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Update Site Config", + "tags": [ + "compliance", + "compliance-banner" + ] + } + }, + "/api/compliance/banner/admin/sites/{site_id}/categories": { + "get": { + "description": "List categories for a site.", + "operationId": "list_categories_api_compliance_banner_admin_sites__site_id__categories_get", + "parameters": [ + { + "in": "path", + "name": "site_id", + "required": true, + "schema": { + "title": "Site Id", + "type": "string" + } + }, + { + "in": "header", + "name": "X-Tenant-ID", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "X-Tenant-Id" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "List Categories", + "tags": [ + "compliance", + "compliance-banner" + ] + }, + "post": { + "description": "Create a category for a site.", + "operationId": "create_category_api_compliance_banner_admin_sites__site_id__categories_post", + "parameters": [ + { + "in": "path", + "name": "site_id", + "required": true, + "schema": { + "title": "Site Id", + "type": "string" + } + }, + { + "in": "header", + "name": "X-Tenant-ID", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "X-Tenant-Id" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CategoryConfigCreate" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Create Category", + "tags": [ + "compliance", + "compliance-banner" + ] + } + }, + "/api/compliance/banner/admin/sites/{site_id}/vendors": { + "get": { + "description": "List vendors for a site.", + "operationId": "list_vendors_api_compliance_banner_admin_sites__site_id__vendors_get", + "parameters": [ + { + "in": "path", + "name": "site_id", + "required": true, + "schema": { + "title": "Site Id", + "type": "string" + } + }, + { + "in": "header", + "name": "X-Tenant-ID", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "X-Tenant-Id" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "List Vendors", + "tags": [ + "compliance", + "compliance-banner" + ] + }, + "post": { + "description": "Create a vendor for a site.", + "operationId": "create_vendor_api_compliance_banner_admin_sites__site_id__vendors_post", + "parameters": [ + { + "in": "path", + "name": "site_id", + "required": true, + "schema": { + "title": "Site Id", + "type": "string" + } + }, + { + "in": "header", + "name": "X-Tenant-ID", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "X-Tenant-Id" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/VendorConfigCreate" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Create Vendor", + "tags": [ + "compliance", + "compliance-banner" + ] + } + }, + "/api/compliance/banner/admin/stats/{site_id}": { + "get": { + "description": "Consent statistics per site.", + "operationId": "get_site_stats_api_compliance_banner_admin_stats__site_id__get", + "parameters": [ + { + "in": "path", + "name": "site_id", + "required": true, + "schema": { + "title": "Site Id", + "type": "string" + } + }, + { + "in": "header", + "name": "X-Tenant-ID", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "X-Tenant-Id" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Get Site Stats", + "tags": [ + "compliance", + "compliance-banner" + ] + } + }, + "/api/compliance/banner/admin/vendors/{vendor_id}": { + "delete": { + "description": "Delete a vendor.", + "operationId": "delete_vendor_api_compliance_banner_admin_vendors__vendor_id__delete", + "parameters": [ + { + "in": "path", + "name": "vendor_id", + "required": true, + "schema": { + "title": "Vendor Id", + "type": "string" + } + } + ], + "responses": { + "204": { + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Delete Vendor", + "tags": [ + "compliance", + "compliance-banner" + ] + } + }, + "/api/compliance/banner/config/{site_id}": { + "get": { + "description": "Load site configuration for banner display.", + "operationId": "get_site_config_api_compliance_banner_config__site_id__get", + "parameters": [ + { + "in": "path", + "name": "site_id", + "required": true, + "schema": { + "title": "Site Id", + "type": "string" + } + }, + { + "in": "header", + "name": "X-Tenant-ID", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "X-Tenant-Id" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Get Site Config", + "tags": [ + "compliance", + "compliance-banner" + ] + } + }, + "/api/compliance/banner/consent": { + "get": { + "description": "Retrieve consent for a device.", + "operationId": "get_consent_api_compliance_banner_consent_get", + "parameters": [ + { + "in": "query", + "name": "site_id", + "required": true, + "schema": { + "title": "Site Id", + "type": "string" + } + }, + { + "in": "query", + "name": "device_fingerprint", + "required": true, + "schema": { + "title": "Device Fingerprint", + "type": "string" + } + }, + { + "in": "header", + "name": "X-Tenant-ID", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "X-Tenant-Id" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Get Consent", + "tags": [ + "compliance", + "compliance-banner" + ] + }, + "post": { + "description": "Record device consent (upsert by site_id + device_fingerprint).", + "operationId": "record_consent_api_compliance_banner_consent_post", + "parameters": [ + { + "in": "header", + "name": "X-Tenant-ID", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "X-Tenant-Id" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/compliance__api__banner_routes__ConsentCreate" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Record Consent", + "tags": [ + "compliance", + "compliance-banner" + ] + } + }, + "/api/compliance/banner/consent/export": { + "get": { + "description": "DSGVO export of all consent data for a device.", + "operationId": "export_consent_api_compliance_banner_consent_export_get", + "parameters": [ + { + "in": "query", + "name": "site_id", + "required": true, + "schema": { + "title": "Site Id", + "type": "string" + } + }, + { + "in": "query", + "name": "device_fingerprint", + "required": true, + "schema": { + "title": "Device Fingerprint", + "type": "string" + } + }, + { + "in": "header", + "name": "X-Tenant-ID", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "X-Tenant-Id" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Export Consent", + "tags": [ + "compliance", + "compliance-banner" + ] + } + }, + "/api/compliance/banner/consent/{consent_id}": { + "delete": { + "description": "Withdraw a banner consent.", + "operationId": "withdraw_consent_api_compliance_banner_consent__consent_id__delete", + "parameters": [ + { + "in": "path", + "name": "consent_id", + "required": true, + "schema": { + "title": "Consent Id", + "type": "string" + } + }, + { + "in": "header", + "name": "X-Tenant-ID", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "X-Tenant-Id" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Withdraw Consent", + "tags": [ + "compliance", + "compliance-banner" + ] + } + }, + "/api/compliance/change-requests": { + "get": { + "description": "List change requests with optional filters.", + "operationId": "list_change_requests_api_compliance_change_requests_get", + "parameters": [ + { + "in": "query", + "name": "status", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Status" + } + }, + { + "in": "query", + "name": "target_document_type", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Target Document Type" + } + }, + { + "in": "query", + "name": "priority", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Priority" + } + }, + { + "in": "query", + "name": "skip", + "required": false, + "schema": { + "default": 0, + "minimum": 0, + "title": "Skip", + "type": "integer" + } + }, + { + "in": "query", + "name": "limit", + "required": false, + "schema": { + "default": 100, + "maximum": 500, + "minimum": 1, + "title": "Limit", + "type": "integer" + } + }, + { + "in": "query", + "name": "tenant_id", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Tenant Id" + } + }, + { + "in": "header", + "name": "X-Tenant-ID", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "X-Tenant-Id" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "List Change Requests", + "tags": [ + "compliance", + "change-requests" + ] + }, + "post": { + "description": "Create a change request manually.", + "operationId": "create_change_request_api_compliance_change_requests_post", + "parameters": [ + { + "in": "query", + "name": "tenant_id", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Tenant Id" + } + }, + { + "in": "header", + "name": "X-User-ID", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "X-User-Id" + } + }, + { + "in": "header", + "name": "X-Tenant-ID", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "X-Tenant-Id" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ChangeRequestCreate" + } + } + }, + "required": true + }, + "responses": { + "201": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Create Change Request", + "tags": [ + "compliance", + "change-requests" + ] + } + }, + "/api/compliance/change-requests/stats": { + "get": { + "description": "Summary counts for change requests.", + "operationId": "get_stats_api_compliance_change_requests_stats_get", + "parameters": [ + { + "in": "query", + "name": "tenant_id", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Tenant Id" + } + }, + { + "in": "header", + "name": "X-Tenant-ID", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "X-Tenant-Id" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Get Stats", + "tags": [ + "compliance", + "change-requests" + ] + } + }, + "/api/compliance/change-requests/{cr_id}": { + "delete": { + "description": "Soft-delete a change request.", + "operationId": "delete_change_request_api_compliance_change_requests__cr_id__delete", + "parameters": [ + { + "in": "path", + "name": "cr_id", + "required": true, + "schema": { + "title": "Cr Id", + "type": "string" + } + }, + { + "in": "query", + "name": "tenant_id", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Tenant Id" + } + }, + { + "in": "header", + "name": "X-User-ID", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "X-User-Id" + } + }, + { + "in": "header", + "name": "X-Tenant-ID", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "X-Tenant-Id" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Delete Change Request", + "tags": [ + "compliance", + "change-requests" + ] + }, + "get": { + "description": "Get change request detail with audit log.", + "operationId": "get_change_request_api_compliance_change_requests__cr_id__get", + "parameters": [ + { + "in": "path", + "name": "cr_id", + "required": true, + "schema": { + "title": "Cr Id", + "type": "string" + } + }, + { + "in": "query", + "name": "tenant_id", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Tenant Id" + } + }, + { + "in": "header", + "name": "X-Tenant-ID", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "X-Tenant-Id" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Get Change Request", + "tags": [ + "compliance", + "change-requests" + ] + } + }, + "/api/compliance/change-requests/{cr_id}/accept": { + "post": { + "description": "Accept a change request \u2192 creates a new document version.", + "operationId": "accept_change_request_api_compliance_change_requests__cr_id__accept_post", + "parameters": [ + { + "in": "path", + "name": "cr_id", + "required": true, + "schema": { + "title": "Cr Id", + "type": "string" + } + }, + { + "in": "query", + "name": "tenant_id", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Tenant Id" + } + }, + { + "in": "header", + "name": "X-User-ID", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "X-User-Id" + } + }, + { + "in": "header", + "name": "X-Tenant-ID", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "X-Tenant-Id" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Accept Change Request", + "tags": [ + "compliance", + "change-requests" + ] + } + }, + "/api/compliance/change-requests/{cr_id}/edit": { + "post": { + "description": "Edit the proposal, then auto-accept.", + "operationId": "edit_change_request_api_compliance_change_requests__cr_id__edit_post", + "parameters": [ + { + "in": "path", + "name": "cr_id", + "required": true, + "schema": { + "title": "Cr Id", + "type": "string" + } + }, + { + "in": "query", + "name": "tenant_id", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Tenant Id" + } + }, + { + "in": "header", + "name": "X-User-ID", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "X-User-Id" + } + }, + { + "in": "header", + "name": "X-Tenant-ID", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "X-Tenant-Id" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ChangeRequestEdit" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Edit Change Request", + "tags": [ + "compliance", + "change-requests" + ] + } + }, + "/api/compliance/change-requests/{cr_id}/reject": { + "post": { + "description": "Reject a change request with reason.", + "operationId": "reject_change_request_api_compliance_change_requests__cr_id__reject_post", + "parameters": [ + { + "in": "path", + "name": "cr_id", + "required": true, + "schema": { + "title": "Cr Id", + "type": "string" + } + }, + { + "in": "query", + "name": "tenant_id", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Tenant Id" + } + }, + { + "in": "header", + "name": "X-User-ID", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "X-User-Id" + } + }, + { + "in": "header", + "name": "X-Tenant-ID", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "X-Tenant-Id" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ChangeRequestReject" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Reject Change Request", + "tags": [ + "compliance", + "change-requests" + ] + } + }, + "/api/compliance/compliance/extract-requirements-from-rag": { + "post": { + "description": "Search all RAG collections for Pr\u00fcfaspekte / audit criteria and create\nRequirement entries in the compliance DB.\n\n- Deduplicates by (regulation_code, article) \u2014 safe to call multiple times.\n- Auto-creates Regulation stubs for previously unknown regulation_codes.\n- Use `dry_run=true` to preview results without any DB writes.\n- Use `regulation_codes` to restrict to specific regulations (e.g. [\"BSI-TR-03161-1\"]).", + "operationId": "extract_requirements_from_rag_api_compliance_compliance_extract_requirements_from_rag_post", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExtractionRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExtractionResponse" + } + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Extract Requirements From Rag", + "tags": [ + "compliance", + "extraction" + ] + } + }, + "/api/compliance/consent-templates": { + "get": { + "description": "List all email templates for a tenant.", + "operationId": "list_consent_templates_api_compliance_consent_templates_get", + "parameters": [ + { + "in": "header", + "name": "X-Tenant-ID", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "X-Tenant-Id" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "List Consent Templates", + "tags": [ + "compliance", + "consent-templates" + ] + }, + "post": { + "description": "Create a new email template.", + "operationId": "create_consent_template_api_compliance_consent_templates_post", + "parameters": [ + { + "in": "header", + "name": "X-Tenant-ID", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "X-Tenant-Id" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ConsentTemplateCreate" + } + } + }, + "required": true + }, + "responses": { + "201": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Create Consent Template", + "tags": [ + "compliance", + "consent-templates" + ] + } + }, + "/api/compliance/consent-templates/{template_id}": { + "delete": { + "description": "Delete an email template.", + "operationId": "delete_consent_template_api_compliance_consent_templates__template_id__delete", + "parameters": [ + { + "in": "path", + "name": "template_id", + "required": true, + "schema": { + "title": "Template Id", + "type": "string" + } + }, + { + "in": "header", + "name": "X-Tenant-ID", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "X-Tenant-Id" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Delete Consent Template", + "tags": [ + "compliance", + "consent-templates" + ] + }, + "put": { + "description": "Update an existing email template.", + "operationId": "update_consent_template_api_compliance_consent_templates__template_id__put", + "parameters": [ + { + "in": "path", + "name": "template_id", + "required": true, + "schema": { + "title": "Template Id", + "type": "string" + } + }, + { + "in": "header", + "name": "X-Tenant-ID", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "X-Tenant-Id" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ConsentTemplateUpdate" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Update Consent Template", + "tags": [ + "compliance", + "consent-templates" + ] + } + }, + "/api/compliance/controls": { + "get": { + "description": "List all controls with optional filters.", + "operationId": "list_controls_api_compliance_controls_get", + "parameters": [ + { + "in": "query", + "name": "domain", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Domain" + } + }, + { + "in": "query", + "name": "status", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Status" + } + }, + { + "in": "query", + "name": "is_automated", + "required": false, + "schema": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "title": "Is Automated" + } + }, + { + "in": "query", + "name": "search", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Search" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ControlListResponse" + } + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "List Controls", + "tags": [ + "compliance" + ] + } + }, + "/api/compliance/controls/by-domain/{domain}": { + "get": { + "description": "Get controls by domain.", + "operationId": "get_controls_by_domain_api_compliance_controls_by_domain__domain__get", + "parameters": [ + { + "in": "path", + "name": "domain", + "required": true, + "schema": { + "title": "Domain", + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ControlListResponse" + } + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Get Controls By Domain", + "tags": [ + "compliance" + ] + } + }, + "/api/compliance/controls/paginated": { + "get": { + "description": "List controls with pagination and eager-loaded relationships.\n\nThis endpoint is optimized for large datasets with:\n- Eager loading to prevent N+1 queries\n- Server-side pagination\n- Full-text search support", + "operationId": "list_controls_paginated_api_compliance_controls_paginated_get", + "parameters": [ + { + "description": "Page number", + "in": "query", + "name": "page", + "required": false, + "schema": { + "default": 1, + "description": "Page number", + "minimum": 1, + "title": "Page", + "type": "integer" + } + }, + { + "description": "Items per page", + "in": "query", + "name": "page_size", + "required": false, + "schema": { + "default": 50, + "description": "Items per page", + "maximum": 500, + "minimum": 1, + "title": "Page Size", + "type": "integer" + } + }, + { + "description": "Filter by domain", + "in": "query", + "name": "domain", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "Filter by domain", + "title": "Domain" + } + }, + { + "description": "Filter by status", + "in": "query", + "name": "status", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "Filter by status", + "title": "Status" + } + }, + { + "description": "Filter by automation", + "in": "query", + "name": "is_automated", + "required": false, + "schema": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "description": "Filter by automation", + "title": "Is Automated" + } + }, + { + "description": "Search in title/description", + "in": "query", + "name": "search", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "Search in title/description", + "title": "Search" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PaginatedControlResponse" + } + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "List Controls Paginated", + "tags": [ + "compliance" + ] + } + }, + "/api/compliance/controls/{control_id}": { + "get": { + "description": "Get a specific control by control_id.", + "operationId": "get_control_api_compliance_controls__control_id__get", + "parameters": [ + { + "in": "path", + "name": "control_id", + "required": true, + "schema": { + "title": "Control Id", + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ControlResponse" + } + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Get Control", + "tags": [ + "compliance" + ] + }, + "put": { + "description": "Update a control.", + "operationId": "update_control_api_compliance_controls__control_id__put", + "parameters": [ + { + "in": "path", + "name": "control_id", + "required": true, + "schema": { + "title": "Control Id", + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ControlUpdate" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ControlResponse" + } + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Update Control", + "tags": [ + "compliance" + ] + } + }, + "/api/compliance/controls/{control_id}/review": { + "put": { + "description": "Mark a control as reviewed with new status.", + "operationId": "review_control_api_compliance_controls__control_id__review_put", + "parameters": [ + { + "in": "path", + "name": "control_id", + "required": true, + "schema": { + "title": "Control Id", + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ControlReviewRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ControlResponse" + } + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Review Control", + "tags": [ + "compliance" + ] + } + }, + "/api/compliance/create-indexes": { + "post": { + "description": "Create additional performance indexes for large datasets.\n\nThese indexes are optimized for:\n- Pagination queries (1000+ requirements)\n- Full-text search\n- Filtering by status/priority", + "operationId": "create_performance_indexes_api_compliance_create_indexes_post", + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + } + }, + "summary": "Create Performance Indexes", + "tags": [ + "compliance" + ] + } + }, + "/api/compliance/dashboard": { + "get": { + "description": "Get compliance dashboard statistics.", + "operationId": "get_dashboard_api_compliance_dashboard_get", + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DashboardResponse" + } + } + }, + "description": "Successful Response" + } + }, + "summary": "Get Dashboard", + "tags": [ + "compliance", + "compliance-dashboard" + ] + } + }, + "/api/compliance/dashboard/executive": { + "get": { + "description": "Get executive dashboard for managers and decision makers.\n\nProvides:\n- Traffic light status (green/yellow/red)\n- Overall compliance score with trend\n- Top 5 open risks\n- Upcoming deadlines (control reviews, evidence expiry)\n- Team workload distribution", + "operationId": "get_executive_dashboard_api_compliance_dashboard_executive_get", + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExecutiveDashboardResponse" + } + } + }, + "description": "Successful Response" + } + }, + "summary": "Get Executive Dashboard", + "tags": [ + "compliance", + "compliance-dashboard" + ] + } + }, + "/api/compliance/dashboard/trend": { + "get": { + "description": "Get compliance score trend over time.\n\nReturns monthly compliance scores for trend visualization.", + "operationId": "get_compliance_trend_api_compliance_dashboard_trend_get", + "parameters": [ + { + "description": "Number of months to include", + "in": "query", + "name": "months", + "required": false, + "schema": { + "default": 12, + "description": "Number of months to include", + "maximum": 24, + "minimum": 1, + "title": "Months", + "type": "integer" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Get Compliance Trend", + "tags": [ + "compliance", + "compliance-dashboard" + ] + } + }, + "/api/compliance/dsfa": { + "get": { + "description": "Liste aller DSFAs f\u00fcr einen Tenant.", + "operationId": "list_dsfas_api_compliance_dsfa_get", + "parameters": [ + { + "in": "query", + "name": "tenant_id", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Tenant Id" + } + }, + { + "in": "query", + "name": "status", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Status" + } + }, + { + "in": "query", + "name": "risk_level", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Risk Level" + } + }, + { + "in": "query", + "name": "skip", + "required": false, + "schema": { + "default": 0, + "minimum": 0, + "title": "Skip", + "type": "integer" + } + }, + { + "in": "query", + "name": "limit", + "required": false, + "schema": { + "default": 100, + "maximum": 500, + "minimum": 1, + "title": "Limit", + "type": "integer" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "List Dsfas", + "tags": [ + "compliance", + "compliance-dsfa" + ] + }, + "post": { + "description": "Neue DSFA erstellen.", + "operationId": "create_dsfa_api_compliance_dsfa_post", + "parameters": [ + { + "in": "query", + "name": "tenant_id", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Tenant Id" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DSFACreate" + } + } + }, + "required": true + }, + "responses": { + "201": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Create Dsfa", + "tags": [ + "compliance", + "compliance-dsfa" + ] + } + }, + "/api/compliance/dsfa/audit-log": { + "get": { + "description": "DSFA Audit-Trail.", + "operationId": "get_audit_log_api_compliance_dsfa_audit_log_get", + "parameters": [ + { + "in": "query", + "name": "tenant_id", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Tenant Id" + } + }, + { + "in": "query", + "name": "limit", + "required": false, + "schema": { + "default": 50, + "maximum": 500, + "minimum": 1, + "title": "Limit", + "type": "integer" + } + }, + { + "in": "query", + "name": "offset", + "required": false, + "schema": { + "default": 0, + "minimum": 0, + "title": "Offset", + "type": "integer" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Get Audit Log", + "tags": [ + "compliance", + "compliance-dsfa" + ] + } + }, + "/api/compliance/dsfa/by-assessment/{assessment_id}": { + "get": { + "description": "Stub: Get DSFA by linked UCCA assessment ID.", + "operationId": "get_by_assessment_api_compliance_dsfa_by_assessment__assessment_id__get", + "parameters": [ + { + "in": "path", + "name": "assessment_id", + "required": true, + "schema": { + "title": "Assessment Id", + "type": "string" + } + } + ], + "responses": { + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + }, + "501": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + } + }, + "summary": "Get By Assessment", + "tags": [ + "compliance", + "compliance-dsfa" + ] + } + }, + "/api/compliance/dsfa/export/csv": { + "get": { + "description": "Export all DSFAs as CSV.", + "operationId": "export_dsfas_csv_api_compliance_dsfa_export_csv_get", + "parameters": [ + { + "in": "query", + "name": "tenant_id", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Tenant Id" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Export Dsfas Csv", + "tags": [ + "compliance", + "compliance-dsfa" + ] + } + }, + "/api/compliance/dsfa/from-assessment/{assessment_id}": { + "post": { + "description": "Stub: Create DSFA from UCCA assessment. Requires cross-service communication.", + "operationId": "create_from_assessment_api_compliance_dsfa_from_assessment__assessment_id__post", + "parameters": [ + { + "in": "path", + "name": "assessment_id", + "required": true, + "schema": { + "title": "Assessment Id", + "type": "string" + } + } + ], + "responses": { + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + }, + "501": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + } + }, + "summary": "Create From Assessment", + "tags": [ + "compliance", + "compliance-dsfa" + ] + } + }, + "/api/compliance/dsfa/stats": { + "get": { + "description": "Z\u00e4hler nach Status und Risiko-Level.", + "operationId": "get_stats_api_compliance_dsfa_stats_get", + "parameters": [ + { + "in": "query", + "name": "tenant_id", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Tenant Id" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Get Stats", + "tags": [ + "compliance", + "compliance-dsfa" + ] + } + }, + "/api/compliance/dsfa/{dsfa_id}": { + "delete": { + "description": "DSFA l\u00f6schen (Art. 17 DSGVO).", + "operationId": "delete_dsfa_api_compliance_dsfa__dsfa_id__delete", + "parameters": [ + { + "in": "path", + "name": "dsfa_id", + "required": true, + "schema": { + "title": "Dsfa Id", + "type": "string" + } + }, + { + "in": "query", + "name": "tenant_id", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Tenant Id" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Delete Dsfa", + "tags": [ + "compliance", + "compliance-dsfa" + ] + }, + "get": { + "description": "Einzelne DSFA abrufen.", + "operationId": "get_dsfa_api_compliance_dsfa__dsfa_id__get", + "parameters": [ + { + "in": "path", + "name": "dsfa_id", + "required": true, + "schema": { + "title": "Dsfa Id", + "type": "string" + } + }, + { + "in": "query", + "name": "tenant_id", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Tenant Id" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Get Dsfa", + "tags": [ + "compliance", + "compliance-dsfa" + ] + }, + "put": { + "description": "DSFA aktualisieren.", + "operationId": "update_dsfa_api_compliance_dsfa__dsfa_id__put", + "parameters": [ + { + "in": "path", + "name": "dsfa_id", + "required": true, + "schema": { + "title": "Dsfa Id", + "type": "string" + } + }, + { + "in": "query", + "name": "tenant_id", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Tenant Id" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DSFAUpdate" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Update Dsfa", + "tags": [ + "compliance", + "compliance-dsfa" + ] + } + }, + "/api/compliance/dsfa/{dsfa_id}/approve": { + "post": { + "description": "Approve or reject a DSFA (DPO/CISO action).", + "operationId": "approve_dsfa_api_compliance_dsfa__dsfa_id__approve_post", + "parameters": [ + { + "in": "path", + "name": "dsfa_id", + "required": true, + "schema": { + "title": "Dsfa Id", + "type": "string" + } + }, + { + "in": "query", + "name": "tenant_id", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Tenant Id" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DSFAApproveRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Approve Dsfa", + "tags": [ + "compliance", + "compliance-dsfa" + ] + } + }, + "/api/compliance/dsfa/{dsfa_id}/export": { + "get": { + "description": "Export a single DSFA as JSON.", + "operationId": "export_dsfa_json_api_compliance_dsfa__dsfa_id__export_get", + "parameters": [ + { + "in": "path", + "name": "dsfa_id", + "required": true, + "schema": { + "title": "Dsfa Id", + "type": "string" + } + }, + { + "in": "query", + "name": "format", + "required": false, + "schema": { + "default": "json", + "title": "Format", + "type": "string" + } + }, + { + "in": "query", + "name": "tenant_id", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Tenant Id" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Export Dsfa Json", + "tags": [ + "compliance", + "compliance-dsfa" + ] + } + }, + "/api/compliance/dsfa/{dsfa_id}/sections/{section_number}": { + "put": { + "description": "Update a specific DSFA section (1-8).", + "operationId": "update_section_api_compliance_dsfa__dsfa_id__sections__section_number__put", + "parameters": [ + { + "in": "path", + "name": "dsfa_id", + "required": true, + "schema": { + "title": "Dsfa Id", + "type": "string" + } + }, + { + "in": "path", + "name": "section_number", + "required": true, + "schema": { + "title": "Section Number", + "type": "integer" + } + }, + { + "in": "query", + "name": "tenant_id", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Tenant Id" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DSFASectionUpdate" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Update Section", + "tags": [ + "compliance", + "compliance-dsfa" + ] + } + }, + "/api/compliance/dsfa/{dsfa_id}/status": { + "patch": { + "description": "Schnell-Statuswechsel.", + "operationId": "update_dsfa_status_api_compliance_dsfa__dsfa_id__status_patch", + "parameters": [ + { + "in": "path", + "name": "dsfa_id", + "required": true, + "schema": { + "title": "Dsfa Id", + "type": "string" + } + }, + { + "in": "query", + "name": "tenant_id", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Tenant Id" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DSFAStatusUpdate" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Update Dsfa Status", + "tags": [ + "compliance", + "compliance-dsfa" + ] + } + }, + "/api/compliance/dsfa/{dsfa_id}/submit-for-review": { + "post": { + "description": "Submit a DSFA for DPO review (draft \u2192 in-review).", + "operationId": "submit_for_review_api_compliance_dsfa__dsfa_id__submit_for_review_post", + "parameters": [ + { + "in": "path", + "name": "dsfa_id", + "required": true, + "schema": { + "title": "Dsfa Id", + "type": "string" + } + }, + { + "in": "query", + "name": "tenant_id", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Tenant Id" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Submit For Review", + "tags": [ + "compliance", + "compliance-dsfa" + ] + } + }, + "/api/compliance/dsfa/{dsfa_id}/versions": { + "get": { + "description": "List all versions for a DSFA.", + "operationId": "list_dsfa_versions_api_compliance_dsfa__dsfa_id__versions_get", + "parameters": [ + { + "in": "path", + "name": "dsfa_id", + "required": true, + "schema": { + "title": "Dsfa Id", + "type": "string" + } + }, + { + "in": "query", + "name": "tenant_id", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Tenant Id" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "List Dsfa Versions", + "tags": [ + "compliance", + "compliance-dsfa" + ] + } + }, + "/api/compliance/dsfa/{dsfa_id}/versions/{version_number}": { + "get": { + "description": "Get a specific DSFA version with full snapshot.", + "operationId": "get_dsfa_version_api_compliance_dsfa__dsfa_id__versions__version_number__get", + "parameters": [ + { + "in": "path", + "name": "dsfa_id", + "required": true, + "schema": { + "title": "Dsfa Id", + "type": "string" + } + }, + { + "in": "path", + "name": "version_number", + "required": true, + "schema": { + "title": "Version Number", + "type": "integer" + } + }, + { + "in": "query", + "name": "tenant_id", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Tenant Id" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Get Dsfa Version", + "tags": [ + "compliance", + "compliance-dsfa" + ] + } + }, + "/api/compliance/dsr": { + "get": { + "description": "Liste aller DSRs mit Filtern.", + "operationId": "list_dsrs_api_compliance_dsr_get", + "parameters": [ + { + "in": "query", + "name": "status", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Status" + } + }, + { + "in": "query", + "name": "request_type", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Request Type" + } + }, + { + "in": "query", + "name": "assigned_to", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Assigned To" + } + }, + { + "in": "query", + "name": "priority", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Priority" + } + }, + { + "in": "query", + "name": "overdue_only", + "required": false, + "schema": { + "default": false, + "title": "Overdue Only", + "type": "boolean" + } + }, + { + "in": "query", + "name": "search", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Search" + } + }, + { + "in": "query", + "name": "from_date", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "From Date" + } + }, + { + "in": "query", + "name": "to_date", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "To Date" + } + }, + { + "in": "query", + "name": "limit", + "required": false, + "schema": { + "default": 20, + "maximum": 100, + "minimum": 1, + "title": "Limit", + "type": "integer" + } + }, + { + "in": "query", + "name": "offset", + "required": false, + "schema": { + "default": 0, + "minimum": 0, + "title": "Offset", + "type": "integer" + } + }, + { + "in": "header", + "name": "X-Tenant-ID", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "X-Tenant-Id" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "List Dsrs", + "tags": [ + "compliance", + "compliance-dsr" + ] + }, + "post": { + "description": "Erstellt eine neue Betroffenenanfrage.", + "operationId": "create_dsr_api_compliance_dsr_post", + "parameters": [ + { + "in": "header", + "name": "X-Tenant-ID", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "X-Tenant-Id" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DSRCreate" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Create Dsr", + "tags": [ + "compliance", + "compliance-dsr" + ] + } + }, + "/api/compliance/dsr/deadlines/process": { + "post": { + "description": "Verarbeitet Fristen und markiert ueberfaellige DSRs.", + "operationId": "process_deadlines_api_compliance_dsr_deadlines_process_post", + "parameters": [ + { + "in": "header", + "name": "X-Tenant-ID", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "X-Tenant-Id" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Process Deadlines", + "tags": [ + "compliance", + "compliance-dsr" + ] + } + }, + "/api/compliance/dsr/export": { + "get": { + "description": "Exportiert alle DSRs als CSV oder JSON.", + "operationId": "export_dsrs_api_compliance_dsr_export_get", + "parameters": [ + { + "in": "query", + "name": "format", + "required": false, + "schema": { + "default": "csv", + "pattern": "^(csv|json)$", + "title": "Format", + "type": "string" + } + }, + { + "in": "header", + "name": "X-Tenant-ID", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "X-Tenant-Id" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Export Dsrs", + "tags": [ + "compliance", + "compliance-dsr" + ] + } + }, + "/api/compliance/dsr/stats": { + "get": { + "description": "Dashboard-Statistiken fuer DSRs.", + "operationId": "get_dsr_stats_api_compliance_dsr_stats_get", + "parameters": [ + { + "in": "header", + "name": "X-Tenant-ID", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "X-Tenant-Id" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Get Dsr Stats", + "tags": [ + "compliance", + "compliance-dsr" + ] + } + }, + "/api/compliance/dsr/template-versions/{version_id}/publish": { + "put": { + "description": "Veroeffentlicht eine Vorlagen-Version.", + "operationId": "publish_template_version_api_compliance_dsr_template_versions__version_id__publish_put", + "parameters": [ + { + "in": "path", + "name": "version_id", + "required": true, + "schema": { + "title": "Version Id", + "type": "string" + } + }, + { + "in": "header", + "name": "X-Tenant-ID", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "X-Tenant-Id" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Publish Template Version", + "tags": [ + "compliance", + "compliance-dsr" + ] + } + }, + "/api/compliance/dsr/templates": { + "get": { + "description": "Gibt alle DSR-Vorlagen zurueck.", + "operationId": "get_templates_api_compliance_dsr_templates_get", + "parameters": [ + { + "in": "header", + "name": "X-Tenant-ID", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "X-Tenant-Id" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Get Templates", + "tags": [ + "compliance", + "compliance-dsr" + ] + } + }, + "/api/compliance/dsr/templates/published": { + "get": { + "description": "Gibt publizierte Vorlagen zurueck.", + "operationId": "get_published_templates_api_compliance_dsr_templates_published_get", + "parameters": [ + { + "in": "query", + "name": "request_type", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Request Type" + } + }, + { + "in": "query", + "name": "language", + "required": false, + "schema": { + "default": "de", + "title": "Language", + "type": "string" + } + }, + { + "in": "header", + "name": "X-Tenant-ID", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "X-Tenant-Id" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Get Published Templates", + "tags": [ + "compliance", + "compliance-dsr" + ] + } + }, + "/api/compliance/dsr/templates/{template_id}/versions": { + "get": { + "description": "Gibt alle Versionen einer Vorlage zurueck.", + "operationId": "get_template_versions_api_compliance_dsr_templates__template_id__versions_get", + "parameters": [ + { + "in": "path", + "name": "template_id", + "required": true, + "schema": { + "title": "Template Id", + "type": "string" + } + }, + { + "in": "header", + "name": "X-Tenant-ID", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "X-Tenant-Id" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Get Template Versions", + "tags": [ + "compliance", + "compliance-dsr" + ] + }, + "post": { + "description": "Erstellt eine neue Version einer Vorlage.", + "operationId": "create_template_version_api_compliance_dsr_templates__template_id__versions_post", + "parameters": [ + { + "in": "path", + "name": "template_id", + "required": true, + "schema": { + "title": "Template Id", + "type": "string" + } + }, + { + "in": "header", + "name": "X-Tenant-ID", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "X-Tenant-Id" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CreateTemplateVersion" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Create Template Version", + "tags": [ + "compliance", + "compliance-dsr" + ] + } + }, + "/api/compliance/dsr/{dsr_id}": { + "delete": { + "description": "Storniert eine DSR (Soft Delete \u2192 Status cancelled).", + "operationId": "delete_dsr_api_compliance_dsr__dsr_id__delete", + "parameters": [ + { + "in": "path", + "name": "dsr_id", + "required": true, + "schema": { + "title": "Dsr Id", + "type": "string" + } + }, + { + "in": "header", + "name": "X-Tenant-ID", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "X-Tenant-Id" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Delete Dsr", + "tags": [ + "compliance", + "compliance-dsr" + ] + }, + "get": { + "description": "Detail einer Betroffenenanfrage.", + "operationId": "get_dsr_api_compliance_dsr__dsr_id__get", + "parameters": [ + { + "in": "path", + "name": "dsr_id", + "required": true, + "schema": { + "title": "Dsr Id", + "type": "string" + } + }, + { + "in": "header", + "name": "X-Tenant-ID", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "X-Tenant-Id" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Get Dsr", + "tags": [ + "compliance", + "compliance-dsr" + ] + }, + "put": { + "description": "Aktualisiert eine Betroffenenanfrage.", + "operationId": "update_dsr_api_compliance_dsr__dsr_id__put", + "parameters": [ + { + "in": "path", + "name": "dsr_id", + "required": true, + "schema": { + "title": "Dsr Id", + "type": "string" + } + }, + { + "in": "header", + "name": "X-Tenant-ID", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "X-Tenant-Id" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DSRUpdate" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Update Dsr", + "tags": [ + "compliance", + "compliance-dsr" + ] + } + }, + "/api/compliance/dsr/{dsr_id}/assign": { + "post": { + "description": "Weist eine DSR einem Bearbeiter zu.", + "operationId": "assign_dsr_api_compliance_dsr__dsr_id__assign_post", + "parameters": [ + { + "in": "path", + "name": "dsr_id", + "required": true, + "schema": { + "title": "Dsr Id", + "type": "string" + } + }, + { + "in": "header", + "name": "X-Tenant-ID", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "X-Tenant-Id" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AssignRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Assign Dsr", + "tags": [ + "compliance", + "compliance-dsr" + ] + } + }, + "/api/compliance/dsr/{dsr_id}/communicate": { + "post": { + "description": "Sendet eine Kommunikation.", + "operationId": "send_communication_api_compliance_dsr__dsr_id__communicate_post", + "parameters": [ + { + "in": "path", + "name": "dsr_id", + "required": true, + "schema": { + "title": "Dsr Id", + "type": "string" + } + }, + { + "in": "header", + "name": "X-Tenant-ID", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "X-Tenant-Id" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SendCommunication" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Send Communication", + "tags": [ + "compliance", + "compliance-dsr" + ] + } + }, + "/api/compliance/dsr/{dsr_id}/communications": { + "get": { + "description": "Gibt die Kommunikationshistorie zurueck.", + "operationId": "get_communications_api_compliance_dsr__dsr_id__communications_get", + "parameters": [ + { + "in": "path", + "name": "dsr_id", + "required": true, + "schema": { + "title": "Dsr Id", + "type": "string" + } + }, + { + "in": "header", + "name": "X-Tenant-ID", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "X-Tenant-Id" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Get Communications", + "tags": [ + "compliance", + "compliance-dsr" + ] + } + }, + "/api/compliance/dsr/{dsr_id}/complete": { + "post": { + "description": "Schliesst eine DSR erfolgreich ab.", + "operationId": "complete_dsr_api_compliance_dsr__dsr_id__complete_post", + "parameters": [ + { + "in": "path", + "name": "dsr_id", + "required": true, + "schema": { + "title": "Dsr Id", + "type": "string" + } + }, + { + "in": "header", + "name": "X-Tenant-ID", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "X-Tenant-Id" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CompleteDSR" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Complete Dsr", + "tags": [ + "compliance", + "compliance-dsr" + ] + } + }, + "/api/compliance/dsr/{dsr_id}/exception-checks": { + "get": { + "description": "Gibt die Art. 17(3) Ausnahmepruefungen zurueck.", + "operationId": "get_exception_checks_api_compliance_dsr__dsr_id__exception_checks_get", + "parameters": [ + { + "in": "path", + "name": "dsr_id", + "required": true, + "schema": { + "title": "Dsr Id", + "type": "string" + } + }, + { + "in": "header", + "name": "X-Tenant-ID", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "X-Tenant-Id" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Get Exception Checks", + "tags": [ + "compliance", + "compliance-dsr" + ] + } + }, + "/api/compliance/dsr/{dsr_id}/exception-checks/init": { + "post": { + "description": "Initialisiert die Art. 17(3) Ausnahmepruefungen fuer eine Loeschanfrage.", + "operationId": "init_exception_checks_api_compliance_dsr__dsr_id__exception_checks_init_post", + "parameters": [ + { + "in": "path", + "name": "dsr_id", + "required": true, + "schema": { + "title": "Dsr Id", + "type": "string" + } + }, + { + "in": "header", + "name": "X-Tenant-ID", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "X-Tenant-Id" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Init Exception Checks", + "tags": [ + "compliance", + "compliance-dsr" + ] + } + }, + "/api/compliance/dsr/{dsr_id}/exception-checks/{check_id}": { + "put": { + "description": "Aktualisiert eine einzelne Ausnahmepruefung.", + "operationId": "update_exception_check_api_compliance_dsr__dsr_id__exception_checks__check_id__put", + "parameters": [ + { + "in": "path", + "name": "dsr_id", + "required": true, + "schema": { + "title": "Dsr Id", + "type": "string" + } + }, + { + "in": "path", + "name": "check_id", + "required": true, + "schema": { + "title": "Check Id", + "type": "string" + } + }, + { + "in": "header", + "name": "X-Tenant-ID", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "X-Tenant-Id" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UpdateExceptionCheck" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Update Exception Check", + "tags": [ + "compliance", + "compliance-dsr" + ] + } + }, + "/api/compliance/dsr/{dsr_id}/extend": { + "post": { + "description": "Verlaengert die Bearbeitungsfrist (Art. 12 Abs. 3 DSGVO).", + "operationId": "extend_deadline_api_compliance_dsr__dsr_id__extend_post", + "parameters": [ + { + "in": "path", + "name": "dsr_id", + "required": true, + "schema": { + "title": "Dsr Id", + "type": "string" + } + }, + { + "in": "header", + "name": "X-Tenant-ID", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "X-Tenant-Id" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExtendDeadline" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Extend Deadline", + "tags": [ + "compliance", + "compliance-dsr" + ] + } + }, + "/api/compliance/dsr/{dsr_id}/history": { + "get": { + "description": "Gibt die Status-Historie zurueck.", + "operationId": "get_history_api_compliance_dsr__dsr_id__history_get", + "parameters": [ + { + "in": "path", + "name": "dsr_id", + "required": true, + "schema": { + "title": "Dsr Id", + "type": "string" + } + }, + { + "in": "header", + "name": "X-Tenant-ID", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "X-Tenant-Id" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Get History", + "tags": [ + "compliance", + "compliance-dsr" + ] + } + }, + "/api/compliance/dsr/{dsr_id}/reject": { + "post": { + "description": "Lehnt eine DSR mit Rechtsgrundlage ab.", + "operationId": "reject_dsr_api_compliance_dsr__dsr_id__reject_post", + "parameters": [ + { + "in": "path", + "name": "dsr_id", + "required": true, + "schema": { + "title": "Dsr Id", + "type": "string" + } + }, + { + "in": "header", + "name": "X-Tenant-ID", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "X-Tenant-Id" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RejectDSR" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Reject Dsr", + "tags": [ + "compliance", + "compliance-dsr" + ] + } + }, + "/api/compliance/dsr/{dsr_id}/status": { + "post": { + "description": "Aendert den Status einer DSR.", + "operationId": "change_status_api_compliance_dsr__dsr_id__status_post", + "parameters": [ + { + "in": "path", + "name": "dsr_id", + "required": true, + "schema": { + "title": "Dsr Id", + "type": "string" + } + }, + { + "in": "header", + "name": "X-Tenant-ID", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "X-Tenant-Id" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/StatusChange" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Change Status", + "tags": [ + "compliance", + "compliance-dsr" + ] + } + }, + "/api/compliance/dsr/{dsr_id}/verify-identity": { + "post": { + "description": "Verifiziert die Identitaet des Antragstellers.", + "operationId": "verify_identity_api_compliance_dsr__dsr_id__verify_identity_post", + "parameters": [ + { + "in": "path", + "name": "dsr_id", + "required": true, + "schema": { + "title": "Dsr Id", + "type": "string" + } + }, + { + "in": "header", + "name": "X-Tenant-ID", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "X-Tenant-Id" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/VerifyIdentity" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Verify Identity", + "tags": [ + "compliance", + "compliance-dsr" + ] + } + }, + "/api/compliance/einwilligungen/catalog": { + "get": { + "description": "Load the data point catalog for a tenant.", + "operationId": "get_catalog_api_compliance_einwilligungen_catalog_get", + "parameters": [ + { + "in": "header", + "name": "X-Tenant-ID", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "X-Tenant-Id" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Get Catalog", + "tags": [ + "compliance", + "einwilligungen" + ] + }, + "put": { + "description": "Create or update the data point catalog for a tenant.", + "operationId": "upsert_catalog_api_compliance_einwilligungen_catalog_put", + "parameters": [ + { + "in": "header", + "name": "X-Tenant-ID", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "X-Tenant-Id" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CatalogUpsert" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Upsert Catalog", + "tags": [ + "compliance", + "einwilligungen" + ] + } + }, + "/api/compliance/einwilligungen/company": { + "get": { + "description": "Load company information for DSI generation.", + "operationId": "get_company_api_compliance_einwilligungen_company_get", + "parameters": [ + { + "in": "header", + "name": "X-Tenant-ID", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "X-Tenant-Id" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Get Company", + "tags": [ + "compliance", + "einwilligungen" + ] + }, + "put": { + "description": "Create or update company information for a tenant.", + "operationId": "upsert_company_api_compliance_einwilligungen_company_put", + "parameters": [ + { + "in": "header", + "name": "X-Tenant-ID", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "X-Tenant-Id" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CompanyUpsert" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Upsert Company", + "tags": [ + "compliance", + "einwilligungen" + ] + } + }, + "/api/compliance/einwilligungen/consents": { + "get": { + "description": "List consent records with optional filters and pagination.", + "operationId": "list_consents_api_compliance_einwilligungen_consents_get", + "parameters": [ + { + "in": "query", + "name": "user_id", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "User Id" + } + }, + { + "in": "query", + "name": "data_point_id", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Data Point Id" + } + }, + { + "in": "query", + "name": "granted", + "required": false, + "schema": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "title": "Granted" + } + }, + { + "in": "query", + "name": "limit", + "required": false, + "schema": { + "default": 50, + "maximum": 500, + "minimum": 1, + "title": "Limit", + "type": "integer" + } + }, + { + "in": "query", + "name": "offset", + "required": false, + "schema": { + "default": 0, + "minimum": 0, + "title": "Offset", + "type": "integer" + } + }, + { + "in": "header", + "name": "X-Tenant-ID", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "X-Tenant-Id" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "List Consents", + "tags": [ + "compliance", + "einwilligungen" + ] + }, + "post": { + "description": "Record a new consent entry.", + "operationId": "create_consent_api_compliance_einwilligungen_consents_post", + "parameters": [ + { + "in": "header", + "name": "X-Tenant-ID", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "X-Tenant-Id" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/compliance__api__einwilligungen_routes__ConsentCreate" + } + } + }, + "required": true + }, + "responses": { + "201": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Create Consent", + "tags": [ + "compliance", + "einwilligungen" + ] + } + }, + "/api/compliance/einwilligungen/consents/stats": { + "get": { + "description": "Get consent statistics for a tenant.", + "operationId": "get_consent_stats_api_compliance_einwilligungen_consents_stats_get", + "parameters": [ + { + "in": "header", + "name": "X-Tenant-ID", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "X-Tenant-Id" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Get Consent Stats", + "tags": [ + "compliance", + "einwilligungen" + ] + } + }, + "/api/compliance/einwilligungen/consents/{consent_id}/history": { + "get": { + "description": "Get the change history for a specific consent record.", + "operationId": "get_consent_history_api_compliance_einwilligungen_consents__consent_id__history_get", + "parameters": [ + { + "in": "path", + "name": "consent_id", + "required": true, + "schema": { + "title": "Consent Id", + "type": "string" + } + }, + { + "in": "header", + "name": "X-Tenant-ID", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "X-Tenant-Id" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Get Consent History", + "tags": [ + "compliance", + "einwilligungen" + ] + } + }, + "/api/compliance/einwilligungen/consents/{consent_id}/revoke": { + "put": { + "description": "Revoke an active consent.", + "operationId": "revoke_consent_api_compliance_einwilligungen_consents__consent_id__revoke_put", + "parameters": [ + { + "in": "path", + "name": "consent_id", + "required": true, + "schema": { + "title": "Consent Id", + "type": "string" + } + }, + { + "in": "header", + "name": "X-Tenant-ID", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "X-Tenant-Id" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Revoke Consent", + "tags": [ + "compliance", + "einwilligungen" + ] + } + }, + "/api/compliance/einwilligungen/cookies": { + "get": { + "description": "Load cookie banner configuration for a tenant.", + "operationId": "get_cookies_api_compliance_einwilligungen_cookies_get", + "parameters": [ + { + "in": "header", + "name": "X-Tenant-ID", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "X-Tenant-Id" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Get Cookies", + "tags": [ + "compliance", + "einwilligungen" + ] + }, + "put": { + "description": "Create or update cookie banner configuration for a tenant.", + "operationId": "upsert_cookies_api_compliance_einwilligungen_cookies_put", + "parameters": [ + { + "in": "header", + "name": "X-Tenant-ID", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "X-Tenant-Id" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CookiesUpsert" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Upsert Cookies", + "tags": [ + "compliance", + "einwilligungen" + ] + } + }, + "/api/compliance/email-templates": { + "get": { + "description": "Alle Templates mit letzter publizierter Version.", + "operationId": "list_templates_api_compliance_email_templates_get", + "parameters": [ + { + "in": "query", + "name": "category", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Category" + } + }, + { + "in": "header", + "name": "X-Tenant-ID", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "X-Tenant-Id" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "List Templates", + "tags": [ + "compliance", + "compliance-email-templates" + ] + }, + "post": { + "description": "Template erstellen.", + "operationId": "create_template_api_compliance_email_templates_post", + "parameters": [ + { + "in": "header", + "name": "X-Tenant-ID", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "X-Tenant-Id" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/compliance__api__email_template_routes__TemplateCreate" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Create Template", + "tags": [ + "compliance", + "compliance-email-templates" + ] + } + }, + "/api/compliance/email-templates/default/{template_type}": { + "get": { + "description": "Default-Content fuer einen Template-Typ.", + "operationId": "get_default_content_api_compliance_email_templates_default__template_type__get", + "parameters": [ + { + "in": "path", + "name": "template_type", + "required": true, + "schema": { + "title": "Template Type", + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Get Default Content", + "tags": [ + "compliance", + "compliance-email-templates" + ] + } + }, + "/api/compliance/email-templates/initialize": { + "post": { + "description": "Default-Templates fuer einen Tenant initialisieren.", + "operationId": "initialize_defaults_api_compliance_email_templates_initialize_post", + "parameters": [ + { + "in": "header", + "name": "X-Tenant-ID", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "X-Tenant-Id" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Initialize Defaults", + "tags": [ + "compliance", + "compliance-email-templates" + ] + } + }, + "/api/compliance/email-templates/logs": { + "get": { + "description": "Send-Logs (paginiert).", + "operationId": "get_send_logs_api_compliance_email_templates_logs_get", + "parameters": [ + { + "in": "query", + "name": "limit", + "required": false, + "schema": { + "default": 20, + "maximum": 100, + "minimum": 1, + "title": "Limit", + "type": "integer" + } + }, + { + "in": "query", + "name": "offset", + "required": false, + "schema": { + "default": 0, + "minimum": 0, + "title": "Offset", + "type": "integer" + } + }, + { + "in": "query", + "name": "template_type", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Template Type" + } + }, + { + "in": "header", + "name": "X-Tenant-ID", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "X-Tenant-Id" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Get Send Logs", + "tags": [ + "compliance", + "compliance-email-templates" + ] + } + }, + "/api/compliance/email-templates/settings": { + "get": { + "description": "Globale E-Mail-Einstellungen laden.", + "operationId": "get_settings_api_compliance_email_templates_settings_get", + "parameters": [ + { + "in": "header", + "name": "X-Tenant-ID", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "X-Tenant-Id" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Get Settings", + "tags": [ + "compliance", + "compliance-email-templates" + ] + }, + "put": { + "description": "Globale E-Mail-Einstellungen speichern.", + "operationId": "update_settings_api_compliance_email_templates_settings_put", + "parameters": [ + { + "in": "header", + "name": "X-Tenant-ID", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "X-Tenant-Id" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SettingsUpdate" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Update Settings", + "tags": [ + "compliance", + "compliance-email-templates" + ] + } + }, + "/api/compliance/email-templates/stats": { + "get": { + "description": "Statistiken ueber E-Mail-Templates.", + "operationId": "get_stats_api_compliance_email_templates_stats_get", + "parameters": [ + { + "in": "header", + "name": "X-Tenant-ID", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "X-Tenant-Id" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Get Stats", + "tags": [ + "compliance", + "compliance-email-templates" + ] + } + }, + "/api/compliance/email-templates/types": { + "get": { + "description": "Gibt alle verfuegbaren Template-Typen mit Variablen zurueck.", + "operationId": "get_template_types_api_compliance_email_templates_types_get", + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + } + }, + "summary": "Get Template Types", + "tags": [ + "compliance", + "compliance-email-templates" + ] + } + }, + "/api/compliance/email-templates/versions": { + "post": { + "description": "Neue Version erstellen (via query param template_id).", + "operationId": "create_version_api_compliance_email_templates_versions_post", + "parameters": [ + { + "in": "query", + "name": "template_id", + "required": true, + "schema": { + "title": "Template Id", + "type": "string" + } + }, + { + "in": "header", + "name": "X-Tenant-ID", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "X-Tenant-Id" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/compliance__api__email_template_routes__VersionCreate" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Create Version", + "tags": [ + "compliance", + "compliance-email-templates" + ] + } + }, + "/api/compliance/email-templates/versions/{version_id}": { + "get": { + "description": "Version-Detail.", + "operationId": "get_version_api_compliance_email_templates_versions__version_id__get", + "parameters": [ + { + "in": "path", + "name": "version_id", + "required": true, + "schema": { + "title": "Version Id", + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Get Version", + "tags": [ + "compliance", + "compliance-email-templates" + ] + }, + "put": { + "description": "Draft aktualisieren.", + "operationId": "update_version_api_compliance_email_templates_versions__version_id__put", + "parameters": [ + { + "in": "path", + "name": "version_id", + "required": true, + "schema": { + "title": "Version Id", + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/compliance__api__email_template_routes__VersionUpdate" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Update Version", + "tags": [ + "compliance", + "compliance-email-templates" + ] + } + }, + "/api/compliance/email-templates/versions/{version_id}/approve": { + "post": { + "description": "Genehmigen.", + "operationId": "approve_version_api_compliance_email_templates_versions__version_id__approve_post", + "parameters": [ + { + "in": "path", + "name": "version_id", + "required": true, + "schema": { + "title": "Version Id", + "type": "string" + } + }, + { + "in": "query", + "name": "comment", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Comment" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Approve Version", + "tags": [ + "compliance", + "compliance-email-templates" + ] + } + }, + "/api/compliance/email-templates/versions/{version_id}/preview": { + "post": { + "description": "Vorschau mit Test-Variablen.", + "operationId": "preview_version_api_compliance_email_templates_versions__version_id__preview_post", + "parameters": [ + { + "in": "path", + "name": "version_id", + "required": true, + "schema": { + "title": "Version Id", + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PreviewRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Preview Version", + "tags": [ + "compliance", + "compliance-email-templates" + ] + } + }, + "/api/compliance/email-templates/versions/{version_id}/publish": { + "post": { + "description": "Publizieren.", + "operationId": "publish_version_api_compliance_email_templates_versions__version_id__publish_post", + "parameters": [ + { + "in": "path", + "name": "version_id", + "required": true, + "schema": { + "title": "Version Id", + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Publish Version", + "tags": [ + "compliance", + "compliance-email-templates" + ] + } + }, + "/api/compliance/email-templates/versions/{version_id}/reject": { + "post": { + "description": "Ablehnen.", + "operationId": "reject_version_api_compliance_email_templates_versions__version_id__reject_post", + "parameters": [ + { + "in": "path", + "name": "version_id", + "required": true, + "schema": { + "title": "Version Id", + "type": "string" + } + }, + { + "in": "query", + "name": "comment", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Comment" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Reject Version", + "tags": [ + "compliance", + "compliance-email-templates" + ] + } + }, + "/api/compliance/email-templates/versions/{version_id}/send-test": { + "post": { + "description": "Test-E-Mail senden (Simulation \u2014 loggt nur).", + "operationId": "send_test_email_api_compliance_email_templates_versions__version_id__send_test_post", + "parameters": [ + { + "in": "path", + "name": "version_id", + "required": true, + "schema": { + "title": "Version Id", + "type": "string" + } + }, + { + "in": "header", + "name": "X-Tenant-ID", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "X-Tenant-Id" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SendTestRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Send Test Email", + "tags": [ + "compliance", + "compliance-email-templates" + ] + } + }, + "/api/compliance/email-templates/versions/{version_id}/submit": { + "post": { + "description": "Zur Pruefung einreichen.", + "operationId": "submit_version_api_compliance_email_templates_versions__version_id__submit_post", + "parameters": [ + { + "in": "path", + "name": "version_id", + "required": true, + "schema": { + "title": "Version Id", + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Submit Version", + "tags": [ + "compliance", + "compliance-email-templates" + ] + } + }, + "/api/compliance/email-templates/{template_id}": { + "get": { + "description": "Template-Detail.", + "operationId": "get_template_api_compliance_email_templates__template_id__get", + "parameters": [ + { + "in": "path", + "name": "template_id", + "required": true, + "schema": { + "title": "Template Id", + "type": "string" + } + }, + { + "in": "header", + "name": "X-Tenant-ID", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "X-Tenant-Id" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Get Template", + "tags": [ + "compliance", + "compliance-email-templates" + ] + } + }, + "/api/compliance/email-templates/{template_id}/versions": { + "get": { + "description": "Versionen eines Templates.", + "operationId": "get_versions_api_compliance_email_templates__template_id__versions_get", + "parameters": [ + { + "in": "path", + "name": "template_id", + "required": true, + "schema": { + "title": "Template Id", + "type": "string" + } + }, + { + "in": "header", + "name": "X-Tenant-ID", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "X-Tenant-Id" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Get Versions", + "tags": [ + "compliance", + "compliance-email-templates" + ] + }, + "post": { + "description": "Neue Version fuer ein Template erstellen.", + "operationId": "create_version_for_template_api_compliance_email_templates__template_id__versions_post", + "parameters": [ + { + "in": "path", + "name": "template_id", + "required": true, + "schema": { + "title": "Template Id", + "type": "string" + } + }, + { + "in": "header", + "name": "X-Tenant-ID", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "X-Tenant-Id" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/compliance__api__email_template_routes__VersionCreate" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Create Version For Template", + "tags": [ + "compliance", + "compliance-email-templates" + ] + } + }, + "/api/compliance/escalations": { + "get": { + "description": "List escalations with optional filters.", + "operationId": "list_escalations_api_compliance_escalations_get", + "parameters": [ + { + "in": "query", + "name": "status", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Status" + } + }, + { + "in": "query", + "name": "priority", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Priority" + } + }, + { + "in": "query", + "name": "limit", + "required": false, + "schema": { + "default": 50, + "maximum": 500, + "minimum": 1, + "title": "Limit", + "type": "integer" + } + }, + { + "in": "query", + "name": "offset", + "required": false, + "schema": { + "default": 0, + "minimum": 0, + "title": "Offset", + "type": "integer" + } + }, + { + "in": "query", + "name": "tenant_id", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Tenant Id" + } + }, + { + "in": "header", + "name": "X-Tenant-ID", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "X-Tenant-Id" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "List Escalations", + "tags": [ + "compliance", + "escalations" + ] + }, + "post": { + "description": "Create a new escalation.", + "operationId": "create_escalation_api_compliance_escalations_post", + "parameters": [ + { + "in": "query", + "name": "tenant_id", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Tenant Id" + } + }, + { + "in": "header", + "name": "x-user-id", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "X-User-Id" + } + }, + { + "in": "header", + "name": "X-Tenant-ID", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "X-Tenant-Id" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/EscalationCreate" + } + } + }, + "required": true + }, + "responses": { + "201": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Create Escalation", + "tags": [ + "compliance", + "escalations" + ] + } + }, + "/api/compliance/escalations/stats": { + "get": { + "description": "Return counts per status and priority.", + "operationId": "get_stats_api_compliance_escalations_stats_get", + "parameters": [ + { + "in": "query", + "name": "tenant_id", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Tenant Id" + } + }, + { + "in": "header", + "name": "X-Tenant-ID", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "X-Tenant-Id" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Get Stats", + "tags": [ + "compliance", + "escalations" + ] + } + }, + "/api/compliance/escalations/{escalation_id}": { + "delete": { + "description": "Delete an escalation.", + "operationId": "delete_escalation_api_compliance_escalations__escalation_id__delete", + "parameters": [ + { + "in": "path", + "name": "escalation_id", + "required": true, + "schema": { + "title": "Escalation Id", + "type": "string" + } + }, + { + "in": "query", + "name": "tenant_id", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Tenant Id" + } + }, + { + "in": "header", + "name": "X-Tenant-ID", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "X-Tenant-Id" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Delete Escalation", + "tags": [ + "compliance", + "escalations" + ] + }, + "get": { + "description": "Get a single escalation by ID.", + "operationId": "get_escalation_api_compliance_escalations__escalation_id__get", + "parameters": [ + { + "in": "path", + "name": "escalation_id", + "required": true, + "schema": { + "title": "Escalation Id", + "type": "string" + } + }, + { + "in": "query", + "name": "tenant_id", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Tenant Id" + } + }, + { + "in": "header", + "name": "X-Tenant-ID", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "X-Tenant-Id" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Get Escalation", + "tags": [ + "compliance", + "escalations" + ] + }, + "put": { + "description": "Update an escalation's fields.", + "operationId": "update_escalation_api_compliance_escalations__escalation_id__put", + "parameters": [ + { + "in": "path", + "name": "escalation_id", + "required": true, + "schema": { + "title": "Escalation Id", + "type": "string" + } + }, + { + "in": "query", + "name": "tenant_id", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Tenant Id" + } + }, + { + "in": "header", + "name": "X-Tenant-ID", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "X-Tenant-Id" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/EscalationUpdate" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Update Escalation", + "tags": [ + "compliance", + "escalations" + ] + } + }, + "/api/compliance/escalations/{escalation_id}/status": { + "put": { + "description": "Update only the status of an escalation.", + "operationId": "update_status_api_compliance_escalations__escalation_id__status_put", + "parameters": [ + { + "in": "path", + "name": "escalation_id", + "required": true, + "schema": { + "title": "Escalation Id", + "type": "string" + } + }, + { + "in": "query", + "name": "tenant_id", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Tenant Id" + } + }, + { + "in": "header", + "name": "X-Tenant-ID", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "X-Tenant-Id" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/EscalationStatusUpdate" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Update Status", + "tags": [ + "compliance", + "escalations" + ] + } + }, + "/api/compliance/evidence": { + "get": { + "description": "List evidence with optional filters and pagination.", + "operationId": "list_evidence_api_compliance_evidence_get", + "parameters": [ + { + "in": "query", + "name": "control_id", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Control Id" + } + }, + { + "in": "query", + "name": "evidence_type", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Evidence Type" + } + }, + { + "in": "query", + "name": "status", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Status" + } + }, + { + "description": "Page number (1-based)", + "in": "query", + "name": "page", + "required": false, + "schema": { + "anyOf": [ + { + "minimum": 1, + "type": "integer" + }, + { + "type": "null" + } + ], + "description": "Page number (1-based)", + "title": "Page" + } + }, + { + "description": "Items per page", + "in": "query", + "name": "limit", + "required": false, + "schema": { + "anyOf": [ + { + "maximum": 500, + "minimum": 1, + "type": "integer" + }, + { + "type": "null" + } + ], + "description": "Items per page", + "title": "Limit" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/EvidenceListResponse" + } + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "List Evidence", + "tags": [ + "compliance", + "compliance-evidence" + ] + }, + "post": { + "description": "Create new evidence record.", + "operationId": "create_evidence_api_compliance_evidence_post", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/EvidenceCreate" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/EvidenceResponse" + } + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Create Evidence", + "tags": [ + "compliance", + "compliance-evidence" + ] + } + }, + "/api/compliance/evidence/ci-status": { + "get": { + "description": "Get CI/CD evidence collection status.\n\nReturns overview of recent evidence collected from CI/CD pipelines,\nuseful for dashboards and monitoring.", + "operationId": "get_ci_evidence_status_api_compliance_evidence_ci_status_get", + "parameters": [ + { + "description": "Filter by control ID", + "in": "query", + "name": "control_id", + "required": false, + "schema": { + "description": "Filter by control ID", + "title": "Control Id", + "type": "string" + } + }, + { + "description": "Look back N days", + "in": "query", + "name": "days", + "required": false, + "schema": { + "default": 30, + "description": "Look back N days", + "title": "Days", + "type": "integer" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Get Ci Evidence Status", + "tags": [ + "compliance", + "compliance-evidence" + ] + } + }, + "/api/compliance/evidence/collect": { + "post": { + "description": "Collect evidence from CI/CD pipeline.\n\nThis endpoint is designed to be called from CI/CD workflows (GitHub Actions,\nGitLab CI, Jenkins, etc.) to automatically collect compliance evidence.\n\nSupported sources:\n- sast: Static Application Security Testing (Semgrep, SonarQube, etc.)\n- dependency_scan: Dependency vulnerability scanning (Trivy, Grype, Snyk)\n- sbom: Software Bill of Materials (CycloneDX, SPDX)\n- container_scan: Container image scanning (Trivy, Grype)\n- test_results: Test coverage and results\n- secret_scan: Secret detection (Gitleaks, TruffleHog)\n- code_review: Code review metrics", + "operationId": "collect_ci_evidence_api_compliance_evidence_collect_post", + "parameters": [ + { + "description": "Evidence source: sast, dependency_scan, sbom, container_scan, test_results", + "in": "query", + "name": "source", + "required": true, + "schema": { + "description": "Evidence source: sast, dependency_scan, sbom, container_scan, test_results", + "title": "Source", + "type": "string" + } + }, + { + "description": "CI/CD Job ID for traceability", + "in": "query", + "name": "ci_job_id", + "required": false, + "schema": { + "description": "CI/CD Job ID for traceability", + "title": "Ci Job Id", + "type": "string" + } + }, + { + "description": "URL to CI/CD job", + "in": "query", + "name": "ci_job_url", + "required": false, + "schema": { + "description": "URL to CI/CD job", + "title": "Ci Job Url", + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "additionalProperties": true, + "title": "Report Data", + "type": "object" + } + } + } + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Collect Ci Evidence", + "tags": [ + "compliance", + "compliance-evidence" + ] + } + }, + "/api/compliance/evidence/upload": { + "post": { + "description": "Upload evidence file.", + "operationId": "upload_evidence_api_compliance_evidence_upload_post", + "parameters": [ + { + "in": "query", + "name": "control_id", + "required": true, + "schema": { + "title": "Control Id", + "type": "string" + } + }, + { + "in": "query", + "name": "evidence_type", + "required": true, + "schema": { + "title": "Evidence Type", + "type": "string" + } + }, + { + "in": "query", + "name": "title", + "required": true, + "schema": { + "title": "Title", + "type": "string" + } + }, + { + "in": "query", + "name": "description", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Description" + } + } + ], + "requestBody": { + "content": { + "multipart/form-data": { + "schema": { + "$ref": "#/components/schemas/Body_upload_evidence_api_compliance_evidence_upload_post" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Upload Evidence", + "tags": [ + "compliance", + "compliance-evidence" + ] + } + }, + "/api/compliance/evidence/{evidence_id}": { + "delete": { + "description": "Delete an evidence record.", + "operationId": "delete_evidence_api_compliance_evidence__evidence_id__delete", + "parameters": [ + { + "in": "path", + "name": "evidence_id", + "required": true, + "schema": { + "title": "Evidence Id", + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Delete Evidence", + "tags": [ + "compliance", + "compliance-evidence" + ] + } + }, + "/api/compliance/export": { + "post": { + "description": "Create a new audit export.", + "operationId": "create_export_api_compliance_export_post", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExportRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExportResponse" + } + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Create Export", + "tags": [ + "compliance" + ] + } + }, + "/api/compliance/export/{export_id}": { + "get": { + "description": "Get export status.", + "operationId": "get_export_api_compliance_export__export_id__get", + "parameters": [ + { + "in": "path", + "name": "export_id", + "required": true, + "schema": { + "title": "Export Id", + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExportResponse" + } + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Get Export", + "tags": [ + "compliance" + ] + } + }, + "/api/compliance/export/{export_id}/download": { + "get": { + "description": "Download export file.", + "operationId": "download_export_api_compliance_export__export_id__download_get", + "parameters": [ + { + "in": "path", + "name": "export_id", + "required": true, + "schema": { + "title": "Export Id", + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Download Export", + "tags": [ + "compliance" + ] + } + }, + "/api/compliance/exports": { + "get": { + "description": "List recent exports.", + "operationId": "list_exports_api_compliance_exports_get", + "parameters": [ + { + "in": "query", + "name": "limit", + "required": false, + "schema": { + "default": 20, + "title": "Limit", + "type": "integer" + } + }, + { + "in": "query", + "name": "offset", + "required": false, + "schema": { + "default": 0, + "title": "Offset", + "type": "integer" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExportListResponse" + } + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "List Exports", + "tags": [ + "compliance" + ] + } + }, + "/api/compliance/gdpr-processes": { + "get": { + "description": "List all GDPR processes for a tenant.", + "operationId": "list_gdpr_processes_api_compliance_gdpr_processes_get", + "parameters": [ + { + "in": "header", + "name": "X-Tenant-ID", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "X-Tenant-Id" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "List Gdpr Processes", + "tags": [ + "compliance", + "consent-templates" + ] + } + }, + "/api/compliance/gdpr-processes/{process_id}": { + "put": { + "description": "Update an existing GDPR process.", + "operationId": "update_gdpr_process_api_compliance_gdpr_processes__process_id__put", + "parameters": [ + { + "in": "path", + "name": "process_id", + "required": true, + "schema": { + "title": "Process Id", + "type": "string" + } + }, + { + "in": "header", + "name": "X-Tenant-ID", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "X-Tenant-Id" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/GDPRProcessUpdate" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Update Gdpr Process", + "tags": [ + "compliance", + "consent-templates" + ] + } + }, + "/api/compliance/generation/apply/{doc_type}": { + "post": { + "description": "Generate drafts and create Change-Requests for each.\n\nDoes NOT create documents directly \u2014 all go through the CR inbox.", + "operationId": "apply_generation_api_compliance_generation_apply__doc_type__post", + "parameters": [ + { + "in": "path", + "name": "doc_type", + "required": true, + "schema": { + "title": "Doc Type", + "type": "string" + } + }, + { + "in": "query", + "name": "tenant_id", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Tenant Id" + } + }, + { + "in": "header", + "name": "X-User-ID", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "X-User-Id" + } + }, + { + "in": "header", + "name": "X-Tenant-ID", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "X-Tenant-Id" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Apply Generation", + "tags": [ + "compliance", + "generation" + ] + } + }, + "/api/compliance/generation/preview/{doc_type}": { + "get": { + "description": "Preview what documents would be generated (no DB writes).", + "operationId": "preview_generation_api_compliance_generation_preview__doc_type__get", + "parameters": [ + { + "in": "path", + "name": "doc_type", + "required": true, + "schema": { + "title": "Doc Type", + "type": "string" + } + }, + { + "in": "query", + "name": "tenant_id", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Tenant Id" + } + }, + { + "in": "header", + "name": "X-Tenant-ID", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "X-Tenant-Id" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Preview Generation", + "tags": [ + "compliance", + "generation" + ] + } + }, + "/api/compliance/incidents": { + "get": { + "operationId": "list_incidents_api_compliance_incidents_get", + "parameters": [ + { + "in": "query", + "name": "status", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Status" + } + }, + { + "in": "query", + "name": "severity", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Severity" + } + }, + { + "in": "query", + "name": "category", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Category" + } + }, + { + "in": "query", + "name": "limit", + "required": false, + "schema": { + "default": 50, + "title": "Limit", + "type": "integer" + } + }, + { + "in": "query", + "name": "offset", + "required": false, + "schema": { + "default": 0, + "title": "Offset", + "type": "integer" + } + }, + { + "in": "header", + "name": "x-tenant-id", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "X-Tenant-Id" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "List Incidents", + "tags": [ + "compliance", + "incidents" + ] + }, + "post": { + "operationId": "create_incident_api_compliance_incidents_post", + "parameters": [ + { + "in": "header", + "name": "x-tenant-id", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "X-Tenant-Id" + } + }, + { + "in": "header", + "name": "x-user-id", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "X-User-Id" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/compliance__api__incident_routes__IncidentCreate" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Create Incident", + "tags": [ + "compliance", + "incidents" + ] + } + }, + "/api/compliance/incidents/stats": { + "get": { + "operationId": "get_stats_api_compliance_incidents_stats_get", + "parameters": [ + { + "in": "header", + "name": "x-tenant-id", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "X-Tenant-Id" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Get Stats", + "tags": [ + "compliance", + "incidents" + ] + } + }, + "/api/compliance/incidents/{incident_id}": { + "delete": { + "operationId": "delete_incident_api_compliance_incidents__incident_id__delete", + "parameters": [ + { + "in": "path", + "name": "incident_id", + "required": true, + "schema": { + "format": "uuid", + "title": "Incident Id", + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Delete Incident", + "tags": [ + "compliance", + "incidents" + ] + }, + "get": { + "operationId": "get_incident_api_compliance_incidents__incident_id__get", + "parameters": [ + { + "in": "path", + "name": "incident_id", + "required": true, + "schema": { + "format": "uuid", + "title": "Incident Id", + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Get Incident", + "tags": [ + "compliance", + "incidents" + ] + }, + "put": { + "operationId": "update_incident_api_compliance_incidents__incident_id__put", + "parameters": [ + { + "in": "path", + "name": "incident_id", + "required": true, + "schema": { + "format": "uuid", + "title": "Incident Id", + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/compliance__api__incident_routes__IncidentUpdate" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Update Incident", + "tags": [ + "compliance", + "incidents" + ] + } + }, + "/api/compliance/incidents/{incident_id}/assess-risk": { + "post": { + "operationId": "assess_risk_api_compliance_incidents__incident_id__assess_risk_post", + "parameters": [ + { + "in": "path", + "name": "incident_id", + "required": true, + "schema": { + "format": "uuid", + "title": "Incident Id", + "type": "string" + } + }, + { + "in": "header", + "name": "x-user-id", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "X-User-Id" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RiskAssessmentRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Assess Risk", + "tags": [ + "compliance", + "incidents" + ] + } + }, + "/api/compliance/incidents/{incident_id}/close": { + "post": { + "operationId": "close_incident_api_compliance_incidents__incident_id__close_post", + "parameters": [ + { + "in": "path", + "name": "incident_id", + "required": true, + "schema": { + "format": "uuid", + "title": "Incident Id", + "type": "string" + } + }, + { + "in": "header", + "name": "x-user-id", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "X-User-Id" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CloseIncidentRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Close Incident", + "tags": [ + "compliance", + "incidents" + ] + } + }, + "/api/compliance/incidents/{incident_id}/measures": { + "post": { + "operationId": "add_measure_api_compliance_incidents__incident_id__measures_post", + "parameters": [ + { + "in": "path", + "name": "incident_id", + "required": true, + "schema": { + "format": "uuid", + "title": "Incident Id", + "type": "string" + } + }, + { + "in": "header", + "name": "x-user-id", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "X-User-Id" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MeasureCreate" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Add Measure", + "tags": [ + "compliance", + "incidents" + ] + } + }, + "/api/compliance/incidents/{incident_id}/measures/{measure_id}": { + "put": { + "operationId": "update_measure_api_compliance_incidents__incident_id__measures__measure_id__put", + "parameters": [ + { + "in": "path", + "name": "incident_id", + "required": true, + "schema": { + "format": "uuid", + "title": "Incident Id", + "type": "string" + } + }, + { + "in": "path", + "name": "measure_id", + "required": true, + "schema": { + "format": "uuid", + "title": "Measure Id", + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MeasureUpdate" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Update Measure", + "tags": [ + "compliance", + "incidents" + ] + } + }, + "/api/compliance/incidents/{incident_id}/measures/{measure_id}/complete": { + "post": { + "operationId": "complete_measure_api_compliance_incidents__incident_id__measures__measure_id__complete_post", + "parameters": [ + { + "in": "path", + "name": "incident_id", + "required": true, + "schema": { + "format": "uuid", + "title": "Incident Id", + "type": "string" + } + }, + { + "in": "path", + "name": "measure_id", + "required": true, + "schema": { + "format": "uuid", + "title": "Measure Id", + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Complete Measure", + "tags": [ + "compliance", + "incidents" + ] + } + }, + "/api/compliance/incidents/{incident_id}/notify-authority": { + "post": { + "operationId": "notify_authority_api_compliance_incidents__incident_id__notify_authority_post", + "parameters": [ + { + "in": "path", + "name": "incident_id", + "required": true, + "schema": { + "format": "uuid", + "title": "Incident Id", + "type": "string" + } + }, + { + "in": "header", + "name": "x-user-id", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "X-User-Id" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AuthorityNotificationRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Notify Authority", + "tags": [ + "compliance", + "incidents" + ] + } + }, + "/api/compliance/incidents/{incident_id}/notify-subjects": { + "post": { + "operationId": "notify_subjects_api_compliance_incidents__incident_id__notify_subjects_post", + "parameters": [ + { + "in": "path", + "name": "incident_id", + "required": true, + "schema": { + "format": "uuid", + "title": "Incident Id", + "type": "string" + } + }, + { + "in": "header", + "name": "x-user-id", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "X-User-Id" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DataSubjectNotificationRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Notify Subjects", + "tags": [ + "compliance", + "incidents" + ] + } + }, + "/api/compliance/incidents/{incident_id}/status": { + "put": { + "operationId": "update_status_api_compliance_incidents__incident_id__status_put", + "parameters": [ + { + "in": "path", + "name": "incident_id", + "required": true, + "schema": { + "format": "uuid", + "title": "Incident Id", + "type": "string" + } + }, + { + "in": "header", + "name": "x-user-id", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "X-User-Id" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/compliance__api__incident_routes__StatusUpdate" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Update Status", + "tags": [ + "compliance", + "incidents" + ] + } + }, + "/api/compliance/incidents/{incident_id}/timeline": { + "post": { + "operationId": "add_timeline_entry_api_compliance_incidents__incident_id__timeline_post", + "parameters": [ + { + "in": "path", + "name": "incident_id", + "required": true, + "schema": { + "format": "uuid", + "title": "Incident Id", + "type": "string" + } + }, + { + "in": "header", + "name": "x-user-id", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "X-User-Id" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TimelineEntryRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Add Timeline Entry", + "tags": [ + "compliance", + "incidents" + ] + } + }, + "/api/compliance/init-tables": { + "post": { + "description": "Create compliance tables if they don't exist.", + "operationId": "init_tables_api_compliance_init_tables_post", + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + } + }, + "summary": "Init Tables", + "tags": [ + "compliance" + ] + } + }, + "/api/compliance/isms/audit-trail": { + "get": { + "description": "Query the audit trail with filters.", + "operationId": "get_audit_trail_api_compliance_isms_audit_trail_get", + "parameters": [ + { + "in": "query", + "name": "entity_type", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Entity Type" + } + }, + { + "in": "query", + "name": "entity_id", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Entity Id" + } + }, + { + "in": "query", + "name": "performed_by", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Performed By" + } + }, + { + "in": "query", + "name": "action", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Action" + } + }, + { + "in": "query", + "name": "page", + "required": false, + "schema": { + "default": 1, + "minimum": 1, + "title": "Page", + "type": "integer" + } + }, + { + "in": "query", + "name": "page_size", + "required": false, + "schema": { + "default": 50, + "maximum": 200, + "minimum": 1, + "title": "Page Size", + "type": "integer" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AuditTrailResponse" + } + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Get Audit Trail", + "tags": [ + "compliance", + "ISMS" + ] + } + }, + "/api/compliance/isms/capa": { + "get": { + "description": "List all corrective/preventive actions.", + "operationId": "list_capas_api_compliance_isms_capa_get", + "parameters": [ + { + "in": "query", + "name": "finding_id", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Finding Id" + } + }, + { + "in": "query", + "name": "status", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Status" + } + }, + { + "in": "query", + "name": "assigned_to", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Assigned To" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CorrectiveActionListResponse" + } + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "List Capas", + "tags": [ + "compliance", + "ISMS" + ] + }, + "post": { + "description": "Create a new corrective/preventive action for a finding.", + "operationId": "create_capa_api_compliance_isms_capa_post", + "parameters": [ + { + "in": "query", + "name": "created_by", + "required": true, + "schema": { + "title": "Created By", + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CorrectiveActionCreate" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CorrectiveActionResponse" + } + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Create Capa", + "tags": [ + "compliance", + "ISMS" + ] + } + }, + "/api/compliance/isms/capa/{capa_id}": { + "put": { + "description": "Update a CAPA's progress.", + "operationId": "update_capa_api_compliance_isms_capa__capa_id__put", + "parameters": [ + { + "in": "path", + "name": "capa_id", + "required": true, + "schema": { + "title": "Capa Id", + "type": "string" + } + }, + { + "in": "query", + "name": "updated_by", + "required": true, + "schema": { + "title": "Updated By", + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CorrectiveActionUpdate" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CorrectiveActionResponse" + } + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Update Capa", + "tags": [ + "compliance", + "ISMS" + ] + } + }, + "/api/compliance/isms/capa/{capa_id}/verify": { + "post": { + "description": "Verify the effectiveness of a CAPA.", + "operationId": "verify_capa_api_compliance_isms_capa__capa_id__verify_post", + "parameters": [ + { + "in": "path", + "name": "capa_id", + "required": true, + "schema": { + "title": "Capa Id", + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CAPAVerifyRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CorrectiveActionResponse" + } + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Verify Capa", + "tags": [ + "compliance", + "ISMS" + ] + } + }, + "/api/compliance/isms/context": { + "get": { + "description": "Get the current ISMS context analysis.", + "operationId": "get_isms_context_api_compliance_isms_context_get", + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ISMSContextResponse" + } + } + }, + "description": "Successful Response" + } + }, + "summary": "Get Isms Context", + "tags": [ + "compliance", + "ISMS" + ] + }, + "post": { + "description": "Create or update ISMS context analysis.", + "operationId": "create_isms_context_api_compliance_isms_context_post", + "parameters": [ + { + "in": "query", + "name": "created_by", + "required": true, + "schema": { + "title": "Created By", + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ISMSContextCreate" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ISMSContextResponse" + } + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Create Isms Context", + "tags": [ + "compliance", + "ISMS" + ] + } + }, + "/api/compliance/isms/findings": { + "get": { + "description": "List all audit findings.", + "operationId": "list_findings_api_compliance_isms_findings_get", + "parameters": [ + { + "in": "query", + "name": "finding_type", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Finding Type" + } + }, + { + "in": "query", + "name": "status", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Status" + } + }, + { + "in": "query", + "name": "internal_audit_id", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Internal Audit Id" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AuditFindingListResponse" + } + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "List Findings", + "tags": [ + "compliance", + "ISMS" + ] + }, + "post": { + "description": "Create a new audit finding.\n\nFinding types:\n- major: Blocks certification, requires immediate CAPA\n- minor: Requires CAPA within deadline\n- ofi: Opportunity for improvement (no mandatory action)\n- positive: Good practice observation", + "operationId": "create_finding_api_compliance_isms_findings_post", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AuditFindingCreate" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AuditFindingResponse" + } + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Create Finding", + "tags": [ + "compliance", + "ISMS" + ] + } + }, + "/api/compliance/isms/findings/{finding_id}": { + "put": { + "description": "Update an audit finding.", + "operationId": "update_finding_api_compliance_isms_findings__finding_id__put", + "parameters": [ + { + "in": "path", + "name": "finding_id", + "required": true, + "schema": { + "title": "Finding Id", + "type": "string" + } + }, + { + "in": "query", + "name": "updated_by", + "required": true, + "schema": { + "title": "Updated By", + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AuditFindingUpdate" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AuditFindingResponse" + } + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Update Finding", + "tags": [ + "compliance", + "ISMS" + ] + } + }, + "/api/compliance/isms/findings/{finding_id}/close": { + "post": { + "description": "Close an audit finding after verification.\n\nRequires:\n- All CAPAs to be completed and verified\n- Verification evidence documenting the fix", + "operationId": "close_finding_api_compliance_isms_findings__finding_id__close_post", + "parameters": [ + { + "in": "path", + "name": "finding_id", + "required": true, + "schema": { + "title": "Finding Id", + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AuditFindingCloseRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AuditFindingResponse" + } + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Close Finding", + "tags": [ + "compliance", + "ISMS" + ] + } + }, + "/api/compliance/isms/internal-audits": { + "get": { + "description": "List all internal audits.", + "operationId": "list_internal_audits_api_compliance_isms_internal_audits_get", + "parameters": [ + { + "in": "query", + "name": "status", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Status" + } + }, + { + "in": "query", + "name": "audit_type", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Audit Type" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/InternalAuditListResponse" + } + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "List Internal Audits", + "tags": [ + "compliance", + "ISMS" + ] + }, + "post": { + "description": "Create a new internal audit.", + "operationId": "create_internal_audit_api_compliance_isms_internal_audits_post", + "parameters": [ + { + "in": "query", + "name": "created_by", + "required": true, + "schema": { + "title": "Created By", + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/InternalAuditCreate" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/InternalAuditResponse" + } + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Create Internal Audit", + "tags": [ + "compliance", + "ISMS" + ] + } + }, + "/api/compliance/isms/internal-audits/{audit_id}": { + "put": { + "description": "Update an internal audit.", + "operationId": "update_internal_audit_api_compliance_isms_internal_audits__audit_id__put", + "parameters": [ + { + "in": "path", + "name": "audit_id", + "required": true, + "schema": { + "title": "Audit Id", + "type": "string" + } + }, + { + "in": "query", + "name": "updated_by", + "required": true, + "schema": { + "title": "Updated By", + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/InternalAuditUpdate" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/InternalAuditResponse" + } + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Update Internal Audit", + "tags": [ + "compliance", + "ISMS" + ] + } + }, + "/api/compliance/isms/internal-audits/{audit_id}/complete": { + "post": { + "description": "Complete an internal audit with conclusion.", + "operationId": "complete_internal_audit_api_compliance_isms_internal_audits__audit_id__complete_post", + "parameters": [ + { + "in": "path", + "name": "audit_id", + "required": true, + "schema": { + "title": "Audit Id", + "type": "string" + } + }, + { + "in": "query", + "name": "completed_by", + "required": true, + "schema": { + "title": "Completed By", + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/InternalAuditCompleteRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/InternalAuditResponse" + } + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Complete Internal Audit", + "tags": [ + "compliance", + "ISMS" + ] + } + }, + "/api/compliance/isms/management-reviews": { + "get": { + "description": "List all management reviews.", + "operationId": "list_management_reviews_api_compliance_isms_management_reviews_get", + "parameters": [ + { + "in": "query", + "name": "status", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Status" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ManagementReviewListResponse" + } + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "List Management Reviews", + "tags": [ + "compliance", + "ISMS" + ] + }, + "post": { + "description": "Create a new management review.", + "operationId": "create_management_review_api_compliance_isms_management_reviews_post", + "parameters": [ + { + "in": "query", + "name": "created_by", + "required": true, + "schema": { + "title": "Created By", + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ManagementReviewCreate" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ManagementReviewResponse" + } + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Create Management Review", + "tags": [ + "compliance", + "ISMS" + ] + } + }, + "/api/compliance/isms/management-reviews/{review_id}": { + "get": { + "description": "Get a specific management review.", + "operationId": "get_management_review_api_compliance_isms_management_reviews__review_id__get", + "parameters": [ + { + "in": "path", + "name": "review_id", + "required": true, + "schema": { + "title": "Review Id", + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ManagementReviewResponse" + } + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Get Management Review", + "tags": [ + "compliance", + "ISMS" + ] + }, + "put": { + "description": "Update a management review with inputs/outputs.", + "operationId": "update_management_review_api_compliance_isms_management_reviews__review_id__put", + "parameters": [ + { + "in": "path", + "name": "review_id", + "required": true, + "schema": { + "title": "Review Id", + "type": "string" + } + }, + { + "in": "query", + "name": "updated_by", + "required": true, + "schema": { + "title": "Updated By", + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ManagementReviewUpdate" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ManagementReviewResponse" + } + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Update Management Review", + "tags": [ + "compliance", + "ISMS" + ] + } + }, + "/api/compliance/isms/management-reviews/{review_id}/approve": { + "post": { + "description": "Approve a management review.", + "operationId": "approve_management_review_api_compliance_isms_management_reviews__review_id__approve_post", + "parameters": [ + { + "in": "path", + "name": "review_id", + "required": true, + "schema": { + "title": "Review Id", + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ManagementReviewApproveRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ManagementReviewResponse" + } + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Approve Management Review", + "tags": [ + "compliance", + "ISMS" + ] + } + }, + "/api/compliance/isms/objectives": { + "get": { + "description": "List all security objectives.", + "operationId": "list_objectives_api_compliance_isms_objectives_get", + "parameters": [ + { + "in": "query", + "name": "category", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Category" + } + }, + { + "in": "query", + "name": "status", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Status" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SecurityObjectiveListResponse" + } + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "List Objectives", + "tags": [ + "compliance", + "ISMS" + ] + }, + "post": { + "description": "Create a new security objective.", + "operationId": "create_objective_api_compliance_isms_objectives_post", + "parameters": [ + { + "in": "query", + "name": "created_by", + "required": true, + "schema": { + "title": "Created By", + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SecurityObjectiveCreate" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SecurityObjectiveResponse" + } + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Create Objective", + "tags": [ + "compliance", + "ISMS" + ] + } + }, + "/api/compliance/isms/objectives/{objective_id}": { + "put": { + "description": "Update a security objective's progress.", + "operationId": "update_objective_api_compliance_isms_objectives__objective_id__put", + "parameters": [ + { + "in": "path", + "name": "objective_id", + "required": true, + "schema": { + "title": "Objective Id", + "type": "string" + } + }, + { + "in": "query", + "name": "updated_by", + "required": true, + "schema": { + "title": "Updated By", + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SecurityObjectiveUpdate" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SecurityObjectiveResponse" + } + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Update Objective", + "tags": [ + "compliance", + "ISMS" + ] + } + }, + "/api/compliance/isms/overview": { + "get": { + "description": "Get complete ISO 27001 compliance overview.\n\nShows status of all chapters, key metrics, and readiness for certification.", + "operationId": "get_iso27001_overview_api_compliance_isms_overview_get", + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ISO27001OverviewResponse" + } + } + }, + "description": "Successful Response" + } + }, + "summary": "Get Iso27001 Overview", + "tags": [ + "compliance", + "ISMS" + ] + } + }, + "/api/compliance/isms/policies": { + "get": { + "description": "List all ISMS policies.", + "operationId": "list_policies_api_compliance_isms_policies_get", + "parameters": [ + { + "in": "query", + "name": "policy_type", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Policy Type" + } + }, + { + "in": "query", + "name": "status", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Status" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ISMSPolicyListResponse" + } + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "List Policies", + "tags": [ + "compliance", + "ISMS" + ] + }, + "post": { + "description": "Create a new ISMS policy.", + "operationId": "create_policy_api_compliance_isms_policies_post", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ISMSPolicyCreate" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ISMSPolicyResponse" + } + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Create Policy", + "tags": [ + "compliance", + "ISMS" + ] + } + }, + "/api/compliance/isms/policies/{policy_id}": { + "get": { + "description": "Get a specific policy by ID.", + "operationId": "get_policy_api_compliance_isms_policies__policy_id__get", + "parameters": [ + { + "in": "path", + "name": "policy_id", + "required": true, + "schema": { + "title": "Policy Id", + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ISMSPolicyResponse" + } + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Get Policy", + "tags": [ + "compliance", + "ISMS" + ] + }, + "put": { + "description": "Update a policy (creates new version if approved).", + "operationId": "update_policy_api_compliance_isms_policies__policy_id__put", + "parameters": [ + { + "in": "path", + "name": "policy_id", + "required": true, + "schema": { + "title": "Policy Id", + "type": "string" + } + }, + { + "in": "query", + "name": "updated_by", + "required": true, + "schema": { + "title": "Updated By", + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ISMSPolicyUpdate" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ISMSPolicyResponse" + } + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Update Policy", + "tags": [ + "compliance", + "ISMS" + ] + } + }, + "/api/compliance/isms/policies/{policy_id}/approve": { + "post": { + "description": "Approve a policy. Must be approved by top management.", + "operationId": "approve_policy_api_compliance_isms_policies__policy_id__approve_post", + "parameters": [ + { + "in": "path", + "name": "policy_id", + "required": true, + "schema": { + "title": "Policy Id", + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ISMSPolicyApproveRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ISMSPolicyResponse" + } + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Approve Policy", + "tags": [ + "compliance", + "ISMS" + ] + } + }, + "/api/compliance/isms/readiness-check": { + "post": { + "description": "Run ISMS readiness check.\n\nIdentifies potential Major/Minor findings BEFORE external audit.\nThis helps achieve ISO 27001 certification on the first attempt.", + "operationId": "run_readiness_check_api_compliance_isms_readiness_check_post", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ISMSReadinessCheckRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ISMSReadinessCheckResponse" + } + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Run Readiness Check", + "tags": [ + "compliance", + "ISMS" + ] + } + }, + "/api/compliance/isms/readiness-check/latest": { + "get": { + "description": "Get the most recent readiness check result.", + "operationId": "get_latest_readiness_check_api_compliance_isms_readiness_check_latest_get", + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ISMSReadinessCheckResponse" + } + } + }, + "description": "Successful Response" + } + }, + "summary": "Get Latest Readiness Check", + "tags": [ + "compliance", + "ISMS" + ] + } + }, + "/api/compliance/isms/scope": { + "get": { + "description": "Get the current ISMS scope.\n\nThe scope defines the boundaries and applicability of the ISMS.\nOnly one active scope should exist at a time.", + "operationId": "get_isms_scope_api_compliance_isms_scope_get", + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ISMSScopeResponse" + } + } + }, + "description": "Successful Response" + } + }, + "summary": "Get Isms Scope", + "tags": [ + "compliance", + "ISMS" + ] + }, + "post": { + "description": "Create a new ISMS scope definition.\n\nSupersedes any existing scope.", + "operationId": "create_isms_scope_api_compliance_isms_scope_post", + "parameters": [ + { + "description": "User creating the scope", + "in": "query", + "name": "created_by", + "required": true, + "schema": { + "description": "User creating the scope", + "title": "Created By", + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ISMSScopeCreate" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ISMSScopeResponse" + } + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Create Isms Scope", + "tags": [ + "compliance", + "ISMS" + ] + } + }, + "/api/compliance/isms/scope/{scope_id}": { + "put": { + "description": "Update ISMS scope (only if in draft status).", + "operationId": "update_isms_scope_api_compliance_isms_scope__scope_id__put", + "parameters": [ + { + "in": "path", + "name": "scope_id", + "required": true, + "schema": { + "title": "Scope Id", + "type": "string" + } + }, + { + "description": "User updating the scope", + "in": "query", + "name": "updated_by", + "required": true, + "schema": { + "description": "User updating the scope", + "title": "Updated By", + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ISMSScopeUpdate" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ISMSScopeResponse" + } + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Update Isms Scope", + "tags": [ + "compliance", + "ISMS" + ] + } + }, + "/api/compliance/isms/scope/{scope_id}/approve": { + "post": { + "description": "Approve the ISMS scope.\n\nThis is a MANDATORY step for ISO 27001 certification.\nMust be approved by top management.", + "operationId": "approve_isms_scope_api_compliance_isms_scope__scope_id__approve_post", + "parameters": [ + { + "in": "path", + "name": "scope_id", + "required": true, + "schema": { + "title": "Scope Id", + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ISMSScopeApproveRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ISMSScopeResponse" + } + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Approve Isms Scope", + "tags": [ + "compliance", + "ISMS" + ] + } + }, + "/api/compliance/isms/soa": { + "get": { + "description": "List all Statement of Applicability entries.", + "operationId": "list_soa_entries_api_compliance_isms_soa_get", + "parameters": [ + { + "in": "query", + "name": "is_applicable", + "required": false, + "schema": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "title": "Is Applicable" + } + }, + { + "in": "query", + "name": "implementation_status", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Implementation Status" + } + }, + { + "in": "query", + "name": "category", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Category" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SoAListResponse" + } + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "List Soa Entries", + "tags": [ + "compliance", + "ISMS" + ] + }, + "post": { + "description": "Create a new SoA entry for an Annex A control.", + "operationId": "create_soa_entry_api_compliance_isms_soa_post", + "parameters": [ + { + "in": "query", + "name": "created_by", + "required": true, + "schema": { + "title": "Created By", + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SoAEntryCreate" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SoAEntryResponse" + } + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Create Soa Entry", + "tags": [ + "compliance", + "ISMS" + ] + } + }, + "/api/compliance/isms/soa/{entry_id}": { + "put": { + "description": "Update an SoA entry.", + "operationId": "update_soa_entry_api_compliance_isms_soa__entry_id__put", + "parameters": [ + { + "in": "path", + "name": "entry_id", + "required": true, + "schema": { + "title": "Entry Id", + "type": "string" + } + }, + { + "in": "query", + "name": "updated_by", + "required": true, + "schema": { + "title": "Updated By", + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SoAEntryUpdate" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SoAEntryResponse" + } + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Update Soa Entry", + "tags": [ + "compliance", + "ISMS" + ] + } + }, + "/api/compliance/isms/soa/{entry_id}/approve": { + "post": { + "description": "Approve an SoA entry.", + "operationId": "approve_soa_entry_api_compliance_isms_soa__entry_id__approve_post", + "parameters": [ + { + "in": "path", + "name": "entry_id", + "required": true, + "schema": { + "title": "Entry Id", + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SoAApproveRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SoAEntryResponse" + } + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Approve Soa Entry", + "tags": [ + "compliance", + "ISMS" + ] + } + }, + "/api/compliance/legal-documents/audit-log": { + "get": { + "description": "Consent audit trail (paginated).", + "operationId": "get_audit_log_api_compliance_legal_documents_audit_log_get", + "parameters": [ + { + "in": "query", + "name": "limit", + "required": false, + "schema": { + "default": 50, + "maximum": 200, + "minimum": 1, + "title": "Limit", + "type": "integer" + } + }, + { + "in": "query", + "name": "offset", + "required": false, + "schema": { + "default": 0, + "minimum": 0, + "title": "Offset", + "type": "integer" + } + }, + { + "in": "query", + "name": "action", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Action" + } + }, + { + "in": "query", + "name": "entity_type", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Entity Type" + } + }, + { + "in": "header", + "name": "X-Tenant-ID", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "X-Tenant-Id" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Get Audit Log", + "tags": [ + "compliance", + "legal-documents" + ] + } + }, + "/api/compliance/legal-documents/consents": { + "post": { + "description": "Record user consent for a legal document.", + "operationId": "record_consent_api_compliance_legal_documents_consents_post", + "parameters": [ + { + "in": "header", + "name": "X-Tenant-ID", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "X-Tenant-Id" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UserConsentCreate" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Record Consent", + "tags": [ + "compliance", + "legal-documents" + ] + } + }, + "/api/compliance/legal-documents/consents/check/{document_type}": { + "get": { + "description": "Check if user has active consent for a document type.", + "operationId": "check_consent_api_compliance_legal_documents_consents_check__document_type__get", + "parameters": [ + { + "in": "path", + "name": "document_type", + "required": true, + "schema": { + "title": "Document Type", + "type": "string" + } + }, + { + "in": "query", + "name": "user_id", + "required": true, + "schema": { + "title": "User Id", + "type": "string" + } + }, + { + "in": "header", + "name": "X-Tenant-ID", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "X-Tenant-Id" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Check Consent", + "tags": [ + "compliance", + "legal-documents" + ] + } + }, + "/api/compliance/legal-documents/consents/my": { + "get": { + "description": "Get all consents for a specific user.", + "operationId": "get_my_consents_api_compliance_legal_documents_consents_my_get", + "parameters": [ + { + "in": "query", + "name": "user_id", + "required": true, + "schema": { + "title": "User Id", + "type": "string" + } + }, + { + "in": "header", + "name": "X-Tenant-ID", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "X-Tenant-Id" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Get My Consents", + "tags": [ + "compliance", + "legal-documents" + ] + } + }, + "/api/compliance/legal-documents/consents/{consent_id}": { + "delete": { + "description": "Withdraw a consent (DSGVO Art. 7 Abs. 3).", + "operationId": "withdraw_consent_api_compliance_legal_documents_consents__consent_id__delete", + "parameters": [ + { + "in": "path", + "name": "consent_id", + "required": true, + "schema": { + "title": "Consent Id", + "type": "string" + } + }, + { + "in": "header", + "name": "X-Tenant-ID", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "X-Tenant-Id" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Withdraw Consent", + "tags": [ + "compliance", + "legal-documents" + ] + } + }, + "/api/compliance/legal-documents/cookie-categories": { + "get": { + "description": "List all cookie categories.", + "operationId": "list_cookie_categories_api_compliance_legal_documents_cookie_categories_get", + "parameters": [ + { + "in": "header", + "name": "X-Tenant-ID", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "X-Tenant-Id" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "List Cookie Categories", + "tags": [ + "compliance", + "legal-documents" + ] + }, + "post": { + "description": "Create a cookie category.", + "operationId": "create_cookie_category_api_compliance_legal_documents_cookie_categories_post", + "parameters": [ + { + "in": "header", + "name": "X-Tenant-ID", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "X-Tenant-Id" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CookieCategoryCreate" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Create Cookie Category", + "tags": [ + "compliance", + "legal-documents" + ] + } + }, + "/api/compliance/legal-documents/cookie-categories/{category_id}": { + "delete": { + "description": "Delete a cookie category.", + "operationId": "delete_cookie_category_api_compliance_legal_documents_cookie_categories__category_id__delete", + "parameters": [ + { + "in": "path", + "name": "category_id", + "required": true, + "schema": { + "title": "Category Id", + "type": "string" + } + }, + { + "in": "header", + "name": "X-Tenant-ID", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "X-Tenant-Id" + } + } + ], + "responses": { + "204": { + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Delete Cookie Category", + "tags": [ + "compliance", + "legal-documents" + ] + }, + "put": { + "description": "Update a cookie category.", + "operationId": "update_cookie_category_api_compliance_legal_documents_cookie_categories__category_id__put", + "parameters": [ + { + "in": "path", + "name": "category_id", + "required": true, + "schema": { + "title": "Category Id", + "type": "string" + } + }, + { + "in": "header", + "name": "X-Tenant-ID", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "X-Tenant-Id" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CookieCategoryUpdate" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Update Cookie Category", + "tags": [ + "compliance", + "legal-documents" + ] + } + }, + "/api/compliance/legal-documents/documents": { + "get": { + "description": "List all legal documents, optionally filtered by tenant or type.", + "operationId": "list_documents_api_compliance_legal_documents_documents_get", + "parameters": [ + { + "in": "query", + "name": "tenant_id", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Tenant Id" + } + }, + { + "in": "query", + "name": "type", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Type" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "additionalProperties": true, + "title": "Response List Documents Api Compliance Legal Documents Documents Get", + "type": "object" + } + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "List Documents", + "tags": [ + "compliance", + "legal-documents" + ] + }, + "post": { + "description": "Create a new legal document type.", + "operationId": "create_document_api_compliance_legal_documents_documents_post", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DocumentCreate" + } + } + }, + "required": true + }, + "responses": { + "201": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DocumentResponse" + } + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Create Document", + "tags": [ + "compliance", + "legal-documents" + ] + } + }, + "/api/compliance/legal-documents/documents/{document_id}": { + "delete": { + "description": "Delete a legal document and all its versions.", + "operationId": "delete_document_api_compliance_legal_documents_documents__document_id__delete", + "parameters": [ + { + "in": "path", + "name": "document_id", + "required": true, + "schema": { + "title": "Document Id", + "type": "string" + } + } + ], + "responses": { + "204": { + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Delete Document", + "tags": [ + "compliance", + "legal-documents" + ] + }, + "get": { + "description": "Get a single legal document by ID.", + "operationId": "get_document_api_compliance_legal_documents_documents__document_id__get", + "parameters": [ + { + "in": "path", + "name": "document_id", + "required": true, + "schema": { + "title": "Document Id", + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DocumentResponse" + } + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Get Document", + "tags": [ + "compliance", + "legal-documents" + ] + } + }, + "/api/compliance/legal-documents/documents/{document_id}/versions": { + "get": { + "description": "List all versions for a legal document.", + "operationId": "list_versions_api_compliance_legal_documents_documents__document_id__versions_get", + "parameters": [ + { + "in": "path", + "name": "document_id", + "required": true, + "schema": { + "title": "Document Id", + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "items": { + "$ref": "#/components/schemas/VersionResponse" + }, + "title": "Response List Versions Api Compliance Legal Documents Documents Document Id Versions Get", + "type": "array" + } + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "List Versions", + "tags": [ + "compliance", + "legal-documents" + ] + } + }, + "/api/compliance/legal-documents/public": { + "get": { + "description": "Active documents for end-user display.", + "operationId": "list_public_documents_api_compliance_legal_documents_public_get", + "parameters": [ + { + "in": "header", + "name": "X-Tenant-ID", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "X-Tenant-Id" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "List Public Documents", + "tags": [ + "compliance", + "legal-documents" + ] + } + }, + "/api/compliance/legal-documents/public/{document_type}/latest": { + "get": { + "description": "Get the latest published version of a document type.", + "operationId": "get_latest_published_api_compliance_legal_documents_public__document_type__latest_get", + "parameters": [ + { + "in": "path", + "name": "document_type", + "required": true, + "schema": { + "title": "Document Type", + "type": "string" + } + }, + { + "in": "query", + "name": "language", + "required": false, + "schema": { + "default": "de", + "title": "Language", + "type": "string" + } + }, + { + "in": "header", + "name": "X-Tenant-ID", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "X-Tenant-Id" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Get Latest Published", + "tags": [ + "compliance", + "legal-documents" + ] + } + }, + "/api/compliance/legal-documents/stats/consents": { + "get": { + "description": "Consent statistics for dashboard.", + "operationId": "get_consent_stats_api_compliance_legal_documents_stats_consents_get", + "parameters": [ + { + "in": "header", + "name": "X-Tenant-ID", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "X-Tenant-Id" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Get Consent Stats", + "tags": [ + "compliance", + "legal-documents" + ] + } + }, + "/api/compliance/legal-documents/versions": { + "post": { + "description": "Create a new version for a legal document.", + "operationId": "create_version_api_compliance_legal_documents_versions_post", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/compliance__api__legal_document_routes__VersionCreate" + } + } + }, + "required": true + }, + "responses": { + "201": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/VersionResponse" + } + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Create Version", + "tags": [ + "compliance", + "legal-documents" + ] + } + }, + "/api/compliance/legal-documents/versions/upload-word": { + "post": { + "description": "Convert DOCX to HTML using mammoth (if available) or return raw text.", + "operationId": "upload_word_api_compliance_legal_documents_versions_upload_word_post", + "requestBody": { + "content": { + "multipart/form-data": { + "schema": { + "$ref": "#/components/schemas/Body_upload_word_api_compliance_legal_documents_versions_upload_word_post" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "additionalProperties": true, + "title": "Response Upload Word Api Compliance Legal Documents Versions Upload Word Post", + "type": "object" + } + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Upload Word", + "tags": [ + "compliance", + "legal-documents" + ] + } + }, + "/api/compliance/legal-documents/versions/{version_id}": { + "get": { + "description": "Get a single version by ID.", + "operationId": "get_version_api_compliance_legal_documents_versions__version_id__get", + "parameters": [ + { + "in": "path", + "name": "version_id", + "required": true, + "schema": { + "title": "Version Id", + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/VersionResponse" + } + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Get Version", + "tags": [ + "compliance", + "legal-documents" + ] + }, + "put": { + "description": "Update a draft legal document version.", + "operationId": "update_version_api_compliance_legal_documents_versions__version_id__put", + "parameters": [ + { + "in": "path", + "name": "version_id", + "required": true, + "schema": { + "title": "Version Id", + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/compliance__api__legal_document_routes__VersionUpdate" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/VersionResponse" + } + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Update Version", + "tags": [ + "compliance", + "legal-documents" + ] + } + }, + "/api/compliance/legal-documents/versions/{version_id}/approval-history": { + "get": { + "description": "Get the full approval audit trail for a version.", + "operationId": "get_approval_history_api_compliance_legal_documents_versions__version_id__approval_history_get", + "parameters": [ + { + "in": "path", + "name": "version_id", + "required": true, + "schema": { + "title": "Version Id", + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "items": { + "$ref": "#/components/schemas/ApprovalHistoryEntry" + }, + "title": "Response Get Approval History Api Compliance Legal Documents Versions Version Id Approval History Get", + "type": "array" + } + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Get Approval History", + "tags": [ + "compliance", + "legal-documents" + ] + } + }, + "/api/compliance/legal-documents/versions/{version_id}/approve": { + "post": { + "description": "Approve a version under review.", + "operationId": "approve_version_api_compliance_legal_documents_versions__version_id__approve_post", + "parameters": [ + { + "in": "path", + "name": "version_id", + "required": true, + "schema": { + "title": "Version Id", + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ActionRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/VersionResponse" + } + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Approve Version", + "tags": [ + "compliance", + "legal-documents" + ] + } + }, + "/api/compliance/legal-documents/versions/{version_id}/publish": { + "post": { + "description": "Publish an approved version.", + "operationId": "publish_version_api_compliance_legal_documents_versions__version_id__publish_post", + "parameters": [ + { + "in": "path", + "name": "version_id", + "required": true, + "schema": { + "title": "Version Id", + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ActionRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/VersionResponse" + } + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Publish Version", + "tags": [ + "compliance", + "legal-documents" + ] + } + }, + "/api/compliance/legal-documents/versions/{version_id}/reject": { + "post": { + "description": "Reject a version under review.", + "operationId": "reject_version_api_compliance_legal_documents_versions__version_id__reject_post", + "parameters": [ + { + "in": "path", + "name": "version_id", + "required": true, + "schema": { + "title": "Version Id", + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ActionRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/VersionResponse" + } + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Reject Version", + "tags": [ + "compliance", + "legal-documents" + ] + } + }, + "/api/compliance/legal-documents/versions/{version_id}/submit-review": { + "post": { + "description": "Submit a draft version for review.", + "operationId": "submit_review_api_compliance_legal_documents_versions__version_id__submit_review_post", + "parameters": [ + { + "in": "path", + "name": "version_id", + "required": true, + "schema": { + "title": "Version Id", + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ActionRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/VersionResponse" + } + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Submit Review", + "tags": [ + "compliance", + "legal-documents" + ] + } + }, + "/api/compliance/legal-templates": { + "get": { + "description": "List legal templates with optional filters.", + "operationId": "list_legal_templates_api_compliance_legal_templates_get", + "parameters": [ + { + "description": "Full-text ILIKE search on title/description/content", + "in": "query", + "name": "query", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "Full-text ILIKE search on title/description/content", + "title": "Query" + } + }, + { + "in": "query", + "name": "document_type", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Document Type" + } + }, + { + "in": "query", + "name": "language", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Language" + } + }, + { + "in": "query", + "name": "status", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": "published", + "title": "Status" + } + }, + { + "in": "query", + "name": "limit", + "required": false, + "schema": { + "default": 50, + "maximum": 200, + "minimum": 1, + "title": "Limit", + "type": "integer" + } + }, + { + "in": "query", + "name": "offset", + "required": false, + "schema": { + "default": 0, + "minimum": 0, + "title": "Offset", + "type": "integer" + } + }, + { + "in": "query", + "name": "tenant_id", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Tenant Id" + } + }, + { + "in": "header", + "name": "X-Tenant-ID", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "X-Tenant-Id" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "List Legal Templates", + "tags": [ + "compliance", + "legal-templates" + ] + }, + "post": { + "description": "Create a new legal template.", + "operationId": "create_legal_template_api_compliance_legal_templates_post", + "parameters": [ + { + "in": "query", + "name": "tenant_id", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Tenant Id" + } + }, + { + "in": "header", + "name": "X-Tenant-ID", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "X-Tenant-Id" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/LegalTemplateCreate" + } + } + }, + "required": true + }, + "responses": { + "201": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Create Legal Template", + "tags": [ + "compliance", + "legal-templates" + ] + } + }, + "/api/compliance/legal-templates/sources": { + "get": { + "description": "Return distinct source_name values.", + "operationId": "get_template_sources_api_compliance_legal_templates_sources_get", + "parameters": [ + { + "in": "query", + "name": "tenant_id", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Tenant Id" + } + }, + { + "in": "header", + "name": "X-Tenant-ID", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "X-Tenant-Id" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Get Template Sources", + "tags": [ + "compliance", + "legal-templates" + ] + } + }, + "/api/compliance/legal-templates/status": { + "get": { + "description": "Return template counts by document_type.", + "operationId": "get_templates_status_api_compliance_legal_templates_status_get", + "parameters": [ + { + "in": "query", + "name": "tenant_id", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Tenant Id" + } + }, + { + "in": "header", + "name": "X-Tenant-ID", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "X-Tenant-Id" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Get Templates Status", + "tags": [ + "compliance", + "legal-templates" + ] + } + }, + "/api/compliance/legal-templates/{template_id}": { + "delete": { + "description": "Delete a legal template.", + "operationId": "delete_legal_template_api_compliance_legal_templates__template_id__delete", + "parameters": [ + { + "in": "path", + "name": "template_id", + "required": true, + "schema": { + "title": "Template Id", + "type": "string" + } + }, + { + "in": "query", + "name": "tenant_id", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Tenant Id" + } + }, + { + "in": "header", + "name": "X-Tenant-ID", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "X-Tenant-Id" + } + } + ], + "responses": { + "204": { + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Delete Legal Template", + "tags": [ + "compliance", + "legal-templates" + ] + }, + "get": { + "description": "Fetch a single template by ID.", + "operationId": "get_legal_template_api_compliance_legal_templates__template_id__get", + "parameters": [ + { + "in": "path", + "name": "template_id", + "required": true, + "schema": { + "title": "Template Id", + "type": "string" + } + }, + { + "in": "query", + "name": "tenant_id", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Tenant Id" + } + }, + { + "in": "header", + "name": "X-Tenant-ID", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "X-Tenant-Id" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Get Legal Template", + "tags": [ + "compliance", + "legal-templates" + ] + }, + "put": { + "description": "Update an existing legal template.", + "operationId": "update_legal_template_api_compliance_legal_templates__template_id__put", + "parameters": [ + { + "in": "path", + "name": "template_id", + "required": true, + "schema": { + "title": "Template Id", + "type": "string" + } + }, + { + "in": "query", + "name": "tenant_id", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Tenant Id" + } + }, + { + "in": "header", + "name": "X-Tenant-ID", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "X-Tenant-Id" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/LegalTemplateUpdate" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Update Legal Template", + "tags": [ + "compliance", + "legal-templates" + ] + } + }, + "/api/compliance/loeschfristen": { + "get": { + "description": "List Loeschfristen with optional filters.", + "operationId": "list_loeschfristen_api_compliance_loeschfristen_get", + "parameters": [ + { + "in": "query", + "name": "status", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Status" + } + }, + { + "in": "query", + "name": "retention_driver", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Retention Driver" + } + }, + { + "in": "query", + "name": "search", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Search" + } + }, + { + "in": "query", + "name": "limit", + "required": false, + "schema": { + "default": 500, + "maximum": 1000, + "minimum": 1, + "title": "Limit", + "type": "integer" + } + }, + { + "in": "query", + "name": "offset", + "required": false, + "schema": { + "default": 0, + "minimum": 0, + "title": "Offset", + "type": "integer" + } + }, + { + "in": "query", + "name": "tenant_id", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Tenant Id" + } + }, + { + "in": "header", + "name": "X-Tenant-ID", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "X-Tenant-Id" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "List Loeschfristen", + "tags": [ + "compliance", + "loeschfristen" + ] + }, + "post": { + "description": "Create a new Loeschfrist policy.", + "operationId": "create_loeschfrist_api_compliance_loeschfristen_post", + "parameters": [ + { + "in": "query", + "name": "tenant_id", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Tenant Id" + } + }, + { + "in": "header", + "name": "X-Tenant-ID", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "X-Tenant-Id" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/LoeschfristCreate" + } + } + }, + "required": true + }, + "responses": { + "201": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Create Loeschfrist", + "tags": [ + "compliance", + "loeschfristen" + ] + } + }, + "/api/compliance/loeschfristen/stats": { + "get": { + "description": "Return Loeschfristen statistics.", + "operationId": "get_loeschfristen_stats_api_compliance_loeschfristen_stats_get", + "parameters": [ + { + "in": "query", + "name": "tenant_id", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Tenant Id" + } + }, + { + "in": "header", + "name": "X-Tenant-ID", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "X-Tenant-Id" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Get Loeschfristen Stats", + "tags": [ + "compliance", + "loeschfristen" + ] + } + }, + "/api/compliance/loeschfristen/{policy_id}": { + "delete": { + "operationId": "delete_loeschfrist_api_compliance_loeschfristen__policy_id__delete", + "parameters": [ + { + "in": "path", + "name": "policy_id", + "required": true, + "schema": { + "title": "Policy Id", + "type": "string" + } + }, + { + "in": "query", + "name": "tenant_id", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Tenant Id" + } + }, + { + "in": "header", + "name": "X-Tenant-ID", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "X-Tenant-Id" + } + } + ], + "responses": { + "204": { + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Delete Loeschfrist", + "tags": [ + "compliance", + "loeschfristen" + ] + }, + "get": { + "operationId": "get_loeschfrist_api_compliance_loeschfristen__policy_id__get", + "parameters": [ + { + "in": "path", + "name": "policy_id", + "required": true, + "schema": { + "title": "Policy Id", + "type": "string" + } + }, + { + "in": "query", + "name": "tenant_id", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Tenant Id" + } + }, + { + "in": "header", + "name": "X-Tenant-ID", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "X-Tenant-Id" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Get Loeschfrist", + "tags": [ + "compliance", + "loeschfristen" + ] + }, + "put": { + "description": "Full update of a Loeschfrist policy.", + "operationId": "update_loeschfrist_api_compliance_loeschfristen__policy_id__put", + "parameters": [ + { + "in": "path", + "name": "policy_id", + "required": true, + "schema": { + "title": "Policy Id", + "type": "string" + } + }, + { + "in": "query", + "name": "tenant_id", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Tenant Id" + } + }, + { + "in": "header", + "name": "X-Tenant-ID", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "X-Tenant-Id" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/LoeschfristUpdate" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Update Loeschfrist", + "tags": [ + "compliance", + "loeschfristen" + ] + } + }, + "/api/compliance/loeschfristen/{policy_id}/status": { + "put": { + "description": "Quick status update.", + "operationId": "update_loeschfrist_status_api_compliance_loeschfristen__policy_id__status_put", + "parameters": [ + { + "in": "path", + "name": "policy_id", + "required": true, + "schema": { + "title": "Policy Id", + "type": "string" + } + }, + { + "in": "query", + "name": "tenant_id", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Tenant Id" + } + }, + { + "in": "header", + "name": "X-Tenant-ID", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "X-Tenant-Id" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/compliance__api__incident_routes__StatusUpdate" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Update Loeschfrist Status", + "tags": [ + "compliance", + "loeschfristen" + ] + } + }, + "/api/compliance/loeschfristen/{policy_id}/versions": { + "get": { + "description": "List all versions for a Loeschfrist.", + "operationId": "list_loeschfristen_versions_api_compliance_loeschfristen__policy_id__versions_get", + "parameters": [ + { + "in": "path", + "name": "policy_id", + "required": true, + "schema": { + "title": "Policy Id", + "type": "string" + } + }, + { + "in": "query", + "name": "tenant_id", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Tenant Id" + } + }, + { + "in": "header", + "name": "X-Tenant-ID", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "X-Tenant-Id" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "List Loeschfristen Versions", + "tags": [ + "compliance", + "loeschfristen" + ] + } + }, + "/api/compliance/loeschfristen/{policy_id}/versions/{version_number}": { + "get": { + "description": "Get a specific Loeschfristen version with full snapshot.", + "operationId": "get_loeschfristen_version_api_compliance_loeschfristen__policy_id__versions__version_number__get", + "parameters": [ + { + "in": "path", + "name": "policy_id", + "required": true, + "schema": { + "title": "Policy Id", + "type": "string" + } + }, + { + "in": "path", + "name": "version_number", + "required": true, + "schema": { + "title": "Version Number", + "type": "integer" + } + }, + { + "in": "query", + "name": "tenant_id", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Tenant Id" + } + }, + { + "in": "header", + "name": "X-Tenant-ID", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "X-Tenant-Id" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Get Loeschfristen Version", + "tags": [ + "compliance", + "loeschfristen" + ] + } + }, + "/api/compliance/modules": { + "get": { + "description": "List all service modules with optional filters.", + "operationId": "list_modules_api_compliance_modules_get", + "parameters": [ + { + "in": "query", + "name": "service_type", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Service Type" + } + }, + { + "in": "query", + "name": "criticality", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Criticality" + } + }, + { + "in": "query", + "name": "processes_pii", + "required": false, + "schema": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "title": "Processes Pii" + } + }, + { + "in": "query", + "name": "ai_components", + "required": false, + "schema": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "title": "Ai Components" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ServiceModuleListResponse" + } + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "List Modules", + "tags": [ + "compliance", + "compliance-modules" + ] + } + }, + "/api/compliance/modules/overview": { + "get": { + "description": "Get overview statistics for all modules.", + "operationId": "get_modules_overview_api_compliance_modules_overview_get", + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ModuleComplianceOverview" + } + } + }, + "description": "Successful Response" + } + }, + "summary": "Get Modules Overview", + "tags": [ + "compliance", + "compliance-modules" + ] + } + }, + "/api/compliance/modules/seed": { + "post": { + "description": "Seed service modules from predefined data.", + "operationId": "seed_modules_api_compliance_modules_seed_post", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ModuleSeedRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ModuleSeedResponse" + } + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Seed Modules", + "tags": [ + "compliance", + "compliance-modules" + ] + } + }, + "/api/compliance/modules/{module_id}": { + "get": { + "description": "Get a specific module with its regulations and risks.", + "operationId": "get_module_api_compliance_modules__module_id__get", + "parameters": [ + { + "in": "path", + "name": "module_id", + "required": true, + "schema": { + "title": "Module Id", + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ServiceModuleDetailResponse" + } + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Get Module", + "tags": [ + "compliance", + "compliance-modules" + ] + } + }, + "/api/compliance/modules/{module_id}/activate": { + "post": { + "description": "Activate a service module.", + "operationId": "activate_module_api_compliance_modules__module_id__activate_post", + "parameters": [ + { + "in": "path", + "name": "module_id", + "required": true, + "schema": { + "title": "Module Id", + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Activate Module", + "tags": [ + "compliance", + "compliance-modules" + ] + } + }, + "/api/compliance/modules/{module_id}/deactivate": { + "post": { + "description": "Deactivate a service module.", + "operationId": "deactivate_module_api_compliance_modules__module_id__deactivate_post", + "parameters": [ + { + "in": "path", + "name": "module_id", + "required": true, + "schema": { + "title": "Module Id", + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Deactivate Module", + "tags": [ + "compliance", + "compliance-modules" + ] + } + }, + "/api/compliance/modules/{module_id}/regulations": { + "post": { + "description": "Add a regulation mapping to a module.", + "operationId": "add_module_regulation_api_compliance_modules__module_id__regulations_post", + "parameters": [ + { + "in": "path", + "name": "module_id", + "required": true, + "schema": { + "title": "Module Id", + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ModuleRegulationMappingCreate" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ModuleRegulationMappingResponse" + } + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Add Module Regulation", + "tags": [ + "compliance", + "compliance-modules" + ] + } + }, + "/api/compliance/notfallplan/checklists": { + "get": { + "description": "List checklist items, optionally filtered by scenario_id.", + "operationId": "list_checklists_api_compliance_notfallplan_checklists_get", + "parameters": [ + { + "in": "query", + "name": "scenario_id", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Scenario Id" + } + }, + { + "in": "header", + "name": "X-Tenant-ID", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "X-Tenant-Id" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "List Checklists", + "tags": [ + "compliance", + "notfallplan" + ] + }, + "post": { + "description": "Create a new checklist item.", + "operationId": "create_checklist_api_compliance_notfallplan_checklists_post", + "parameters": [ + { + "in": "header", + "name": "X-Tenant-ID", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "X-Tenant-Id" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ChecklistCreate" + } + } + }, + "required": true + }, + "responses": { + "201": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Create Checklist", + "tags": [ + "compliance", + "notfallplan" + ] + } + }, + "/api/compliance/notfallplan/checklists/{checklist_id}": { + "delete": { + "description": "Delete a checklist item.", + "operationId": "delete_checklist_api_compliance_notfallplan_checklists__checklist_id__delete", + "parameters": [ + { + "in": "path", + "name": "checklist_id", + "required": true, + "schema": { + "title": "Checklist Id", + "type": "string" + } + }, + { + "in": "header", + "name": "X-Tenant-ID", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "X-Tenant-Id" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Delete Checklist", + "tags": [ + "compliance", + "notfallplan" + ] + }, + "put": { + "description": "Update a checklist item.", + "operationId": "update_checklist_api_compliance_notfallplan_checklists__checklist_id__put", + "parameters": [ + { + "in": "path", + "name": "checklist_id", + "required": true, + "schema": { + "title": "Checklist Id", + "type": "string" + } + }, + { + "in": "header", + "name": "X-Tenant-ID", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "X-Tenant-Id" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ChecklistUpdate" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Update Checklist", + "tags": [ + "compliance", + "notfallplan" + ] + } + }, + "/api/compliance/notfallplan/contacts": { + "get": { + "description": "List all emergency contacts for a tenant.", + "operationId": "list_contacts_api_compliance_notfallplan_contacts_get", + "parameters": [ + { + "in": "header", + "name": "X-Tenant-ID", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "X-Tenant-Id" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "List Contacts", + "tags": [ + "compliance", + "notfallplan" + ] + }, + "post": { + "description": "Create a new emergency contact.", + "operationId": "create_contact_api_compliance_notfallplan_contacts_post", + "parameters": [ + { + "in": "header", + "name": "X-Tenant-ID", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "X-Tenant-Id" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ContactCreate" + } + } + }, + "required": true + }, + "responses": { + "201": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Create Contact", + "tags": [ + "compliance", + "notfallplan" + ] + } + }, + "/api/compliance/notfallplan/contacts/{contact_id}": { + "delete": { + "description": "Delete an emergency contact.", + "operationId": "delete_contact_api_compliance_notfallplan_contacts__contact_id__delete", + "parameters": [ + { + "in": "path", + "name": "contact_id", + "required": true, + "schema": { + "title": "Contact Id", + "type": "string" + } + }, + { + "in": "header", + "name": "X-Tenant-ID", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "X-Tenant-Id" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Delete Contact", + "tags": [ + "compliance", + "notfallplan" + ] + }, + "put": { + "description": "Update an existing emergency contact.", + "operationId": "update_contact_api_compliance_notfallplan_contacts__contact_id__put", + "parameters": [ + { + "in": "path", + "name": "contact_id", + "required": true, + "schema": { + "title": "Contact Id", + "type": "string" + } + }, + { + "in": "header", + "name": "X-Tenant-ID", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "X-Tenant-Id" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ContactUpdate" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Update Contact", + "tags": [ + "compliance", + "notfallplan" + ] + } + }, + "/api/compliance/notfallplan/exercises": { + "get": { + "description": "List all exercises for a tenant.", + "operationId": "list_exercises_api_compliance_notfallplan_exercises_get", + "parameters": [ + { + "in": "header", + "name": "X-Tenant-ID", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "X-Tenant-Id" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "List Exercises", + "tags": [ + "compliance", + "notfallplan" + ] + }, + "post": { + "description": "Create a new exercise.", + "operationId": "create_exercise_api_compliance_notfallplan_exercises_post", + "parameters": [ + { + "in": "header", + "name": "X-Tenant-ID", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "X-Tenant-Id" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExerciseCreate" + } + } + }, + "required": true + }, + "responses": { + "201": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Create Exercise", + "tags": [ + "compliance", + "notfallplan" + ] + } + }, + "/api/compliance/notfallplan/incidents": { + "get": { + "description": "List all incidents for a tenant.", + "operationId": "list_incidents_api_compliance_notfallplan_incidents_get", + "parameters": [ + { + "in": "query", + "name": "status", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Status" + } + }, + { + "in": "query", + "name": "severity", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Severity" + } + }, + { + "in": "header", + "name": "X-Tenant-ID", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "X-Tenant-Id" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "List Incidents", + "tags": [ + "compliance", + "notfallplan" + ] + }, + "post": { + "description": "Create a new incident.", + "operationId": "create_incident_api_compliance_notfallplan_incidents_post", + "parameters": [ + { + "in": "header", + "name": "X-Tenant-ID", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "X-Tenant-Id" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/compliance__api__notfallplan_routes__IncidentCreate" + } + } + }, + "required": true + }, + "responses": { + "201": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Create Incident", + "tags": [ + "compliance", + "notfallplan" + ] + } + }, + "/api/compliance/notfallplan/incidents/{incident_id}": { + "delete": { + "description": "Delete an incident.", + "operationId": "delete_incident_api_compliance_notfallplan_incidents__incident_id__delete", + "parameters": [ + { + "in": "path", + "name": "incident_id", + "required": true, + "schema": { + "title": "Incident Id", + "type": "string" + } + }, + { + "in": "header", + "name": "X-Tenant-ID", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "X-Tenant-Id" + } + } + ], + "responses": { + "204": { + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Delete Incident", + "tags": [ + "compliance", + "notfallplan" + ] + }, + "put": { + "description": "Update an incident (including status transitions).", + "operationId": "update_incident_api_compliance_notfallplan_incidents__incident_id__put", + "parameters": [ + { + "in": "path", + "name": "incident_id", + "required": true, + "schema": { + "title": "Incident Id", + "type": "string" + } + }, + { + "in": "header", + "name": "X-Tenant-ID", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "X-Tenant-Id" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/compliance__api__notfallplan_routes__IncidentUpdate" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Update Incident", + "tags": [ + "compliance", + "notfallplan" + ] + } + }, + "/api/compliance/notfallplan/scenarios": { + "get": { + "description": "List all scenarios for a tenant.", + "operationId": "list_scenarios_api_compliance_notfallplan_scenarios_get", + "parameters": [ + { + "in": "header", + "name": "X-Tenant-ID", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "X-Tenant-Id" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "List Scenarios", + "tags": [ + "compliance", + "notfallplan" + ] + }, + "post": { + "description": "Create a new scenario.", + "operationId": "create_scenario_api_compliance_notfallplan_scenarios_post", + "parameters": [ + { + "in": "header", + "name": "X-Tenant-ID", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "X-Tenant-Id" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ScenarioCreate" + } + } + }, + "required": true + }, + "responses": { + "201": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Create Scenario", + "tags": [ + "compliance", + "notfallplan" + ] + } + }, + "/api/compliance/notfallplan/scenarios/{scenario_id}": { + "delete": { + "description": "Delete a scenario.", + "operationId": "delete_scenario_api_compliance_notfallplan_scenarios__scenario_id__delete", + "parameters": [ + { + "in": "path", + "name": "scenario_id", + "required": true, + "schema": { + "title": "Scenario Id", + "type": "string" + } + }, + { + "in": "header", + "name": "X-Tenant-ID", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "X-Tenant-Id" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Delete Scenario", + "tags": [ + "compliance", + "notfallplan" + ] + }, + "put": { + "description": "Update an existing scenario.", + "operationId": "update_scenario_api_compliance_notfallplan_scenarios__scenario_id__put", + "parameters": [ + { + "in": "path", + "name": "scenario_id", + "required": true, + "schema": { + "title": "Scenario Id", + "type": "string" + } + }, + { + "in": "header", + "name": "X-Tenant-ID", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "X-Tenant-Id" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ScenarioUpdate" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Update Scenario", + "tags": [ + "compliance", + "notfallplan" + ] + } + }, + "/api/compliance/notfallplan/stats": { + "get": { + "description": "Return statistics for the Notfallplan module.", + "operationId": "get_stats_api_compliance_notfallplan_stats_get", + "parameters": [ + { + "in": "header", + "name": "X-Tenant-ID", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "X-Tenant-Id" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Get Stats", + "tags": [ + "compliance", + "notfallplan" + ] + } + }, + "/api/compliance/notfallplan/templates": { + "get": { + "description": "List Melde-Templates for a tenant.", + "operationId": "list_templates_api_compliance_notfallplan_templates_get", + "parameters": [ + { + "in": "query", + "name": "type", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Type" + } + }, + { + "in": "header", + "name": "X-Tenant-ID", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "X-Tenant-Id" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "List Templates", + "tags": [ + "compliance", + "notfallplan" + ] + }, + "post": { + "description": "Create a new Melde-Template.", + "operationId": "create_template_api_compliance_notfallplan_templates_post", + "parameters": [ + { + "in": "header", + "name": "X-Tenant-ID", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "X-Tenant-Id" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/compliance__api__notfallplan_routes__TemplateCreate" + } + } + }, + "required": true + }, + "responses": { + "201": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Create Template", + "tags": [ + "compliance", + "notfallplan" + ] + } + }, + "/api/compliance/notfallplan/templates/{template_id}": { + "delete": { + "description": "Delete a Melde-Template.", + "operationId": "delete_template_api_compliance_notfallplan_templates__template_id__delete", + "parameters": [ + { + "in": "path", + "name": "template_id", + "required": true, + "schema": { + "title": "Template Id", + "type": "string" + } + }, + { + "in": "header", + "name": "X-Tenant-ID", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "X-Tenant-Id" + } + } + ], + "responses": { + "204": { + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Delete Template", + "tags": [ + "compliance", + "notfallplan" + ] + }, + "put": { + "description": "Update a Melde-Template.", + "operationId": "update_template_api_compliance_notfallplan_templates__template_id__put", + "parameters": [ + { + "in": "path", + "name": "template_id", + "required": true, + "schema": { + "title": "Template Id", + "type": "string" + } + }, + { + "in": "header", + "name": "X-Tenant-ID", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "X-Tenant-Id" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TemplateUpdate" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Update Template", + "tags": [ + "compliance", + "notfallplan" + ] + } + }, + "/api/compliance/obligations": { + "get": { + "description": "List obligations with optional filters.", + "operationId": "list_obligations_api_compliance_obligations_get", + "parameters": [ + { + "in": "query", + "name": "status", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Status" + } + }, + { + "in": "query", + "name": "priority", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Priority" + } + }, + { + "in": "query", + "name": "source", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Source" + } + }, + { + "in": "query", + "name": "search", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Search" + } + }, + { + "in": "query", + "name": "limit", + "required": false, + "schema": { + "default": 100, + "maximum": 500, + "minimum": 1, + "title": "Limit", + "type": "integer" + } + }, + { + "in": "query", + "name": "offset", + "required": false, + "schema": { + "default": 0, + "minimum": 0, + "title": "Offset", + "type": "integer" + } + }, + { + "in": "query", + "name": "tenant_id", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Tenant Id" + } + }, + { + "in": "header", + "name": "X-Tenant-ID", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "X-Tenant-Id" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "List Obligations", + "tags": [ + "compliance", + "obligations" + ] + }, + "post": { + "description": "Create a new compliance obligation.", + "operationId": "create_obligation_api_compliance_obligations_post", + "parameters": [ + { + "in": "query", + "name": "tenant_id", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Tenant Id" + } + }, + { + "in": "header", + "name": "x-user-id", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "X-User-Id" + } + }, + { + "in": "header", + "name": "X-Tenant-ID", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "X-Tenant-Id" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ObligationCreate" + } + } + }, + "required": true + }, + "responses": { + "201": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Create Obligation", + "tags": [ + "compliance", + "obligations" + ] + } + }, + "/api/compliance/obligations/stats": { + "get": { + "description": "Return obligation counts per status and priority.", + "operationId": "get_obligation_stats_api_compliance_obligations_stats_get", + "parameters": [ + { + "in": "query", + "name": "tenant_id", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Tenant Id" + } + }, + { + "in": "header", + "name": "X-Tenant-ID", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "X-Tenant-Id" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Get Obligation Stats", + "tags": [ + "compliance", + "obligations" + ] + } + }, + "/api/compliance/obligations/{obligation_id}": { + "delete": { + "operationId": "delete_obligation_api_compliance_obligations__obligation_id__delete", + "parameters": [ + { + "in": "path", + "name": "obligation_id", + "required": true, + "schema": { + "title": "Obligation Id", + "type": "string" + } + }, + { + "in": "query", + "name": "tenant_id", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Tenant Id" + } + }, + { + "in": "header", + "name": "x-user-id", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "X-User-Id" + } + }, + { + "in": "header", + "name": "X-Tenant-ID", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "X-Tenant-Id" + } + } + ], + "responses": { + "204": { + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Delete Obligation", + "tags": [ + "compliance", + "obligations" + ] + }, + "get": { + "operationId": "get_obligation_api_compliance_obligations__obligation_id__get", + "parameters": [ + { + "in": "path", + "name": "obligation_id", + "required": true, + "schema": { + "title": "Obligation Id", + "type": "string" + } + }, + { + "in": "query", + "name": "tenant_id", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Tenant Id" + } + }, + { + "in": "header", + "name": "X-Tenant-ID", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "X-Tenant-Id" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Get Obligation", + "tags": [ + "compliance", + "obligations" + ] + }, + "put": { + "description": "Update an obligation's fields.", + "operationId": "update_obligation_api_compliance_obligations__obligation_id__put", + "parameters": [ + { + "in": "path", + "name": "obligation_id", + "required": true, + "schema": { + "title": "Obligation Id", + "type": "string" + } + }, + { + "in": "query", + "name": "tenant_id", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Tenant Id" + } + }, + { + "in": "header", + "name": "x-user-id", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "X-User-Id" + } + }, + { + "in": "header", + "name": "X-Tenant-ID", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "X-Tenant-Id" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ObligationUpdate" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Update Obligation", + "tags": [ + "compliance", + "obligations" + ] + } + }, + "/api/compliance/obligations/{obligation_id}/status": { + "put": { + "description": "Quick status update for an obligation.", + "operationId": "update_obligation_status_api_compliance_obligations__obligation_id__status_put", + "parameters": [ + { + "in": "path", + "name": "obligation_id", + "required": true, + "schema": { + "title": "Obligation Id", + "type": "string" + } + }, + { + "in": "query", + "name": "tenant_id", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Tenant Id" + } + }, + { + "in": "header", + "name": "x-user-id", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "X-User-Id" + } + }, + { + "in": "header", + "name": "X-Tenant-ID", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "X-Tenant-Id" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ObligationStatusUpdate" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Update Obligation Status", + "tags": [ + "compliance", + "obligations" + ] + } + }, + "/api/compliance/obligations/{obligation_id}/versions": { + "get": { + "description": "List all versions for an Obligation.", + "operationId": "list_obligation_versions_api_compliance_obligations__obligation_id__versions_get", + "parameters": [ + { + "in": "path", + "name": "obligation_id", + "required": true, + "schema": { + "title": "Obligation Id", + "type": "string" + } + }, + { + "in": "query", + "name": "tenant_id", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Tenant Id" + } + }, + { + "in": "header", + "name": "X-Tenant-ID", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "X-Tenant-Id" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "List Obligation Versions", + "tags": [ + "compliance", + "obligations" + ] + } + }, + "/api/compliance/obligations/{obligation_id}/versions/{version_number}": { + "get": { + "description": "Get a specific Obligation version with full snapshot.", + "operationId": "get_obligation_version_api_compliance_obligations__obligation_id__versions__version_number__get", + "parameters": [ + { + "in": "path", + "name": "obligation_id", + "required": true, + "schema": { + "title": "Obligation Id", + "type": "string" + } + }, + { + "in": "path", + "name": "version_number", + "required": true, + "schema": { + "title": "Version Number", + "type": "integer" + } + }, + { + "in": "query", + "name": "tenant_id", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Tenant Id" + } + }, + { + "in": "header", + "name": "X-Tenant-ID", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "X-Tenant-Id" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Get Obligation Version", + "tags": [ + "compliance", + "obligations" + ] + } + }, + "/api/compliance/quality/metrics": { + "get": { + "description": "List quality metrics.", + "operationId": "list_metrics_api_compliance_quality_metrics_get", + "parameters": [ + { + "in": "query", + "name": "category", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Category" + } + }, + { + "in": "query", + "name": "ai_system", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Ai System" + } + }, + { + "in": "query", + "name": "limit", + "required": false, + "schema": { + "default": 100, + "maximum": 500, + "minimum": 1, + "title": "Limit", + "type": "integer" + } + }, + { + "in": "query", + "name": "offset", + "required": false, + "schema": { + "default": 0, + "minimum": 0, + "title": "Offset", + "type": "integer" + } + }, + { + "in": "query", + "name": "tenant_id", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Tenant Id" + } + }, + { + "in": "header", + "name": "X-Tenant-ID", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "X-Tenant-Id" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "List Metrics", + "tags": [ + "compliance", + "quality" + ] + }, + "post": { + "description": "Create a new quality metric.", + "operationId": "create_metric_api_compliance_quality_metrics_post", + "parameters": [ + { + "in": "query", + "name": "tenant_id", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Tenant Id" + } + }, + { + "in": "header", + "name": "X-Tenant-ID", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "X-Tenant-Id" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MetricCreate" + } + } + }, + "required": true + }, + "responses": { + "201": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Create Metric", + "tags": [ + "compliance", + "quality" + ] + } + }, + "/api/compliance/quality/metrics/{metric_id}": { + "delete": { + "operationId": "delete_metric_api_compliance_quality_metrics__metric_id__delete", + "parameters": [ + { + "in": "path", + "name": "metric_id", + "required": true, + "schema": { + "title": "Metric Id", + "type": "string" + } + }, + { + "in": "query", + "name": "tenant_id", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Tenant Id" + } + }, + { + "in": "header", + "name": "X-Tenant-ID", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "X-Tenant-Id" + } + } + ], + "responses": { + "204": { + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Delete Metric", + "tags": [ + "compliance", + "quality" + ] + }, + "put": { + "description": "Update a quality metric.", + "operationId": "update_metric_api_compliance_quality_metrics__metric_id__put", + "parameters": [ + { + "in": "path", + "name": "metric_id", + "required": true, + "schema": { + "title": "Metric Id", + "type": "string" + } + }, + { + "in": "query", + "name": "tenant_id", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Tenant Id" + } + }, + { + "in": "header", + "name": "X-Tenant-ID", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "X-Tenant-Id" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MetricUpdate" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Update Metric", + "tags": [ + "compliance", + "quality" + ] + } + }, + "/api/compliance/quality/stats": { + "get": { + "description": "Return quality dashboard stats.", + "operationId": "get_quality_stats_api_compliance_quality_stats_get", + "parameters": [ + { + "in": "query", + "name": "tenant_id", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Tenant Id" + } + }, + { + "in": "header", + "name": "X-Tenant-ID", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "X-Tenant-Id" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Get Quality Stats", + "tags": [ + "compliance", + "quality" + ] + } + }, + "/api/compliance/quality/tests": { + "get": { + "description": "List quality tests.", + "operationId": "list_tests_api_compliance_quality_tests_get", + "parameters": [ + { + "in": "query", + "name": "status", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Status" + } + }, + { + "in": "query", + "name": "ai_system", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Ai System" + } + }, + { + "in": "query", + "name": "limit", + "required": false, + "schema": { + "default": 100, + "maximum": 500, + "minimum": 1, + "title": "Limit", + "type": "integer" + } + }, + { + "in": "query", + "name": "offset", + "required": false, + "schema": { + "default": 0, + "minimum": 0, + "title": "Offset", + "type": "integer" + } + }, + { + "in": "query", + "name": "tenant_id", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Tenant Id" + } + }, + { + "in": "header", + "name": "X-Tenant-ID", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "X-Tenant-Id" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "List Tests", + "tags": [ + "compliance", + "quality" + ] + }, + "post": { + "description": "Create a new quality test entry.", + "operationId": "create_test_api_compliance_quality_tests_post", + "parameters": [ + { + "in": "query", + "name": "tenant_id", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Tenant Id" + } + }, + { + "in": "header", + "name": "X-Tenant-ID", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "X-Tenant-Id" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TestCreate" + } + } + }, + "required": true + }, + "responses": { + "201": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Create Test", + "tags": [ + "compliance", + "quality" + ] + } + }, + "/api/compliance/quality/tests/{test_id}": { + "delete": { + "operationId": "delete_test_api_compliance_quality_tests__test_id__delete", + "parameters": [ + { + "in": "path", + "name": "test_id", + "required": true, + "schema": { + "title": "Test Id", + "type": "string" + } + }, + { + "in": "query", + "name": "tenant_id", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Tenant Id" + } + }, + { + "in": "header", + "name": "X-Tenant-ID", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "X-Tenant-Id" + } + } + ], + "responses": { + "204": { + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Delete Test", + "tags": [ + "compliance", + "quality" + ] + }, + "put": { + "description": "Update a quality test.", + "operationId": "update_test_api_compliance_quality_tests__test_id__put", + "parameters": [ + { + "in": "path", + "name": "test_id", + "required": true, + "schema": { + "title": "Test Id", + "type": "string" + } + }, + { + "in": "query", + "name": "tenant_id", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Tenant Id" + } + }, + { + "in": "header", + "name": "X-Tenant-ID", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "X-Tenant-Id" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TestUpdate" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Update Test", + "tags": [ + "compliance", + "quality" + ] + } + }, + "/api/compliance/regulations": { + "get": { + "description": "List all regulations.", + "operationId": "list_regulations_api_compliance_regulations_get", + "parameters": [ + { + "in": "query", + "name": "is_active", + "required": false, + "schema": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "title": "Is Active" + } + }, + { + "in": "query", + "name": "regulation_type", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Regulation Type" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RegulationListResponse" + } + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "List Regulations", + "tags": [ + "compliance" + ] + } + }, + "/api/compliance/regulations/{code}": { + "get": { + "description": "Get a specific regulation by code.", + "operationId": "get_regulation_api_compliance_regulations__code__get", + "parameters": [ + { + "in": "path", + "name": "code", + "required": true, + "schema": { + "title": "Code", + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RegulationResponse" + } + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Get Regulation", + "tags": [ + "compliance" + ] + } + }, + "/api/compliance/regulations/{code}/requirements": { + "get": { + "description": "Get requirements for a specific regulation.", + "operationId": "get_regulation_requirements_api_compliance_regulations__code__requirements_get", + "parameters": [ + { + "in": "path", + "name": "code", + "required": true, + "schema": { + "title": "Code", + "type": "string" + } + }, + { + "in": "query", + "name": "is_applicable", + "required": false, + "schema": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "title": "Is Applicable" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RequirementListResponse" + } + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Get Regulation Requirements", + "tags": [ + "compliance" + ] + } + }, + "/api/compliance/reports/summary": { + "get": { + "description": "Get a quick summary report for the dashboard.", + "operationId": "get_summary_report_api_compliance_reports_summary_get", + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + } + }, + "summary": "Get Summary Report", + "tags": [ + "compliance", + "compliance-dashboard" + ] + } + }, + "/api/compliance/reports/{period}": { + "get": { + "description": "Generate a compliance report for the specified period.\n\nArgs:\n period: One of 'weekly', 'monthly', 'quarterly', 'yearly'\n as_of_date: Report date (YYYY-MM-DD format, defaults to today)\n\nReturns:\n Complete compliance report", + "operationId": "generate_period_report_api_compliance_reports__period__get", + "parameters": [ + { + "in": "path", + "name": "period", + "required": true, + "schema": { + "title": "Period", + "type": "string" + } + }, + { + "in": "query", + "name": "as_of_date", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "As Of Date" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Generate Period Report", + "tags": [ + "compliance", + "compliance-dashboard" + ] + } + }, + "/api/compliance/requirements": { + "get": { + "description": "List requirements with pagination and eager-loaded relationships.\n\nThis endpoint is optimized for large datasets (1000+ requirements) with:\n- Eager loading to prevent N+1 queries\n- Server-side pagination\n- Full-text search support", + "operationId": "list_requirements_paginated_api_compliance_requirements_get", + "parameters": [ + { + "description": "Page number", + "in": "query", + "name": "page", + "required": false, + "schema": { + "default": 1, + "description": "Page number", + "minimum": 1, + "title": "Page", + "type": "integer" + } + }, + { + "description": "Items per page", + "in": "query", + "name": "page_size", + "required": false, + "schema": { + "default": 50, + "description": "Items per page", + "maximum": 500, + "minimum": 1, + "title": "Page Size", + "type": "integer" + } + }, + { + "description": "Filter by regulation code", + "in": "query", + "name": "regulation_code", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "Filter by regulation code", + "title": "Regulation Code" + } + }, + { + "description": "Filter by implementation status", + "in": "query", + "name": "status", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "Filter by implementation status", + "title": "Status" + } + }, + { + "description": "Filter by applicability", + "in": "query", + "name": "is_applicable", + "required": false, + "schema": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "description": "Filter by applicability", + "title": "Is Applicable" + } + }, + { + "description": "Search in title/description", + "in": "query", + "name": "search", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "Search in title/description", + "title": "Search" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PaginatedRequirementResponse" + } + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "List Requirements Paginated", + "tags": [ + "compliance" + ] + }, + "post": { + "description": "Create a new requirement.", + "operationId": "create_requirement_api_compliance_requirements_post", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RequirementCreate" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RequirementResponse" + } + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Create Requirement", + "tags": [ + "compliance" + ] + } + }, + "/api/compliance/requirements/{requirement_id}": { + "delete": { + "description": "Delete a requirement by ID.", + "operationId": "delete_requirement_api_compliance_requirements__requirement_id__delete", + "parameters": [ + { + "in": "path", + "name": "requirement_id", + "required": true, + "schema": { + "title": "Requirement Id", + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Delete Requirement", + "tags": [ + "compliance" + ] + }, + "get": { + "description": "Get a specific requirement by ID, optionally with RAG legal context.", + "operationId": "get_requirement_api_compliance_requirements__requirement_id__get", + "parameters": [ + { + "in": "path", + "name": "requirement_id", + "required": true, + "schema": { + "title": "Requirement Id", + "type": "string" + } + }, + { + "description": "Include RAG legal context", + "in": "query", + "name": "include_legal_context", + "required": false, + "schema": { + "default": false, + "description": "Include RAG legal context", + "title": "Include Legal Context", + "type": "boolean" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Get Requirement", + "tags": [ + "compliance" + ] + }, + "put": { + "description": "Update a requirement with implementation/audit details.", + "operationId": "update_requirement_api_compliance_requirements__requirement_id__put", + "parameters": [ + { + "in": "path", + "name": "requirement_id", + "required": true, + "schema": { + "title": "Requirement Id", + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "additionalProperties": true, + "title": "Updates", + "type": "object" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Update Requirement", + "tags": [ + "compliance" + ] + } + }, + "/api/compliance/risks": { + "get": { + "description": "List risks with optional filters.", + "operationId": "list_risks_api_compliance_risks_get", + "parameters": [ + { + "in": "query", + "name": "category", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Category" + } + }, + { + "in": "query", + "name": "status", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Status" + } + }, + { + "in": "query", + "name": "risk_level", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Risk Level" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RiskListResponse" + } + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "List Risks", + "tags": [ + "compliance", + "compliance-risks" + ] + }, + "post": { + "description": "Create a new risk.", + "operationId": "create_risk_api_compliance_risks_post", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RiskCreate" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RiskResponse" + } + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Create Risk", + "tags": [ + "compliance", + "compliance-risks" + ] + } + }, + "/api/compliance/risks/matrix": { + "get": { + "description": "Get risk matrix data for visualization.", + "operationId": "get_risk_matrix_api_compliance_risks_matrix_get", + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RiskMatrixResponse" + } + } + }, + "description": "Successful Response" + } + }, + "summary": "Get Risk Matrix", + "tags": [ + "compliance", + "compliance-risks" + ] + } + }, + "/api/compliance/risks/{risk_id}": { + "delete": { + "description": "Delete a risk.", + "operationId": "delete_risk_api_compliance_risks__risk_id__delete", + "parameters": [ + { + "in": "path", + "name": "risk_id", + "required": true, + "schema": { + "title": "Risk Id", + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Delete Risk", + "tags": [ + "compliance", + "compliance-risks" + ] + }, + "put": { + "description": "Update a risk.", + "operationId": "update_risk_api_compliance_risks__risk_id__put", + "parameters": [ + { + "in": "path", + "name": "risk_id", + "required": true, + "schema": { + "title": "Risk Id", + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RiskUpdate" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RiskResponse" + } + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Update Risk", + "tags": [ + "compliance", + "compliance-risks" + ] + } + }, + "/api/compliance/score": { + "get": { + "description": "Get just the compliance score.", + "operationId": "get_compliance_score_api_compliance_score_get", + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + } + }, + "summary": "Get Compliance Score", + "tags": [ + "compliance", + "compliance-dashboard" + ] + } + }, + "/api/compliance/scraper/extract-bsi": { + "post": { + "description": "Extract requirements from BSI Technical Guidelines.\n\nUses pre-defined Pruefaspekte from BSI-TR-03161 documents.", + "operationId": "extract_bsi_requirements_api_compliance_scraper_extract_bsi_post", + "parameters": [ + { + "description": "BSI TR code", + "in": "query", + "name": "code", + "required": false, + "schema": { + "default": "BSI-TR-03161-2", + "description": "BSI TR code", + "title": "Code", + "type": "string" + } + }, + { + "in": "query", + "name": "force", + "required": false, + "schema": { + "default": false, + "title": "Force", + "type": "boolean" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Extract Bsi Requirements", + "tags": [ + "compliance", + "compliance-scraper" + ] + } + }, + "/api/compliance/scraper/extract-pdf": { + "post": { + "description": "Extract Pruefaspekte from BSI-TR PDF documents using PyMuPDF.\n\nSupported documents:\n- BSI-TR-03161-1: General security requirements\n- BSI-TR-03161-2: Web application security (OAuth, Sessions, etc.)\n- BSI-TR-03161-3: Backend/server security", + "operationId": "extract_pdf_requirements_api_compliance_scraper_extract_pdf_post", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PDFExtractionRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PDFExtractionResponse" + } + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Extract Pdf Requirements", + "tags": [ + "compliance", + "compliance-scraper" + ] + } + }, + "/api/compliance/scraper/pdf-documents": { + "get": { + "description": "List available PDF documents for extraction.", + "operationId": "list_pdf_documents_api_compliance_scraper_pdf_documents_get", + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + } + }, + "summary": "List Pdf Documents", + "tags": [ + "compliance", + "compliance-scraper" + ] + } + }, + "/api/compliance/scraper/scrape-all": { + "post": { + "description": "Start scraping all known regulation sources.", + "operationId": "scrape_all_sources_api_compliance_scraper_scrape_all_post", + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + } + }, + "summary": "Scrape All Sources", + "tags": [ + "compliance", + "compliance-scraper" + ] + } + }, + "/api/compliance/scraper/scrape/{code}": { + "post": { + "description": "Scrape a specific regulation source.", + "operationId": "scrape_single_source_api_compliance_scraper_scrape__code__post", + "parameters": [ + { + "in": "path", + "name": "code", + "required": true, + "schema": { + "title": "Code", + "type": "string" + } + }, + { + "description": "Force re-scrape even if data exists", + "in": "query", + "name": "force", + "required": false, + "schema": { + "default": false, + "description": "Force re-scrape even if data exists", + "title": "Force", + "type": "boolean" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Scrape Single Source", + "tags": [ + "compliance", + "compliance-scraper" + ] + } + }, + "/api/compliance/scraper/sources": { + "get": { + "description": "Get list of known regulation sources.", + "operationId": "get_scraper_sources_api_compliance_scraper_sources_get", + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + } + }, + "summary": "Get Scraper Sources", + "tags": [ + "compliance", + "compliance-scraper" + ] + } + }, + "/api/compliance/scraper/status": { + "get": { + "description": "Get current scraper status.", + "operationId": "get_scraper_status_api_compliance_scraper_status_get", + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + } + }, + "summary": "Get Scraper Status", + "tags": [ + "compliance", + "compliance-scraper" + ] + } + }, + "/api/compliance/security-backlog": { + "get": { + "description": "List security backlog items with optional filters.", + "operationId": "list_security_items_api_compliance_security_backlog_get", + "parameters": [ + { + "in": "query", + "name": "status", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Status" + } + }, + { + "in": "query", + "name": "severity", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Severity" + } + }, + { + "in": "query", + "name": "type", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Type" + } + }, + { + "in": "query", + "name": "search", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Search" + } + }, + { + "in": "query", + "name": "limit", + "required": false, + "schema": { + "default": 100, + "maximum": 500, + "minimum": 1, + "title": "Limit", + "type": "integer" + } + }, + { + "in": "query", + "name": "offset", + "required": false, + "schema": { + "default": 0, + "minimum": 0, + "title": "Offset", + "type": "integer" + } + }, + { + "in": "query", + "name": "tenant_id", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Tenant Id" + } + }, + { + "in": "header", + "name": "X-Tenant-ID", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "X-Tenant-Id" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "List Security Items", + "tags": [ + "compliance", + "security-backlog" + ] + }, + "post": { + "description": "Create a new security backlog item.", + "operationId": "create_security_item_api_compliance_security_backlog_post", + "parameters": [ + { + "in": "query", + "name": "tenant_id", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Tenant Id" + } + }, + { + "in": "header", + "name": "X-Tenant-ID", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "X-Tenant-Id" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SecurityItemCreate" + } + } + }, + "required": true + }, + "responses": { + "201": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Create Security Item", + "tags": [ + "compliance", + "security-backlog" + ] + } + }, + "/api/compliance/security-backlog/stats": { + "get": { + "description": "Return security backlog counts.", + "operationId": "get_security_stats_api_compliance_security_backlog_stats_get", + "parameters": [ + { + "in": "query", + "name": "tenant_id", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Tenant Id" + } + }, + { + "in": "header", + "name": "X-Tenant-ID", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "X-Tenant-Id" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Get Security Stats", + "tags": [ + "compliance", + "security-backlog" + ] + } + }, + "/api/compliance/security-backlog/{item_id}": { + "delete": { + "operationId": "delete_security_item_api_compliance_security_backlog__item_id__delete", + "parameters": [ + { + "in": "path", + "name": "item_id", + "required": true, + "schema": { + "title": "Item Id", + "type": "string" + } + }, + { + "in": "query", + "name": "tenant_id", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Tenant Id" + } + }, + { + "in": "header", + "name": "X-Tenant-ID", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "X-Tenant-Id" + } + } + ], + "responses": { + "204": { + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Delete Security Item", + "tags": [ + "compliance", + "security-backlog" + ] + }, + "put": { + "description": "Update a security backlog item.", + "operationId": "update_security_item_api_compliance_security_backlog__item_id__put", + "parameters": [ + { + "in": "path", + "name": "item_id", + "required": true, + "schema": { + "title": "Item Id", + "type": "string" + } + }, + { + "in": "query", + "name": "tenant_id", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Tenant Id" + } + }, + { + "in": "header", + "name": "X-Tenant-ID", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "X-Tenant-Id" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SecurityItemUpdate" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Update Security Item", + "tags": [ + "compliance", + "security-backlog" + ] + } + }, + "/api/compliance/seed": { + "post": { + "description": "Seed the compliance database with initial data.", + "operationId": "seed_database_api_compliance_seed_post", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SeedRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SeedResponse" + } + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Seed Database", + "tags": [ + "compliance" + ] + } + }, + "/api/compliance/seed-risks": { + "post": { + "description": "Seed only risks (incremental update for existing databases).", + "operationId": "seed_risks_only_api_compliance_seed_risks_post", + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + } + }, + "summary": "Seed Risks Only", + "tags": [ + "compliance" + ] + } + }, + "/api/compliance/tom/export": { + "get": { + "description": "Export TOM measures as CSV (semicolon-separated) or JSON.", + "operationId": "export_measures_api_compliance_tom_export_get", + "parameters": [ + { + "in": "query", + "name": "tenant_id", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Tenant Id" + } + }, + { + "in": "query", + "name": "format", + "required": false, + "schema": { + "default": "csv", + "title": "Format", + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Export Measures", + "tags": [ + "compliance", + "tom" + ] + } + }, + "/api/compliance/tom/measures": { + "get": { + "description": "List TOM measures with optional filters.", + "operationId": "list_measures_api_compliance_tom_measures_get", + "parameters": [ + { + "in": "query", + "name": "tenant_id", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Tenant Id" + } + }, + { + "in": "query", + "name": "category", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Category" + } + }, + { + "in": "query", + "name": "implementation_status", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Implementation Status" + } + }, + { + "in": "query", + "name": "priority", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Priority" + } + }, + { + "in": "query", + "name": "search", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Search" + } + }, + { + "in": "query", + "name": "limit", + "required": false, + "schema": { + "default": 100, + "maximum": 500, + "minimum": 1, + "title": "Limit", + "type": "integer" + } + }, + { + "in": "query", + "name": "offset", + "required": false, + "schema": { + "default": 0, + "minimum": 0, + "title": "Offset", + "type": "integer" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "List Measures", + "tags": [ + "compliance", + "tom" + ] + }, + "post": { + "description": "Create a single TOM measure.", + "operationId": "create_measure_api_compliance_tom_measures_post", + "parameters": [ + { + "in": "query", + "name": "tenant_id", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Tenant Id" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TOMMeasureCreate" + } + } + }, + "required": true + }, + "responses": { + "201": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Create Measure", + "tags": [ + "compliance", + "tom" + ] + } + }, + "/api/compliance/tom/measures/bulk": { + "post": { + "description": "Bulk upsert measures \u2014 used by deriveTOMs sync from frontend.", + "operationId": "bulk_upsert_measures_api_compliance_tom_measures_bulk_post", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TOMMeasureBulkBody" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Bulk Upsert Measures", + "tags": [ + "compliance", + "tom" + ] + } + }, + "/api/compliance/tom/measures/{measure_id}": { + "put": { + "description": "Update a TOM measure.", + "operationId": "update_measure_api_compliance_tom_measures__measure_id__put", + "parameters": [ + { + "in": "path", + "name": "measure_id", + "required": true, + "schema": { + "format": "uuid", + "title": "Measure Id", + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TOMMeasureUpdate" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Update Measure", + "tags": [ + "compliance", + "tom" + ] + } + }, + "/api/compliance/tom/measures/{measure_id}/versions": { + "get": { + "description": "List all versions for a TOM measure.", + "operationId": "list_measure_versions_api_compliance_tom_measures__measure_id__versions_get", + "parameters": [ + { + "in": "path", + "name": "measure_id", + "required": true, + "schema": { + "title": "Measure Id", + "type": "string" + } + }, + { + "in": "query", + "name": "tenant_id", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Tenant Id" + } + }, + { + "in": "query", + "name": "tenantId", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Tenantid" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "List Measure Versions", + "tags": [ + "compliance", + "tom" + ] + } + }, + "/api/compliance/tom/measures/{measure_id}/versions/{version_number}": { + "get": { + "description": "Get a specific TOM measure version with full snapshot.", + "operationId": "get_measure_version_api_compliance_tom_measures__measure_id__versions__version_number__get", + "parameters": [ + { + "in": "path", + "name": "measure_id", + "required": true, + "schema": { + "title": "Measure Id", + "type": "string" + } + }, + { + "in": "path", + "name": "version_number", + "required": true, + "schema": { + "title": "Version Number", + "type": "integer" + } + }, + { + "in": "query", + "name": "tenant_id", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Tenant Id" + } + }, + { + "in": "query", + "name": "tenantId", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Tenantid" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Get Measure Version", + "tags": [ + "compliance", + "tom" + ] + } + }, + "/api/compliance/tom/state": { + "delete": { + "description": "Clear TOM generator state for a tenant.", + "operationId": "delete_tom_state_api_compliance_tom_state_delete", + "parameters": [ + { + "in": "query", + "name": "tenant_id", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Tenant Id" + } + }, + { + "in": "query", + "name": "tenantId", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Tenantid" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Delete Tom State", + "tags": [ + "compliance", + "tom" + ] + }, + "get": { + "description": "Load TOM generator state for a tenant.", + "operationId": "get_tom_state_api_compliance_tom_state_get", + "parameters": [ + { + "in": "query", + "name": "tenant_id", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Tenant Id" + } + }, + { + "in": "query", + "name": "tenantId", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Tenantid" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Get Tom State", + "tags": [ + "compliance", + "tom" + ] + }, + "post": { + "description": "Save TOM generator state with optimistic locking (version check).", + "operationId": "save_tom_state_api_compliance_tom_state_post", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TOMStateBody" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Save Tom State", + "tags": [ + "compliance", + "tom" + ] + } + }, + "/api/compliance/tom/stats": { + "get": { + "description": "Return TOM statistics for a tenant.", + "operationId": "get_tom_stats_api_compliance_tom_stats_get", + "parameters": [ + { + "in": "query", + "name": "tenant_id", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Tenant Id" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Get Tom Stats", + "tags": [ + "compliance", + "tom" + ] + } + }, + "/api/compliance/v1/canonical/blocked-sources": { + "get": { + "description": "List all blocked (Rule 3) sources.", + "operationId": "list_blocked_sources_api_compliance_v1_canonical_blocked_sources_get", + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + } + }, + "summary": "List Blocked Sources", + "tags": [ + "compliance", + "control-generator" + ] + } + }, + "/api/compliance/v1/canonical/blocked-sources/cleanup": { + "post": { + "description": "Start cleanup workflow for blocked sources.\n\nThis marks all pending blocked sources for deletion.\nActual RAG chunk deletion and file removal is a separate manual step.", + "operationId": "start_cleanup_api_compliance_v1_canonical_blocked_sources_cleanup_post", + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + } + }, + "summary": "Start Cleanup", + "tags": [ + "compliance", + "control-generator" + ] + } + }, + "/api/compliance/v1/canonical/controls": { + "get": { + "description": "List all canonical controls, with optional filters.", + "operationId": "list_controls_api_compliance_v1_canonical_controls_get", + "parameters": [ + { + "in": "query", + "name": "severity", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Severity" + } + }, + { + "in": "query", + "name": "domain", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Domain" + } + }, + { + "in": "query", + "name": "release_state", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Release State" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "List Controls", + "tags": [ + "compliance", + "canonical-controls" + ] + }, + "post": { + "description": "Create a new canonical control.", + "operationId": "create_control_api_compliance_v1_canonical_controls_post", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ControlCreateRequest" + } + } + }, + "required": true + }, + "responses": { + "201": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Create Control", + "tags": [ + "compliance", + "canonical-controls" + ] + } + }, + "/api/compliance/v1/canonical/controls-customer": { + "get": { + "description": "Get controls filtered for customer visibility.\n\nRule 3 controls have source_citation and source_original_text hidden.\ngeneration_metadata is NEVER shown to customers.", + "operationId": "get_controls_customer_view_api_compliance_v1_canonical_controls_customer_get", + "parameters": [ + { + "in": "query", + "name": "severity", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Severity" + } + }, + { + "in": "query", + "name": "domain", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Domain" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Get Controls Customer View", + "tags": [ + "compliance", + "control-generator" + ] + } + }, + "/api/compliance/v1/canonical/controls/{control_id}": { + "delete": { + "description": "Delete a canonical control.", + "operationId": "delete_control_api_compliance_v1_canonical_controls__control_id__delete", + "parameters": [ + { + "in": "path", + "name": "control_id", + "required": true, + "schema": { + "title": "Control Id", + "type": "string" + } + } + ], + "responses": { + "204": { + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Delete Control", + "tags": [ + "compliance", + "canonical-controls" + ] + }, + "get": { + "description": "Get a single canonical control by its control_id (e.g. AUTH-001).", + "operationId": "get_control_api_compliance_v1_canonical_controls__control_id__get", + "parameters": [ + { + "in": "path", + "name": "control_id", + "required": true, + "schema": { + "title": "Control Id", + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Get Control", + "tags": [ + "compliance", + "canonical-controls" + ] + }, + "put": { + "description": "Update an existing canonical control (partial update).", + "operationId": "update_control_api_compliance_v1_canonical_controls__control_id__put", + "parameters": [ + { + "in": "path", + "name": "control_id", + "required": true, + "schema": { + "title": "Control Id", + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ControlUpdateRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Update Control", + "tags": [ + "compliance", + "canonical-controls" + ] + } + }, + "/api/compliance/v1/canonical/controls/{control_id}/similarity-check": { + "post": { + "description": "Run the too-close detector against a source/candidate text pair.", + "operationId": "similarity_check_api_compliance_v1_canonical_controls__control_id__similarity_check_post", + "parameters": [ + { + "in": "path", + "name": "control_id", + "required": true, + "schema": { + "title": "Control Id", + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SimilarityCheckRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Similarity Check", + "tags": [ + "compliance", + "canonical-controls" + ] + } + }, + "/api/compliance/v1/canonical/frameworks": { + "get": { + "description": "List all registered control frameworks.", + "operationId": "list_frameworks_api_compliance_v1_canonical_frameworks_get", + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + } + }, + "summary": "List Frameworks", + "tags": [ + "compliance", + "canonical-controls" + ] + } + }, + "/api/compliance/v1/canonical/frameworks/{framework_id}": { + "get": { + "description": "Get a single framework by its framework_id.", + "operationId": "get_framework_api_compliance_v1_canonical_frameworks__framework_id__get", + "parameters": [ + { + "in": "path", + "name": "framework_id", + "required": true, + "schema": { + "title": "Framework Id", + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Get Framework", + "tags": [ + "compliance", + "canonical-controls" + ] + } + }, + "/api/compliance/v1/canonical/frameworks/{framework_id}/controls": { + "get": { + "description": "List controls belonging to a framework.", + "operationId": "list_framework_controls_api_compliance_v1_canonical_frameworks__framework_id__controls_get", + "parameters": [ + { + "in": "path", + "name": "framework_id", + "required": true, + "schema": { + "title": "Framework Id", + "type": "string" + } + }, + { + "in": "query", + "name": "severity", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Severity" + } + }, + { + "in": "query", + "name": "release_state", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Release State" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "List Framework Controls", + "tags": [ + "compliance", + "canonical-controls" + ] + } + }, + "/api/compliance/v1/canonical/generate": { + "post": { + "description": "Start a control generation run.", + "operationId": "start_generation_api_compliance_v1_canonical_generate_post", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/GenerateRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/GenerateResponse" + } + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Start Generation", + "tags": [ + "compliance", + "control-generator" + ] + } + }, + "/api/compliance/v1/canonical/generate/jobs": { + "get": { + "description": "List all generation jobs.", + "operationId": "list_jobs_api_compliance_v1_canonical_generate_jobs_get", + "parameters": [ + { + "in": "query", + "name": "limit", + "required": false, + "schema": { + "default": 20, + "maximum": 100, + "minimum": 1, + "title": "Limit", + "type": "integer" + } + }, + { + "in": "query", + "name": "offset", + "required": false, + "schema": { + "default": 0, + "minimum": 0, + "title": "Offset", + "type": "integer" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "List Jobs", + "tags": [ + "compliance", + "control-generator" + ] + } + }, + "/api/compliance/v1/canonical/generate/processed-stats": { + "get": { + "description": "Get processing statistics per collection.", + "operationId": "get_processed_stats_api_compliance_v1_canonical_generate_processed_stats_get", + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + } + }, + "summary": "Get Processed Stats", + "tags": [ + "compliance", + "control-generator" + ] + } + }, + "/api/compliance/v1/canonical/generate/review-queue": { + "get": { + "description": "Get controls that need manual review.", + "operationId": "get_review_queue_api_compliance_v1_canonical_generate_review_queue_get", + "parameters": [ + { + "in": "query", + "name": "release_state", + "required": false, + "schema": { + "default": "needs_review", + "pattern": "^(needs_review|too_close|duplicate)$", + "title": "Release State", + "type": "string" + } + }, + { + "in": "query", + "name": "limit", + "required": false, + "schema": { + "default": 50, + "maximum": 200, + "minimum": 1, + "title": "Limit", + "type": "integer" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Get Review Queue", + "tags": [ + "compliance", + "control-generator" + ] + } + }, + "/api/compliance/v1/canonical/generate/review/{control_id}": { + "post": { + "description": "Complete review of a generated control.", + "operationId": "review_control_api_compliance_v1_canonical_generate_review__control_id__post", + "parameters": [ + { + "in": "path", + "name": "control_id", + "required": true, + "schema": { + "title": "Control Id", + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ReviewRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Review Control", + "tags": [ + "compliance", + "control-generator" + ] + } + }, + "/api/compliance/v1/canonical/generate/status/{job_id}": { + "get": { + "description": "Get status of a generation job.", + "operationId": "get_job_status_api_compliance_v1_canonical_generate_status__job_id__get", + "parameters": [ + { + "in": "path", + "name": "job_id", + "required": true, + "schema": { + "title": "Job Id", + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Get Job Status", + "tags": [ + "compliance", + "control-generator" + ] + } + }, + "/api/compliance/v1/canonical/licenses": { + "get": { + "description": "Return the license matrix.", + "operationId": "list_licenses_api_compliance_v1_canonical_licenses_get", + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + } + }, + "summary": "List Licenses", + "tags": [ + "compliance", + "canonical-controls" + ] + } + }, + "/api/compliance/v1/canonical/sources": { + "get": { + "description": "List all registered sources with permission flags.", + "operationId": "list_sources_api_compliance_v1_canonical_sources_get", + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + } + }, + "summary": "List Sources", + "tags": [ + "compliance", + "canonical-controls" + ] + } + }, + "/api/compliance/v1/compliance-scope": { + "get": { + "description": "Return the persisted compliance scope for a tenant, or 404 if not set.", + "operationId": "get_compliance_scope_api_compliance_v1_compliance_scope_get", + "parameters": [ + { + "in": "query", + "name": "tenant_id", + "required": false, + "schema": { + "default": "default", + "title": "Tenant Id", + "type": "string" + } + }, + { + "in": "header", + "name": "X-Tenant-ID", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "X-Tenant-Id" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ComplianceScopeResponse" + } + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Get Compliance Scope", + "tags": [ + "compliance", + "compliance-scope" + ] + }, + "post": { + "description": "Create or update the compliance scope for a tenant (UPSERT).", + "operationId": "upsert_compliance_scope_api_compliance_v1_compliance_scope_post", + "parameters": [ + { + "in": "query", + "name": "tenant_id", + "required": false, + "schema": { + "default": "default", + "title": "Tenant Id", + "type": "string" + } + }, + { + "in": "header", + "name": "X-Tenant-ID", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "X-Tenant-Id" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ComplianceScopeRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ComplianceScopeResponse" + } + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Upsert Compliance Scope", + "tags": [ + "compliance", + "compliance-scope" + ] + } + }, + "/api/compliance/v1/projects": { + "get": { + "description": "List all projects for the tenant.", + "operationId": "list_projects_api_compliance_v1_projects_get", + "parameters": [ + { + "in": "query", + "name": "include_archived", + "required": false, + "schema": { + "default": false, + "title": "Include Archived", + "type": "boolean" + } + }, + { + "in": "query", + "name": "tenant_id", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Tenant Id" + } + }, + { + "in": "header", + "name": "X-Tenant-ID", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "X-Tenant-Id" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "List Projects", + "tags": [ + "compliance", + "projects" + ] + }, + "post": { + "description": "Create a new compliance project.\n\nOptionally copies the company profile (companyProfile) from an existing\nproject's sdk_states into the new project's state. This allows a tenant\nto start a new project for a subsidiary with the same base data.", + "operationId": "create_project_api_compliance_v1_projects_post", + "parameters": [ + { + "in": "query", + "name": "tenant_id", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Tenant Id" + } + }, + { + "in": "header", + "name": "X-Tenant-ID", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "X-Tenant-Id" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CreateProjectRequest" + } + } + }, + "required": true + }, + "responses": { + "201": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Create Project", + "tags": [ + "compliance", + "projects" + ] + } + }, + "/api/compliance/v1/projects/{project_id}": { + "delete": { + "description": "Soft-delete (archive) a project.", + "operationId": "archive_project_api_compliance_v1_projects__project_id__delete", + "parameters": [ + { + "in": "path", + "name": "project_id", + "required": true, + "schema": { + "title": "Project Id", + "type": "string" + } + }, + { + "in": "query", + "name": "tenant_id", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Tenant Id" + } + }, + { + "in": "header", + "name": "X-Tenant-ID", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "X-Tenant-Id" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Archive Project", + "tags": [ + "compliance", + "projects" + ] + }, + "get": { + "description": "Get a single project by ID (tenant-scoped).", + "operationId": "get_project_api_compliance_v1_projects__project_id__get", + "parameters": [ + { + "in": "path", + "name": "project_id", + "required": true, + "schema": { + "title": "Project Id", + "type": "string" + } + }, + { + "in": "query", + "name": "tenant_id", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Tenant Id" + } + }, + { + "in": "header", + "name": "X-Tenant-ID", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "X-Tenant-Id" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Get Project", + "tags": [ + "compliance", + "projects" + ] + }, + "patch": { + "description": "Update project name/description.", + "operationId": "update_project_api_compliance_v1_projects__project_id__patch", + "parameters": [ + { + "in": "path", + "name": "project_id", + "required": true, + "schema": { + "title": "Project Id", + "type": "string" + } + }, + { + "in": "query", + "name": "tenant_id", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Tenant Id" + } + }, + { + "in": "header", + "name": "X-Tenant-ID", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "X-Tenant-Id" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UpdateProjectRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Update Project", + "tags": [ + "compliance", + "projects" + ] + } + }, + "/api/compliance/v1/projects/{project_id}/permanent": { + "delete": { + "description": "Permanently delete a project and all associated data.", + "operationId": "permanently_delete_project_api_compliance_v1_projects__project_id__permanent_delete", + "parameters": [ + { + "in": "path", + "name": "project_id", + "required": true, + "schema": { + "title": "Project Id", + "type": "string" + } + }, + { + "in": "query", + "name": "tenant_id", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Tenant Id" + } + }, + { + "in": "header", + "name": "X-Tenant-ID", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "X-Tenant-Id" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Permanently Delete Project", + "tags": [ + "compliance", + "projects" + ] + } + }, + "/api/compliance/v1/projects/{project_id}/restore": { + "post": { + "description": "Restore an archived project back to active.", + "operationId": "restore_project_api_compliance_v1_projects__project_id__restore_post", + "parameters": [ + { + "in": "path", + "name": "project_id", + "required": true, + "schema": { + "title": "Project Id", + "type": "string" + } + }, + { + "in": "query", + "name": "tenant_id", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Tenant Id" + } + }, + { + "in": "header", + "name": "X-Tenant-ID", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "X-Tenant-Id" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Restore Project", + "tags": [ + "compliance", + "projects" + ] + } + }, + "/api/compliance/v1/wiki/articles": { + "get": { + "description": "List all wiki articles, optionally filtered by category.", + "operationId": "list_articles_api_compliance_v1_wiki_articles_get", + "parameters": [ + { + "description": "Filter by category", + "in": "query", + "name": "category_id", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "Filter by category", + "title": "Category Id" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "List Articles", + "tags": [ + "compliance", + "wiki" + ] + } + }, + "/api/compliance/v1/wiki/articles/{article_id}": { + "get": { + "description": "Get a single wiki article by ID.", + "operationId": "get_article_api_compliance_v1_wiki_articles__article_id__get", + "parameters": [ + { + "in": "path", + "name": "article_id", + "required": true, + "schema": { + "title": "Article Id", + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Get Article", + "tags": [ + "compliance", + "wiki" + ] + } + }, + "/api/compliance/v1/wiki/categories": { + "get": { + "description": "List all wiki categories with article counts.", + "operationId": "list_categories_api_compliance_v1_wiki_categories_get", + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + } + }, + "summary": "List Categories", + "tags": [ + "compliance", + "wiki" + ] + } + }, + "/api/compliance/v1/wiki/search": { + "get": { + "description": "Full-text search across wiki articles using PostgreSQL tsvector.", + "operationId": "search_wiki_api_compliance_v1_wiki_search_get", + "parameters": [ + { + "description": "Search query", + "in": "query", + "name": "q", + "required": true, + "schema": { + "description": "Search query", + "minLength": 2, + "title": "Q", + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Search Wiki", + "tags": [ + "compliance", + "wiki" + ] + } + }, + "/api/compliance/vendor-compliance/contracts": { + "get": { + "operationId": "list_contracts_api_compliance_vendor_compliance_contracts_get", + "parameters": [ + { + "in": "query", + "name": "tenant_id", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Tenant Id" + } + }, + { + "in": "query", + "name": "vendor_id", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Vendor Id" + } + }, + { + "in": "query", + "name": "status", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Status" + } + }, + { + "in": "query", + "name": "skip", + "required": false, + "schema": { + "default": 0, + "minimum": 0, + "title": "Skip", + "type": "integer" + } + }, + { + "in": "query", + "name": "limit", + "required": false, + "schema": { + "default": 100, + "maximum": 500, + "minimum": 1, + "title": "Limit", + "type": "integer" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "List Contracts", + "tags": [ + "compliance", + "vendor-compliance" + ] + }, + "post": { + "operationId": "create_contract_api_compliance_vendor_compliance_contracts_post", + "requestBody": { + "content": { + "application/json": { + "schema": { + "additionalProperties": true, + "default": {}, + "title": "Body", + "type": "object" + } + } + } + }, + "responses": { + "201": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Create Contract", + "tags": [ + "compliance", + "vendor-compliance" + ] + } + }, + "/api/compliance/vendor-compliance/contracts/{contract_id}": { + "delete": { + "operationId": "delete_contract_api_compliance_vendor_compliance_contracts__contract_id__delete", + "parameters": [ + { + "in": "path", + "name": "contract_id", + "required": true, + "schema": { + "title": "Contract Id", + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Delete Contract", + "tags": [ + "compliance", + "vendor-compliance" + ] + }, + "get": { + "operationId": "get_contract_api_compliance_vendor_compliance_contracts__contract_id__get", + "parameters": [ + { + "in": "path", + "name": "contract_id", + "required": true, + "schema": { + "title": "Contract Id", + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Get Contract", + "tags": [ + "compliance", + "vendor-compliance" + ] + }, + "put": { + "operationId": "update_contract_api_compliance_vendor_compliance_contracts__contract_id__put", + "parameters": [ + { + "in": "path", + "name": "contract_id", + "required": true, + "schema": { + "title": "Contract Id", + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "additionalProperties": true, + "default": {}, + "title": "Body", + "type": "object" + } + } + } + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Update Contract", + "tags": [ + "compliance", + "vendor-compliance" + ] + } + }, + "/api/compliance/vendor-compliance/control-instances": { + "get": { + "operationId": "list_control_instances_api_compliance_vendor_compliance_control_instances_get", + "parameters": [ + { + "in": "query", + "name": "tenant_id", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Tenant Id" + } + }, + { + "in": "query", + "name": "vendor_id", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Vendor Id" + } + }, + { + "in": "query", + "name": "skip", + "required": false, + "schema": { + "default": 0, + "minimum": 0, + "title": "Skip", + "type": "integer" + } + }, + { + "in": "query", + "name": "limit", + "required": false, + "schema": { + "default": 100, + "maximum": 500, + "minimum": 1, + "title": "Limit", + "type": "integer" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "List Control Instances", + "tags": [ + "compliance", + "vendor-compliance" + ] + }, + "post": { + "operationId": "create_control_instance_api_compliance_vendor_compliance_control_instances_post", + "requestBody": { + "content": { + "application/json": { + "schema": { + "additionalProperties": true, + "default": {}, + "title": "Body", + "type": "object" + } + } + } + }, + "responses": { + "201": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Create Control Instance", + "tags": [ + "compliance", + "vendor-compliance" + ] + } + }, + "/api/compliance/vendor-compliance/control-instances/{instance_id}": { + "delete": { + "operationId": "delete_control_instance_api_compliance_vendor_compliance_control_instances__instance_id__delete", + "parameters": [ + { + "in": "path", + "name": "instance_id", + "required": true, + "schema": { + "title": "Instance Id", + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Delete Control Instance", + "tags": [ + "compliance", + "vendor-compliance" + ] + }, + "get": { + "operationId": "get_control_instance_api_compliance_vendor_compliance_control_instances__instance_id__get", + "parameters": [ + { + "in": "path", + "name": "instance_id", + "required": true, + "schema": { + "title": "Instance Id", + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Get Control Instance", + "tags": [ + "compliance", + "vendor-compliance" + ] + }, + "put": { + "operationId": "update_control_instance_api_compliance_vendor_compliance_control_instances__instance_id__put", + "parameters": [ + { + "in": "path", + "name": "instance_id", + "required": true, + "schema": { + "title": "Instance Id", + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "additionalProperties": true, + "default": {}, + "title": "Body", + "type": "object" + } + } + } + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Update Control Instance", + "tags": [ + "compliance", + "vendor-compliance" + ] + } + }, + "/api/compliance/vendor-compliance/controls": { + "get": { + "operationId": "list_controls_api_compliance_vendor_compliance_controls_get", + "parameters": [ + { + "in": "query", + "name": "tenant_id", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Tenant Id" + } + }, + { + "in": "query", + "name": "domain", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Domain" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "List Controls", + "tags": [ + "compliance", + "vendor-compliance" + ] + }, + "post": { + "operationId": "create_control_api_compliance_vendor_compliance_controls_post", + "requestBody": { + "content": { + "application/json": { + "schema": { + "additionalProperties": true, + "default": {}, + "title": "Body", + "type": "object" + } + } + } + }, + "responses": { + "201": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Create Control", + "tags": [ + "compliance", + "vendor-compliance" + ] + } + }, + "/api/compliance/vendor-compliance/controls/{control_id}": { + "delete": { + "operationId": "delete_control_api_compliance_vendor_compliance_controls__control_id__delete", + "parameters": [ + { + "in": "path", + "name": "control_id", + "required": true, + "schema": { + "title": "Control Id", + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Delete Control", + "tags": [ + "compliance", + "vendor-compliance" + ] + } + }, + "/api/compliance/vendor-compliance/export": { + "post": { + "operationId": "export_report_api_compliance_vendor_compliance_export_post", + "responses": { + "501": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + } + }, + "summary": "Export Report", + "tags": [ + "compliance", + "vendor-compliance" + ] + } + }, + "/api/compliance/vendor-compliance/export/{report_id}": { + "get": { + "operationId": "get_export_api_compliance_vendor_compliance_export__report_id__get", + "parameters": [ + { + "in": "path", + "name": "report_id", + "required": true, + "schema": { + "title": "Report Id", + "type": "string" + } + } + ], + "responses": { + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + }, + "501": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + } + }, + "summary": "Get Export", + "tags": [ + "compliance", + "vendor-compliance" + ] + } + }, + "/api/compliance/vendor-compliance/export/{report_id}/download": { + "get": { + "operationId": "download_export_api_compliance_vendor_compliance_export__report_id__download_get", + "parameters": [ + { + "in": "path", + "name": "report_id", + "required": true, + "schema": { + "title": "Report Id", + "type": "string" + } + } + ], + "responses": { + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + }, + "501": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + } + }, + "summary": "Download Export", + "tags": [ + "compliance", + "vendor-compliance" + ] + } + }, + "/api/compliance/vendor-compliance/findings": { + "get": { + "operationId": "list_findings_api_compliance_vendor_compliance_findings_get", + "parameters": [ + { + "in": "query", + "name": "tenant_id", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Tenant Id" + } + }, + { + "in": "query", + "name": "vendor_id", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Vendor Id" + } + }, + { + "in": "query", + "name": "severity", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Severity" + } + }, + { + "in": "query", + "name": "status", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Status" + } + }, + { + "in": "query", + "name": "skip", + "required": false, + "schema": { + "default": 0, + "minimum": 0, + "title": "Skip", + "type": "integer" + } + }, + { + "in": "query", + "name": "limit", + "required": false, + "schema": { + "default": 100, + "maximum": 500, + "minimum": 1, + "title": "Limit", + "type": "integer" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "List Findings", + "tags": [ + "compliance", + "vendor-compliance" + ] + }, + "post": { + "operationId": "create_finding_api_compliance_vendor_compliance_findings_post", + "requestBody": { + "content": { + "application/json": { + "schema": { + "additionalProperties": true, + "default": {}, + "title": "Body", + "type": "object" + } + } + } + }, + "responses": { + "201": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Create Finding", + "tags": [ + "compliance", + "vendor-compliance" + ] + } + }, + "/api/compliance/vendor-compliance/findings/{finding_id}": { + "delete": { + "operationId": "delete_finding_api_compliance_vendor_compliance_findings__finding_id__delete", + "parameters": [ + { + "in": "path", + "name": "finding_id", + "required": true, + "schema": { + "title": "Finding Id", + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Delete Finding", + "tags": [ + "compliance", + "vendor-compliance" + ] + }, + "get": { + "operationId": "get_finding_api_compliance_vendor_compliance_findings__finding_id__get", + "parameters": [ + { + "in": "path", + "name": "finding_id", + "required": true, + "schema": { + "title": "Finding Id", + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Get Finding", + "tags": [ + "compliance", + "vendor-compliance" + ] + }, + "put": { + "operationId": "update_finding_api_compliance_vendor_compliance_findings__finding_id__put", + "parameters": [ + { + "in": "path", + "name": "finding_id", + "required": true, + "schema": { + "title": "Finding Id", + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "additionalProperties": true, + "default": {}, + "title": "Body", + "type": "object" + } + } + } + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Update Finding", + "tags": [ + "compliance", + "vendor-compliance" + ] + } + }, + "/api/compliance/vendor-compliance/vendors": { + "get": { + "operationId": "list_vendors_api_compliance_vendor_compliance_vendors_get", + "parameters": [ + { + "in": "query", + "name": "tenant_id", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Tenant Id" + } + }, + { + "in": "query", + "name": "status", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Status" + } + }, + { + "in": "query", + "name": "riskLevel", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Risklevel" + } + }, + { + "in": "query", + "name": "search", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Search" + } + }, + { + "in": "query", + "name": "skip", + "required": false, + "schema": { + "default": 0, + "minimum": 0, + "title": "Skip", + "type": "integer" + } + }, + { + "in": "query", + "name": "limit", + "required": false, + "schema": { + "default": 100, + "maximum": 500, + "minimum": 1, + "title": "Limit", + "type": "integer" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "List Vendors", + "tags": [ + "compliance", + "vendor-compliance" + ] + }, + "post": { + "operationId": "create_vendor_api_compliance_vendor_compliance_vendors_post", + "requestBody": { + "content": { + "application/json": { + "schema": { + "additionalProperties": true, + "default": {}, + "title": "Body", + "type": "object" + } + } + } + }, + "responses": { + "201": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Create Vendor", + "tags": [ + "compliance", + "vendor-compliance" + ] + } + }, + "/api/compliance/vendor-compliance/vendors/stats": { + "get": { + "operationId": "get_vendor_stats_api_compliance_vendor_compliance_vendors_stats_get", + "parameters": [ + { + "in": "query", + "name": "tenant_id", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Tenant Id" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Get Vendor Stats", + "tags": [ + "compliance", + "vendor-compliance" + ] + } + }, + "/api/compliance/vendor-compliance/vendors/{vendor_id}": { + "delete": { + "operationId": "delete_vendor_api_compliance_vendor_compliance_vendors__vendor_id__delete", + "parameters": [ + { + "in": "path", + "name": "vendor_id", + "required": true, + "schema": { + "title": "Vendor Id", + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Delete Vendor", + "tags": [ + "compliance", + "vendor-compliance" + ] + }, + "get": { + "operationId": "get_vendor_api_compliance_vendor_compliance_vendors__vendor_id__get", + "parameters": [ + { + "in": "path", + "name": "vendor_id", + "required": true, + "schema": { + "title": "Vendor Id", + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Get Vendor", + "tags": [ + "compliance", + "vendor-compliance" + ] + }, + "put": { + "operationId": "update_vendor_api_compliance_vendor_compliance_vendors__vendor_id__put", + "parameters": [ + { + "in": "path", + "name": "vendor_id", + "required": true, + "schema": { + "title": "Vendor Id", + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "additionalProperties": true, + "default": {}, + "title": "Body", + "type": "object" + } + } + } + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Update Vendor", + "tags": [ + "compliance", + "vendor-compliance" + ] + } + }, + "/api/compliance/vendor-compliance/vendors/{vendor_id}/status": { + "patch": { + "operationId": "patch_vendor_status_api_compliance_vendor_compliance_vendors__vendor_id__status_patch", + "parameters": [ + { + "in": "path", + "name": "vendor_id", + "required": true, + "schema": { + "title": "Vendor Id", + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "additionalProperties": true, + "default": {}, + "title": "Body", + "type": "object" + } + } + } + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Patch Vendor Status", + "tags": [ + "compliance", + "vendor-compliance" + ] + } + }, + "/api/compliance/vvt/activities": { + "get": { + "description": "List all processing activities with optional filters.", + "operationId": "list_activities_api_compliance_vvt_activities_get", + "parameters": [ + { + "in": "query", + "name": "status", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Status" + } + }, + { + "in": "query", + "name": "business_function", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Business Function" + } + }, + { + "in": "query", + "name": "search", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Search" + } + }, + { + "in": "query", + "name": "review_overdue", + "required": false, + "schema": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "title": "Review Overdue" + } + }, + { + "in": "query", + "name": "tenant_id", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Tenant Id" + } + }, + { + "in": "header", + "name": "X-Tenant-ID", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "X-Tenant-Id" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "items": { + "$ref": "#/components/schemas/VVTActivityResponse" + }, + "title": "Response List Activities Api Compliance Vvt Activities Get", + "type": "array" + } + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "List Activities", + "tags": [ + "compliance", + "compliance-vvt" + ] + }, + "post": { + "description": "Create a new processing activity.", + "operationId": "create_activity_api_compliance_vvt_activities_post", + "parameters": [ + { + "in": "query", + "name": "tenant_id", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Tenant Id" + } + }, + { + "in": "header", + "name": "X-Tenant-ID", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "X-Tenant-Id" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/VVTActivityCreate" + } + } + }, + "required": true + }, + "responses": { + "201": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/VVTActivityResponse" + } + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Create Activity", + "tags": [ + "compliance", + "compliance-vvt" + ] + } + }, + "/api/compliance/vvt/activities/{activity_id}": { + "delete": { + "description": "Delete a processing activity.", + "operationId": "delete_activity_api_compliance_vvt_activities__activity_id__delete", + "parameters": [ + { + "in": "path", + "name": "activity_id", + "required": true, + "schema": { + "title": "Activity Id", + "type": "string" + } + }, + { + "in": "query", + "name": "tenant_id", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Tenant Id" + } + }, + { + "in": "header", + "name": "X-Tenant-ID", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "X-Tenant-Id" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Delete Activity", + "tags": [ + "compliance", + "compliance-vvt" + ] + }, + "get": { + "description": "Get a single processing activity by ID.", + "operationId": "get_activity_api_compliance_vvt_activities__activity_id__get", + "parameters": [ + { + "in": "path", + "name": "activity_id", + "required": true, + "schema": { + "title": "Activity Id", + "type": "string" + } + }, + { + "in": "query", + "name": "tenant_id", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Tenant Id" + } + }, + { + "in": "header", + "name": "X-Tenant-ID", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "X-Tenant-Id" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/VVTActivityResponse" + } + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Get Activity", + "tags": [ + "compliance", + "compliance-vvt" + ] + }, + "put": { + "description": "Update a processing activity.", + "operationId": "update_activity_api_compliance_vvt_activities__activity_id__put", + "parameters": [ + { + "in": "path", + "name": "activity_id", + "required": true, + "schema": { + "title": "Activity Id", + "type": "string" + } + }, + { + "in": "query", + "name": "tenant_id", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Tenant Id" + } + }, + { + "in": "header", + "name": "X-Tenant-ID", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "X-Tenant-Id" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/VVTActivityUpdate" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/VVTActivityResponse" + } + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Update Activity", + "tags": [ + "compliance", + "compliance-vvt" + ] + } + }, + "/api/compliance/vvt/activities/{activity_id}/versions": { + "get": { + "description": "List all versions for a VVT activity.", + "operationId": "list_activity_versions_api_compliance_vvt_activities__activity_id__versions_get", + "parameters": [ + { + "in": "path", + "name": "activity_id", + "required": true, + "schema": { + "title": "Activity Id", + "type": "string" + } + }, + { + "in": "query", + "name": "tenant_id", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Tenant Id" + } + }, + { + "in": "header", + "name": "X-Tenant-ID", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "X-Tenant-Id" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "List Activity Versions", + "tags": [ + "compliance", + "compliance-vvt" + ] + } + }, + "/api/compliance/vvt/activities/{activity_id}/versions/{version_number}": { + "get": { + "description": "Get a specific VVT activity version with full snapshot.", + "operationId": "get_activity_version_api_compliance_vvt_activities__activity_id__versions__version_number__get", + "parameters": [ + { + "in": "path", + "name": "activity_id", + "required": true, + "schema": { + "title": "Activity Id", + "type": "string" + } + }, + { + "in": "path", + "name": "version_number", + "required": true, + "schema": { + "title": "Version Number", + "type": "integer" + } + }, + { + "in": "query", + "name": "tenant_id", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Tenant Id" + } + }, + { + "in": "header", + "name": "X-Tenant-ID", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "X-Tenant-Id" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Get Activity Version", + "tags": [ + "compliance", + "compliance-vvt" + ] + } + }, + "/api/compliance/vvt/audit-log": { + "get": { + "description": "Get the VVT audit trail.", + "operationId": "get_audit_log_api_compliance_vvt_audit_log_get", + "parameters": [ + { + "in": "query", + "name": "limit", + "required": false, + "schema": { + "default": 50, + "maximum": 500, + "minimum": 1, + "title": "Limit", + "type": "integer" + } + }, + { + "in": "query", + "name": "offset", + "required": false, + "schema": { + "default": 0, + "minimum": 0, + "title": "Offset", + "type": "integer" + } + }, + { + "in": "query", + "name": "tenant_id", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Tenant Id" + } + }, + { + "in": "header", + "name": "X-Tenant-ID", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "X-Tenant-Id" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "items": { + "$ref": "#/components/schemas/VVTAuditLogEntry" + }, + "title": "Response Get Audit Log Api Compliance Vvt Audit Log Get", + "type": "array" + } + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Get Audit Log", + "tags": [ + "compliance", + "compliance-vvt" + ] + } + }, + "/api/compliance/vvt/export": { + "get": { + "description": "Export all activities as JSON or CSV (semicolon-separated, DE locale).", + "operationId": "export_activities_api_compliance_vvt_export_get", + "parameters": [ + { + "in": "query", + "name": "format", + "required": false, + "schema": { + "default": "json", + "pattern": "^(json|csv)$", + "title": "Format", + "type": "string" + } + }, + { + "in": "query", + "name": "tenant_id", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Tenant Id" + } + }, + { + "in": "header", + "name": "X-Tenant-ID", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "X-Tenant-Id" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Export Activities", + "tags": [ + "compliance", + "compliance-vvt" + ] + } + }, + "/api/compliance/vvt/organization": { + "get": { + "description": "Load the VVT organization header for the given tenant.", + "operationId": "get_organization_api_compliance_vvt_organization_get", + "parameters": [ + { + "in": "query", + "name": "tenant_id", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Tenant Id" + } + }, + { + "in": "header", + "name": "X-Tenant-ID", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "X-Tenant-Id" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "anyOf": [ + { + "$ref": "#/components/schemas/VVTOrganizationResponse" + }, + { + "type": "null" + } + ], + "title": "Response Get Organization Api Compliance Vvt Organization Get" + } + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Get Organization", + "tags": [ + "compliance", + "compliance-vvt" + ] + }, + "put": { + "description": "Create or update the VVT organization header.", + "operationId": "upsert_organization_api_compliance_vvt_organization_put", + "parameters": [ + { + "in": "query", + "name": "tenant_id", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Tenant Id" + } + }, + { + "in": "header", + "name": "X-Tenant-ID", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "X-Tenant-Id" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/VVTOrganizationUpdate" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/VVTOrganizationResponse" + } + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Upsert Organization", + "tags": [ + "compliance", + "compliance-vvt" + ] + } + }, + "/api/compliance/vvt/stats": { + "get": { + "description": "Get VVT statistics summary.", + "operationId": "get_stats_api_compliance_vvt_stats_get", + "parameters": [ + { + "in": "query", + "name": "tenant_id", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Tenant Id" + } + }, + { + "in": "header", + "name": "X-Tenant-ID", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "X-Tenant-Id" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/VVTStatsResponse" + } + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Get Stats", + "tags": [ + "compliance", + "compliance-vvt" + ] + } + }, + "/api/consent/admin/audit-log": { + "get": { + "description": "Gibt das Audit-Log zur\u00fcck", + "operationId": "admin_get_audit_log_api_consent_admin_audit_log_get", + "parameters": [ + { + "in": "query", + "name": "page", + "required": false, + "schema": { + "default": 1, + "minimum": 1, + "title": "Page", + "type": "integer" + } + }, + { + "in": "query", + "name": "per_page", + "required": false, + "schema": { + "default": 50, + "maximum": 100, + "minimum": 1, + "title": "Per Page", + "type": "integer" + } + }, + { + "in": "header", + "name": "authorization", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Authorization" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Admin Get Audit Log", + "tags": [ + "consent-admin" + ] + } + }, + "/api/consent/admin/cookies/categories": { + "get": { + "description": "Gibt alle Cookie-Kategorien zur\u00fcck", + "operationId": "admin_get_cookie_categories_api_consent_admin_cookies_categories_get", + "parameters": [ + { + "in": "header", + "name": "authorization", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Authorization" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Admin Get Cookie Categories", + "tags": [ + "consent-admin" + ] + }, + "post": { + "description": "Erstellt eine neue Cookie-Kategorie", + "operationId": "admin_create_cookie_category_api_consent_admin_cookies_categories_post", + "parameters": [ + { + "in": "header", + "name": "authorization", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Authorization" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CreateCookieCategoryRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Admin Create Cookie Category", + "tags": [ + "consent-admin" + ] + } + }, + "/api/consent/admin/cookies/categories/{cat_id}": { + "delete": { + "description": "Deaktiviert eine Cookie-Kategorie", + "operationId": "admin_delete_cookie_category_api_consent_admin_cookies_categories__cat_id__delete", + "parameters": [ + { + "in": "path", + "name": "cat_id", + "required": true, + "schema": { + "title": "Cat Id", + "type": "string" + } + }, + { + "in": "header", + "name": "authorization", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Authorization" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Admin Delete Cookie Category", + "tags": [ + "consent-admin" + ] + }, + "put": { + "description": "Aktualisiert eine Cookie-Kategorie", + "operationId": "admin_update_cookie_category_api_consent_admin_cookies_categories__cat_id__put", + "parameters": [ + { + "in": "path", + "name": "cat_id", + "required": true, + "schema": { + "title": "Cat Id", + "type": "string" + } + }, + { + "in": "header", + "name": "authorization", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Authorization" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "additionalProperties": true, + "title": "Request", + "type": "object" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Admin Update Cookie Category", + "tags": [ + "consent-admin" + ] + } + }, + "/api/consent/admin/documents": { + "get": { + "description": "Gibt alle Dokumente zur\u00fcck (inkl. inaktive)", + "operationId": "admin_get_documents_api_consent_admin_documents_get", + "parameters": [ + { + "in": "header", + "name": "authorization", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Authorization" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Admin Get Documents", + "tags": [ + "consent-admin" + ] + }, + "post": { + "description": "Erstellt ein neues rechtliches Dokument", + "operationId": "admin_create_document_api_consent_admin_documents_post", + "parameters": [ + { + "in": "header", + "name": "authorization", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Authorization" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CreateDocumentRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Admin Create Document", + "tags": [ + "consent-admin" + ] + } + }, + "/api/consent/admin/documents/{doc_id}": { + "delete": { + "description": "Deaktiviert ein rechtliches Dokument (Soft-Delete)", + "operationId": "admin_delete_document_api_consent_admin_documents__doc_id__delete", + "parameters": [ + { + "in": "path", + "name": "doc_id", + "required": true, + "schema": { + "title": "Doc Id", + "type": "string" + } + }, + { + "in": "header", + "name": "authorization", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Authorization" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Admin Delete Document", + "tags": [ + "consent-admin" + ] + }, + "put": { + "description": "Aktualisiert ein rechtliches Dokument", + "operationId": "admin_update_document_api_consent_admin_documents__doc_id__put", + "parameters": [ + { + "in": "path", + "name": "doc_id", + "required": true, + "schema": { + "title": "Doc Id", + "type": "string" + } + }, + { + "in": "header", + "name": "authorization", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Authorization" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UpdateDocumentRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Admin Update Document", + "tags": [ + "consent-admin" + ] + } + }, + "/api/consent/admin/documents/{doc_id}/versions": { + "get": { + "description": "Gibt alle Versionen eines Dokuments zur\u00fcck", + "operationId": "admin_get_versions_api_consent_admin_documents__doc_id__versions_get", + "parameters": [ + { + "in": "path", + "name": "doc_id", + "required": true, + "schema": { + "title": "Doc Id", + "type": "string" + } + }, + { + "in": "header", + "name": "authorization", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Authorization" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Admin Get Versions", + "tags": [ + "consent-admin" + ] + } + }, + "/api/consent/admin/privacy/deletion-requests": { + "get": { + "description": "[Admin] Gibt alle L\u00f6schantr\u00e4ge zur\u00fcck.", + "operationId": "admin_get_deletion_requests_api_consent_admin_privacy_deletion_requests_get", + "parameters": [ + { + "description": "Filter: pending, processing, completed", + "in": "query", + "name": "status", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "Filter: pending, processing, completed", + "title": "Status" + } + }, + { + "in": "query", + "name": "page", + "required": false, + "schema": { + "default": 1, + "minimum": 1, + "title": "Page", + "type": "integer" + } + }, + { + "in": "query", + "name": "per_page", + "required": false, + "schema": { + "default": 20, + "maximum": 100, + "minimum": 1, + "title": "Per Page", + "type": "integer" + } + }, + { + "in": "header", + "name": "authorization", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Authorization" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Admin Get Deletion Requests", + "tags": [ + "gdpr-admin" + ] + } + }, + "/api/consent/admin/privacy/deletion-requests/{request_id}/process": { + "post": { + "description": "[Admin] Bearbeitet einen L\u00f6schantrag.", + "operationId": "admin_process_deletion_request_api_consent_admin_privacy_deletion_requests__request_id__process_post", + "parameters": [ + { + "in": "path", + "name": "request_id", + "required": true, + "schema": { + "title": "Request Id", + "type": "string" + } + }, + { + "in": "header", + "name": "authorization", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Authorization" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Admin Process Deletion Request", + "tags": [ + "gdpr-admin" + ] + } + }, + "/api/consent/admin/privacy/export-pdf/{user_id}": { + "get": { + "description": "[Admin] Generiert PDF-Datenauskunft f\u00fcr einen beliebigen Nutzer.\n\nNur f\u00fcr Admins: Erm\u00f6glicht Export von Nutzerdaten f\u00fcr Support-Anfragen\noder Beh\u00f6rdenanfragen.", + "operationId": "admin_export_user_data_pdf_api_consent_admin_privacy_export_pdf__user_id__get", + "parameters": [ + { + "in": "path", + "name": "user_id", + "required": true, + "schema": { + "title": "User Id", + "type": "string" + } + }, + { + "in": "header", + "name": "authorization", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Authorization" + } + } + ], + "responses": { + "200": { + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Admin Export User Data Pdf", + "tags": [ + "gdpr-admin" + ] + } + }, + "/api/consent/admin/privacy/retention-stats": { + "get": { + "description": "[Admin] Gibt Statistiken \u00fcber Daten und L\u00f6schfristen zur\u00fcck.", + "operationId": "admin_get_retention_stats_api_consent_admin_privacy_retention_stats_get", + "parameters": [ + { + "in": "header", + "name": "authorization", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Authorization" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Admin Get Retention Stats", + "tags": [ + "gdpr-admin" + ] + } + }, + "/api/consent/admin/scheduled-publishing/process": { + "post": { + "description": "Verarbeitet alle f\u00e4lligen geplanten Ver\u00f6ffentlichungen.\nSollte von einem Cronjob regelm\u00e4\u00dfig aufgerufen werden.", + "operationId": "admin_process_scheduled_publishing_api_consent_admin_scheduled_publishing_process_post", + "parameters": [ + { + "in": "header", + "name": "authorization", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Authorization" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Admin Process Scheduled Publishing", + "tags": [ + "consent-admin" + ] + } + }, + "/api/consent/admin/scheduled-versions": { + "get": { + "description": "Gibt alle f\u00fcr Ver\u00f6ffentlichung geplanten Versionen zur\u00fcck", + "operationId": "admin_get_scheduled_versions_api_consent_admin_scheduled_versions_get", + "parameters": [ + { + "in": "header", + "name": "authorization", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Authorization" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Admin Get Scheduled Versions", + "tags": [ + "consent-admin" + ] + } + }, + "/api/consent/admin/statistics": { + "get": { + "description": "Gibt Statistiken \u00fcber Consents zur\u00fcck", + "operationId": "admin_get_statistics_api_consent_admin_statistics_get", + "parameters": [ + { + "in": "header", + "name": "authorization", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Authorization" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Admin Get Statistics", + "tags": [ + "consent-admin" + ] + } + }, + "/api/consent/admin/versions": { + "post": { + "description": "Erstellt eine neue Dokumentversion", + "operationId": "admin_create_version_api_consent_admin_versions_post", + "parameters": [ + { + "in": "header", + "name": "authorization", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Authorization" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CreateVersionRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Admin Create Version", + "tags": [ + "consent-admin" + ] + } + }, + "/api/consent/admin/versions/upload-word": { + "post": { + "description": "Konvertiert ein Word-Dokument (.docx) zu HTML.\nErfordert mammoth Library.", + "operationId": "upload_word_document_api_consent_admin_versions_upload_word_post", + "parameters": [ + { + "in": "header", + "name": "authorization", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Authorization" + } + } + ], + "requestBody": { + "content": { + "multipart/form-data": { + "schema": { + "$ref": "#/components/schemas/Body_upload_word_document_api_consent_admin_versions_upload_word_post" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Upload Word Document", + "tags": [ + "consent-admin" + ] + } + }, + "/api/consent/admin/versions/{version_id}": { + "delete": { + "description": "L\u00f6scht eine Dokumentversion dauerhaft.\n\nNur Versionen im Status 'draft' oder 'rejected' k\u00f6nnen gel\u00f6scht werden.\nVer\u00f6ffentlichte Versionen m\u00fcssen stattdessen archiviert werden.\nDie Versionsnummer wird nach dem L\u00f6schen wieder frei.", + "operationId": "admin_delete_version_api_consent_admin_versions__version_id__delete", + "parameters": [ + { + "in": "path", + "name": "version_id", + "required": true, + "schema": { + "title": "Version Id", + "type": "string" + } + }, + { + "in": "header", + "name": "authorization", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Authorization" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Admin Delete Version", + "tags": [ + "consent-admin" + ] + }, + "put": { + "description": "Aktualisiert eine Dokumentversion (nur draft Status)", + "operationId": "admin_update_version_api_consent_admin_versions__version_id__put", + "parameters": [ + { + "in": "path", + "name": "version_id", + "required": true, + "schema": { + "title": "Version Id", + "type": "string" + } + }, + { + "in": "header", + "name": "authorization", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Authorization" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UpdateVersionRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Admin Update Version", + "tags": [ + "consent-admin" + ] + } + }, + "/api/consent/admin/versions/{version_id}/approval-history": { + "get": { + "description": "Gibt die Genehmigungshistorie einer Version zur\u00fcck", + "operationId": "admin_get_approval_history_api_consent_admin_versions__version_id__approval_history_get", + "parameters": [ + { + "in": "path", + "name": "version_id", + "required": true, + "schema": { + "title": "Version Id", + "type": "string" + } + }, + { + "in": "header", + "name": "authorization", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Authorization" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Admin Get Approval History", + "tags": [ + "consent-admin" + ] + } + }, + "/api/consent/admin/versions/{version_id}/approve": { + "post": { + "description": "Genehmigt eine Version (nur DSB).\n\nMit scheduled_publish_at kann ein Ver\u00f6ffentlichungszeitpunkt festgelegt werden.\nFormat: ISO 8601 (z.B. \"2026-01-01T00:00:00Z\")", + "operationId": "admin_approve_version_api_consent_admin_versions__version_id__approve_post", + "parameters": [ + { + "in": "path", + "name": "version_id", + "required": true, + "schema": { + "title": "Version Id", + "type": "string" + } + }, + { + "in": "header", + "name": "authorization", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Authorization" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApprovalCommentRequest" + } + } + } + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Admin Approve Version", + "tags": [ + "consent-admin" + ] + } + }, + "/api/consent/admin/versions/{version_id}/archive": { + "post": { + "description": "Archiviert eine Dokumentversion", + "operationId": "admin_archive_version_api_consent_admin_versions__version_id__archive_post", + "parameters": [ + { + "in": "path", + "name": "version_id", + "required": true, + "schema": { + "title": "Version Id", + "type": "string" + } + }, + { + "in": "header", + "name": "authorization", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Authorization" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Admin Archive Version", + "tags": [ + "consent-admin" + ] + } + }, + "/api/consent/admin/versions/{version_id}/compare": { + "get": { + "description": "Vergleicht Version mit aktuell ver\u00f6ffentlichter Version", + "operationId": "admin_compare_versions_api_consent_admin_versions__version_id__compare_get", + "parameters": [ + { + "in": "path", + "name": "version_id", + "required": true, + "schema": { + "title": "Version Id", + "type": "string" + } + }, + { + "in": "header", + "name": "authorization", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Authorization" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Admin Compare Versions", + "tags": [ + "consent-admin" + ] + } + }, + "/api/consent/admin/versions/{version_id}/publish": { + "post": { + "description": "Ver\u00f6ffentlicht eine Dokumentversion", + "operationId": "admin_publish_version_api_consent_admin_versions__version_id__publish_post", + "parameters": [ + { + "in": "path", + "name": "version_id", + "required": true, + "schema": { + "title": "Version Id", + "type": "string" + } + }, + { + "in": "header", + "name": "authorization", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Authorization" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Admin Publish Version", + "tags": [ + "consent-admin" + ] + } + }, + "/api/consent/admin/versions/{version_id}/reject": { + "post": { + "description": "Lehnt eine Version ab (nur DSB)", + "operationId": "admin_reject_version_api_consent_admin_versions__version_id__reject_post", + "parameters": [ + { + "in": "path", + "name": "version_id", + "required": true, + "schema": { + "title": "Version Id", + "type": "string" + } + }, + { + "in": "header", + "name": "authorization", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Authorization" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RejectRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Admin Reject Version", + "tags": [ + "consent-admin" + ] + } + }, + "/api/consent/admin/versions/{version_id}/submit-review": { + "post": { + "description": "Reicht eine Version zur DSB-Pr\u00fcfung ein", + "operationId": "admin_submit_for_review_api_consent_admin_versions__version_id__submit_review_post", + "parameters": [ + { + "in": "path", + "name": "version_id", + "required": true, + "schema": { + "title": "Version Id", + "type": "string" + } + }, + { + "in": "header", + "name": "authorization", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Authorization" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Admin Submit For Review", + "tags": [ + "consent-admin" + ] + } + }, + "/api/consent/check/{document_type}": { + "get": { + "description": "Pr\u00fcft ob der Benutzer einem Dokument zugestimmt hat.\nGibt zur\u00fcck ob Zustimmung vorliegt und ob sie aktualisiert werden muss.", + "operationId": "check_consent_api_consent_check__document_type__get", + "parameters": [ + { + "in": "path", + "name": "document_type", + "required": true, + "schema": { + "title": "Document Type", + "type": "string" + } + }, + { + "in": "query", + "name": "language", + "required": false, + "schema": { + "default": "de", + "title": "Language", + "type": "string" + } + }, + { + "in": "header", + "name": "authorization", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Authorization" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Check Consent", + "tags": [ + "consent" + ] + } + }, + "/api/consent/cookies": { + "post": { + "description": "Speichert die Cookie-Pr\u00e4ferenzen des Benutzers", + "operationId": "set_cookie_consent_api_consent_cookies_post", + "parameters": [ + { + "in": "header", + "name": "authorization", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Authorization" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CookieConsentRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Set Cookie Consent", + "tags": [ + "consent" + ] + } + }, + "/api/consent/cookies/categories": { + "get": { + "description": "Holt alle Cookie-Kategorien f\u00fcr das Cookie-Banner", + "operationId": "get_cookie_categories_api_consent_cookies_categories_get", + "parameters": [ + { + "in": "query", + "name": "language", + "required": false, + "schema": { + "default": "de", + "title": "Language", + "type": "string" + } + }, + { + "in": "header", + "name": "authorization", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Authorization" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Get Cookie Categories", + "tags": [ + "consent" + ] + } + }, + "/api/consent/documents/{document_type}/latest": { + "get": { + "description": "Holt die aktuellste Version eines rechtlichen Dokuments", + "operationId": "get_latest_document_api_consent_documents__document_type__latest_get", + "parameters": [ + { + "in": "path", + "name": "document_type", + "required": true, + "schema": { + "title": "Document Type", + "type": "string" + } + }, + { + "in": "query", + "name": "language", + "required": false, + "schema": { + "default": "de", + "title": "Language", + "type": "string" + } + }, + { + "in": "header", + "name": "authorization", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Authorization" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Get Latest Document", + "tags": [ + "consent" + ] + } + }, + "/api/consent/give": { + "post": { + "description": "Speichert die Zustimmung des Benutzers zu einem Dokument", + "operationId": "give_consent_api_consent_give_post", + "parameters": [ + { + "in": "header", + "name": "authorization", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Authorization" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ConsentRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Give Consent", + "tags": [ + "consent" + ] + } + }, + "/api/consent/health": { + "get": { + "description": "Pr\u00fcft die Verbindung zum Consent Service", + "operationId": "consent_health_api_consent_health_get", + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + } + }, + "summary": "Consent Health", + "tags": [ + "consent" + ] + } + }, + "/api/consent/pending": { + "get": { + "description": "Gibt alle Dokumente zur\u00fcck, die noch Zustimmung ben\u00f6tigen.\nN\u00fctzlich f\u00fcr Anzeige beim Login oder in den Einstellungen.", + "operationId": "get_pending_consents_api_consent_pending_get", + "parameters": [ + { + "in": "query", + "name": "language", + "required": false, + "schema": { + "default": "de", + "title": "Language", + "type": "string" + } + }, + { + "in": "header", + "name": "authorization", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Authorization" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Get Pending Consents", + "tags": [ + "consent" + ] + } + }, + "/api/consent/privacy/data-categories": { + "get": { + "description": "Gibt alle Datenkategorien mit ihren L\u00f6schfristen zur\u00fcck.\n\nDiese Information wird auch im PDF-Export angezeigt und gibt Nutzern\nTransparenz dar\u00fcber, welche Daten wie lange gespeichert werden.\n\nQuery Parameters:\n filter: 'essential' f\u00fcr Pflicht-Daten, 'optional' f\u00fcr Opt-in Daten", + "operationId": "get_data_categories_api_consent_privacy_data_categories_get", + "parameters": [ + { + "description": "Filter: 'essential', 'optional', oder leer f\u00fcr alle", + "in": "query", + "name": "filter", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "Filter: 'essential', 'optional', oder leer f\u00fcr alle", + "title": "Filter" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Get Data Categories", + "tags": [ + "gdpr-privacy" + ] + } + }, + "/api/consent/privacy/data-categories/{category}": { + "get": { + "description": "Gibt Details zu einer spezifischen Datenkategorie zur\u00fcck.", + "operationId": "get_data_category_details_api_consent_privacy_data_categories__category__get", + "parameters": [ + { + "in": "path", + "name": "category", + "required": true, + "schema": { + "title": "Category", + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Get Data Category Details", + "tags": [ + "gdpr-privacy" + ] + } + }, + "/api/consent/privacy/delete": { + "post": { + "description": "GDPR Art. 17: Recht auf L\u00f6schung\nFordert die L\u00f6schung aller Benutzerdaten an.", + "operationId": "request_data_deletion_api_consent_privacy_delete_post", + "parameters": [ + { + "in": "header", + "name": "authorization", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Authorization" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DataDeletionRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Request Data Deletion", + "tags": [ + "consent" + ] + } + }, + "/api/consent/privacy/export": { + "post": { + "description": "GDPR Art. 20: Recht auf Daten\u00fcbertragbarkeit\nFordert einen Export aller Benutzerdaten an.", + "operationId": "request_data_export_api_consent_privacy_export_post", + "parameters": [ + { + "in": "header", + "name": "authorization", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Authorization" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Request Data Export", + "tags": [ + "consent" + ] + } + }, + "/api/consent/privacy/export-html": { + "get": { + "description": "Generiert eine HTML-Datenauskunft (Preview oder Alternative zu PDF).\n\nReturns:\n HTML-Dokument mit allen gespeicherten Nutzerdaten", + "operationId": "export_user_data_html_api_consent_privacy_export_html_get", + "parameters": [ + { + "in": "header", + "name": "authorization", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Authorization" + } + } + ], + "responses": { + "200": { + "content": { + "text/html": { + "schema": { + "type": "string" + } + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Export User Data Html", + "tags": [ + "gdpr-privacy" + ] + } + }, + "/api/consent/privacy/export-pdf": { + "post": { + "description": "Generiert eine PDF-Datenauskunft gem\u00e4\u00df DSGVO Art. 15.\n\nReturns:\n PDF-Dokument mit allen gespeicherten Nutzerdaten", + "operationId": "export_user_data_pdf_api_consent_privacy_export_pdf_post", + "parameters": [ + { + "in": "header", + "name": "authorization", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Authorization" + } + } + ], + "responses": { + "200": { + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Export User Data Pdf", + "tags": [ + "gdpr-privacy" + ] + } + }, + "/api/consent/privacy/my-data": { + "get": { + "description": "GDPR Art. 15: Auskunftsrecht\nGibt alle \u00fcber den Benutzer gespeicherten Daten zur\u00fcck.", + "operationId": "get_my_data_api_consent_privacy_my_data_get", + "parameters": [ + { + "in": "header", + "name": "authorization", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Authorization" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Get My Data", + "tags": [ + "consent" + ] + } + }, + "/api/consent/privacy/request-deletion": { + "post": { + "description": "Reicht einen Antrag auf Datenl\u00f6schung ein (DSGVO Art. 17).\n\nDer Antrag wird protokolliert und innerhalb von 30 Tagen bearbeitet.\nBestimmte Daten m\u00fcssen aufgrund gesetzlicher Aufbewahrungsfristen\nm\u00f6glicherweise l\u00e4nger gespeichert werden.\n\nBody:\n reason: Optionaler Grund f\u00fcr die L\u00f6schung\n confirm: Muss true sein zur Best\u00e4tigung", + "operationId": "request_data_deletion_api_consent_privacy_request_deletion_post", + "parameters": [ + { + "in": "header", + "name": "authorization", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Authorization" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DeletionRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Request Data Deletion", + "tags": [ + "gdpr-privacy" + ] + } + }, + "/api/consent/token/demo": { + "get": { + "description": "Generiert einen Demo-Token f\u00fcr nicht-authentifizierte Benutzer.\nDieser Token erm\u00f6glicht das Lesen von \u00f6ffentlichen Dokumenten.", + "operationId": "get_demo_token_api_consent_token_demo_get", + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + } + }, + "summary": "Get Demo Token", + "tags": [ + "consent" + ] + } + }, + "/api/v1/admin/blocked-content": { + "get": { + "description": "List blocked content entries.", + "operationId": "list_blocked_content_api_v1_admin_blocked_content_get", + "parameters": [ + { + "in": "query", + "name": "limit", + "required": false, + "schema": { + "default": 50, + "maximum": 500, + "minimum": 1, + "title": "Limit", + "type": "integer" + } + }, + { + "in": "query", + "name": "offset", + "required": false, + "schema": { + "default": 0, + "minimum": 0, + "title": "Offset", + "type": "integer" + } + }, + { + "in": "query", + "name": "domain", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Domain" + } + }, + { + "in": "query", + "name": "from", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "From" + } + }, + { + "in": "query", + "name": "to", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "To" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "List Blocked Content", + "tags": [ + "source-policy" + ] + } + }, + "/api/v1/admin/compliance-report": { + "get": { + "description": "Generate a compliance report for source policies.", + "operationId": "get_compliance_report_api_v1_admin_compliance_report_get", + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + } + }, + "summary": "Get Compliance Report", + "tags": [ + "source-policy" + ] + } + }, + "/api/v1/admin/operations-matrix": { + "get": { + "description": "Get the full operations matrix.", + "operationId": "get_operations_matrix_api_v1_admin_operations_matrix_get", + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + } + }, + "summary": "Get Operations Matrix", + "tags": [ + "source-policy" + ] + } + }, + "/api/v1/admin/operations/{operation_id}": { + "put": { + "description": "Update an operation in the matrix.", + "operationId": "update_operation_api_v1_admin_operations__operation_id__put", + "parameters": [ + { + "in": "path", + "name": "operation_id", + "required": true, + "schema": { + "title": "Operation Id", + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OperationUpdate" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Update Operation", + "tags": [ + "source-policy" + ] + } + }, + "/api/v1/admin/pii-rules": { + "get": { + "description": "List all PII rules with optional category filter.", + "operationId": "list_pii_rules_api_v1_admin_pii_rules_get", + "parameters": [ + { + "in": "query", + "name": "category", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Category" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "List Pii Rules", + "tags": [ + "source-policy" + ] + }, + "post": { + "description": "Create a new PII rule.", + "operationId": "create_pii_rule_api_v1_admin_pii_rules_post", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PIIRuleCreate" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Create Pii Rule", + "tags": [ + "source-policy" + ] + } + }, + "/api/v1/admin/pii-rules/{rule_id}": { + "delete": { + "description": "Delete a PII rule.", + "operationId": "delete_pii_rule_api_v1_admin_pii_rules__rule_id__delete", + "parameters": [ + { + "in": "path", + "name": "rule_id", + "required": true, + "schema": { + "title": "Rule Id", + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Delete Pii Rule", + "tags": [ + "source-policy" + ] + }, + "put": { + "description": "Update a PII rule.", + "operationId": "update_pii_rule_api_v1_admin_pii_rules__rule_id__put", + "parameters": [ + { + "in": "path", + "name": "rule_id", + "required": true, + "schema": { + "title": "Rule Id", + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PIIRuleUpdate" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Update Pii Rule", + "tags": [ + "source-policy" + ] + } + }, + "/api/v1/admin/policy-audit": { + "get": { + "description": "Get the audit trail for source policy changes.", + "operationId": "get_policy_audit_api_v1_admin_policy_audit_get", + "parameters": [ + { + "in": "query", + "name": "limit", + "required": false, + "schema": { + "default": 50, + "maximum": 500, + "minimum": 1, + "title": "Limit", + "type": "integer" + } + }, + { + "in": "query", + "name": "offset", + "required": false, + "schema": { + "default": 0, + "minimum": 0, + "title": "Offset", + "type": "integer" + } + }, + { + "in": "query", + "name": "entity_type", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Entity Type" + } + }, + { + "in": "query", + "name": "from", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "From" + } + }, + { + "in": "query", + "name": "to", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "To" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Get Policy Audit", + "tags": [ + "source-policy" + ] + } + }, + "/api/v1/admin/policy-stats": { + "get": { + "description": "Get dashboard statistics for source policy.", + "operationId": "get_policy_stats_api_v1_admin_policy_stats_get", + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + } + }, + "summary": "Get Policy Stats", + "tags": [ + "source-policy" + ] + } + }, + "/api/v1/admin/sources": { + "get": { + "description": "List all allowed sources with optional filters.", + "operationId": "list_sources_api_v1_admin_sources_get", + "parameters": [ + { + "in": "query", + "name": "active_only", + "required": false, + "schema": { + "default": false, + "title": "Active Only", + "type": "boolean" + } + }, + { + "in": "query", + "name": "source_type", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Source Type" + } + }, + { + "in": "query", + "name": "license", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "License" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "List Sources", + "tags": [ + "source-policy" + ] + }, + "post": { + "description": "Add a new allowed source.", + "operationId": "create_source_api_v1_admin_sources_post", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SourceCreate" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Create Source", + "tags": [ + "source-policy" + ] + } + }, + "/api/v1/admin/sources/{source_id}": { + "delete": { + "description": "Remove an allowed source.", + "operationId": "delete_source_api_v1_admin_sources__source_id__delete", + "parameters": [ + { + "in": "path", + "name": "source_id", + "required": true, + "schema": { + "title": "Source Id", + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Delete Source", + "tags": [ + "source-policy" + ] + }, + "get": { + "description": "Get a specific source.", + "operationId": "get_source_api_v1_admin_sources__source_id__get", + "parameters": [ + { + "in": "path", + "name": "source_id", + "required": true, + "schema": { + "title": "Source Id", + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Get Source", + "tags": [ + "source-policy" + ] + }, + "put": { + "description": "Update an existing source.", + "operationId": "update_source_api_v1_admin_sources__source_id__put", + "parameters": [ + { + "in": "path", + "name": "source_id", + "required": true, + "schema": { + "title": "Source Id", + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SourceUpdate" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Update Source", + "tags": [ + "source-policy" + ] + } + }, + "/api/v1/company-profile": { + "delete": { + "description": "Delete company profile for a tenant (DSGVO Recht auf Loeschung, Art. 17).", + "operationId": "delete_company_profile_api_v1_company_profile_delete", + "parameters": [ + { + "in": "query", + "name": "tenant_id", + "required": false, + "schema": { + "default": "default", + "title": "Tenant Id", + "type": "string" + } + }, + { + "in": "query", + "name": "project_id", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Project Id" + } + }, + { + "in": "header", + "name": "X-Tenant-ID", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "X-Tenant-Id" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Delete Company Profile", + "tags": [ + "company-profile" + ] + }, + "get": { + "description": "Get company profile for a tenant (optionally per project).", + "operationId": "get_company_profile_api_v1_company_profile_get", + "parameters": [ + { + "in": "query", + "name": "tenant_id", + "required": false, + "schema": { + "default": "default", + "title": "Tenant Id", + "type": "string" + } + }, + { + "in": "query", + "name": "project_id", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Project Id" + } + }, + { + "in": "header", + "name": "X-Tenant-ID", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "X-Tenant-Id" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CompanyProfileResponse" + } + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Get Company Profile", + "tags": [ + "company-profile" + ] + }, + "patch": { + "description": "Partial update for company profile.", + "operationId": "patch_company_profile_api_v1_company_profile_patch", + "parameters": [ + { + "in": "query", + "name": "tenant_id", + "required": false, + "schema": { + "default": "default", + "title": "Tenant Id", + "type": "string" + } + }, + { + "in": "query", + "name": "project_id", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Project Id" + } + }, + { + "in": "header", + "name": "X-Tenant-ID", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "X-Tenant-Id" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "additionalProperties": true, + "title": "Updates", + "type": "object" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CompanyProfileResponse" + } + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Patch Company Profile", + "tags": [ + "company-profile" + ] + }, + "post": { + "description": "Create or update company profile (upsert).", + "operationId": "upsert_company_profile_api_v1_company_profile_post", + "parameters": [ + { + "in": "query", + "name": "tenant_id", + "required": false, + "schema": { + "default": "default", + "title": "Tenant Id", + "type": "string" + } + }, + { + "in": "query", + "name": "project_id", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Project Id" + } + }, + { + "in": "header", + "name": "X-Tenant-ID", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "X-Tenant-Id" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CompanyProfileRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CompanyProfileResponse" + } + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Upsert Company Profile", + "tags": [ + "company-profile" + ] + } + }, + "/api/v1/company-profile/audit": { + "get": { + "description": "Get audit log for company profile changes.", + "operationId": "get_audit_log_api_v1_company_profile_audit_get", + "parameters": [ + { + "in": "query", + "name": "tenant_id", + "required": false, + "schema": { + "default": "default", + "title": "Tenant Id", + "type": "string" + } + }, + { + "in": "query", + "name": "project_id", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Project Id" + } + }, + { + "in": "header", + "name": "X-Tenant-ID", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "X-Tenant-Id" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AuditListResponse" + } + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Get Audit Log", + "tags": [ + "company-profile" + ] + } + }, + "/api/v1/company-profile/template-context": { + "get": { + "description": "Return flat dict for Jinja2 template substitution in document generation.", + "operationId": "get_template_context_api_v1_company_profile_template_context_get", + "parameters": [ + { + "in": "query", + "name": "tenant_id", + "required": false, + "schema": { + "default": "default", + "title": "Tenant Id", + "type": "string" + } + }, + { + "in": "query", + "name": "project_id", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Project Id" + } + }, + { + "in": "header", + "name": "X-Tenant-ID", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "X-Tenant-Id" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Get Template Context", + "tags": [ + "company-profile" + ] + } + }, + "/api/v1/import": { + "get": { + "description": "Alias: GET /v1/import \u2192 list documents (proxy-compatible URL).", + "operationId": "list_documents_root_api_v1_import_get", + "parameters": [ + { + "in": "query", + "name": "tenant_id", + "required": false, + "schema": { + "default": "default", + "title": "Tenant Id", + "type": "string" + } + }, + { + "in": "header", + "name": "X-Tenant-ID", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "X-Tenant-Id" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DocumentListResponse" + } + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "List Documents Root", + "tags": [ + "document-import" + ] + } + }, + "/api/v1/import/analyze": { + "post": { + "description": "Upload and analyze a compliance document.", + "operationId": "analyze_document_api_v1_import_analyze_post", + "requestBody": { + "content": { + "multipart/form-data": { + "schema": { + "$ref": "#/components/schemas/Body_analyze_document_api_v1_import_analyze_post" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DocumentAnalysisResponse" + } + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Analyze Document", + "tags": [ + "document-import" + ] + } + }, + "/api/v1/import/documents": { + "get": { + "description": "List all imported documents for a tenant.", + "operationId": "list_documents_api_v1_import_documents_get", + "parameters": [ + { + "in": "query", + "name": "tenant_id", + "required": false, + "schema": { + "default": "default", + "title": "Tenant Id", + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DocumentListResponse" + } + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "List Documents", + "tags": [ + "document-import" + ] + } + }, + "/api/v1/import/gap-analysis/{document_id}": { + "get": { + "description": "Get gap analysis for a specific document.", + "operationId": "get_gap_analysis_api_v1_import_gap_analysis__document_id__get", + "parameters": [ + { + "in": "path", + "name": "document_id", + "required": true, + "schema": { + "title": "Document Id", + "type": "string" + } + }, + { + "in": "query", + "name": "tenant_id", + "required": false, + "schema": { + "default": "default", + "title": "Tenant Id", + "type": "string" + } + }, + { + "in": "header", + "name": "X-Tenant-ID", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "X-Tenant-Id" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Get Gap Analysis", + "tags": [ + "document-import" + ] + } + }, + "/api/v1/import/{document_id}": { + "delete": { + "description": "Delete an imported document and its gap analysis.", + "operationId": "delete_document_api_v1_import__document_id__delete", + "parameters": [ + { + "in": "path", + "name": "document_id", + "required": true, + "schema": { + "title": "Document Id", + "type": "string" + } + }, + { + "in": "query", + "name": "tenant_id", + "required": false, + "schema": { + "default": "default", + "title": "Tenant Id", + "type": "string" + } + }, + { + "in": "header", + "name": "X-Tenant-ID", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "X-Tenant-Id" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Delete Document", + "tags": [ + "document-import" + ] + } + }, + "/api/v1/screening": { + "get": { + "description": "List all screenings for a tenant.", + "operationId": "list_screenings_api_v1_screening_get", + "parameters": [ + { + "in": "query", + "name": "tenant_id", + "required": false, + "schema": { + "default": "default", + "title": "Tenant Id", + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ScreeningListResponse" + } + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "List Screenings", + "tags": [ + "system-screening" + ] + } + }, + "/api/v1/screening/scan": { + "post": { + "description": "Upload a dependency file, generate SBOM, and scan for vulnerabilities.", + "operationId": "scan_dependencies_api_v1_screening_scan_post", + "requestBody": { + "content": { + "multipart/form-data": { + "schema": { + "$ref": "#/components/schemas/Body_scan_dependencies_api_v1_screening_scan_post" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ScreeningResponse" + } + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Scan Dependencies", + "tags": [ + "system-screening" + ] + } + }, + "/api/v1/screening/{screening_id}": { + "get": { + "description": "Get a screening result by ID.", + "operationId": "get_screening_api_v1_screening__screening_id__get", + "parameters": [ + { + "in": "path", + "name": "screening_id", + "required": true, + "schema": { + "title": "Screening Id", + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ScreeningResponse" + } + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Get Screening", + "tags": [ + "system-screening" + ] + } + }, + "/health": { + "get": { + "description": "Health check endpoint for load balancers and orchestration.", + "operationId": "health_health_get", + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + } + }, + "summary": "Health", + "tags": [ + "system" + ] + } + } + } +} diff --git a/backend-compliance/tests/contracts/regenerate_baseline.py b/backend-compliance/tests/contracts/regenerate_baseline.py new file mode 100644 index 0000000..ada4dce --- /dev/null +++ b/backend-compliance/tests/contracts/regenerate_baseline.py @@ -0,0 +1,25 @@ +#!/usr/bin/env python3 +"""Regenerate the OpenAPI baseline. + +Run this ONLY when you have intentionally made an additive API change and want +the contract test to pick up the new baseline. Removing or renaming anything is +a breaking change and requires updating every consumer in the same change set. + +Usage: + python tests/contracts/regenerate_baseline.py +""" +from __future__ import annotations + +import json +import sys +from pathlib import Path + +THIS_DIR = Path(__file__).parent +REPO_ROOT = THIS_DIR.parent.parent # backend-compliance/ +sys.path.insert(0, str(REPO_ROOT)) + +from main import app # type: ignore[import-not-found] # noqa: E402 + +out = THIS_DIR / "openapi.baseline.json" +out.write_text(json.dumps(app.openapi(), indent=2, sort_keys=True) + "\n") +print(f"wrote {out}") diff --git a/backend-compliance/tests/contracts/test_openapi_baseline.py b/backend-compliance/tests/contracts/test_openapi_baseline.py new file mode 100644 index 0000000..12a91d7 --- /dev/null +++ b/backend-compliance/tests/contracts/test_openapi_baseline.py @@ -0,0 +1,102 @@ +"""OpenAPI contract test. + +This test pins the public HTTP contract of backend-compliance. It loads the +FastAPI app, extracts the live OpenAPI schema, and compares it against a +checked-in baseline at ``tests/contracts/openapi.baseline.json``. + +Rules: + - Adding new paths/operations/fields → OK (additive change). + - Removing a path, changing a method, changing a status code, removing or + renaming a response/request field → FAIL. Such changes require updating + every consumer (admin-compliance, developer-portal, SDKs) in the same + change, then regenerating the baseline with: + + python tests/contracts/regenerate_baseline.py + + and explaining the contract change in the PR description. + +The baseline is missing on first run — the test prints the command to create +it and skips. This is intentional: Phase 1 step 1 generates it fresh from the +current app state before any refactoring begins. +""" + +from __future__ import annotations + +import json +from pathlib import Path +from typing import Any + +import pytest + +BASELINE_PATH = Path(__file__).parent / "openapi.baseline.json" + + +def _load_live_schema() -> dict[str, Any]: + """Import the FastAPI app and extract its OpenAPI schema. + + Kept inside the function so that test collection does not fail if the app + has import-time side effects that aren't satisfied in the test env. + """ + from main import app # type: ignore[import-not-found] + + return app.openapi() + + +def _collect_operations(schema: dict[str, Any]) -> dict[str, dict[str, Any]]: + """Return a flat {f'{METHOD} {path}': operation} map for diffing.""" + out: dict[str, dict[str, Any]] = {} + for path, methods in schema.get("paths", {}).items(): + for method, op in methods.items(): + if method.lower() in {"get", "post", "put", "patch", "delete", "options", "head"}: + out[f"{method.upper()} {path}"] = op + return out + + +@pytest.mark.contract +def test_openapi_no_breaking_changes() -> None: + if not BASELINE_PATH.exists(): + pytest.skip( + f"Baseline missing. Run: python {Path(__file__).parent}/regenerate_baseline.py" + ) + + baseline = json.loads(BASELINE_PATH.read_text()) + live = _load_live_schema() + + baseline_ops = _collect_operations(baseline) + live_ops = _collect_operations(live) + + # 1. No operation may disappear. + removed = sorted(set(baseline_ops) - set(live_ops)) + assert not removed, ( + f"Breaking change: {len(removed)} operation(s) removed from public API:\n " + + "\n ".join(removed) + ) + + # 2. For operations that exist in both, response status codes must be a superset. + for key, baseline_op in baseline_ops.items(): + live_op = live_ops[key] + baseline_codes = set((baseline_op.get("responses") or {}).keys()) + live_codes = set((live_op.get("responses") or {}).keys()) + missing = baseline_codes - live_codes + assert not missing, ( + f"Breaking change: {key} no longer returns status code(s) {sorted(missing)}" + ) + + # 3. Required request-body fields may not be added (would break existing clients). + for key, baseline_op in baseline_ops.items(): + live_op = live_ops[key] + base_req = _required_body_fields(baseline_op) + live_req = _required_body_fields(live_op) + new_required = live_req - base_req + assert not new_required, ( + f"Breaking change: {key} added required request field(s) {sorted(new_required)}" + ) + + +def _required_body_fields(op: dict[str, Any]) -> set[str]: + rb = op.get("requestBody") or {} + content = rb.get("content") or {} + for media in content.values(): + schema = media.get("schema") or {} + return set(schema.get("required") or []) + return set()