refactor(admin): split 9 more oversized lib/ files into focused modules

Files split by agents before rate limit:
  - dsr/api.ts (669 → barrel + helpers)
  - einwilligungen/context.tsx (669 → barrel + hooks/reducer)
  - export.ts (753 → barrel + domain exporters)
  - incidents/api.ts (845 → barrel + api-helpers)
  - tom-generator/context.tsx (720 → barrel + hooks/reducer)
  - vendor-compliance/context.tsx (1010 → 234 provider + hooks/reducer)
  - api-docs/endpoints.ts — partially split (3 domain files created)
  - academy/api.ts — partially split (helpers extracted)
  - whistleblower/api.ts — partially split (helpers extracted)

next build passes. api-client.ts (885) deferred to next session.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
Sharang Parnerkar
2026-04-10 19:12:09 +02:00
parent 786bb409e4
commit 58e95d5e8e
29 changed files with 5785 additions and 4383 deletions

View File

@@ -0,0 +1,449 @@
/**
* Python/FastAPI endpoints — Operational compliance modules
* (tom, vvt, vendor-compliance, risks, evidence, incidents, escalations,
* email-templates, legal-documents, legal-templates, import, screening,
* scraper, source-policy, security-backlog, notfallplan, obligations,
* isms, quality)
*/
import { ApiModule } from './types'
export const pythonOpsModules: ApiModule[] = [
{
id: 'email-templates',
name: 'E-Mail-Vorlagen — Template-Verwaltung',
service: 'python',
basePath: '/api/compliance/email-templates',
exposure: 'internal',
endpoints: [
{ method: 'GET', path: '/types', description: 'Vorlagentypen laden', service: 'python' },
{ method: 'GET', path: '/stats', description: 'E-Mail-Statistiken laden', service: 'python' },
{ method: 'GET', path: '/settings', description: 'E-Mail-Einstellungen laden', service: 'python' },
{ method: 'PUT', path: '/settings', description: 'E-Mail-Einstellungen aktualisieren', service: 'python' },
{ method: 'GET', path: '/logs', description: 'Versandprotokoll laden', service: 'python' },
{ method: 'POST', path: '/initialize', description: 'Standard-Vorlagen initialisieren', service: 'python' },
{ method: 'GET', path: '/', description: 'Vorlagen auflisten', service: 'python' },
{ method: 'POST', path: '/', description: 'Vorlage erstellen', service: 'python' },
{ method: 'GET', path: '/{template_id}', description: 'Vorlage laden', service: 'python' },
{ method: 'GET', path: '/{template_id}/versions', description: 'Vorlagen-Versionen laden', service: 'python' },
{ method: 'POST', path: '/{template_id}/versions', description: 'Version erstellen', service: 'python' },
{ method: 'POST', path: '/versions', description: 'Version erstellen (alternativ)', service: 'python' },
{ method: 'GET', path: '/versions/{version_id}', description: 'Version laden', service: 'python' },
{ method: 'PUT', path: '/versions/{version_id}', description: 'Version aktualisieren', service: 'python' },
{ method: 'POST', path: '/versions/{version_id}/submit', description: 'Version einreichen', service: 'python' },
{ method: 'POST', path: '/versions/{version_id}/approve', description: 'Version genehmigen', service: 'python' },
{ method: 'POST', path: '/versions/{version_id}/reject', description: 'Version ablehnen', service: 'python' },
{ method: 'POST', path: '/versions/{version_id}/publish', description: 'Version veroeffentlichen', service: 'python' },
{ method: 'POST', path: '/versions/{version_id}/preview', description: 'Version-Vorschau generieren', service: 'python' },
{ method: 'POST', path: '/versions/{version_id}/send-test', description: 'Test-E-Mail senden', service: 'python' },
{ method: 'GET', path: '/default/{template_type}', description: 'Standard-Vorlage laden', service: 'python' },
],
},
{
id: 'escalations',
name: 'Eskalationen — Eskalationsmanagement',
service: 'python',
basePath: '/api/compliance/escalations',
exposure: 'internal',
endpoints: [
{ method: 'GET', path: '/', description: 'Eskalationen auflisten', service: 'python' },
{ method: 'POST', path: '/', description: 'Eskalation erstellen', service: 'python' },
{ method: 'GET', path: '/stats', description: 'Eskalations-Statistiken laden', service: 'python' },
{ method: 'GET', path: '/{escalation_id}', description: 'Eskalation laden', service: 'python' },
{ method: 'PUT', path: '/{escalation_id}', description: 'Eskalation aktualisieren', service: 'python' },
{ method: 'PUT', path: '/{escalation_id}/status', description: 'Eskalations-Status aendern', service: 'python' },
{ method: 'DELETE', path: '/{escalation_id}', description: 'Eskalation loeschen', service: 'python' },
],
},
{
id: 'evidence',
name: 'Nachweise — Evidence Management',
service: 'python',
basePath: '/api/compliance/evidence',
exposure: 'internal',
endpoints: [
{ method: 'GET', path: '/evidence', description: 'Nachweise auflisten', service: 'python' },
{ method: 'POST', path: '/evidence', description: 'Nachweis erstellen', service: 'python' },
{ method: 'DELETE', path: '/evidence/{evidence_id}', description: 'Nachweis loeschen', service: 'python' },
{ method: 'POST', path: '/evidence/upload', description: 'Nachweis-Datei hochladen', service: 'python' },
{ method: 'POST', path: '/evidence/collect', description: 'CI-Nachweis sammeln', service: 'python', exposure: 'partner' },
{ method: 'GET', path: '/evidence/ci-status', description: 'CI-Nachweis-Status laden', service: 'python', exposure: 'partner' },
],
},
{
id: 'import',
name: 'Dokument-Import & Gap-Analyse',
service: 'python',
basePath: '/api/import',
exposure: 'internal',
endpoints: [
{ method: 'POST', path: '/analyze', description: 'Dokument analysieren', service: 'python' },
{ method: 'GET', path: '/gap-analysis/{document_id}', description: 'Gap-Analyse laden', service: 'python' },
{ method: 'GET', path: '/documents', description: 'Importierte Dokumente auflisten', service: 'python' },
{ method: 'DELETE', path: '/{document_id}', description: 'Dokument loeschen', service: 'python' },
],
},
{
id: 'incidents',
name: 'Datenschutz-Vorfaelle — Incident Management',
service: 'python',
basePath: '/api/compliance/incidents',
exposure: 'internal',
endpoints: [
{ method: 'POST', path: '/', description: 'Vorfall erstellen', service: 'python' },
{ method: 'GET', path: '/', description: 'Vorfaelle auflisten', service: 'python' },
{ method: 'GET', path: '/stats', description: 'Vorfall-Statistiken laden', service: 'python' },
{ method: 'GET', path: '/{incident_id}', description: 'Vorfall laden', service: 'python' },
{ method: 'PUT', path: '/{incident_id}', description: 'Vorfall aktualisieren', service: 'python' },
{ method: 'DELETE', path: '/{incident_id}', description: 'Vorfall loeschen', service: 'python' },
{ method: 'PUT', path: '/{incident_id}/status', description: 'Vorfall-Status aendern', service: 'python' },
{ method: 'POST', path: '/{incident_id}/assess-risk', description: 'Risikobewertung durchfuehren', service: 'python' },
{ method: 'POST', path: '/{incident_id}/notify-authority', description: 'Behoerde benachrichtigen', service: 'python' },
{ method: 'POST', path: '/{incident_id}/notify-subjects', description: 'Betroffene benachrichtigen', service: 'python' },
{ method: 'POST', path: '/{incident_id}/measures', description: 'Massnahme hinzufuegen', service: 'python' },
{ method: 'PUT', path: '/{incident_id}/measures/{measure_id}', description: 'Massnahme aktualisieren', service: 'python' },
{ method: 'POST', path: '/{incident_id}/measures/{measure_id}/complete', description: 'Massnahme abschliessen', service: 'python' },
{ method: 'POST', path: '/{incident_id}/timeline', description: 'Zeitachsen-Eintrag hinzufuegen', service: 'python' },
{ method: 'POST', path: '/{incident_id}/close', description: 'Vorfall schliessen', service: 'python' },
],
},
{
id: 'isms',
name: 'ISMS — ISO 27001 Managementsystem',
service: 'python',
basePath: '/api/compliance/isms',
exposure: 'internal',
endpoints: [
{ method: 'GET', path: '/scope', description: 'ISMS-Scope laden', service: 'python' },
{ method: 'POST', path: '/scope', description: 'ISMS-Scope erstellen', service: 'python' },
{ method: 'PUT', path: '/scope/{scope_id}', description: 'ISMS-Scope aktualisieren', service: 'python' },
{ method: 'POST', path: '/scope/{scope_id}/approve', description: 'ISMS-Scope genehmigen', service: 'python' },
{ method: 'GET', path: '/context', description: 'ISMS-Kontext laden', service: 'python' },
{ method: 'POST', path: '/context', description: 'ISMS-Kontext erstellen', service: 'python' },
{ method: 'GET', path: '/policies', description: 'Richtlinien auflisten', service: 'python' },
{ method: 'POST', path: '/policies', description: 'Richtlinie erstellen', service: 'python' },
{ method: 'GET', path: '/policies/{policy_id}', description: 'Richtlinie laden', service: 'python' },
{ method: 'PUT', path: '/policies/{policy_id}', description: 'Richtlinie aktualisieren', service: 'python' },
{ method: 'POST', path: '/policies/{policy_id}/approve', description: 'Richtlinie genehmigen', service: 'python' },
{ method: 'GET', path: '/objectives', description: 'Sicherheitsziele laden', service: 'python' },
{ method: 'POST', path: '/objectives', description: 'Sicherheitsziel erstellen', service: 'python' },
{ method: 'PUT', path: '/objectives/{objective_id}', description: 'Sicherheitsziel aktualisieren', service: 'python' },
{ method: 'GET', path: '/soa', description: 'Statement of Applicability laden', service: 'python' },
{ method: 'POST', path: '/soa', description: 'SoA-Eintrag erstellen', service: 'python' },
{ method: 'PUT', path: '/soa/{entry_id}', description: 'SoA-Eintrag aktualisieren', service: 'python' },
{ method: 'POST', path: '/soa/{entry_id}/approve', description: 'SoA-Eintrag genehmigen', service: 'python' },
{ method: 'GET', path: '/findings', description: 'Audit-Feststellungen laden', service: 'python' },
{ method: 'POST', path: '/findings', description: 'Feststellung erstellen', service: 'python' },
{ method: 'PUT', path: '/findings/{finding_id}', description: 'Feststellung aktualisieren', service: 'python' },
{ method: 'POST', path: '/findings/{finding_id}/close', description: 'Feststellung schliessen', service: 'python' },
{ method: 'GET', path: '/capa', description: 'Korrekturmassnahmen laden', service: 'python' },
{ method: 'POST', path: '/capa', description: 'CAPA erstellen', service: 'python' },
{ method: 'PUT', path: '/capa/{capa_id}', description: 'CAPA aktualisieren', service: 'python' },
{ method: 'POST', path: '/capa/{capa_id}/verify', description: 'CAPA verifizieren', service: 'python' },
{ method: 'GET', path: '/management-reviews', description: 'Management-Reviews laden', service: 'python' },
{ method: 'POST', path: '/management-reviews', description: 'Review erstellen', service: 'python' },
{ method: 'GET', path: '/management-reviews/{review_id}', description: 'Review laden', service: 'python' },
{ method: 'PUT', path: '/management-reviews/{review_id}', description: 'Review aktualisieren', service: 'python' },
{ method: 'POST', path: '/management-reviews/{review_id}/approve', description: 'Review genehmigen', service: 'python' },
{ method: 'GET', path: '/internal-audits', description: 'Interne Audits laden', service: 'python' },
{ method: 'POST', path: '/internal-audits', description: 'Internes Audit erstellen', service: 'python' },
{ method: 'PUT', path: '/internal-audits/{audit_id}', description: 'Audit aktualisieren', service: 'python' },
{ method: 'POST', path: '/internal-audits/{audit_id}/complete', description: 'Audit abschliessen', service: 'python' },
{ method: 'POST', path: '/readiness-check', description: 'Bereitschafts-Check ausfuehren', service: 'python' },
{ method: 'GET', path: '/readiness-check/latest', description: 'Letzten Check laden', service: 'python' },
{ method: 'GET', path: '/audit-trail', description: 'Audit-Trail laden', service: 'python' },
{ method: 'GET', path: '/overview', description: 'ISO 27001 Uebersicht laden', service: 'python' },
],
},
{
id: 'legal-documents',
name: 'Rechtliche Dokumente — Verwaltung & Versionen',
service: 'python',
basePath: '/api/compliance/legal-documents',
exposure: 'internal',
endpoints: [
{ method: 'GET', path: '/documents', description: 'Dokumente auflisten', service: 'python' },
{ method: 'POST', path: '/documents', description: 'Dokument erstellen', service: 'python' },
{ method: 'GET', path: '/documents/{document_id}', description: 'Dokument laden', service: 'python' },
{ method: 'DELETE', path: '/documents/{document_id}', description: 'Dokument loeschen', service: 'python' },
{ method: 'GET', path: '/documents/{document_id}/versions', description: 'Versionen laden', service: 'python' },
{ method: 'POST', path: '/versions', description: 'Version erstellen', service: 'python' },
{ method: 'PUT', path: '/versions/{version_id}', description: 'Version aktualisieren', service: 'python' },
{ method: 'GET', path: '/versions/{version_id}', description: 'Version laden', service: 'python' },
{ method: 'POST', path: '/versions/upload-word', description: 'Word-Dokument hochladen', service: 'python' },
{ method: 'POST', path: '/versions/{version_id}/submit-review', description: 'Zur Pruefung einreichen', service: 'python' },
{ method: 'POST', path: '/versions/{version_id}/approve', description: 'Version genehmigen', service: 'python' },
{ method: 'POST', path: '/versions/{version_id}/reject', description: 'Version ablehnen', service: 'python' },
{ method: 'POST', path: '/versions/{version_id}/publish', description: 'Version veroeffentlichen', service: 'python' },
{ method: 'GET', path: '/versions/{version_id}/approval-history', description: 'Genehmigungshistorie laden', service: 'python' },
{ method: 'GET', path: '/public', description: 'Oeffentliche Dokumente laden', service: 'python', exposure: 'public' },
{ method: 'GET', path: '/public/{document_type}/latest', description: 'Aktuellstes Dokument laden', service: 'python', exposure: 'public' },
{ method: 'POST', path: '/consents', description: 'Einwilligung erfassen', service: 'python' },
{ method: 'GET', path: '/consents/my', description: 'Eigene Einwilligungen laden', service: 'python' },
{ method: 'GET', path: '/consents/check/{document_type}', description: 'Einwilligungsstatus pruefen', service: 'python' },
{ method: 'DELETE', path: '/consents/{consent_id}', description: 'Einwilligung widerrufen', service: 'python' },
{ method: 'GET', path: '/stats/consents', description: 'Einwilligungs-Statistiken laden', service: 'python' },
{ method: 'GET', path: '/audit-log', description: 'Audit-Log laden', service: 'python' },
{ method: 'GET', path: '/cookie-categories', description: 'Cookie-Kategorien auflisten', service: 'python' },
{ method: 'POST', path: '/cookie-categories', description: 'Cookie-Kategorie erstellen', service: 'python' },
{ method: 'PUT', path: '/cookie-categories/{category_id}', description: 'Kategorie aktualisieren', service: 'python' },
{ method: 'DELETE', path: '/cookie-categories/{category_id}', description: 'Kategorie loeschen', service: 'python' },
],
},
{
id: 'legal-templates',
name: 'Dokumentvorlagen — DSGVO-Generatoren',
service: 'python',
basePath: '/api/compliance/legal-templates',
exposure: 'internal',
endpoints: [
{ method: 'GET', path: '/', description: 'Vorlagen auflisten', service: 'python' },
{ method: 'GET', path: '/status', description: 'Vorlagenstatus laden', service: 'python' },
{ method: 'GET', path: '/sources', description: 'Vorlagenquellen laden', service: 'python' },
{ method: 'GET', path: '/{template_id}', description: 'Vorlage laden', service: 'python' },
{ method: 'POST', path: '/', description: 'Vorlage erstellen', service: 'python' },
{ method: 'PUT', path: '/{template_id}', description: 'Vorlage aktualisieren', service: 'python' },
{ method: 'DELETE', path: '/{template_id}', description: 'Vorlage loeschen', service: 'python' },
],
},
{
id: 'notfallplan',
name: 'Notfallplan — Kontakte, Szenarien & Uebungen',
service: 'python',
basePath: '/api/compliance/notfallplan',
exposure: 'internal',
endpoints: [
{ method: 'GET', path: '/contacts', description: 'Notfallkontakte laden', service: 'python' },
{ method: 'POST', path: '/contacts', description: 'Kontakt erstellen', service: 'python' },
{ method: 'PUT', path: '/contacts/{contact_id}', description: 'Kontakt aktualisieren', service: 'python' },
{ method: 'DELETE', path: '/contacts/{contact_id}', description: 'Kontakt loeschen', service: 'python' },
{ method: 'GET', path: '/scenarios', description: 'Notfallszenarien laden', service: 'python' },
{ method: 'POST', path: '/scenarios', description: 'Szenario erstellen', service: 'python' },
{ method: 'PUT', path: '/scenarios/{scenario_id}', description: 'Szenario aktualisieren', service: 'python' },
{ method: 'DELETE', path: '/scenarios/{scenario_id}', description: 'Szenario loeschen', service: 'python' },
{ method: 'GET', path: '/checklists', description: 'Checklisten laden', service: 'python' },
{ method: 'POST', path: '/checklists', description: 'Checkliste erstellen', service: 'python' },
{ method: 'PUT', path: '/checklists/{checklist_id}', description: 'Checkliste aktualisieren', service: 'python' },
{ method: 'DELETE', path: '/checklists/{checklist_id}', description: 'Checkliste loeschen', service: 'python' },
{ method: 'GET', path: '/exercises', description: 'Uebungen laden', service: 'python' },
{ method: 'POST', path: '/exercises', description: 'Uebung erstellen', service: 'python' },
{ method: 'GET', path: '/incidents', description: 'Notfall-Vorfaelle laden', service: 'python' },
{ method: 'POST', path: '/incidents', description: 'Vorfall erstellen', service: 'python' },
{ method: 'PUT', path: '/incidents/{incident_id}', description: 'Vorfall aktualisieren', service: 'python' },
{ method: 'DELETE', path: '/incidents/{incident_id}', description: 'Vorfall loeschen', service: 'python' },
{ method: 'GET', path: '/templates', description: 'Vorlagen laden', service: 'python' },
{ method: 'POST', path: '/templates', description: 'Vorlage erstellen', service: 'python' },
{ method: 'PUT', path: '/templates/{template_id}', description: 'Vorlage aktualisieren', service: 'python' },
{ method: 'DELETE', path: '/templates/{template_id}', description: 'Vorlage loeschen', service: 'python' },
{ method: 'GET', path: '/stats', description: 'Notfallplan-Statistiken laden', service: 'python' },
],
},
{
id: 'obligations',
name: 'Pflichten — Compliance-Obligations',
service: 'python',
basePath: '/api/compliance/obligations',
exposure: 'internal',
endpoints: [
{ method: 'GET', path: '/', description: 'Pflichten auflisten', service: 'python' },
{ method: 'POST', path: '/', description: 'Pflicht erstellen', service: 'python' },
{ method: 'GET', path: '/stats', description: 'Pflichten-Statistiken laden', service: 'python' },
{ method: 'GET', path: '/{obligation_id}', description: 'Pflicht laden', service: 'python' },
{ method: 'PUT', path: '/{obligation_id}', description: 'Pflicht aktualisieren', service: 'python' },
{ method: 'PUT', path: '/{obligation_id}/status', description: 'Pflicht-Status aendern', service: 'python' },
{ method: 'DELETE', path: '/{obligation_id}', description: 'Pflicht loeschen', service: 'python' },
{ method: 'GET', path: '/{obligation_id}/versions', description: 'Versionshistorie laden', service: 'python' },
{ method: 'GET', path: '/{obligation_id}/versions/{version_number}', description: 'Version laden', service: 'python' },
],
},
{
id: 'quality',
name: 'Quality — KI-Qualitaetsmetriken & Tests',
service: 'python',
basePath: '/api/compliance/quality',
exposure: 'internal',
endpoints: [
{ method: 'GET', path: '/stats', description: 'Qualitaets-Statistiken laden', service: 'python' },
{ method: 'GET', path: '/metrics', description: 'Metriken auflisten', service: 'python' },
{ method: 'POST', path: '/metrics', description: 'Metrik erstellen', service: 'python' },
{ method: 'PUT', path: '/metrics/{metric_id}', description: 'Metrik aktualisieren', service: 'python' },
{ method: 'DELETE', path: '/metrics/{metric_id}', description: 'Metrik loeschen', service: 'python' },
{ method: 'GET', path: '/tests', description: 'Tests auflisten', service: 'python' },
{ method: 'POST', path: '/tests', description: 'Test erstellen', service: 'python' },
{ method: 'PUT', path: '/tests/{test_id}', description: 'Test aktualisieren', service: 'python' },
{ method: 'DELETE', path: '/tests/{test_id}', description: 'Test loeschen', service: 'python' },
],
},
{
id: 'risks',
name: 'Risikomanagement — Bewertung & Matrix',
service: 'python',
basePath: '/api/compliance/risks',
exposure: 'internal',
endpoints: [
{ method: 'GET', path: '/risks', description: 'Risiken auflisten', service: 'python' },
{ method: 'POST', path: '/risks', description: 'Risiko erstellen', service: 'python' },
{ method: 'PUT', path: '/risks/{risk_id}', description: 'Risiko aktualisieren', service: 'python' },
{ method: 'DELETE', path: '/risks/{risk_id}', description: 'Risiko loeschen', service: 'python' },
{ method: 'GET', path: '/risks/matrix', description: 'Risikomatrix laden', service: 'python' },
],
},
{
id: 'screening',
name: 'Screening — Abhaengigkeiten-Pruefung',
service: 'python',
basePath: '/api/compliance/screening',
exposure: 'internal',
endpoints: [
{ method: 'POST', path: '/scan', description: 'Abhaengigkeiten scannen', service: 'python', exposure: 'partner' },
{ method: 'GET', path: '/{screening_id}', description: 'Screening-Ergebnis laden', service: 'python' },
{ method: 'GET', path: '/', description: 'Screenings auflisten', service: 'python' },
],
},
{
id: 'scraper',
name: 'Scraper — Rechtsquellen-Aktualisierung',
service: 'python',
basePath: '/api/compliance/scraper',
exposure: 'partner',
endpoints: [
{ method: 'GET', path: '/scraper/status', description: 'Scraper-Status laden', service: 'python' },
{ method: 'GET', path: '/scraper/sources', description: 'Quellen auflisten', service: 'python' },
{ method: 'POST', path: '/scraper/scrape-all', description: 'Alle Quellen scrapen', service: 'python' },
{ method: 'POST', path: '/scraper/scrape/{code}', description: 'Einzelne Quelle scrapen', service: 'python' },
{ method: 'POST', path: '/scraper/extract-bsi', description: 'BSI-Anforderungen extrahieren', service: 'python' },
{ method: 'POST', path: '/scraper/extract-pdf', description: 'PDF-Anforderungen extrahieren', service: 'python' },
{ method: 'GET', path: '/scraper/pdf-documents', description: 'PDF-Dokumente auflisten', service: 'python' },
],
},
{
id: 'security-backlog',
name: 'Security Backlog — Sicherheitsmassnahmen',
service: 'python',
basePath: '/api/compliance/security-backlog',
exposure: 'internal',
endpoints: [
{ method: 'GET', path: '/', description: 'Backlog-Eintraege auflisten', service: 'python' },
{ method: 'POST', path: '/', description: 'Eintrag erstellen', service: 'python' },
{ method: 'GET', path: '/stats', description: 'Backlog-Statistiken laden', service: 'python' },
{ method: 'PUT', path: '/{item_id}', description: 'Eintrag aktualisieren', service: 'python' },
{ method: 'DELETE', path: '/{item_id}', description: 'Eintrag loeschen', service: 'python' },
],
},
{
id: 'source-policy',
name: 'Source Policy — Datenquellen & PII-Regeln',
service: 'python',
basePath: '/api/compliance/source-policy',
exposure: 'internal',
endpoints: [
{ method: 'GET', path: '/sources', description: 'Datenquellen auflisten', service: 'python' },
{ method: 'POST', path: '/sources', description: 'Quelle erstellen', service: 'python' },
{ method: 'GET', path: '/sources/{source_id}', description: 'Quelle laden', service: 'python' },
{ method: 'PUT', path: '/sources/{source_id}', description: 'Quelle aktualisieren', service: 'python' },
{ method: 'DELETE', path: '/sources/{source_id}', description: 'Quelle loeschen', service: 'python' },
{ method: 'GET', path: '/operations-matrix', description: 'Operationsmatrix laden', service: 'python' },
{ method: 'PUT', path: '/operations/{operation_id}', description: 'Operation aktualisieren', service: 'python' },
{ method: 'GET', path: '/pii-rules', description: 'PII-Regeln auflisten', service: 'python' },
{ method: 'POST', path: '/pii-rules', description: 'PII-Regel erstellen', service: 'python' },
{ method: 'PUT', path: '/pii-rules/{rule_id}', description: 'PII-Regel aktualisieren', service: 'python' },
{ method: 'DELETE', path: '/pii-rules/{rule_id}', description: 'PII-Regel loeschen', service: 'python' },
{ method: 'GET', path: '/blocked-content', description: 'Gesperrte Inhalte laden', service: 'python' },
{ method: 'GET', path: '/policy-audit', description: 'Richtlinien-Audit-Log laden', service: 'python' },
{ method: 'GET', path: '/policy-stats', description: 'Richtlinien-Statistiken laden', service: 'python' },
{ method: 'GET', path: '/compliance-report', description: 'Compliance-Bericht laden', service: 'python' },
],
},
{
id: 'tom',
name: 'TOM — Technisch-Organisatorische Massnahmen',
service: 'python',
basePath: '/api/compliance/tom',
exposure: 'internal',
endpoints: [
{ method: 'GET', path: '/state', description: 'TOM-Zustand laden', service: 'python' },
{ method: 'POST', path: '/state', description: 'TOM-Zustand speichern', service: 'python' },
{ method: 'DELETE', path: '/state', description: 'TOM-Zustand loeschen', service: 'python' },
{ method: 'GET', path: '/measures', description: 'Massnahmen auflisten', service: 'python' },
{ method: 'POST', path: '/measures', description: 'Massnahme erstellen', service: 'python' },
{ method: 'PUT', path: '/measures/{measure_id}', description: 'Massnahme aktualisieren', service: 'python' },
{ method: 'POST', path: '/measures/bulk', description: 'Massnahmen Bulk-Upsert', service: 'python' },
{ method: 'GET', path: '/stats', description: 'TOM-Statistiken laden', service: 'python' },
{ method: 'GET', path: '/export', description: 'Massnahmen exportieren', service: 'python' },
{ method: 'GET', path: '/measures/{measure_id}/versions', description: 'Versionshistorie laden', service: 'python' },
{ method: 'GET', path: '/measures/{measure_id}/versions/{version_number}', description: 'Version laden', service: 'python' },
],
},
{
id: 'vendor-compliance',
name: 'Vendor Compliance — Auftragsverarbeitung',
service: 'python',
basePath: '/api/compliance/vendors',
exposure: 'internal',
endpoints: [
{ method: 'GET', path: '/vendors/stats', description: 'Anbieter-Statistiken laden', service: 'python' },
{ method: 'GET', path: '/vendors', description: 'Anbieter auflisten', service: 'python' },
{ method: 'GET', path: '/vendors/{vendor_id}', description: 'Anbieter laden', service: 'python' },
{ method: 'POST', path: '/vendors', description: 'Anbieter erstellen', service: 'python' },
{ method: 'PUT', path: '/vendors/{vendor_id}', description: 'Anbieter aktualisieren', service: 'python' },
{ method: 'DELETE', path: '/vendors/{vendor_id}', description: 'Anbieter loeschen', service: 'python' },
{ method: 'PATCH', path: '/vendors/{vendor_id}/status', description: 'Anbieter-Status aendern', service: 'python' },
{ method: 'GET', path: '/contracts', description: 'Vertraege auflisten', service: 'python' },
{ method: 'GET', path: '/contracts/{contract_id}', description: 'Vertrag laden', service: 'python' },
{ method: 'POST', path: '/contracts', description: 'Vertrag erstellen', service: 'python' },
{ method: 'PUT', path: '/contracts/{contract_id}', description: 'Vertrag aktualisieren', service: 'python' },
{ method: 'DELETE', path: '/contracts/{contract_id}', description: 'Vertrag loeschen', service: 'python' },
{ method: 'GET', path: '/findings', description: 'Feststellungen auflisten', service: 'python' },
{ method: 'GET', path: '/findings/{finding_id}', description: 'Feststellung laden', service: 'python' },
{ method: 'POST', path: '/findings', description: 'Feststellung erstellen', service: 'python' },
{ method: 'PUT', path: '/findings/{finding_id}', description: 'Feststellung aktualisieren', service: 'python' },
{ method: 'DELETE', path: '/findings/{finding_id}', description: 'Feststellung loeschen', service: 'python' },
{ method: 'GET', path: '/control-instances', description: 'Kontroll-Instanzen auflisten', service: 'python' },
{ method: 'GET', path: '/control-instances/{instance_id}', description: 'Instanz laden', service: 'python' },
{ method: 'POST', path: '/control-instances', description: 'Instanz erstellen', service: 'python' },
{ method: 'PUT', path: '/control-instances/{instance_id}', description: 'Instanz aktualisieren', service: 'python' },
{ method: 'DELETE', path: '/control-instances/{instance_id}', description: 'Instanz loeschen', service: 'python' },
{ method: 'GET', path: '/controls', description: 'Controls auflisten', service: 'python' },
{ method: 'POST', path: '/controls', description: 'Control erstellen', service: 'python' },
{ method: 'DELETE', path: '/controls/{control_id}', description: 'Control loeschen', service: 'python' },
],
},
{
id: 'vvt',
name: 'VVT — Verarbeitungsverzeichnis (Art. 30 DSGVO)',
service: 'python',
basePath: '/api/compliance/vvt',
exposure: 'internal',
endpoints: [
{ method: 'GET', path: '/organization', description: 'Organisationskopf laden', service: 'python' },
{ method: 'PUT', path: '/organization', description: 'Organisationskopf speichern', service: 'python' },
{ method: 'GET', path: '/activities', description: 'Verarbeitungstaetigkeiten auflisten', service: 'python' },
{ method: 'POST', path: '/activities', description: 'Taetigkeit erstellen', service: 'python' },
{ method: 'GET', path: '/activities/{activity_id}', description: 'Taetigkeit laden', service: 'python' },
{ method: 'PUT', path: '/activities/{activity_id}', description: 'Taetigkeit aktualisieren', service: 'python' },
{ method: 'DELETE', path: '/activities/{activity_id}', description: 'Taetigkeit loeschen', service: 'python' },
{ method: 'GET', path: '/audit-log', description: 'VVT-Audit-Log laden', service: 'python' },
{ method: 'GET', path: '/export', description: 'VVT exportieren', service: 'python' },
{ method: 'GET', path: '/stats', description: 'VVT-Statistiken laden', service: 'python' },
{ method: 'GET', path: '/activities/{activity_id}/versions', description: 'Versionshistorie laden', service: 'python' },
{ method: 'GET', path: '/activities/{activity_id}/versions/{version_number}', description: 'Version laden', service: 'python' },
],
},
]